「アレクサ、部屋の温度を教えて」実現のための第2歩になります。脇道かもしれません。下準備です。Alexaが部屋の温度を答えるためには、Amazon Alexaのサービスに温度情報が伝わらねばなりません。
その温度情報をAlexaのサービスに伝えるのがBlynkです。Blynkはクラウドサービスなのですが、色々使いたいのでガジェットが無料になるローカルサーバーを作ります。今回はローカルサーバーの設置までです。
これを作ったのは2年くらい前(2019年)です。今はBlynkのサービスが新しくなり、Local serverがなくなったようです。
手順と用意したRaspberry Pi
- Raspberry PiにRasbianをインストールする。
- Raspberry PiにBlynk Serverをインストールする。
です。
用意したRaspberry Piは「Raspberry Pi Zero W スターターキット」です。その内容は、
- 本体:Raspberry Pi Zero W V1.1
- ケース:Piケース Official for Pi Zero 赤/白
- USB電源アダプター:USB電源アダプタ 5V/1A/1m microUSBコネクタ
- SD:OS書込済 Team microSDHC 8GB CL10 アダプター付
- HDMI変換アダプター:Raspberry Pi mini HDMI → HDMI アダプター 白
- USB変換ケーブル:Raspberry Pi USB 2.0 OTG micro USB -> USB A 15cm 白
- GPIOピンヘッダー:2×20 2.54mm ピンヘッダー for Pi GPIO
以下は、「Raspberry Pi Zero W」をWindows10 PCだけでセットアップする方法です。
1 Rasbianインストール
1) microSDを「SDFormatter」でフォーマットする
Windows PCで操作します。上のリンク先からフォーマッターをダウンロードして、microSDを再フォーマットします。具体的な方法は、次が詳しいです。
2) RasbianをmicroSDカードに書き込む
microSDカードをUSBに接続しておきます。続いて、Raspberry Pi OS(以下、Rasbian)のwindows10公式ダウンロードサイトから”Raspberry Pi Imager”をダウンロードして実行します。
「CHOOSE OS」, 「CHOOSED CARD」, 「WRITE - yes」の順に押してRasbianをインストールします。
2 Rasbian起動設定
1) SSHの事前設定(ssh空ファイル作成)
- エクスプローラ左クリック->新規作成->テキストドキュメント->拡張子なしのsshにリネーム
2) 無線LANの事前設定
ルートに、"wpa_supplicant.conf"という名前のファイルを下記内容で作成します。
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="SSID" // アクセスポイント “***your ssid***”
psk="暗号化キー" //同パスワード "***uour password***”
}
3) Raspberry piのIPアドレスを調べる
物理アドレスが "b8-27"で始まるものがRaspberry Piになります。この例だと、192.168.0.22が該当します。
4) 疎通確認
"ping 192.168.0.22"とやって、疎通確認をします。物理的にはRaspberry PiがLANに接続されました。
3 VNCの有効化
1) TeratermでRaspberi Piに接続
ここからは、Teratermを使います。TCP/IP、ホスト名はRaspberrypi.local とし、OKをクリックです。
(補足事項)いつの頃からか、ホスト名がRaspberrypi.local では「無効なホスト」と出て、つながらなくなりました。(Teratermが閉じる)。代わりにホスト名をRaspberry piのIPアドレス "192.168.0.22"にすると問題なくログイン画面が出ます。
ユーザ名 :pi (初期値) パスフレーズ :raspberry (初期値)を入力して、OKをクリックします。
Tera Term上で、"sudo raspi-config"(raspiを-configオプションで実行。-configの前に空白はいりません。)と入力します。
2) Raspberi Pi software Configuration ToolでVNCの有効化を行う
Raspberi Pi software Configuration Tool(raspi -config)が起動します。”3 Interface Options” を選択。次に"P3 VNC"を選択。 VNCの有効化を行います。
4 Raspberry Pi 環境設定
- 接続先:raspberrypi.local
- Username:pi(初期値)
- Password:raspberry(初期値)
「設定」、「Raspberry Pi 」と選択していき、次の項目を設定します。
1) Locale設定
- Language:ja(Japanese)
- Character Set:EUC-JP
2) Time Zoneの設定
- Area:Japan
3) Keyboardの設定
- Layout:Japanese
- Variant:Japanese
4) WiFi Countryの設定
- Country:JP Japan
ここまでで、Rasbianのインストールができました。続いて、Blynk Serverをインストールします。
2.Raspberry PiにBlynk Serverをインストールする
Blynkは、インターネット経由でArduino、ESP8266、RaspberryPiなどを制御するためのiOSおよびAndroidアプリを備えたプラットフォームです。ウィジェットをドラッグアンドドロップするだけで、すべてのプロジェクトのグラフィックインターフェイスを簡単に構築できます。
ここからの操作はVNCビューワーで行います。
1) Login to Raspberry Pi via ssh;(Raspberry Piにsshでログイン)
2)Install java 8;(Java 8をインストールする)
VNCビューワーにあるTerminalを開き、次のインストールコマンドを入れます。
$ sudo apt install openjdk-8-jdk openjdk-8-jre
3) Make sure you are using Java 8;(Java バージョンなどを確認)
VNCビューワーにあるTerminalで次の内容を確認します。
$ java -version
Output: java version "1.8"
4) Download Blynk server jar file;(Blynk serverをインストールする)
(注記)GitHubから公式ライブラリが削除されたので、次のコマンドは無効になりました。すぐ下のブロック内が代用です。
$ wget "https://github.com/blynkkk/blynk-server/releases/download/v0.41.16/server-0.41.16-java8.jar"
Blynk Local Server Library(非公式)
@StarHelix if you read the topic in full then you’ll see that there is a copy here:
VNCビューワーにあるTerminalで次のコマンドを入力します。PeteKnightさんのコピーライブラリです。
$ wget "https://github.com/Peterkn2001/blynk-server/releases/download/v0.41.16/server-0.41.16-java8.jar"
【2023/10/03 訂正】
ファイル名が"server-0.41.13-java8.jar" となっていたので、"server-0.41.16-java8.jar" に訂正
5)Run the server;(Blynk serverを動かす)
- default 'hardware port 8080'
- default 'application port 9443' (SSL port)
VNCビューワーにあるTerminalで次のコマンドを入力します。
$ 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.
6)Raspberry Piの起動時にBlynkサーバーが自動で立ち上がるようにする
ファイル"/etc/rc.local"の最終行に1行追加します。crontab -e を開いて実行します。(実際は crontab -e は使いませんでした。別ブログに書きましたが、rebootでアカウントが消えるという問題が発生してその対策で、$ sudo nano /etc/rc.localとnanoエディターを使って編集しました。)
$ crontab -e
ファイルの一番下までスクロールして、次のように入力します。
@reboot java -jar /home/pi/server-0.41.16 -java8.jar -dataFolder / home / pi / Blynk &
CTRL + X、Yの順に入力し、Enterキーを押して、ファイルを保存します
7)mail.propertiesの作成
Blynkサーバーは、各プロジェクトの認証トークンが記載された電子メールを送信します。このため、次のコマンドを実行して”mail.properties”ファイルを作成し、メールの設定をおこないます。
mail.propertiesは、javaのあるフォルダに作ります。"/home/pi"
$ sudo nano mail.properties
mail.properties
mail.smtp.auth=true
mail.smtp.starttls.enable=true
mail.smtp.host=smtp.gmail.com
mail.smtp.port=587
mail.smtp.username=for.example@gmail.com // yourメールアドレス
mail.smtp.password=***your password*** // yourメールアドレスのパスワード
(注記)ここのID(メールアドレス)とパスワードは、BlynkのログインID/パスワードではないことに注意
8)Raspberry Piの再起動
$ sudo reboot