JavaScript
IoT
node-red
enebular
obniz
enebularDay 18

enebularでobnizをカスタムノードで動かしてみた

この記事はenebular advent calendar 2018の18日目の記事です。
記事の内容に詰まって1時間遅れで投稿してます。

↓いいわけ

つくったもの

  • 最近enebular meetupでobnizが活躍してるらしい!
  • カスタムノード作成のLTも流行ってる!

というのを見たので、両方掛け合わせてobnizのカスタムノードつくってenebularで使ってみました!
enebular x obnizを生でやると、websocketのリダイレクトで大変だったようなので、その解決策になります。

前に書いた記事の「誰かがobnizノードを作ってくれるのを待つ」つもりだったら結局自分が書くやつです、はい。

obnizって何?

obnizはAPIで操作できるマイコンボードです。
APIで操作=enebular(node-red)でも操作できる となっていて、非常に簡単に現実世界の"もの"とシステムをつなぐことができます!
公式サイトはこちら

カスタムノードを作ってみた

カスタムノードの作り方はいろんな人が紹介してたので、参考にさせてもらった記事だけ載せときます!
- 自作ノード開発中にハマったあれこれ #nodered
- Node-REDのノードを作り、Node-RED Libraryに登録する

どっちも古い記事ですが、まだまだ参考になる現役記事でした。
カスタムノードにはいろんなハマりポイントがあるようですが、自分がハマったのはpackage.jsonのkeywordsにnode-redを入れてなかったことでした。

obnizノードの使い方

せっかく公開したので、使い方等をメインで書いていきます。

install

node-red Libraryに追加もされたので、"Manage palette"からいけます
スクリーンショット 2018-12-18 23.25.54.png

obnizで検索してinstallします
スクリーンショット 2018-12-19 0.32.39.png

暫く待つとインストールが完了して
advancedカテゴリ内にobnizノードが出現しますスクリーンショット 2018-12-19 0.34.25.png

使い方

obniz websocket api に応じたjsonデータをこのノードに渡してあげるとobnizが反応します。

obnizIdの設定はノードをダブルクリックしたときの設定画面でやります
スクリーンショット 2018-12-18 23.58.53.png

サンプル

injectで次のjsonを流してみました

[
   {
       "display": {
          "clear": true, 
          "text": "Hello, obniz!"
       }
   }
]

ディスプレイに "Hello, obniz!" と表示するjsonです。

スクリーンショット 2018-12-19 0.10.25.png

画面が小さくてわかりにくいですが、injectのボタンが押されたらディスプレイの表示が変わっています
20181219_004438.GIF

もう一つ別のtextでついかしたらこんな感じになりました

スクリーンショット 2018-12-18 23.58.35.png
20181219_004118.GIF

1Aまでの出力やPWMなどの機能もjsonから扱うことができるので、これでなんでもenebularから動かすことができます!

今後

まだバージョン0.2の名前の通り、全然実装できてない部分があるので、
お正月休みつかって下記あたり実装したいなぁと企んでます。
node-red/enebularは初心者なので、こういうのあると便利!ってのがあれば教えてほしいです。

  • twitterノードの"接続済み"みたいにobnizのonline/offlineがノード上でわかるようにしたい
  • 今はobnizにデータ送るしかできていないが、データ受信用のノードを作りたい
  • 複数台のobnizにつないだとき(obnizノードが複数ある時)の挙動が未知なので、検証したい
  • obnizが未接続時の対応をちゃんと書きたい(今はデータ無視してる)

こたつの魔力に負けなければやります! ・・・負けそうな予感