【Blynk】ローカルサーバー立ててサブスクなしでウィジェット使い放題ホームオートメーション

Blynkというサービスを当ブログではこれまでに数回紹介している。

それは自作スマートホームを実現するのに使い勝手の良いサービスだった。だが彼らは内容を刷新して儲けに走るようになった。

どういうことかというとBlynk LegacyからBlynk2.0というものに完全置き換えみたいにして無料または格安で使える範囲が著しく狭まったのだ。それまではBlynk Legacyという古いシステムだったが新しくしてユーザーからサブスクでお金をどんどん取ろうという仕組みだ。

Blynk LegacyというのはBlynk2.0ほどの利便性はないがローカルサーバーを自分で立てさえすれば只で無制限にウィジェット(IoT機器とやりとりする機能のようなもの)を作ることができるらしい。

一般的には自作IoT機器を作ったとしてもスマホとの情報のやりとりをするにはだいたいどこかのサービスの世話にならなければならずほとんど只ではなにもできない。

しかしBlynk Legacyのローカルサーバーを構築できればそれが只で無制限にできるようになる。ありがとうBlynk。

だがそのローカルサーバーを立てるというのがなかなか難関で数週間悪戦苦闘してようやく実現できたのでここに紹介する。

スポンサーリンク

今回のゴール

冒頭でも述べたようにBlynkサーバーを自前で立てればBlynkアプリ内で貨幣のように扱われているENERGYというのを無制限に自分に与えることができる。まるで神になったような気分にもなれる。

▼下の画像の電池マークの横に997,200とあるが、これが通常のBlynk Legacyだと初期状態では1000だったか2000だったか忘れたがそんなもんしかない。いくつかウィジェットを配置するともうカツカツになって課金に応じなければ使えなくなる。もっともウィジェットをどれか削除すればENERGYが復活する良心的設計ではあるが。

Blynk Legacy アプリ

その神モードになってIoTデバイスを自分で好きなだけ作って家中に配置できるようになりましょうというのが今回のゴールだ。

ただしある程度前提条件がある。それなりにITリテラシーが備わっている必要がある。スマホしかイジったことないけど好きなだけ声でパソコンつけたり声でWi-Fiなし旧型ルンバを動かしたりなどしたいというのはちょっと虫が良すぎる。

パソコン使えるのはもちろんのことプログラム(C言語ぐらい必須)も多少作れますとか、光回線引く手続きできてルーターの設定も調べながらでも自分でできますっていうくらいは最低限必要だ。つまり俺がその最低レベルでの具現者だと思っている。

Blynkローカルサーバーに必要な機器

Raspberry Pi

以前、別の記事ではNode-REDを常時動かすのにRaspberry Piが要ると書いたことがあるが、今回はBlynkのサーバーを動かすのにRaspberry Piが要る。

【参考】

