【トラブルシューティング】Blink local Server をRaspberry Piで作る

published_with_changes 更新日: event_note 公開日:

labelBlynk labelIoT labelRaspberry pi

Blink local Serverを作った時に遭遇したトラブルをまとめておきます。時系列的には、最初はBlynkのクラウドサービスでデバイス(Blynkで言うProject)を使っていました。その後、ローカルサーバーへ移行した時に発生したトラブルです。クラウドサービスでは問題なく、ローカルサーバーで固有に発生するトラブルです。

これを作ったのは2年くらい前(2019年)です。今はBlynkのサービスが新しくなり、Local serverがなくなったようです。

もともと動いていたのに、ローカルサーバに変えると動かなくなる。

変わったのは、ローカルサーバから新たに発行されたTokenのみです。

ローカルサーバ発行のTokenを使いArduino IDEでスケッチをアップロードしました。すると、それまでは問題なくデータを読み込んでいたBlynk APPで、データの取り込みができなくなりました。

【症状1.】APPでデバイスの直下に次のように表示されている。

wasn’t online yet

【症状2.】Arduino IDEのシリアルモニタでは、次の2行を繰り返して、Blynkが起動していない。

Connecting to blynk-cloud.com:80
Invalid auth token

【原因】 ローカルサーバに合わせて、スケッチのBlynk.begineの記述を変えねばならない。

GitHubのblynkkk/blynk-serverを探すとそれらしきことが書いてありました。

Specify custom server path in your application


Change your WIFI sketch from
Blynk.begin(auth, SSID, pass));
to
Blynk.begin(auth, SSID, pass, "your_host", 8080);
or to
Blynk.begin(auth, SSID, pass, IPAddress(XXX,XXX,XXX,XXX), 8080);
引用元:App and sketch changes

ローカルサーバーのホスト名と接続ポートを指定する必要がありますので、スケッチを変更します。下記の抜粋したスケッチで太字が変更した内容です。

#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <BME280_MOD-1022.h>
#include <Wire.h>

const char* ssid = "***your ssid***";
const char* password = "***your password***";
char server[] = "192.168.0.22";  // IP for your Local Server
int port = 8080;


// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "***your token from local server***";

unsigned long lastCheck = 0;
double tempMostAccurate, humidityMostAccurate, pressureMostAccurate;
char buff[50];

// for Blynk, Arduino needs this to pring pretty numbers

void printFormattedFloat(float x, uint8_t precision) {
  char buffer[10];

  dtostrf(x, 7, precision, buffer);
  Serial.print(buffer);
}

void setup()
{
  Serial.begin(115200);
  //You can also specify server:
  //Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 80);
  //Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8080);
  Blynk.begin(auth, ssid, password, server, port);  // Blocking until server connected
  Wire.begin(); 
  pinMode(12, OUTPUT);


Raspberry Piをrebootするとアカウントが消える。

【2023/10/03 訂正】

ファイル名の表記に "server-0.41.13-java8.jar" と "server-0.41.16-java8.jar" が混在していたのを引用部以外は "server-0.41.16-java8.jar" に統一

【症状】それまでに作ったAPP上での設定(ウィジェット)が全て消えてなくなる。新しくアカウント作成になる。

対策1) /etc/rc.local を修正

Githubにあったもう一つのBlynk Server自動起動の方法を試してみました。

To enable server auto restart find /etc/rc.local file and add:

  java -jar /home/pi/server-0.41.16-java8.jar -dataFolder /home/pi/Blynk &
引用元:Enabling server auto restart on unix-like systems

nanoエディターで「/etc/rc.local」を編集します。

$ sudo nano /etc/rc.local

「/etc/rc.local」ファイルの最後にexit 0とあるので、その手前に起動時に実行したいコマンドを追加します。

java -jar /home/pi/server-0.41.16-java8.jar -dataFolder /home/pi/Blynk &   // 追加
exit 0

なお、/etc/rc.localに書かれたコマンドは、root権限で実行されます。


対策2) sever.properties を追加

Blynkのコミュニティで同じ問題が複数でています。内容を読み取れていないのですが、「sever.properties」 を使うようなことが書いてあります。もしやと思い追加してみたら、大成功!!です。

rebootしても、APPのアカウントを引き継いでいます。管理画面でもアカウントを引き継いでいます。

Githubに書いてあることは次の内容です。

Advanced local server setup 高度なローカルサーバーのセットアップ

For more flexibility you can extend server with more options by creating server.properties file in same folder as server.jar. Example could be found here. You could also specify any path to server.properties file via command line argument -serverConfig. You can do the same with mail.properties via -mailConfig and sms.properties via -smsConfig.

柔軟性を高めるために、server.jar と同じフォルダーに server.properties ファイルを作成することで、より多くのオプションでサーバーを拡張できます。たとえば、コマンドライン上で引数 -serverConfig を使用して、server.properties ファイルへの任意のパスを指定することができます。 -mailConfig を使って mail.properties で、-smsConfig を使って sms.properties で同じことを行うことができます。

For example:例えば:

java -jar server-0.41.13-java8.jar -dataFolder /home/pi/Blynk -serverConfig /home/pi/someFolder/server.properties



GitHubから引用した「server.properties」をserver-0.41.13-java8.jarのある"/home/pi"におきます。さらに、対策1)で編集した「/etc/rc.local」をこれに合わせて書き換えます。

java -jar /home/pi/server-0.41.16-java8.jar -dataFolder /home/pi/Blynk  -serverConfig /home/pi/server.properties &   // 書き換え


server.propertiesの内容は全く理解できていませんが、rebootしても問題なく内容を引き継ぐことができるようになりました。

Powered by Blogger | Designed by QooQ

keyboard_double_arrow_down

keyboard_double_arrow_down