Blynk Local Server 復旧とRaspberry Pi

published_with_changes 更新日: event_note 公開日:

labelBlynk labelIoT labelRaspberry pi

何年か前にRaspberry Pi zero で Blynk Local Server を立てました。これを使って各部屋に設置した自作の温湿度計や電力メータをスマホのBlynkアプリで見ていました。さらにAmazon Alexaと連携したスマートホームもどきの環境も楽しんでいました。

ひと月前にこれらが全て使えなくなったのですが、その原因がRaspberry Piにあるのか、Blynk側にあるのか、今ひとつはっきりしないまま、それを究明するのもおっくうでそのままにしていました。


というのは、Blynk Local Serverは俗にいうLegacy版の機能で、そのサービスが2022年に終了するという記事をどこかで見た記憶があり、その影響のあるかもと思っていたからです。

Raspberry Piのハード故障なら何とか回復できるけど、Blynk自体の問題なら何ともならないです。ネット上やSNS状にその手の情報が無いかと見て回りましたが、なさそうでした。ということは、Blynkの問題かとの迷いは取り越し苦労で、Legacy版のBlynk local serverはまだ使えるということになります。

Raspberry Piの故障個所はどこか

Raspberry Pi zeroの故障で一番ありうるのが、SDカードの故障らしいです。SDカード故障でなければ本体の故障になります。

SDカード故障かも

Raspberry Pi zeroからSDカードを抜きだして、Windowsのエクスプローラで見たところ、ファイルの一覧が見えました。ただし、Raspberry OSはLinux風なので、これは欠片が見えたという状況だと思います。



UbuntuのNautilusでも見てみました。ここではフォルダ構成やファイルがちゃんと確認できました。このとき「ファイルの修復」を促すようなメッセージが出たと思います。それに従って修復をしたところ、以降はメッセージが出なくなりました。

後から振り返ると、やはりSDカード故障が原因だったように思います。それがどういった故障かは調べた限りではわからなかったのですが、Ubuntuで修復できるのなら不良セクタのようなものなのでしょうか。

コマンドプロンプト

SDカードを修復後、コマンドラインからRaspberry Pi への疎通をみると、やはりダメです。 もし接続が成立していると物理アドレスに b8-27-...から始まるRaspberry Pi の192.168.0.22 が現れるはずです。

これも後から考えると、本当はこのSDカード修復後の段階で直っていたように思います。正常に動くようになってから気づいたのですが、起動後Raspberry Piの疎通確認ができるまでに5分かそれ以上かかります。このときは、そこまで待たないまま "ping" が通らないので、故障と判断していました。

SDカードを修復しても状況は変わらないので、この段階ではRaspberry Pi zero自体の故障を疑っていました。

Raspberry Pi zeroかも

Raspberry Pi zero の症状は、次の内容でした。
    LEDランプは点灯や点滅する。
    メインチップが熱を持つ。
    HDMI画面出力は未確認。

故障判定を説明しているブログが見つかりました。

Raspberry Pi Zero WH 故障確認 備忘録 - Qiita

Raspberry Pi Zero WH 故障確認 備忘録 - Qiita

経緯最近 Raspberry Pi Zero WH の活用方法を模索していて、睡眠時ミュージックボックスとして利用していた。ところがある朝、停止していた。(通常は鳴りっぱなし)ヘッドレスなので…

要点は
  1. microSDカードを含め全て取り外し、USB電源だけ接続して ON。メインチップが熱くなったらアウト
  2. microUSB(電源USBではなく)と Windows PC を USB接続。Windows 側が Zero を認識しなかったらアウト

 Zeroが生きている場合、Windows PCは新しいハードウェアの存在を示す「音」を鳴らし、デバイスマネージャに「BCM2708 Boot」と表示されます。


  ということらしいです。1. は熱くなりません。2.はデバイスマネージャが下図のようになりました。「BCM2708 Boot」は表示されますが、警告マーク付きです。プロパティを見ると、”このデバイスのドライバーがインストールされていません。 (コード 28)” となっています。いかにもダメそうな内容です。

BCM2708ブートのドライバってなに?そもそも、警告出てるのは異常なの?正常なの?と謎が深まります。


BCM2708ブートについて、このブログを見つけました。Raspberryの公式Q&Aも引用しているのでしっかりとした情報だと思います。

この記事の中での下記のデバイスマネージャの画像と添え書きを見て、私のケースと同じだったことからRaspberry Pi は正常だと確信した次第です。
Introducing the Raspberry Pi Zero

Introducing the Raspberry Pi Zero

Wow a new Pi - so exciting! The Pi Zero is the smallest, most affordable Pi ever. Wonder what's new & different? Let's check it out!


Looks dead, but it's not. (死んでるように見えるけど、そうじゃない)

モニタ出力

故障判断の一番簡単な方法は起動状態をモニタで見ることです。これを最初に行うべきでしたが、順番が真逆になってしまいました。判断のしようがなくなりモニタを繋いだという次第です。

HTMLポート経由でTVにつないだところ、イチゴマークが現れ、しばらく待つとRaspberry OSのデスクトップがちゃんと映りました。SDカード修復で復旧したと言えます。

