IoTLT vol.76での登壇スライドです。
「opniz」ならArduinoライブラリを使用した関数もJavaScript/TypeScriptからさくっと実行できます。 https://github.com/miso-develop/opniz
意外と役に立ったopniz田中みそ2021/6/15 IoTLT vol.76 @Youtube
View Slide
最近CO2センサーを買った• 前から気になってたけど5,000円以上して高くて買えなかった• 今年の2月から秋月で2,500円ほどで販売されていたのを知る• 「MH-Z19C」ってやつ• 買ったhttps://akizukidenshi.com/catalog/g/gM-16142/
まずobnizで動かそうとしてみる• obnizパーツライブラリに「MH_Z19B」というひとつ前の型のがある• https://obniz.com/ja/sdk/parts/MH_Z19B/README.md• 動かなかった😢
M5StickCで動かしてみる• いくつか記事参考にして実装して動いた!• 「mhz19_uart 」というライブラリを使用• https://github.com/nara256/mhz19_uart[参考記事]• M5StickC Plus + MH-Z19C の二酸化炭素計• MH-Z19CとM5StickCで二酸化炭素濃度モニタリングhttps://twitter.com/miso_develop/status/1401067983313641473
動いたらデータを蓄積したい• 過去にSwitchBot温度計のデータをGoogle Spreadsheetsに蓄積する仕組みを作ってあるので流用したい• データ送信にはGoogle SpreadsheetsにHTTP POSTする• ESP32でHTTPS送るには証明書をハードコーディングしたりとつらたんな想い出が…• あとあといろいろやることも考えるとラズパイからNode.jsで制御したい(obniz脳)
MH-Z19Cのobnizパーツライブラリ作るかな…MH-Z19B のobnizパーツライブラリのソースとMH-Z19C のArduinoライブラリのソースをにらめっこしてMH-Z19C のobnizパーツライブラリ作るかな…と考えてたらふと思い出したのが、
_人人人人人人人人_> opniz < ̄Y^Y^Y^Y^Y^Y^Y^Y^ ̄https://github.com/miso-develop/opniz
opnizとはM5StackといったESP32デバイスをNode.jsからobnizライクに制御するための、Node.js SDKおよびArduinoライブラリです。ざっくり言うとサーバーを介さない、オープンソースな、obnizっぽい実装ができるなにかです。仕組みとしてはESP32デバイスおよびNode.js SDKにてTCPサーバー/クライアントを実行し、相互にTCP経由でJSONメッセージをやりとりしています。TCPopnizArduinoライブラリ opnizNode.js SDKスケッチ書き込み実装
問題を整理• Node.jsで書いて遠隔制御したい• obnizのパーツライブラリが対応してない• Arduinoライブラリはある
Firmataのつらいとこ• なにかしらのパーツのライブラリって大抵Arduinoライブラリがまず作られるけど、obnizといったFirmata系の仕組みだと各言語ごとにライブラリを別途実装しないといけない• たとえば今回だと、既にあるMH-Z19C対応のArduinoライブラリをそのままobnizから使えたらスーパー便利だけど、そうはいかないのでobnizパーツライブラリとして別途実装する必要がある
opnizなら…opnizはArduinoライブラリ含むESP32上のコードをそのままNode.jsから実行できる仕組みになっている。(橋渡しする関数クラスを書く必要があるけど定型的に書ける)TCPopniz ArduinoライブラリopnizNode.js SDKスケッチ書き込み実装mhz19_uartmhz19_uartライブラリのCO2濃度取得メソッドを実行する関数を実装Node.js側から任意のタイミングでESP32側で実装した関数を実行
無事さくっと実装できた!家族4人での就寝中のCO2濃度がちょっとやばめだったり、壁向きに机を置くとCO2濃度増え気味ということがわかってきたhttps://twitter.com/miso_develop/status/1401453640120864774https://twitter.com/miso_develop/status/1401460641760636934
こんなケースで便利• Node.jsで書いて遠隔制御したい• obnizのパーツライブラリが対応してない• Arduinoライブラリはある
是非ともお試しいただき、ご意見・アイデア等頂けますと幸いです…!よろしくお願いいたします…!!https://github.com/miso-develop/opniz