KNXの視覚化サーバー ComfortClick社のbOSには外部のデバイスと通信を行うためにいろんな機能がありますが、その中に”Regex parsing”があります。
これは、受け取るメッセージを正規表現をつかって適正にして必要なものを取り出すものです。今回、サンプルライブラリー使って”Regex parsing”の使い方を説明します。
Comfortclick KNX視覚&自動化サーバー(bOSプラットフォーム)
Regex parsing – Smart Home Building Automation Software – ComfortClick bOS
まずはサンプルライブラリーについて。
この例では、2つのデバイスを使用しています。最初のデバイスは、IoTデバイスをシミュレートする仮想送信機です。この仮想デバイスは、受信機であるbOSに文字列を送信します。そして、正規表現を使って、送信者から必要な情報を解析することができます。いくつかのdouble変数が追加され、各変数は送信者から異なる文字列を解析して受信します。
ライブラリーをインポート
ダウンロードしたライブラリーをDevicesにインポートします。
DevicesにSenderとReceiverがインポートされました。
Sender
Senderの中を確認します。
これがSettingsタブの内容。
UDPで送り、Remote PortとLocal Portを記載します。
こちらはValuesタブ。
Command
Commandが作られているのでその中を確認。
Settingsタブの内容。Text Dataにメッセージが書かれています。
Text Dataの中身はこのとおり。これをReceiverで必要なデータを取り出すということですね。
Receiver
Settingsタブです。Senderと同じくUDPで通信し、PortはSenderとは逆になっています。
Ch1というノードの内容を確認するには、infoタブを開きます。
NodeObjectTypeが ComfortClick.Basic.Values.Double. ComfortClick.Basicとなっています。
使われているのはこのノードです。
Ch1のSettingsにはRegexという欄があり、ここに正規表現が記載されています。
パネルで表示
パネルを作成して、どのように表示されるのか確認します。
chにはPower,tempにはTemperatureのTemplateを設定します。
これでパネルができました。
bOS Clientアプリで確認。無事に表示されました。
SenderのCommandにあるch1のデータを変更すると、bOS Clientでも変更されるのが確認できます。
* Sendingは5秒ごとに送信する設定になっているため。
正規表現の確認
次に正規表現について確認します。
<msg><src>CC128-v1.29</src><dsb>01816</dsb><time>11:05:26</time><tmpr>18.8</tmpr><sensor>0</sensor><id>01417</id><type>1</type><ch1><watts>00100</watts></ch1><ch2><watts>00086</watts></ch2><ch3><watts>00155</watts></ch3></msg>
まずは、Senderから送られてくるメッセージはこちら
(?<=ch1><watts>)([\s\S]*)(?=</watts></ch1>)
Receiverのch1はこのような正規表現になっています。
こちらの正規表現チェッカーサイトで確認
Ch1のwattが選択できていることがわかります。
timeの値を取得する
今度はtimeの値を取得します。
(?<=time>)([\s\S]*)(?=</time>)
正規表現チェッカーでためすと、これで取得できそうです。
ReceiverにStringを追加します。
これをTimeにします。
正しく取得できました。
パネルにも表示できました。
まとめ
以上、bOSの正規表現(regex)機能を使って受信したデータの中から必要なデータを取り出す方法をご紹介しました。