これまでの確認プロセスが無駄な悪あがきだったということになります。




新規にSDカードを作る

故障/修復したSDカードを使うのは嫌なので、新調したSDカードにRaspberry OS とBlynkアプリを新しくインストールします。そのプロセスは以前に書いたブログどおりです。このブログもです。そのブログを読みながら同じプロセスを行えば良いので役にたちました。このブログは結構読まれています。

手順の概要は、以下のとおりです。
  1. Raspberry Pi OSのインストール
    1. SDカードのフォーマット(SDFOrmatter)
    2. Raspberry Pi OSのインストール(Raspberry Pi Imager)
    3. VNCの有効化(Tera Term上でsoftware Configuration Toolを実行)
    4. Raspberry Pi 環境設定(VNC Viewer)
  2. Legacy Blynk serverのインストール
    1. Java 8のインストール
    2. Blynk serverのインストール(server-0.41.16 -java8.jar)
    3. Blynk serverを走らせてみる(java -jar server-0.41.16-java8.jar ....)
  3. Blynk serverの設定
    1. Raspberry Piの起動時にBlynkサーバーが自動で立ち上がるようにする(/etc/rc.local の修正)
    2. mail.propertiesの作成
    3. sever.propertiesの作成
    4. /etc/rc.local の再修正

Raspberry Pi OS

32bit版と64bit版がありますが、Raspberry Pi Zero は32bit版です。
ProductProcessorARM coreDebian/Raspbian ARM
port (maximum)
Architecture
width
Raspberry Pi 1BCM2835ARM1176arm6hf32 bit
Raspberry Pi 2BCM2836Cortex-A7armhf32 bit
Raspberry Pi ZeroBCM2835ARM1176arm6hf32 bit
Raspberry Pi Zero 2BCM2710Cortex-A53arm6464 bit
Raspberry Pi 3BCM2710Cortex-A53arm6464 bit
Raspberry Pi 4BCM2711Cortex-A72arm6464 bit

Wifi設定

Raspberry Pi ImagerのWifi設定項目で5MHz(IEEE 802.11a)を選ぶと、なぜかつながりませんでした。図のように2.4MHz(IEEE 802.11g)にすると繋がりました。

Blynk Serverのバージョン

Blynkの公式ではローカルサーバーがサポートされなくなったので、ローカルサーバーは旧版非公式のライブラリを使います。
ここの最新は server-0.41.17.jar なのですが、うまく動かなかったのでひとつ前の server-0.41.16-java8.jar を使いました。


問題点1:壊れる前のアカウントを引き継ぐには
問題点2:アプリから新規アカウント登録ができない

新規にSDカードにBlyk serverをインストールした場合には、上記の問題がおこります。アカウント情報はスマホアプリ側が持っていると思っていたのですが、そうではないようです。Raspberry pi 側が持っていたようです。

当然、今までのアカウントではログインできません。おまけに、さらに悪いことに今のBlynkアプリではログイン画面から、"Create New Account" メニューが消えています。下図右側の"Login"しかないのです。


"Login"をクリックすると、次のIDとパスワードの入力になります。ここで従来のIDとパスワードで入力しようにもアプリ側から拒否されます。admin@blynk.ccでのログインは可能です。

SDカードを新調し新規インストールした場合には、従来のアカウントを引き継ぐことができず、新たなアカウントを作成することもできないという状況です。

Blynkが有料のBlynk 2.0 になり、従来のBlynkのサービスを停止しているので、これは当然のことなのでしょう。Legacy Blynk serverをBlynk 2.0の公共サービスとは別に自己範疇で使うのですから仕方がないのです。

従来のアカウントを引き継ぐ方法

いままでは前座で、ここからが本題です。

スマホアプリにアカウント情報を持っていないことが分かったので、今まで使っていたアカウント情報は修復したSDカードにあると考えられます。そう思って、UbuntuのNautilusで探していくと案の定、"/home/pi/Blynk"フォルダの下に ID(登録したメールアドレス)名のファイルがありました。デフォルトの admin@blynk.cc のファイルもあります。これらがアカウント設定ファイルだと思います。

ただ、私のアカウント設定ファイルはサイズ 0で中身がありません。そのファイルのタイムスタンプを見ると、ちょうどBlynk serverが働かなくなった時期と一致するので、このときログインしようとして失敗したアカウント記録が残されているのだと思います。


よく見ると"buckup"フォルダがあります。ここに定期的にアカウント情報がバックアップされているようです。バックアップされたファイルをコピー&リネームして新規SDカードの /home/pi/Blynkフォルダに入れると以前のアカウント設定が継続されるはずです。


VNC ViewerのTerminal で 新規にインストールしたSDカードの /home/pi フォルダ とその直下の  /home/pi/Blynk フォルダを覗いたのが下図です。

 /home/pi フォルダには、Blynkフォルダを始めとして、Blynk sever の server-0.41.16-java8.jar、設定ファイルの mail.properties と server.properties が収められています。

さらに、Blynkフォルダには 2つのアカウントファイル(admin@blynk.cc.Blynk.user , xxxxx@gmail.com.Blynk.user)があります。

