$30 off During Our Annual Pro Sale. View Details »

意外と役に立ったopniz

 意外と役に立ったopniz

IoTLT vol.76での登壇スライドです。

「opniz」ならArduinoライブラリを使用した関数もJavaScript/TypeScriptからさくっと実行できます。
https://github.com/miso-develop/opniz

田中みそ

June 15, 2021
Tweet

More Decks by 田中みそ

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  8. 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
    スケッチ書き込み
    実装

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide