前回に引き続き、Node-REDからBACnetでCoolMasterの設定温度を変更する方法を紹介。
YABEからCoolMasterの設定温度を変更したWireSharkパケット

項目 | 内容 |
---|---|
送信元IP | 192.168.1.14(Node-REDやBACnetクライアント) |
宛先IP | 192.168.1.100(BACnetデバイス) |
送信元/宛先ポート | 63848 → 47808(UDPポート。47808がBACnet/IPのデフォルト) |
BVLC Function | Original-Unicast-NPDU(単一デバイス宛) |
APDU Type | Confirmed Request(応答が必要) |
Invoke ID | 27(リクエストとレスポンスの照合用) |
Service Choice | WriteProperty(15) |
対象オブジェクト | analog-value, Instance=256 |
書き込み先 | present-value(85) |
書き込み値 | real型, 値=25 |
Priority | 16(BACnet Priority Arrayで最も低い優先度) |
こちらはNPDUの値。
項目 | 内容 |
---|---|
送信元IP | 192.168.1.14(Node-REDやBACnetクライアント) |
宛先IP | 192.168.1.100(BACnetデバイス) |
送信元ポート | 63848(動的割り当て) |
宛先ポート | 47808(BACnet/IPの標準ポート) |
BVLC Function | Original-Unicast-NPDU(0x0a) |
APDU Type | Confirmed-REQ(0、応答が必要な要求) |
Service Choice | WriteProperty(15) |
ターゲットオブジェクト | analog-value, 256 |
プロパティ | present-value(85) |
書き込み値 | 25(Real型) |
Application Tag | 4(Real型) |
Priority | 16(デフォルト優先度) |
これはAPDUの値です。
Node-REDからBACnetでCoolMasterの設定温度を変更する


このようにValueに設定したい温度を入力すると設定できます。

設定温度をValueで渡すにはこのようにします。
[{"id":"873493c9214835f0","type":"BACnet-Write","z":"11b5d970f1ab28c1","name":"","objectType":"2","instance":"d6dff7e9f9703782","valueTag":"4","valueValue":"24","propertyId":"85","priority":"16","device":"54de1b76e537f00b","server":"cd9b93738b4a729c","multipleWrite":false,"x":460,"y":1280,"wires":[["4709806a326ccec7"]]},{"id":"4dfad23d1b17b1ab","type":"inject","z":"11b5d970f1ab28c1","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":280,"y":1200,"wires":[["873493c9214835f0"]]},{"id":"4709806a326ccec7","type":"debug","z":"11b5d970f1ab28c1","name":"debug 1","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":580,"y":1380,"wires":[]},{"id":"455052713aafe0ef","type":"function","z":"11b5d970f1ab28c1","name":"Format Payload","func":"msg.payload = {\n values: [\n {\n type: 4,\n value: msg.payload\n }\n ]\n};\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":300,"y":1360,"wires":[["873493c9214835f0"]]},{"id":"5400c9442eb17fef","type":"inject","z":"11b5d970f1ab28c1","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"25","payloadType":"num","x":110,"y":1300,"wires":[["455052713aafe0ef"]]},{"id":"2751e5c7f387705a","type":"inject","z":"11b5d970f1ab28c1","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"26","payloadType":"num","x":110,"y":1400,"wires":[["455052713aafe0ef"]]},{"id":"d6dff7e9f9703782","type":"BACnet-Instance","name":"SetTemp","instanceAddress":"256"},{"id":"54de1b76e537f00b","type":"BACnet-Device","name":"CoolMaster","deviceAddress":"192.168.1.100"},{"id":"cd9b93738b4a729c","type":"BACnet-Client","name":"PC(Node-RED)","adpuTimeout":"6000","port":"47808","interface":"","broadcastAddress":"192.168.1.14"}]

functionノードの中のtypeを4にしてmsg.payloadで設定温度を数値で送れば大丈夫です。
まとめ
以上、Node-REDからBACnetでCoolMasterの設定温度を変更する方法を紹介しました。