知的好奇心 for IoT

IoT関連の知的好奇心を探求するブログです

(レガシー)Blynkユーザー救済企画!WindowsでBlynkローカルサーバーを動かそう!

とうとう(レガシー)Blynkのクラウドサーバーが、今月末(2022年12月)で運用停止になります。

 

しかし、フォーク版のBlynkのサーバーがGitHubからダウンロードできるので、自分でBlynkサーバーを動かしてしまえば使い続けることができます。

 

Blynkサーバーの必要要件

  • Java 8か11 が必要 (OpenJDK, Oracle)
  • Javaが動くOS
  • 最低30MBのRAM(チューニングで少なくできると書いてある)
  • 次のポートを開ける。9443(管理UIとアプリ用)、8080(マイコン用)

Blynkサーバーはかなり軽いプログラムなので、ラズパイで十分動作させることができそうなのですが、そのラズパイが入手困難な状態です。

また、少し前に出て今でも入手できるキーボード付きのラズパイだと、激安の小型Windows PCと同じぐらいの価格なため、ここでは多くの方が慣れているWndowsを使う方法をご紹介します。

 

WindowsにBlynkローカルサーバーをインストールする

Javaのインストール

ドキュメントにはOracleのリンクが付いていましたが、ダウンロードするのにプロファイル登録が必要で面倒なため、OpenJDKのWindows版を使います。

上の「OpenJDKのMicrosoftビルドをダウンロードする」リンクをクリックすると次のページが表示されます。

インストーラー付きの「msi版」をダウンロードします。

 

ダウンロードされた「microsoft-jdk-11.0.17-windows-x64.msi」をダルクリックすると、インストーラーが立ち上がってきます。

指示に従いデフォルト設定でイストールを行います。

 

コマンドプロンプトで次のようにJavaのバージョンを表示させるコマンドjava -versionを実行して、インストール状況を確認します。

「openjdk 11.0.17」と表示されればOKです。

 

Blynkサーバーのダウンロード

ドキュメントの最新版のダウンロードリンクをクリックすると、次のページが表示されます。

Release Log4j2 vulnerability fix · Peterkn2001/blynk-server · GitHub

「server-0.41.17.jar」をダウンロードします。

 

自分のホームディレクトリ(ぼくの場合はC:\Users\hiro)にBlynkディレクトリを作って、そこにダウンロードしたserver-0.41.17.jarを移動させます。

 

コマンドプロンプトだとこんな感じ

 

エクスプローラーだとこんな感じに表示されます。

 

Blynkローカルサーバーの実行

コマンドプロンプトで次のコマンドをBlynkディレクトリで実行します。

java -jar server-0.41.17.jar -dataFolder .

うまく実行できた場合の表示はこんな感じになります。

 

また、こんな画面も表示されるのでアクセスを許可してあげてください。

 

Blynkローカルサーバーの初回起動時には、動作に必要なフォルダやファイルが自動的に作られるようになっています。

 

初回起動後にBlynkフォルダをエクスプローラーで見ると、こんな感じになっています。

「admin@blynk.cc.Blynk.user」というのがユーザーファイルで、初期状態では管理者用のユーザーが1人いるだけです。

 

以前のBlynkアプリにはユーザー登録用のリンクがあったので、Blynkローカルサーバーでもそのリンクからユーザーを作ることができたみたいですが、今のBlynkアプリはユーザー登録用のリンクが削除されてしまっているため、ユーザー登録用のインターフェースがない状態となっています。

 

でも心配は入りません。ユーザーファイルはJSON形式の単なるテキストファイルなので、管理者用のユーザーファイルをコピーして中を書き換えれば新しいユーザーを作ることができます。

 

例えば「user1@blynk.cc.Blynk.user」というユーザーを増やす場合は、管理者用のユーザーファイルをコピーして、ファイル名と次の4箇所を書き換えればOKです。

パスワードは管理UIから変更できるので気にしなくても大丈夫です。

 

管理UIへのアクセス

管理UIへのアクセス方法は、初回起動時のターミナルに表示されています。

「Your Admin url is」の後ろのURLをブラウザに入力してアクセスします。

ログイン用のemailとランダムで発行されたパスワードも表示されているので、これを使います。

 

ただ、厄介なことに、今時のブラウザはセキュリティが厳しくなっているためにすんなりとログインページが表示されません。

 

ブラウザでターミナルに表示されたURLを入力すると次の画面が表示されるので

「詳細設定」をクリックします。

 

一番下に表示された「〜に進む(安全ではありません)」をクリックします。

 

そうして、やっと、Blynkローカルサーバーの管理UIへのログイン画面が表示されます。

 

管理UIにログイン後、「Users」メニューをクリックするとユーザーリストが表示されます。

 

各ユーザーのEmalをクリックすると、パスワードなどが編集できる画面が表示されます。

 

Blynkアプリの接続先をBlynkローカルサーバーに切り替える

Blynkアプリをログアウトします。

 

「Login」をタップします。

 

真ん中辺りのアイコンをタップします。


サーバーの選択ができる画面が表示されるので、ボタンを「Custom」に変更して、管理UIと同じIPアドレスとポート番号を入力して「OK」をタップします。

 

マイコンのプログラムの接続先をBlynkローカルサーバーに切り替える

マイコン側ではプログラムのBlynk.begin()行を修正する必要があります。

 

元の行

Blynk.begin(Auth Token, SSID, パスワード));

 

修正後の行(IPアドレスを使う場合)

Blynk.begin(Auth Token, SSID, パスワード, IPAddress(xxx, xxx, xxx, xxx), 8080);

 

修正後の行(ホスト名を使う場合)

Blynk.begin(Auth Token, SSID, パスワード, ホスト名, 8080);

 

外出先から使うには

Blynkローカルサーバーを使う場合の一番の問題は、そのままでは外出先からBlynkが使えないことです。

 

一番素直な方法は、インターネット回線に接続しているルーターにポートフォワード設定をして、DDNSサービスを利用することだと思います。

 

「ちょっとBlynkアプリだけ外出先から使いたい」というような場合にはngrokのようなトンネリングサービスを使う方法もあります。

トンネリングサービスを使う場合の注意点は、BlynkアプリはTCPでトンネリングしなければならないということです。

 

ngrokの場合はコマンドプロンプトで次のように入力します。

ngrok tcp 9443

 

Blynkアプリをngrok経由で接続したときの画面はこんな感じになります。

ngrokの無料プランでは、コマンドを実行するたびにポート番号が変更されてしまいますが、一時利用には十分でしょう。