node-red-contrib-knx-ultimate には、”KNX Scene Controller”というノードがあるので、使い方を確認してみました。
node-red-contrib-knx-ultimateについて
KNX-IP Routerを使って、Node-REDとKNXデバイスを連携させることができるNode-REDのライブラリです。
ETSからKNXの設定情報をCSVでエクスポートし、そのデータをNode-REDで読み込むことにより、グループアドレスやデバイスなどを、間違えることなく選択できる便利な機能を搭載しています。
また、現在のバージョンは1.2.8ですが、頻繁にアップデートをしており、2021年2月現在、Node-REDからKNX機器を制御する場合に一番おすすめのライブラリです。
KNX Scene Controllerノードの設定
YouTubeに解説があるのですが、いまいち使い方がわかりません。なんとなく、KNXのシーンを呼び出すのではなく、条件分岐で指定した複数のグループアドレスにデータを送るような感じです。
GitHubにSceneController Configurationというページがあるので、確認してみます。
SceneController Configuration · Supergiovane/node-red-contrib-knx-ultimate Wiki · GitHub
KNX Scene Controllerノードをクリックすると、アイコンしか表示されませんが、上から順番にGitHubで書かれている機能のようです。なので、該当する部分の翻訳をあわせてみましょう。
① Gateway
使用するKNX Gatewayを選択する
② Scene Recall, Datapoint and Trigger Value
シーンリコール用のグループアドレスです。(例:0/0/1)。
シーンコントローラは、このグループアドレスから来るテレグラムに反応して、シーンをリコールします。データポイントは、シーンリコールグループアドレスのデータポイントタイプ(DPT)です。
トリガー値は、シーンリコールをトリガーするために受信しなければならない値です。
注意:DIM コマンドを介してシーンをトリガーしたり、シーンを保存したりするには、シーンリコールやシーン保存のトリガー値に、ディミング用の正しいオブジェクトを入れてください(ディミングの増加には{decr_incr:1,data:5}、ディミングの減少には{decr_incr:0,data:5}を使用してください)。
ここで、シーンを呼び出すきっかけとなるグループアドレスとその値を設定するようです。つまり、KNXのシーンとは違い、指定したグループアドレスをトリガーにして、呼び出すグループアドレスを紐付けるようです。これは、便利ですね!
③ Scene Save, Datapoint and Trigger Value
シーンを保存するためのグループアドレス。
シーンコントローラは、シーン内の全てのデバイスの現在の値を保存することで、このグループアドレスからのテレグラムに反応し、後で呼び出すことができます。
建物内で実際のknx押しボタンを押す、または長押しするたびに、シーンコントローラはシーン内のすべてのデバイスの値を読み取り、不揮発性のストレージに保存します。
データポイントはシーン保存グループアドレスのデータポイントタイプ(DPT)です。
トリガー値は、シーン保存をトリガーするために取得しなければならない値です。
注意:DIM コマンドを介してシーンをトリガーしたり、シーンを保存するには、シーンリコールまたはシーン保存のトリガー値に、ディミングのための正しいオブジェクトを入れてください(ディミングの増加には{decr_incr:1,data:5}、ディミングの減少には{decr_incr:0,data:5})。
この機能、解釈が難しいのですが、おそらく、このグループアドレスに指定した値をおくると、シーンを呼び出す前の状態を再現してくれるような感じです。
トリガーとなるグループアドレスからのデータでシーンを呼び出したあと、その前の状態に戻すといったことができそう。これもすごい便利ですね。
④ Node name
ノード名は、「Recall: シーンを呼び出すためのデバイス名 / Save: シーンを保存するためのデバイス名」という形式で。ただし、任意の名前を設定することができます。
⑤ Topic
ノードのトピック。
SCENE CONFIGURATION
標準のリアルシーンコントローラーKNXデバイスのように、シーンにデバイスを追加する必要があります。これはリストで各行はデバイスを表します。
シーンノードは、BUSから新しい値を受け取るたびに、シーンに属するすべてのアクチュエータの更新された値を自動的に保存します。
1つ目のフィールドはグループアドレス、2つ目はデータポイント、3つ目はシーン内のこのデバイスのデフォルト値です(これはシーン保存機能でオーバーライドできます)。
説明にはデバイスと書いてありますが、入力するのはグループアドレスのようなので、ETS側でグループアドレスを設計するときに、考える必要がありそうです。
まとめ
以上が、>node-red-contrib-knx-ultimateの”KNX Scene Controller”についてです。
ETS側でロジックやシーンを全部組むこともできますが、複雑なロジックの設定や、他の人が制御内容を理解するのはなかなか面倒です。
なので、Node-RED側でロジックも、複雑なシーンの呼び出しも設定できると、最初の設計もメンテナンスもとても便利になりますね。
ということで、これからもいろいろ使っていきたいとおもいます。