Slide 1

Slide 1 text

意外と役に立ったopniz 田中みそ 2021/6/15 IoTLT vol.76 @Youtube

Slide 2

Slide 2 text

最近CO2センサーを買った • 前から気になってたけど5,000円以上 して高くて買えなかった • 今年の2月から秋月で2,500円ほどで 販売されていたのを知る • 「MH-Z19C」ってやつ • 買った https://akizukidenshi.com/catalog/g/gM-16142/

Slide 3

Slide 3 text

まずobnizで動かそうとしてみる • obnizパーツライブラリに「MH_Z19B」というひとつ前の型のがある • https://obniz.com/ja/sdk/parts/MH_Z19B/README.md • 動かなかった😢

Slide 4

Slide 4 text

M5StickCで動かしてみる • いくつか記事参考にして実装して動いた! • 「mhz19_uart 」というライブラリを使用 • https://github.com/nara256/mhz19_uart [参考記事] • M5StickC Plus + MH-Z19C の二酸化炭素計 • MH-Z19CとM5StickCで二酸化炭素濃度モニタリング https://twitter.com/miso_develop/status/1401067983313641473

Slide 5

Slide 5 text

動いたらデータを蓄積したい • 過去にSwitchBot温度計のデータをGoogle Spreadsheetsに 蓄積する仕組みを作ってあるので流用したい • データ送信にはGoogle SpreadsheetsにHTTP POSTする • ESP32でHTTPS送るには証明書をハードコーディングしたりと つらたんな想い出が… • あとあといろいろやることも考えるとラズパイから Node.jsで制御したい(obniz脳)

Slide 6

Slide 6 text

MH-Z19Cのobnizパーツライブラリ作るかな… MH-Z19B のobnizパーツライブラリのソースと MH-Z19C のArduinoライブラリのソースをにらめっこして MH-Z19C のobnizパーツライブラリ作るかな… と考えてたらふと思い出したのが、

Slide 7

Slide 7 text

_人人人人人人人人_ > opniz <  ̄Y^Y^Y^Y^Y^Y^Y^Y^ ̄ https://github.com/miso-develop/opniz

Slide 8

Slide 8 text

opnizとは M5StackといったESP32デバイスをNode.jsからobnizライクに制御するための、 Node.js SDKおよびArduinoライブラリです。 ざっくり言うとサーバーを介さない、オープンソースな、obnizっぽい実装ができるなにかです。 仕組みとしてはESP32デバイスおよびNode.js SDKにてTCPサーバー/クライアントを実行し、 相互にTCP経由でJSONメッセージをやりとりしています。 TCP opniz Arduinoライブラリ opniz Node.js SDK スケッチ書き込み 実装

Slide 9

Slide 9 text

問題を整理 • Node.jsで書いて遠隔制御したい • obnizのパーツライブラリが対応してない • Arduinoライブラリはある

Slide 10

Slide 10 text

Firmataのつらいとこ • なにかしらのパーツのライブラリって大抵Arduinoライブラリが まず作られるけど、obnizといったFirmata系の仕組みだと 各言語ごとにライブラリを別途実装しないといけない • たとえば今回だと、既にあるMH-Z19C対応のArduinoライブラリを そのままobnizから使えたらスーパー便利だけど、そうはいかないので obnizパーツライブラリとして別途実装する必要がある

Slide 11

Slide 11 text

opnizなら… opnizはArduinoライブラリ含むESP32上のコードを そのままNode.jsから実行できる仕組みになっている。 (橋渡しする関数クラスを書く必要があるけど定型的に書ける) TCP opniz Arduinoライブラリ opniz Node.js SDK スケッチ書き込み 実装 mhz19_uart mhz19_uartライブラリのCO2濃度 取得メソッドを実行する関数を実装 Node.js側から任意のタイミングで ESP32側で実装した関数を実行

Slide 12

Slide 12 text

無事さくっと実装できた! 家族4人での就寝中のCO2濃度がちょっとやばめだったり、 壁向きに机を置くとCO2濃度増え気味ということがわかってきた https://twitter.com/miso_develop/status/1401453640120864774 https://twitter.com/miso_develop/status/1401460641760636934

Slide 13

Slide 13 text

こんなケースで便利 • Node.jsで書いて遠隔制御したい • obnizのパーツライブラリが対応してない • Arduinoライブラリはある

Slide 14

Slide 14 text

是非ともお試しいただき、 ご意見・アイデア等頂けますと幸いです…! よろしくお願いいたします…!! https://github.com/miso-develop/opniz