KNX

KNX VirtualをつかってNode-REDのKNX-Easyからつないでみた(失敗)

この記事は Node-RED Advent Calendar 2019 12日目の記事です。

私はこのアドベントカレンダーに2017年から参加で過去記事は以下のとおり。時間が経つのは速いですね。

■2018年
Node-REDとDeeBridgeを使ってDALIによるIoT照明制御システムをつくる方法

■2017年
【動画あり】ScratchからNode-RED経由でDALI-APIでLEDを点灯させてみた
【動画あり】村田製作所のDALI電源とNode-REDをつないでみた

さて、2019年12日目の記事は、私がSociety5.0の実現に向けて超絶に売り込んでいるヨーロッパ生まれのオープンな設備制御規格「KNX(ケーエヌエックス)」に絡めてみました。

Knx logo

題して!

knx VirtualをつかってNode-REDのKNX-Easyからつないでみた(失敗)

です。

やったことは、Node-REDのKNX-Easyモジュール使ってNode-REDからKNX Virtualの機器を制御しよう試みました。

残念ながら、Node-REDから接続しようとするとKNX Virtualが落ちてしまいうまくいかなかったのですが、今後、なにか解決方法が見つかることを期待して記事として残しておきます。

KNXとは?

さて、まずはKNXとは?というところから入ります。

KNXを簡単に紹介すると、

  1. 設備制御機器のための規格です
  2. 国際規格になっており規格や仕様はオープンです
  3. 世界で400以上のメーカーがKNX製品をつくっています

というところでしょうか。

つまり、照明制御のDALIと同じようにオープンな規格で色んなメーカーが様々な機器をカタログ品としてつくっているので、IoTやAIなどといったものにつなげようとおもったら、どこかのメーカーの製品を使えば、新規製品開発などしなくても実装できちゃうという感じです。

↓ KNX機器をつくってるメーカーのロゴ
knx

↓ KNXで出来るいろんなこと
knx

ただ、みなさん、KNXの機器って見たこと無いですよね。

オープンな規格でつなげられるモノをみると、なんでもかんでもNode-REDにつないでみたくなるみなさんのことですから、きっと試してみたいはず。

でも、KNX機器はスイッチサイエンスさんでは入手できません。

さらに、弊社(スマートライト株式会社)でもKNX機器は販売しているのですが、趣味で購入するにはちょっとお値段がするので、なかなか難しいのが現状です。

KNX Virtualとは?

KNX Virtual Logo final

実は、KNXの本部でもKNXを気軽に試せるようにしてほしいという意見が、これまで多くよせられていて、その解決方法として「KNX Virtual」というアプリケーションがリリースされました。

「KNX Virtual」がどういうものかというと、「KNX Virtual」は誰でもKNXを気軽に試すことができるようにすることを目的としたアプリケーションです。

今までKNXを実際に試してみるには、

1.専用の設定ソフト: ETS
2.KNX機器 : 実機

が必要でした。

ちなみに、専用の設定ソフトETSを利用するにはライセンスを購入する必要があるのですが、KNXデバイスの数が5以下の場合は無料の「ETS Demo」を使用することができます。

従来は、「ETS Demo」が無料で使えても、KNX機器の実機がないとKNXを設定したり動かしたりすることができなかったのですが、「KNX Virtual」がリリースされたことで、KNXを完全無料で試すことができるようになりました。

つまり、下記の組み合わせであれば費用は一切かかりません

1.専用の設定ソフト: ETS Demo
2.KNX機器 : KNX Virtual

興味とやる気さえあればKNXを試してみることができる時代になったのです。

* ちなみに、KNX Virtualのチュートリアルについては、ETSの操作も必要になるので別途動画でつくります。あと、バージョンアップで過去のチュートリアル動画のとおり動かなくなることがある(実際にあった)ので、最新版を追いかけましょう。

KNX Virtualの画面

では、KNX Virtualの画面を紹介します。

000

まずはこれがKNX Virtualを立ち上げたところ。

左上の「Settings」をクリックすると

001

このように、KNXにTCPで接続するための設定になります。

Interface IPでIPアドレスが表示されていますが、これは変更できないようです。

Ping

Pingを打ってみるとちゃんと返ってきます。

101

先程のSettingsを終えると、左上がViewになっているのでこちらをクリック。

102

ずらっといろいろ出てきますが「Devices」をクリックします。

002

