リチウムイオンバッテリーを積んでいるので…
Ulanzi TC001 はリチウムイオンバッテリーを搭載している。常時電源を繋ぎっぱなしにするとバッテリーの劣化を招きかねない。そのため定期的に電源を外して放電しつつ運用するつもりだが、放っておくと電池切れを起こしてしまう。
電池残量の表示もできるが、1画面分を使ってしまうのはもったいないため、一定値以下になったら警告表示を行うことで代替したい。
癖のある残量データ
電池残量については、 Awtrix が10秒毎に MQTT で配信する stats
の bat
に整数値(%)で記される。
残量表示がまともであれば、20%や10%で警告表示を行えばよいだろうか、 TC001 の残量表示は癖があり、自分の場合は36%くらいで電源が落ちた。
Awtrix でも同様の指摘がなされているようだ。 55~60% で電源が落ちたと報告している人もいる。
充放電時バッテリー生データ値(bat_raw
)の最大値・最小値を dev.json
に記録してその値をもとにバッテリー残量を求めるみたいな話が出ているが、実装されているかは確認できていない。
とりあえず、自分の環境では bat
の値が40%を下回ったら警告表示をすることにする。
Node-RED で実装
フローと各ノードは下記の通り。
mqtt in ノードで stats の情報を入力し、 switch ノードでバッテリー残量40%未満を分岐。 function でメッセージを作り、 mqtt out で notify トピックに送り込む。
notify は TC001 がそれを受け取った時点で1回のみ表示。 "hold": true
と指定すれば、本体ボタンが押されるまで表示し続けることが可能。
今回は hold 指定をしていない。この場合、 stats が10秒毎に送られてくるので、 BATT LOW を5秒表示(各アプリの表示時間設定と同じ)→元の表示に戻って5秒→バッテリー残量40%未満なら再び BATT LOW を5秒表示と交互に表示され続ける。
一度電源に繋いでしまえば一気にバッテリー残量が上がるので、程なくして BATT LOW メッセージは消える。
一刻も早く消したければ Node-RED 側で該当フローを無効にすればよい。
MQTT で配信される情報なら同様にメッセージを出せる
Awtrix 表示用に Node-REDから MQTT 配信される情報も同様に mqtt in から拾い上げることができる。
以下のようなフローにすれば、YouTube チャンネル登録者数が○万人に達した時に TC001 へメッセージを表示させることも可能だ。