前回、定番の圧力センサ Bosch BMP280の補償計算をなんとかやっつけてMicroPythonで気圧と温度を測れるようになりました。今回は測った結果を、例によってMQTTに載せてNode-REDへ報告し、Dashboard上にグラフ表示してみます。まずは前回プログラムのモジュール化から。
ブロックを積みながら(45) Node-RED、Dashboard、formノード
前々回、Node-REDダッシュボードのTemplateノードを使ってみました。表示ができるだけでなくボタンを配置して入力にも使える優れものでした。今回は同じく入出力兼用のformノードを使ってみます。ユーザーとのインタフェースを作るにはバッチリ?なノードです。
ブロックを積みながら(44) Node-RED、Dashboard、Chartノード
Node-REDのDashboardのノード群には、常々お世話になっているのでありますが、よくわからないまま「成り行き」で使ってしまっています。今回はグラフを描くときに使うchartノードについて、使い方を確かめて行きたいと思います。ついでにRandomノードについてもチャッカリとテスト。
ブロックを積みながら(43) Node-RED、DashboardのTemplateノード
前回Templateノードを試してみました。しかし手元のパレットにはもう一つTemplateノードがあります。前回は「機能」パレットでしたが今回は「Dashboard」パレットの中のノードです。Dashboardは人とのインタフェースを担いますが、その中でも入出力双方をできるTemplateノードはお役立ちか?
MicroPython的午睡(49) ATOMLite、温湿度を測ってNode-RED報告
今回からようやく外付けのデバイスをM5ATOMLiteに接続して、ラズパイで走っているNode-REDとの間を繋ぐところに入ってまいります。その1は、ありがちな「温度、湿度」のご報告です。ここまでの準備で、回路も簡単、ソフトも簡単、ほとんど何もやることがないです。本当か?
MicroPython的午睡(48) 中途半端なリファクタリング。組み込みには組み込みの?
前回、内蔵のLEDとスイッチがNode-REDから使えるように復旧しました。今回はいよいよ外付けハード追加と思ったのですが、その前にスクリプトを整理することにいたしました。カッコよく言うならリファクタリングというやつ。でも作業しながら、どうするのが良いのか迷いましたです。迷える子羊(?そうは見えないが)にお導きを。
ブロックを積みながら(41) Node-RED、SplitしたらJoinするしかないな。
前回は、Sequenceを作り出すために Splitノードを使ってしまいました。さすれば、今回は Joinノードを使ってSplitしたSequenceを元に戻してみるしかありません。やって見ればシミジミ会得できました。何もすることはありません。勝手に元に戻ります。これもSplitノードが「仕込んで」くれているお陰。
ブロックを積みながら(40) Node-RED、配列をSplitして、Switchで仕分け
前回はSwitchノードを使って「仕分け」をやってみましたが、Sequence rulesによる仕分けというものは出来ませんでした。今回はSplitノードを使って配列要素をSequenceとして並べ、それをSwitchノードで仕分けてみたいと思います。まさにベルトコンベアで流れてくる箱を行き先別に仕分けるイメージ。
ブロックを積みながら(39) Node-RED、行き先切り替え、Switchノード
前回のChangeノードは、「積荷」を載せ替えたりするためのものでした。今回のSwitchノードは、「行き先」への仕分けを担うもの、という感じです。仕分けの方法もいろいろあって非常に便利です。今回はその基本部分を使ってみますが、一見しただけでもなかなか便利。
MicroPython的午睡(46) uasyncioでMQTT送受信、ATOMLite
前回までで「エッジ側」M5ATOM LiteとNode-REDサーバー(Raspberry Pi 3)との間でMQTTを介してJSONオブジェクトを送受できるようになりました。しかし不満なのは送受信のタイミングです。前回まで単一のmainループにお任せだったので便利とは言えない仕組みでした。今回から uasyncioを使って改良していきたいと思います。
ブロックを積みながら(38) Node-RED、Changeノード、実は超強力
今回、Changeノードを使ってみて、その強力さをようやく理解しました。特にJSONata式を使うことでJSONオブジェクトに対してQueryをかける機能が良い感じです。この際、JSONataを勉強せねばと思いました。今まで Functionノードで書いていたもののかなりは Change ノードで代替可能に思えてきました。そして分かり易くて、書きやすい。今まで損していた?
MicroPython的午睡(45) MQTTでJSON-OBJ受信、M5ATOMLite
前回が「送信」であったので、今回は当然「受信」です。しかし受信で想定しているのは何か設定値がホストから指令されてくるというシーン。「設定値」ともなるとそれを保存しておく場所から用意しておかないとマズイ気がします。そこで、設定値はNode-REDからアクセスできるSQLiteのデータベースに記録しておき、それを取り出して送ることに。今のところ何も効果はないですが。
AIの片隅で(25) ESP-EYE、ESP32+カメラとマイク、とりあえず写真を一枚
Espressif製の「AIoT」開発ボード、ESP-EYEを入手いたしました。ぶっちゃけESP32のDevkitに、カメラとマイクを搭載した小型ボードという感じです。売りは “Voice Wake-up” と “Face Recognition” です。今回は出荷時状態のまま、電源入れて、一声かけて?カメラを起動、写真を1枚キャプチャしてみました。私の中国語通じちゃう?
MicroPython的午睡(44) MQTTでJSON-OBJ送信、M5ATOMLite
前回 MQTT Subscribe ができたので、MicroPythonで動いているM5ATOM LiteとNode-REDを動かしているRaspberry Pi 3機で上り下りの通信がOKとなりました。今回は、通信内容をJSON化して後で拡張しやすいようにしてみたいと思います。まずはPublish側から。使用するMicroPythonモジュールはujsonです。