cat xxxxx@gmail.com.Blynk.user でこのファイルを見ると、ウィジェット設定した各種の内容が書き込まれているのが何となく読み取れます。


新調したSDカードで起動した Blynk Legacy Server へスマホのBlynkアプリからログインします。


ログインすると、元どうりのウィジェットを表示させることができました。無事、Blynk serverの復旧です。

 


参考:新規にアカウントを作る方法

admin@blynk.cc.Blynk.userをコピーして新規ユーザのアカウントファイルを作る方法が以下に紹介してありました。
(レガシー)Blynkユーザー救済企画!WindowsでBlynkローカルサーバーを動かそう! - 知的好奇心 for IoT

(レガシー)Blynkユーザー救済企画!WindowsでBlynkローカルサーバーを動かそう! - 知的好奇心 for IoT

とうとう(レガシー)Blynkのクラウドサーバーが、今月末(2022年12月)で運用停止になります。 しかし、フォーク版のBlynkのサーバーがGitHubからダウンロードできるので、自分でBlynkサーバーを動かしてしまえば使い続けることができます。 Blynkサーバーの必要要件 Java 8か11 が必要 (OpenJDK, Oracle) Javaが動くOS 最低30MBのRAM(チューニングで少なくできると書いてある) 次のポートを開ける。9443(管理UIとアプリ用)、8080(マイコン用) Blynkサーバーはかなり軽いプログラムなので、ラズパイで十分動作させることができそうなので…


また、"Create New Account" 項目のある古いBlynk Legacyアプリを探して持ってくる方法が次に紹介してありました。
Blynk Legacyを自前サーバー構築で無料かつ使い放題スマートホーム実現の方法

Blynk Legacyを自前サーバー構築で無料かつ使い放題スマートホーム実現の方法

公式サービスは終了しているのでセキュリティ的に多少の不安があるシステムということは最初に断っておきます。 Blynkというサービスを当ブログではこれまでに数回紹介している。 それは自作スマートホームを実現するのに使い勝手の良いサービスだった

反省とまとめ

  • Raspberry Piの故障では、他のことを疑うよりSDカードの故障を考えるべきだと思います。
  • 一番簡単に復旧させる方法は新しいSDガードを用意して、クローンソフトを使ってクローンSDカードを作り、それで立ち上げる方法だと思います。ただし、未検証です。
  • Raspberry Pi zeroは動作がものすごくもっさりで、Raspberry OSが立ち上がるのに5分、それからBlynk serverが立ち上がるのにさらに5分、合計10分は見ておいた方が良いようです。
  • VNC接続を使うと KeybordやモニタレスでRaspberry Pi を使うことはできるのですが、動きがもっさりなので最低限モニタはつないだ方が動作が確認できて安心です。
  • 今回行ったBlynk serverの復旧はSDカード故障に始まる顛末でしたが、今になって思うと4か月ほど前からその兆候があったと思います。それは、
    • 4か月ほど前から、上記図に示すグラフガジェットが使えなくなっていました。
    • その原因を当時はBlynkのサービスが制限をかけたかくらいに思っていましたが、
    • 実際はたぶん、SDカードが一杯になって、新たなデーターを書き込めなくなったことが原因だと思います。(Linuxのduコマンドで調べると、容量100%でした。)
    • 同時期から、/Blynk/Backup フォルダのアカウントバックアップも止まっていました。
  • そして、ひと月前にRaspberry Piが止まりました。このLog記録がありました。
  • Blynkなのか、Raspberry OSなのか、ログやバックアップなどをSDカードにどんどん蓄積していくようです。
  • 修復したSDカードを調べると、/log/archiveフォルダが2.6GBと結構なファイルを溜め込んでいました。/Blynk/Backupは17.7MB, /Blynk/dataは4.4MBとそれに比べて極わずかです。
  • 以下はBeingに聞いた返答です。----- Raspberry pi のlog/archiveフォルダにあるファイルは、一般的には消しても問題ないと思います。logフォルダには、システムやアプリケーションの動作状況を記録したログファイルが保存されていますが、これらは通常は必要ありません。archiveフォルダには、古いログファイルが圧縮されて保存されていますが、これらも必要ありません。------
  • 今では、32GBのSDガードが手に入る最小容量なので、今までの8GBに比べて十分な容量があります。

結論:とんだ顛末

Blynk serverが働かなくなった原因は、SDカードの容量が100%になりそれ以上の書き込みができなくなったことにありました。

故障/修復したSDカードの/log/archiveフォルダのファイルをUbuntuの管理者権限ですべて削除すると、約2.3GBの空きができました。/home/pi/Blynkフォルダにあるアカウント設定ファイルを動いているときのバックアップから持ってきたアカウント設定ファイルに書き換え、それをRaspberry Pi zeroに差して起動させると、なんとBlynkが立ち上がりました。グラフガジェットも問題なくグラフを描きます。adminでのログインもできます。

これで前述で推定したように、SDカードの容量の問題であったことが検証できました。






Powered by Blogger | Designed by QooQ

keyboard_double_arrow_down

keyboard_double_arrow_down