何年か前に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の故障個所はどこか
SDカード故障かも
コマンドプロンプト
これも後から考えると、本当はこのSDカード修復後の段階で直っていたように思います。正常に動くようになってから気づいたのですが、起動後Raspberry Piの疎通確認ができるまでに5分かそれ以上かかります。このときは、そこまで待たないまま "ping" が通らないので、故障と判断していました。
Raspberry Pi zeroかも
- microSDカードを含め全て取り外し、USB電源だけ接続して ON。メインチップが熱くなったらアウト
- microUSB(電源USBではなく)と Windows PC を USB接続。Windows 側が Zero を認識しなかったらアウト
Zeroが生きている場合、Windows PCは新しいハードウェアの存在を示す「音」を鳴らし、デバイスマネージャに「BCM2708 Boot」と表示されます。
ということらしいです。1. は熱くなりません。2.はデバイスマネージャが下図のようになりました。「BCM2708 Boot」は表示されますが、警告マーク付きです。プロパティを見ると、”このデバイスのドライバーがインストールされていません。 (コード 28)” となっています。いかにもダメそうな内容です。
BCM2708ブートのドライバってなに?そもそも、警告出てるのは異常なの?正常なの?と謎が深まります。
BCM2708ブートについて、このブログを見つけました。Raspberryの公式Q&Aも引用しているのでしっかりとした情報だと思います。
Looks dead, but it's not. (死んでるように見えるけど、そうじゃない)
モニタ出力
HTMLポート経由でTVにつないだところ、イチゴマークが現れ、しばらく待つとRaspberry OSのデスクトップがちゃんと映りました。SDカード修復で復旧したと言えます。
新規にSDカードを作る
- Raspberry Pi OSのインストール
- SDカードのフォーマット(SDFOrmatter)
- Raspberry Pi OSのインストール(Raspberry Pi Imager)
- VNCの有効化(Tera Term上でsoftware Configuration Toolを実行)
- Raspberry Pi 環境設定(VNC Viewer)
- Legacy Blynk serverのインストール
- Java 8のインストール
- Blynk serverのインストール(server-0.41.16 -java8.jar)
- Blynk serverを走らせてみる(java -jar server-0.41.16-java8.jar ....)
- Blynk serverの設定
- Raspberry Piの起動時にBlynkサーバーが自動で立ち上がるようにする(/etc/rc.local の修正)
- mail.propertiesの作成
- sever.propertiesの作成
- /etc/rc.local の再修正
Raspberry Pi OS
Product | Processor | ARM core | Debian/Raspbian ARM port (maximum) | Architecture width |
Raspberry Pi 1 | BCM2835 | ARM1176 | arm6hf | 32 bit |
Raspberry Pi 2 | BCM2836 | Cortex-A7 | armhf | 32 bit |
Raspberry Pi Zero | BCM2835 | ARM1176 | arm6hf | 32 bit |
Raspberry Pi Zero 2 | BCM2710 | Cortex-A53 | arm64 | 64 bit |
Raspberry Pi 3 | BCM2710 | Cortex-A53 | arm64 | 64 bit |
Raspberry Pi 4 | BCM2711 | Cortex-A72 | arm64 | 64 bit |
Wifi設定
問題点1:壊れる前のアカウントを引き継ぐには
問題点2:アプリから新規アカウント登録ができない
新規にSDカードにBlyk serverをインストールした場合には、上記の問題がおこります。アカウント情報はスマホアプリ側が持っていると思っていたのですが、そうではないようです。Raspberry pi 側が持っていたようです。
当然、今までのアカウントではログインできません。おまけに、さらに悪いことに今のBlynkアプリではログイン画面から、"Create New Account" メニューが消えています。下図右側の"Login"しかないのです。
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が働かなくなった時期と一致するので、このときログインしようとして失敗したアカウント記録が残されているのだと思います。
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の復旧です。
参考:新規にアカウントを作る方法
反省とまとめ
- 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カードの容量の問題であったことが検証できました。