Node-REDのserialノードを使ってEnOceanのスイッチデータを受信してみた

DALIで照明を制御する場合、スイッチという形式のマスターからDALIコマンドを送り照明をコントロールすることができますが、IoT機器やDALI以外のネットワークからの情報を元にNode-REDを使ってコントロールを行う場合は、DALIではないデバイスからオン・オフの情報を送る必要があります。

Node-REDには標準で、mqtt,http,websocket,tcp,udpなどのノードがあり、それらを使っても良いのですが、無線接続、別途電源供給がいらないなどのメリットを考えると、EnOceanのスイッチを使うととても便利です。

Node RED

以前、ワンフットシーバスの田中さんがEnOceanとDALIを連携させる記事を書かれておりますが、私の方でも検証するべく、まずはEnOceanの入力をNode-REDで受信する方法を試してみました。

電源不要で動くEnOceanスイッチをRaspberry PiのEnOcean USBゲートウェイ経由でNode-REDをつなげるメモ – 1ft-seabass.jp.MEMO

Node-REDでのEnOceanのデータ読み取りをもう少し踏み込んだメモ – 1ft-seabass.jp.MEMO

EnOceanの通信はUSBドングルで受信をする

IMG 0060

EnOceanのレシーバーはUSBドングルを利用します。

Node RED

Node-REDには標準で入力ノードがありますが、EnOceanのUSBドングルはシリアルポートでの入力になるので、「node-red-node-serialport」をインストールします。

node-red-node-serialport – Node-RED

インストール方法は上記URLに書いてあるとおり、私のNode-REDはV0.17.5だったので、これだけでOKでした。

npm i node-red-node-serialport

Node RED

無事に「node-red-node-serialport」がインストールされると、入力のところに「serial」というノードが現れます。これをドラッグしてフローにいれましょう。

Node RED

そうそう、USBドングルをMac(もしくはPC)に差し込んでください。

IMG 0055

しっかりPCにUSBドングルを差し込んだら、Node-REDのフローにある「serial」ノードをマウスでダブルクリックします。

Node RED

初めての方は、Serial Portのところがブランクになっていると思うので、矢印で示す鉛筆のマークをマウスでクリックします。

Node RED

つぎに、矢印の指す虫眼鏡のアイコンをクリックします。

Node RED

この中に「usbserial」と書かれたそれらしきものがあるので、こちらをクリック。

Node RED

あとは電源不要で動くEnOceanスイッチをRaspberry PiのEnOcean USBゲートウェイ経由でNode-REDをつなげるメモ – 1ft-seabass.jp.MEMOの通りに入力します。

ここまでできたら、デプロイしちゃいましょう。

Node RED

無事にUSBドングルのserialport設定ができると、ノードの下に緑色で「接続済」と表示されます。

EnOceanを受信してみる

早速、データが飛んでくるか試してみます。

先程のserialノードにdebugノードをつなげました。

Node RED

デプロイしたら、EnOceanのスイッチをおしてみます。

IMG 0057

無事に受信できたようです。

Node RED

ただし、このデータもよくわからないですよね。

Node RED

Node-REDでEnOceanの電文をデコードするノード

さて、EnOceanで受信したデータをデコードするノードを、アーミン株式会社の服部さんが下記の記事にて公開されています。

Node-REDでEnOceanの電文をデコードするノードを試作しました | ERMINE Corporation

これを使ってみましょう。

アーミンの服部さんが作られたノードはfunctionノードの中にこの電文をデコードするJavaScriptが書いてあります。

Node RED

先程のserialノードとdebugノードの間にこれを入れます。

Node RED

これで準備完了。

スイッチをおしてみる

先程のスイッチをおしてみましょう。

enocean

先程の意味不明なデータが、json形式でみれるようになりました。

OriginatorIDにて、どのスイッチなのかの判別ができます。また、dBmは、USBドングル(レシーバー)からスイッチまでの距離によって変化する値のようです。

ちなみに、EnOceanのスイッチは、押した時と離した時の2回データがおくられます。

enocean

スイッチをおした時にData1が82、離した時にData1が00となりました。

これで、EnOceanのスイッチをNode-REDに受信さえて、どのEnOceanデバイスからどんなスイッチが押されたのかの情報が入手できる様になりました。

あとは、この値を元にDALI接続された照明器具の制御を結びつければEnOceanデバイスからDALI機器のコントロールもできそうです。

まとめ

以上、EnOceanのスイッチとUSBドングルを使い、EnOceanのデータをNode-REDで受信させる方法を試しました。

EnOceanは信号を無線で送れるだけでなく、ソーラーパネルがついていて電池不要だったりするので、センサーを設置する時に頭を悩ます信号線と電源の問題を簡単に解決してしまいます。

他にも人感センサーや照度センサーなど、EnOceanにはいろんなセンサーがあるので、これらを組み合わせて照明をコントロールすると、もっともっと自動で必要な時に必要な照明を利用するといったことが可能になります。

EnOceanとDALIの連携については、また近いうちに記事を書きます。

この記事を書いた人

この記事を書いた人

中畑隆拓

日本ピー・アイ株式会社
照明制御が得意です。
Node-REDを使ってIoT機器の情報を読み込み、DALI-APIを叩いて制御しています。

今後、設備の制御はNode-REDのようなソフトウェアが中心になると実感していて、いろんなところで講演してます。

講演予定・実績一覧

DALIだけでなくKNXやModbus、Lonworksなど、設備制御について意見交換を行うSlackを作りました。参加希望の方は問い合わせフォームより連絡ください。

お問い合わせ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする