【設置編】Blynk local Server をRaspberry Piで作る

published_with_changes 更新日:

labelBlynk labelIoT labelRaspberry pi

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

その温度情報をAlexaのサービスに伝えるのがBlynkです。Blynkはクラウドサービスなのですが、色々使いたいのでガジェットが無料になるローカルサーバーを作ります。今回はローカルサーバーの設置までです。

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

目次
  1. 手順と用意したRaspberry Pi
  2. 1.Raspberry PiにRasbianをインストールする。
    1. 1 Rasbianインストール
      1. 1) microSDを「SDFormatter」でフォーマットする
      2. 2) RasbianをmicroSDカードに書き込む
    2. 2 Rasbian起動設定
      1. 1) SSHの事前設定(ssh空ファイル作成)
      2. 2) 無線LANの事前設定
      3. 3) Raspberry piのIPアドレスを調べる
      4. 4) 疎通確認
    3. 3 VNCの有効化
      1. 1) TeratermでRaspberi Piに接続
      2. 2) Raspberi Pi software Configuration ToolでVNCの有効化を行う
    4. 4 Raspberry Pi 環境設定
      1. 1) Locale設定
      2. 2) Time Zoneの設定
      3. 3) Keyboardの設定
      4. 4) WiFi Countryの設定
  3. 2.Raspberry PiにBlynk Serverをインストールする
    1. 1) Login to Raspberry Pi via ssh;(Raspberry Piにsshでログイン)
    2. 2)Install java 8;(Java 8をインストールする)
    3. 3) Make sure you are using Java 8;(Java バージョンなどを確認)
    4. 4) Download Blynk server jar file;(Blynk serverをインストールする)
  • Blynk Local Server Library(非公式)
    1. 5)Run the server;(Blynk serverを動かす)
    2. 6)Raspberry Piの起動時にBlynkサーバーが自動で立ち上がるようにする
    3. 7)mail.propertiesの作成 
    4. 8)Raspberry Piの再起動
  • 手順と用意したRaspberry Pi

    ローカルサーバーの設置手順は大きく分けて
    1. Raspberry PiにRasbianをインストールする。
    2. 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


    1.Raspberry PiにRasbianをインストールする。

    KeyboardやmouseなしでRaspberry Piのインストールしました。HDMIでモニタ代わりのTVに繋いでRasbianが立ち上がりましたが、Keyboardやmouseなしでは何もできません。

    インストールにはHDMIモニタとUSBドングル付きのコードレスキーボードとマウスが必要です。が、それらが無くてもsshで繋ぎPCから入出力を行う方法があったので、やり方をまとめておきます。

    以下は、「Raspberry Pi Zero W」をWindows10 PCだけでセットアップする方法です。

    1 Rasbianインストール

    1) microSDを「SDFormatter」でフォーマットする

    Windows PCで操作します。上のリンク先からフォーマッターをダウンロードして、microSDを再フォーマットします。具体的な方法は、次が詳しいです。

    【STEP-02】Raspberry Piに使用するmicroSDカードのフォーマット

    【STEP-02】Raspberry Piに使用するmicroSDカードのフォーマット

    一度、PCやRaspberry Piで使ったSDカードに新規でOSをインストールしたり、バックアップを取るときだけでなく、新品のSDカードを購入して最初に使うときも、必ずRaspberry Pi公式サイトが推奨する“SDメモリカードフォーマ

    2) RasbianをmicroSDカードに書き込む

    microSDカードをUSBに接続しておきます。続いて、Raspberry Pi OS(以下、Rasbian)のwindows10公式ダウンロードサイトから”Raspberry Pi Imager”をダウンロードして実行します。



    「CHOOSE OS」, 「CHOOSED CARD」, 「WRITE - yes」の順に押してRasbianをインストールします。

    2 Rasbian起動設定

    【2023/10/03 追記】
    Raspberry pi Imagerのバージョンアップによって、次項の
        1) SSHの事前設定(ssh空ファイル作成)
        2) 無線LANの事前設定
    は、右下の歯車マークをクリックすると、ここで設定できるようになりました。

    この設定を行って、Raspberry Pi OSをインストールすると、次項の 1)と 2) は不要になります。

    1) SSHの事前設定(ssh空ファイル作成)

    一旦、SDカードをPCから抜き差しするとSDカードが見えるようになります。
    次の手順で、作ったSDカードのルート(/boot)に空の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***”
    }
    
    C++


    3) Raspberry piのIPアドレスを調べる

    Raspberry pi に作ったSDカードをセットして、USB電源5V(だけでよい)をつなぎます。続いて、コマンドプロンプトで"arp -a" とやって、LAN内の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の有効化を行います。

    "2 Display Options"から、"D1 Resolution"を選択。解像度を1024x768にします。



    4 Raspberry Pi 環境設定

    VNC(RealVNCビューワ)で接続し、日本語の設定を行います。
    • 接続先: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アプリを備えたプラットフォームです。
    ウィジェットをドラッグアンドドロップするだけで、すべてのプロジェクトのグラフィックインターフェイスを簡単に構築できます。

    参考にしたサイトはここです。

    Creating a Local Blynk Server

    Creating a Local Blynk Server

    Creating a Local Blynk Server: In this post, we learn how to create a local Blynk server which will greatly reduce the overall latency that is sometimes present when using the default, remote server. We set it up using a Pi Zero W and we also create a demo project to make sure it…


    ここからの操作は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をインストールする)

    VNCビューワーにあるTerminalで次のコマンドを入力します。

    (注記)GitHubから公式ライブラリが削除されたので、次のコマンドは無効になりました。すぐ下のブロック内が代用です。

    $ wget "https://github.com/blynkkk/blynk-server/releases/download/v0.41.16/server-0.41.16-java8.jar"


    Blynk Local Server Library(非公式)

    ローカルサーバーがサポートされなくなったので、ライブラリがGitHubから削除されていました。ここのBlynkコミュニティで話されています。(Where to download Blynk local server - Issues and Errors

    代わりのライブラリです。コミュニティにいつも登場するPeteKnightさんがアップロードされています。
    PeteKnight  Regular   
    @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メールアドレスのパスワード
    C++

    (注記)ここのID(メールアドレス)とパスワードは、BlynkのログインID/パスワードではないことに注意

     

    8)Raspberry Piの再起動

    リブートして、完成です。

    $ sudo reboot

    Powered by Blogger | Designed by QooQ

    keyboard_double_arrow_down

    keyboard_double_arrow_down