この画面が、KNXのデバイス機器を表す画面です。

たとえば、実機で下のようなKNXのプッシュボタンスイッチや、スイッチアクチュエーターがあります。

IMG 0203
↑ KNX プッシュボタンスイッチ

IMG 0205
↑ KNXスイッチアクチュエーター

105

KNX Virtualでこのプッシュボタンスイッチやスイッチアクチュエーターに該当するのが上図のようになります。

ETSでKNX Virtualテスト用に設定してみた

KNX Virtualのテスト用に、ETSをつかって、プッシュボタンスイッチとスイッチアクチュエーターでプログラムをしてみました。

201

使ったデバイスは2つだけ。

202

グループアドレス 0/0/1をつくり、ボタンを押すと1bitの信号が送られる設定です。

203

KNXデバイスのデータは、CatalogでManufacturersを「KNX Association」にすると表示されます。

ただし、実際にやる時はカタログデータを最新にアップデートしてください。古いデバイスのデータだと動かないものもあります。(今回、プッシュボタンのカタログデータが古いと動きませんでした)

KNX Virtualの機器へETSの設定情報を書き込み

KNXはETSを使ってプログラミングを行い、その後、各KNX機器にアプリケーションを書き込むのですが、どの実機がETS上のどのデバイスに相当するかを紐付けするため、デバイスにある「プログラミングボタン」を物理的に押します。

knx

↑ KNXデバイスのプログラミングスイッチ

204

「KNX Virtual」では、先程のデバイス画面にある黒い四角がプログラミングボタンになります。なので、ETSで作成したアプリケーションをKNX Virtualのデバイスに書き込む際は、該当するデバイスの黒いボタンを押します。

205

書き込みが終わり、各デバイスの個別アドレスに表示が変わりました。

KNX VirtualでKNXデバイスを動かす

206

左上の「View」を押して表示される「Base」をクリックします。

207

先程ETSから書き込んだ設定は、左の「PushButton」の一番上の「0」と「1」、右のLampsにある「ch1」に反映されています。

では、Push Buttonsの「1」を押してみましょう。

208

Lampsのch1が黄色くなりました(ランプが点灯した状態)。続けて、Push Buttonsの「0」を押してみます。

209

Lampsのch1が黒くなりました(ランプが消灯した状態)。

このように、KNX Virtualではランプやブラインド、空調など、KNXで制御できる機器が用意されているので、実機を用意しなくてもKNXがどのような挙動をするのかを試すことができます。

Node-REDからKNX Virtualにつなげてみた

さて、いよいよNode-REDからKNX Virtualにつなげてみます。

Node RED 2019 12 11 13 43 25

フローは簡単に、KNXのグループアドレスに、0と1をインジェクトノードからおくるもの。

KNX-Easyというライブラリがあるので、それをを使いました。

node-red-contrib-knx-easy (node) – Node-RED

Node RED 2019 12 11 13 45 35

KNX-Easyのノードは、GatewayのIPアドレスが必要です。

前回、同じWin機でNode-REDとKNX Virtualを動かしたらKNX Virtualが落ちたので、あえてNode-REDとKNX VirtualをMacとWin機で分けてみました。

■ 状況
Node-RED : MACで起動 ( 192.168.0.100 )
KNX Virtual : Win機で起動 ( 192.168.0.106 )

で、Node-REDをデプロイすると、KNX Virtualが落ちます。

何度やってもだめでした。

ちなみに、KNX VirtualはC#で動いているそうです。

ちょっと、開発している人にきいてみます。

まとめ

残念ながら、Node-REDでKNX-EasyノードをつかってKNX VirtualのKNXデバイスを動かす試みは、KNX Virtualが落ちるという結果で失敗に終わりました。

落ちる理由がなんなのかわかりませんが、KNX Virtualの開発者に連絡をとり、なんとかNode-REDからKNX Virtualのデバイスが制御できないかを、これからもチャレンジしてみたいと思います。

ということで、Node-RED Advent Calendar 2019 12日目の記事はこれにて終了です。

明日は、yossihardさんの、「Node-RedからAzure Logic Appsを呼び出す」へとバトンを送ります。

ありがとうございました!

ABOUT ME
中畑 隆拓
スマートライト㈱ 代表取締役。DALIやKNX導入のコンサルティング・コンフィグレーション・機器の販売、AI-IoTを組み合わせたシステムの提案を行っています。