【Node-RED】自宅のパソコンをAlexaから起動するしもちろん出先からも起動できる
IoTばかり最近(2021年後半〜2022年初)ハマりすぎていてそればかり考えている。まさに若い頃とある神社で言われた「あなたは最初に就いた仕事が合ってるわよ」という言葉どおりで自分でも還暦近くなって天職を見つけた(職にはなってない...

必ずしもRaspberry PiでなくてもWindowsパソコンでもMacでも可能だがランニングコストを考えたらRaspberry Piがベストチョイスだ。

だからNode-RED用に1個、Blynk用に1個と2個Raspberry Piを常時起動しておきたい。1個のラズパイで両方ループさせておくこともできなくはないだろうけどできればそれぞれで動かしておいたほうが無難じゃないかな。

それでも2個で1万数千円だ。中古でパソコン買うより安いぞ。

ESP32またはESP8266など

Wi-Fiなし旧型ルンバを遠隔操作

自作IoT機器を縦横無尽に活躍させるのが今回の趣旨なのでESP32やESP8266などのマイコンボードが要るがとりあえずサーバーを動かすだけならなくてもいい。

サーバーがいくら動いていても動かすデバイスがないと始まらないので一応ここに挙げただけ。

Blynkローカルサーバー立てるのに必要なサービス

Blynk legacy

Blynkレガシーのサーバーに必要なコンポーネントをネットからダウンロードするだけだし、すべて無料だから楽しい世の中になったものだ。

Blynkローカルサーバー立てるまでの手順

いろいろネットの情報を見まくっておそらく10数件のサイトを見たし海外のサイトも見たしYouTubeもいろいろ見たが結局最後はここのサイトを参考にしてうまくいったので直接参照してください。

【設置編】Blynk local Server をRaspberry Piで作る
「アレクサ、部屋の温度を教えて」実現のための第2歩になります。脇道かもしれません。下準備です。Alexaが部屋の温度を答えるためには、Amazon Alexaのサービスに温度情報が伝わらねばなりません。 その温度情報をAlexaのサービスに伝えるのが Blynk...

Raspberry Pi

ラズビアンOSのインストール

Raspberry PiのOSインストールなんてけっこう前に最後にやったので忘れてしまっているが、↓ここの公式サイトからそれぞれのパソコンOSにしたがったセットをダウンロードしよう。
Raspberry Pi OS – Raspberry Pi
そうするとRaspberry Piイメージャーというアプリがダウンロードされるのでそれを実行するとイメージ書き込みツールが起動する。

このへんの流れについては以前のスマートロック作成に挑んだ記事でも述べているのでそちらに譲る。

ラズベリーパイ-スマホ-スマートロックを開閉-2 ラズパイ初期設定
ラズベリーパイを使ったスマートロックをつくる工作の2話目。 今回はラズベリーパイを初期設定し、外部の端末(WindowsとかMacとか)からリモートで使えるようにする。 その他日本語入力できるようにとかWi-Fi接続とか...

固定IPアドレスにする

サーバーとして機能させるためにはIPアドレスを固定しておく必要がある。じゃないとクライアントデバイスがアクセスしたいときに違っていたら迷子になるから。

IPアドレスの固定についても上記の記事ですでに述べているのでここでは省略する。

リモートでパソコンから操作できるようにVNCの設定もしておこう。そのへんも上記記事ですでに説明している。

Blynkサーバーをインストールして起動する

ここから先はリモートで通常のパソコンから操作するほうが楽なのでそれを前提に説明する。

参考サイトで説明していることの受け売りではあるが、

  1. JAVA8をインストールする。ディレクトリは/home/piでもよし、新しく作ってもよし。
    $ sudo apt install openjdk-8-jdk openjdk-8-jre
  2. Blynkローカルサーバーライブラリをダウンロードする。オリジナルのサイトはすでにサービス終了してしまっているので奇特な有志の方のサイトからいただく。
    $ wget “https://github.com/Peterkn2001/blynk-server/releases/download/v0.41.16/server-0.41.16-java8.jar”
  3. Blynkサーバー起動する
    $ java -jar server-0.41.16-java8.jar -dataFolder /home/pi/Blynk
    うまく起動できると以下のようなメッセージが表示されるはず
    Blynk Server successfully started.
    All server output is stored in current folder in ‘logs/blynk.log’ file.

Blynkローカルサーバーが自動起動されるように設定する

Raspberry Pi起動時にBlynkサーバーも自動で起動するように設定する。

$ crontab -e

エディタが開くので一番下の行までカーソルを進めて以下追加する。

@reboot java -jar /home/pi/server-0.41.16 -java8.jar -dataFolder / home / pi / Blynk &

crontabというのは定期実行させたいコマンドを入れておくファイルで@rebootという頭の文字がおそらく起動時に実行するという意味だろう。

保存してエディタを閉じる。CTRL+O→エンターで保存。 CTRL+Xで閉じる。

メール送信できるようにする

すでにBlynk Legacyを使ったことがある人ならわかると思うが、スマホアプリで新しいプロジェクトを創ると最初にTokenを通知するメールが届く。

これをRaspberry Piにやらせるように設定する。

インストールしたディレクトリにmail.propertiesというのがあるはずなのでそれをエディタで開く。

$ sudo nano mail.properties

ファイルの中で以下の2行を変える。

mail.smtp.username=xxxxxx@gmail.com

mail.smtp.password=パスワード

これはTokenの送信元に使うメアドで、なぜかgmailがいいとどの参考サイトも異口同音に言っているのでそれに従っておいたほうが無難かもしれない。ここに入れるメールアドレスは自分の普段使っているgmailアドレスで構わない。

ただ2段階認証を設定している場合にはエラーになってしまうのでGoogleのセキュリティ設定のページでアプリ固有のパスワードというのを設定してそれを入れるようにしよう。▼ここを参考にしてください。
アプリ パスワードでログインする – Google アカウント ヘルプ

ルーター

ポート転送の設定

Blynk Legacyのアプリを家の中だけでしか使わないのならここの設定は不要だがそれではせっかくのホームオートメーションがいまいち面白くないものになる。

どうせなら外出先からもコントロールしたいものだ。

ポート転送といったりポートフォワーディングといったりポート開放といったりするがどれも意味は同じ。

Raspberry Piに設定した固定IPアドレスとポート番号9443,8080,443の3つでポート転送の設定をするように説明してくれていたサイトがあったがどこのサイトだか忘れた。▼下記サイトがその1つ。
【トラブルシューティング】Blink local Server をRaspberry Piで作る-紆余曲折の記録

9443ポートについてはアプリからのログインのときに必要になる。

ポート開放のやり方はそれぞれのルーターの説明書なりを見てそれに倣ってやってほしい。

NUROルーター&自前ルーターの場合

自分がつまずいた点として1つ備忘に残しておく。

我が家はNURO光でプロバイダーはSo-netを利用している。So-netから送られて使っているルーターはF660というやつでそれなりにスピードには満足しているがIoT機器が増えてくるとルーティング機能だのファイアーウォール機能だのというのを1台のルーターで賄うのはどうも大変らしくしばしばWi-Fiが切れるという事態に直面した。

そこでTP-LinkのメッシュWi-Fi機能もあるゲーミングルーターARCHER AX73というのを買って増設した。

2重ルーターというのは禁じ手なので回避する方法はこちらのブログを参考にした。
【NURO光の設定】二重ルーター問題を解決💚ONU(F660A)のDMZ設定で自前ルーター(Archer AX73)を「ルーターモード」で使う! | Cafe Fuew|ふうカフェ

で何につまずいたかというと、ポートフォワーディングあるいはポート開放の設定を新しいTP-Linkのルータだけでしかやらなかったのでうまく外から自前のBlynkサーバーにアクセスできなかったのだ。

正解は新しいルーターでポート開放するのはもちろんのこと、今までの(光回線と直接つながっているほうの、さらにいうとより家の外に近いほうの)ルーターでもポート開放の設定をする。そのとき開放する相手IPアドレスは内側にあるRaspberry PiのIPアドレスではなく新しいルーターのWAN側アドレスを指定することだ。

ここ大事。うまくいった。

スマホ

Blynk Legacyアプリを入れる

Blynk LegacyアプリはアイフォンのAPPストアでもAndroidのPlayストアでも手に入るが最新版では新しいアカウントが作れないようになっている。

Blynk Legacy アプリ

だから少し古いバージョンのものをインストールする必要がある。

とりあえずAndroスマホだけで完結するやり方を1個だけ述べておく。なぜならここはアンドロ集団だから。iPhoneで古いバージョンのアプリを入れる方法は知らん。AndroidアプリでできたあとはiPhoneで同じアカウント同じサーバーにログインできるからまずはAndroidスマホでやってみるべし。

以下ような前バージョンアプリをアーカイブ(?)だかしてくれているサイトにアクセスする。
APKPure APKを通じてオンラインで APK をダウンローダする | APKPure公式サイト

そこでBlynkを検索してアカウント作成できそうでなるべく新しいアプリをダウンロードする。ダウンロードしたインストールファイルAPKを実行する前に新しいバージョンのアプリが入っていたらアンインストールしておくこと。

アカウントの登録でローカルサーバーを指定

アカウント作成で画面下の方にある・・・が縦に並んでいるアイコンをタップすると現れるBLYNKとCUSTOMというのでCUSTOMのほうを選び、IPアドレスにRaspberry PiサーバーのIPアドレスを入れる。

Blynkローカルサーバーにアカウント作成

そうするとRaspberry Pi内にアカウントが作成されるのでプロジェクトを1個作ると自分宛てにTOKENお知らせメールが届くはずだ。

万一メールがちゃんと届かなくてもRaspberry Piの端末画面でブラウザを開いて127.0.1.1:9443を開くとちゃんと管理画面が開けるのでわかる。

管理画面で最初にユーザー名とワスワードを聞かれたらadmin@blynk.ccとadminを入れれば入れるはず。

ユーザーリストには今登録したメールアドレスが入っているはず。そのアドレス部分をクリックすると画面が変わる。

Blynkローカルサーバー管理画面

▼変わった画面で下にスクロールしていくと今作ったプロジェクトのTOKENが現れるのでそれをコピペして使えばよい。

Blynkローカルサーバー管理画面

自分ちのグローバルIPアドレスで登録

さて先程のBlynk Legacyアプリでローカルアドレス(例えば192.168.0.182)でログインすると家の中では良いものの外出して自宅ルーターから離れたら使えなくなるのではないかという疑問を感じた方は鋭い。

そのとおり。使えなくなる。それは困る。

だから先程のBlynk Legacyアプリのログインでは自分の自宅のグローバルアドレスを指定する。ただしWi-Fiにつながったままだとグローバルアドレス指定すると自分の家から自分の家に電話をかけるようなものでつながらない。

だからそのときは一旦Wi-Fiをオフにすること。

つまり自宅にいるときにBlynkを操作したかったらWi-Fiをオフにし、出先ではWi-Fiをオンにしても良いし、しなくても良いしというわけだ。

家の中からの操作マクロ

それではちょっといちいち切り替えるのが面倒くさいじゃないかというツッコミをする人いるかな。っていうかここまで書いてきた記事をまともに読む人って何人ぐらいいるんだろ?

一応最後まで書いておくけどそれを簡単に実現するマクロがある。っていうかマクロ実行できるアプリを入れておく。

マクロドロイドっていうアプリで実現可能だ。

MacroDroid - デバイス自動化

MacroDroid – デバイス自動化

ArloSoft無料posted withアプリーチ

このアプリは3段の設定項目がある。

  1. トリガー
  2. アクション
  3. 条件

というのをそれぞれ設定する。詳細はもっと詳しくこれだけ説明してくれているサイトを参考にしてほしい。

では手順に移る。

  1. マクロの追加をして作成開始する
  2. トリガーでアプリ起動時を選び、さらにBlynkアプリの起動時という形にする
  3. アクションではWi-Fiをオフにするを選ぶ
  4. 条件ではWi-Fi接続中という条件を選び自宅のSSIDを選ぶ。つまり自分ちのWi-Fiに接続しているときだけこのマクロが発動するようにするのだ。

ではBlynkアプリを終了させたときに再びWi-Fiに接続したいと思ったらどうするか。これももう一個マクロを作っておく。

  1. トリガーでアプリ終了時というのを選び、さらにBlynkアプリを選ぶ
  2. アクションではWi-FiをONにする
  3. 以上

簡単だ。これで家の中にいても外にいてもBlynk Legacyアプリが正常に起動して自分の家のRaspberry Piにちゃんと接続できる。

まとめ

使い放題が実現できて冒頭述べたように神になったような気分をちょっとだけ味わっているが、根が貧乏性なためあまり贅沢な使い方を思いつかないwww

ボタンも地味なボタンといろいろ設定できるボタンとあるが、しばらく地味なボタンを無条件に選んでいた。

いいんだよ、もっと自分を開放しても。なんて思っても急に開放できない。

慌てずにいろいろ作り込んで行こう。

 

タイトルとURLをコピーしました