Raspberry PiにBlynkをインストールして動作確認する手順のメモ

Raspberry PiをIoT化するのに,PythonのWebObパッケージを使用しようと思っていたが,Blynkという非常に便利なサービスがあることがわかった.WebObのことは一旦置いておいて,Blynkを使ってみようと思う.Blynkの導入と,Blynkを使ってRaspberry Piに接続したUSBカメラを遠隔制御するためのメモ.

Blynkって何?

Blynkは2015年頃より提供されているIoT開発を促進する一つのツール.電子工作でよく使用されるArduinoやRasipbeery Piをサポートしており,それぞれのデバイス向けのライブラリをインストールして,スマホ側でアプリさえダウンロードすれば超簡単にIoTが実現できてしまうというもの.

f:id:EleTECH:20190211162000p:plain
Blynkのイメージ図(http://docs.blynk.cc/より引用)

なぜBlynkを使うか?

私は以前より畑監視システムの作製に取り組んでいて,ついこの前までpythonのWebObを使用しようと思っていて,その動作確認まで行っていた.
www.eletech.work
しかし,同一ネットワーク以外のところからアクセスしようとすると少し面倒くさい部分がある.それは,アクセスしようとする度にIPアドレスが変わってしまうため,今Raspberry PiのIPアドレスが何かを毎回調べないといけないからである.
これを解決するためには,お金を払ってグローバルな固定IPアドレスを取得するか,ダイナミックDNS(DDNS)サービスを利用するかであるが,前者は畑監視システムのために固定費が発生するという状態にしたくないということ,後者はありだけど結構設定とか面倒くさいということがあって,別の方法を探していた.
そんな時,師匠からBlynkというサービスがあることを教えてもらった.Blynkでは,BlynkサーバーにスマホからもRaspbeery Pi側からもアクセスする構図になるので,上記のような面倒なことをしなくてもやりたいことが実現できそうということで,一度Blynkにトライしてみようということになったのである.
ちなみに,Blynkではボタンや動画ストリーミングなど色んなライブラリが用意されているのだが,アプリ側で各ライブラリを使用するごとにエネルギー(お金)が必要になるが,最初から2,000エネルギーがチャージされているので,最初は無料で使用できる.無料分を使い切ったとしても,各コンポーネント毎に購入で,月額のお金などが発生しないというところも魅力的.色々やりたくなったら,ちょこっとライブラリと購入して使える,というお手頃感がいい感じ.

Blynkアプリのインストール

BlynkアプリはiOS,Android向け両方に提供されている.とりあえずインストールして,以後の動作テストのためにtestというプロジェクトでも作っておく.プロジェクトを作ると,そのプロジェクト用のトークンが発行されるが,要はこのトークンがこのプロジェクト専用のBlynkサーバーへのアクセス先を決めてくれている.(アプリのインストールは超簡単でガイド通りに進めばよいので本記事では省略する)

Blynkの導入と接続テスト

先人のWebページを参考にさせて頂きながらRaspberry PiへのBlynkのインストールを進める(Raspberry Pi Zero WHでBlynk経由、Python3を使って GPIO制御、BMP280測定値の読み取りをしてみる。).
まず,blynkインストール用のフォルダを準備して,wgetでライブラリを取ってくる.

pi@raspberrypi:~ $ cd
pi@raspberrypi:~ $ mkdir -p src/blynk
pi@raspberrypi:~ $ cd src/blynk
pi@raspberrypi:~/src/blynk $ wget https://github.com/blynkkk/blynk-library/releases/download/v0.5.4/Blynk_Release_v0.5.4.zip
pi@raspberrypi:~/src/blynk $ unzip Blynk_Release_v0.5.4.zip
pi@raspberrypi:~/src/blynk $ cd libraries/Blynk/linux

次にWiringPiをインストールしてビルドおく.これがないと,先ほど取ってきたblynkライブラリをmakeできない.

pi@raspberrypi:~/src/blynk/libraries/Blynk/linux $ git clone git://git.drogon.net/wiringPi
pi@raspberrypi:~/src/blynk/libraries/Blynk/linux $ cd wiringPi/
pi@raspberrypi:~/src/blynk/libraries/Blynk/linux/wiringPi $ ./build 

ビルドが正常に終了したら,Blynkのディレクトリに戻ってmakeを実行する.

pi@raspberrypi:~/src/blynk/libraries/Blynk/linux/wiringPi $ cd ..
pi@raspberrypi:~/src/blynk/libraries/Blynk/linux $ make clean all target=raspberry

makeできたら,blynkという実行ファイルが出来上がっていることを確認.

pi@raspberrypi:~/src/blynk/libraries/Blynk/linux $ ls -l
合計 108
-rw-rw-r--  1 pi pi  4127  95 21:14 BlynkApiLinux.h
-rw-rw-r--  1 pi pi  5285  95 21:14 BlynkApiWiringPi.h
-rw-rw-r--  1 pi pi  1300  95 21:14 BlynkOptionsParser.h
-rw-rw-r--  1 pi pi  3768  95 21:14 BlynkSocket.h
-rw-rw-r--  1 pi pi  1901  95 21:14 Makefile
-rw-rw-r--  1 pi pi   584  95 21:14 README.md
-rwxr-xr-x  1 pi pi 30472  211 06:37 blynk
-rwxr-xr-x  1 pi pi   410  95 21:14 build.sh
-rw-rw-r--  1 pi pi  1026  95 21:14 main.cpp
-rw-r--r--  1 pi pi 32584  211 06:37 main.o
drwxr-xr-x 11 pi pi  4096  211 06:35 wiringPi

さっそくblynkを起動してみる.アプリをインストールしてプロジェクトを作成するとトークンが発行されるので,これを指定する必要がある.

pi@raspberrypi:~/src/blynk/libraries/Blynk/linux $ sudo ./blynk --token=b8*******************************5a
[0] 
    ___  __          __
   / _ )/ /_ _____  / /__
  / _  / / // / _ \/  '_/
 /____/_/\_, /_//_/_/\_\
        /___/ v0.5.4 on Linux

[1] Connecting to blynk-cloud.com:80
[263] Ready (ping: 81ms).

この状態で,アプリ側から接続のテストを行う.アプリを起動しプロジェクトを開く.

f:id:EleTECH:20190211161121p:plain
Blynkプロジェクトを開く
この状態で右上の再生ボタンのようなものを押す.これが,Raspberry Piとの接続要求ボタン.このボタンを押すと次のような画面が出てくる.
f:id:EleTECH:20190211161302p:plain
接続状態の画面
この状態で既に接続されている.元々接続ボタンがあったところの四角いボタンは,このボタンを押せばRaspberry Piとの接続を切ることができる.その左側にあるボタンを押すと,接続状態が確認できる.
f:id:EleTECH:20190211161443p:plain
接続状態の確認
Raspbeery Piとの接続状態がOnlineとなっていて,無事接続できていることがわかる.本当に接続できているのか疑わしかったので,この状態でRasppbery Pi側のblynkを終了してみた.すると,
f:id:EleTECH:20190211161618p:plain
Raspberry Pi側のblynkを終了したときの動作
と出てきて,一旦アプリを終了して再度アプリを開いて接続状態を確認してみると,
f:id:EleTECH:20190211161718p:plain
オフラインの状態
となっていて,確かにRaspberry Pi側との接続や切断がちゃんと反映されている感じであった.とりあえず,最低限の準備は完了.