課題
私は外出と自宅でモバイルWi-Fi(Huawei Speed Wi-Fi NEXT W06)を兼用しています。
しかし、たまにモバイルWi-Fiのバッテリーが切れて、一時的にネットが使えなくなるのがストレスでした。
リチウムイオン電池的にも、過放電状態は良くないので、ラズパイでバッテリーを監視して、充電が減ったらGoogle Homeで通知する仕組みを構築しました。
調査
ラズパイからバッテリー監視できないかなぁ、と考えていたら、そういえば、モバイルWi-Fiの管理画面(http://192.168.100.1/html/login.htm)にアクセスしたときに、右上に、バッテリー表示されるじゃん!と思いだしました。

この辺をどうにか使えないかなぁと、開発者モードで調査していたら、JavaScriptでG_MonitoringStatusという変数に、バッテリー残量が格納されているという事がわかりました。

設計
ここまで分かったら後は作業です。ChromiumでモバイルWi-Fiの管理画面(http://192.168.100.1/html/login.htm)にアクセスして、G_MonitoringStatusの値をJSONとしてパースして、"BatteryLevel"か"BatteryPercent"を参照して、充電が減っていたら、Google Homeに喋らせます。

Google Homeに喋らせる機能はgoogle-home-notifierを使用しています。
google-home-notifierは、ラズパイ上でhttp://localhost:8091にリクエストすると、Google Homeの8009番ポートに音声再生リクエストを送ってくれます。
そうすると、Google HomeはHTTPリクエストをRaspberry Piに送って、Raspberry Piから音声データを貰いに行きます。図だとGoogle Homeとの通信を一緒くたにしていますが、使用するポートは異なるので、気をつけてください。
ソースは適当ですが、ここに置いておきました。