-
-
Save shbatm/b1dcf01e78ca8c877432a2070e861900 to your computer and use it in GitHub Desktop.
Century VS VGreen EVO Node-RED RS485 Control
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[ | |
{ | |
"id": "9856a1d38d13eaca", | |
"type": "tab", | |
"label": "Century VS Pump Control", | |
"disabled": false, | |
"info": "", | |
"env": [] | |
}, | |
{ | |
"id": "0b8cc767e1d33f36", | |
"type": "tab", | |
"label": "Discovery", | |
"disabled": false, | |
"info": "", | |
"env": [] | |
}, | |
{ | |
"id": "5009531429fbeac6", | |
"type": "tab", | |
"label": "Testing", | |
"disabled": false, | |
"info": "", | |
"env": [] | |
}, | |
{ | |
"id": "927832aead2f5fea", | |
"type": "group", | |
"z": "9856a1d38d13eaca", | |
"name": "Serial Comms", | |
"style": { | |
"stroke": "#ff0000", | |
"fill": "#ffbfbf", | |
"fill-opacity": "0.52", | |
"label": true, | |
"color": "#000000" | |
}, | |
"nodes": [ | |
"15381188ce92036c", | |
"15c28d09e12eb077", | |
"ec6342cad808afe5", | |
"2a28bc47eff77744", | |
"b2fe3c569209c4e7", | |
"3bd2d948f28c6502", | |
"b44ccc7877a2be15" | |
], | |
"x": 914, | |
"y": 179, | |
"w": 612, | |
"h": 142 | |
}, | |
{ | |
"id": "42ec027f56f75fc3", | |
"type": "junction", | |
"z": "0b8cc767e1d33f36", | |
"x": 560, | |
"y": 140, | |
"wires": [ | |
[ | |
"e297237faa0368c1", | |
"1f6daea9a3817c19", | |
"3d58e446346e585e", | |
"9b493016d3a1e737", | |
"65270f8e6232ba37", | |
"4f62b5cb98529931", | |
"b4b0db590b51bd61", | |
"b4559c057a9e4e84", | |
"4ad822d5a507dce2", | |
"a897a22d073195e5" | |
] | |
] | |
}, | |
{ | |
"id": "3ee19bd474ee13a9", | |
"type": "junction", | |
"z": "9856a1d38d13eaca", | |
"x": 1240, | |
"y": 460, | |
"wires": [ | |
[ | |
"114dcb299af1d170", | |
"ed1e7575f92d95b1", | |
"a2753cbd2209a013" | |
] | |
] | |
}, | |
{ | |
"id": "c758db1d6466f4d0", | |
"type": "junction", | |
"z": "9856a1d38d13eaca", | |
"x": 980, | |
"y": 700, | |
"wires": [ | |
[ | |
"94ef44a77b2dfe64", | |
"46bc79ee5b833e5e", | |
"159f9b5e26c6c389" | |
] | |
] | |
}, | |
{ | |
"id": "606324011d7bbf0a", | |
"type": "junction", | |
"z": "9856a1d38d13eaca", | |
"x": 1240, | |
"y": 680, | |
"wires": [ | |
[ | |
"82dd53db072751ce", | |
"3b9c6ef378bc6ba1" | |
] | |
] | |
}, | |
{ | |
"id": "2ed72ae53bdecbd9", | |
"type": "junction", | |
"z": "9856a1d38d13eaca", | |
"x": 980, | |
"y": 500, | |
"wires": [ | |
[ | |
"d57a8908f6ddef08", | |
"65c04568a955e257" | |
] | |
] | |
}, | |
{ | |
"id": "8865d8114489529b", | |
"type": "junction", | |
"z": "9856a1d38d13eaca", | |
"x": 940, | |
"y": 720, | |
"wires": [ | |
[ | |
"c758db1d6466f4d0" | |
] | |
] | |
}, | |
{ | |
"id": "443aaab7b4cb6a8c", | |
"type": "junction", | |
"z": "9856a1d38d13eaca", | |
"x": 1240, | |
"y": 580, | |
"wires": [ | |
[ | |
"a5a1bf72f23f55d8", | |
"7fd53b9d08463a29" | |
] | |
] | |
}, | |
{ | |
"id": "ad28d9ed11bb4562", | |
"type": "junction", | |
"z": "9856a1d38d13eaca", | |
"x": 980, | |
"y": 620, | |
"wires": [ | |
[ | |
"efc823c8b8697a1f", | |
"3749220ec5e4af58" | |
] | |
] | |
}, | |
{ | |
"id": "bef015b50f79d33a", | |
"type": "junction", | |
"z": "9856a1d38d13eaca", | |
"x": 700, | |
"y": 1280, | |
"wires": [ | |
[ | |
"a6350ebe85ecd080" | |
] | |
] | |
}, | |
{ | |
"id": "c28a163409c834e2", | |
"type": "junction", | |
"z": "9856a1d38d13eaca", | |
"x": 1240, | |
"y": 780, | |
"wires": [ | |
[ | |
"489f747b383515b3", | |
"fa4d6ea0827cec5e" | |
] | |
] | |
}, | |
{ | |
"id": "eda98a70a4b354b8", | |
"type": "junction", | |
"z": "9856a1d38d13eaca", | |
"x": 980, | |
"y": 820, | |
"wires": [ | |
[ | |
"5ef00dd339776cef", | |
"a10c89b3db825710" | |
] | |
] | |
}, | |
{ | |
"id": "4785572017fce44a", | |
"type": "junction", | |
"z": "9856a1d38d13eaca", | |
"x": 1240, | |
"y": 880, | |
"wires": [ | |
[ | |
"815e89d8f8d2a26e", | |
"2232dc901efaa633" | |
] | |
] | |
}, | |
{ | |
"id": "bba17e656f3471af", | |
"type": "junction", | |
"z": "9856a1d38d13eaca", | |
"x": 980, | |
"y": 920, | |
"wires": [ | |
[ | |
"62a9892f3f654245", | |
"8fedc03c590b3285" | |
] | |
] | |
}, | |
{ | |
"id": "52412dd9c6b64122", | |
"type": "junction", | |
"z": "9856a1d38d13eaca", | |
"x": 1240, | |
"y": 980, | |
"wires": [ | |
[ | |
"d12836adba922648", | |
"7a280a5b52669187" | |
] | |
] | |
}, | |
{ | |
"id": "185974b58432a9d5", | |
"type": "junction", | |
"z": "9856a1d38d13eaca", | |
"x": 980, | |
"y": 1020, | |
"wires": [ | |
[ | |
"4cb729eb16dd8486", | |
"57fc08c115c23bfe" | |
] | |
] | |
}, | |
{ | |
"id": "34c8e66c9117a153", | |
"type": "junction", | |
"z": "9856a1d38d13eaca", | |
"x": 1240, | |
"y": 1080, | |
"wires": [ | |
[ | |
"ead0ada6ee788607", | |
"eb0e0b0d06bae896" | |
] | |
] | |
}, | |
{ | |
"id": "70d595318ad0cd72", | |
"type": "serial-port", | |
"serialport": "/dev/serial/by-id/usb-FTDI_USB-RS485_Cable_FT7EA6B6-if00-port0", | |
"serialbaud": "9600", | |
"databits": "8", | |
"parity": "none", | |
"stopbits": "1", | |
"waitfor": "", | |
"dtr": "none", | |
"rts": "none", | |
"cts": "none", | |
"dsr": "none", | |
"newline": "50", | |
"bin": "bin", | |
"out": "interbyte", | |
"addchar": "", | |
"responsetimeout": "3000" | |
}, | |
{ | |
"id": "2996cb7f9b91f906", | |
"type": "mqtt-broker", | |
"name": "Home Assistant", | |
"broker": "192.168.1.1", | |
"port": "1883", | |
"clientid": "aqualink-rs-node-red", | |
"autoConnect": true, | |
"usetls": false, | |
"protocolVersion": "4", | |
"keepalive": "60", | |
"cleansession": true, | |
"birthTopic": "aqualink-nr/status", | |
"birthQos": "0", | |
"birthRetain": "true", | |
"birthPayload": "online", | |
"birthMsg": {}, | |
"closeTopic": "aqualink-nr/status", | |
"closeQos": "0", | |
"closeRetain": "true", | |
"closePayload": "offline", | |
"closeMsg": {}, | |
"willTopic": "aqualink-nr/status", | |
"willQos": "0", | |
"willRetain": "true", | |
"willPayload": "offline", | |
"willMsg": {}, | |
"userProps": "", | |
"sessionExpiry": "" | |
}, | |
{ | |
"id": "3fe341deb791895d", | |
"type": "buffer-maker", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"specification": "spec", | |
"specificationType": "ui", | |
"items": [ | |
{ | |
"name": "address", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "15" | |
}, | |
{ | |
"name": "function", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "43" | |
}, | |
{ | |
"name": "ack", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "20" | |
} | |
], | |
"swap1": "", | |
"swap2": "", | |
"swap3": "", | |
"swap1Type": "swap", | |
"swap2Type": "swap", | |
"swap3Type": "swap", | |
"msgProperty": "payload", | |
"msgPropertyType": "str", | |
"x": 530, | |
"y": 360, | |
"wires": [ | |
[ | |
"15313b5d48ecc4e0" | |
] | |
] | |
}, | |
{ | |
"id": "475bb5b88fc4ec27", | |
"type": "inject", | |
"z": "9856a1d38d13eaca", | |
"name": "Get Status", | |
"props": [], | |
"repeat": "5", | |
"crontab": "", | |
"once": true, | |
"onceDelay": "1", | |
"topic": "", | |
"x": 100, | |
"y": 360, | |
"wires": [ | |
[ | |
"805cdcd9b1887272" | |
] | |
] | |
}, | |
{ | |
"id": "bd4bc3e2bd030a14", | |
"type": "debug", | |
"z": "9856a1d38d13eaca", | |
"name": "Motor Status", | |
"active": false, | |
"tosidebar": false, | |
"console": false, | |
"tostatus": true, | |
"complete": "payload", | |
"targetType": "msg", | |
"statusVal": "payload", | |
"statusType": "auto", | |
"x": 1510, | |
"y": 400, | |
"wires": [] | |
}, | |
{ | |
"id": "2edc52c6b5caf98a", | |
"type": "buffer-maker", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"specification": "spec", | |
"specificationType": "ui", | |
"items": [ | |
{ | |
"name": "address", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "15" | |
}, | |
{ | |
"name": "function", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "41" | |
}, | |
{ | |
"name": "ack", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "20" | |
} | |
], | |
"swap1": "", | |
"swap2": "", | |
"swap3": "", | |
"swap1Type": "swap", | |
"swap2Type": "swap", | |
"swap3Type": "swap", | |
"msgProperty": "payload", | |
"msgPropertyType": "str", | |
"x": 690, | |
"y": 1580, | |
"wires": [ | |
[ | |
"0fa33270fef00b29" | |
] | |
] | |
}, | |
{ | |
"id": "b8c5bc1aa027ce58", | |
"type": "inject", | |
"z": "9856a1d38d13eaca", | |
"name": "Go", | |
"props": [], | |
"repeat": "", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"x": 530, | |
"y": 1560, | |
"wires": [ | |
[ | |
"2edc52c6b5caf98a" | |
] | |
] | |
}, | |
{ | |
"id": "82f1d9fb7cb2e986", | |
"type": "buffer-maker", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"specification": "spec", | |
"specificationType": "ui", | |
"items": [ | |
{ | |
"name": "address", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "15" | |
}, | |
{ | |
"name": "function", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "42" | |
}, | |
{ | |
"name": "ack", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "20" | |
} | |
], | |
"swap1": "", | |
"swap2": "", | |
"swap3": "", | |
"swap1Type": "swap", | |
"swap2Type": "swap", | |
"swap3Type": "swap", | |
"msgProperty": "payload", | |
"msgPropertyType": "str", | |
"x": 690, | |
"y": 1660, | |
"wires": [ | |
[ | |
"43d526e1a24335ab" | |
] | |
] | |
}, | |
{ | |
"id": "2e792f92f3dead67", | |
"type": "inject", | |
"z": "9856a1d38d13eaca", | |
"name": "Stop", | |
"props": [], | |
"repeat": "", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"x": 530, | |
"y": 1640, | |
"wires": [ | |
[ | |
"82f1d9fb7cb2e986" | |
] | |
] | |
}, | |
{ | |
"id": "301cbfb6b3dfa361", | |
"type": "buffer-maker", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"specification": "spec", | |
"specificationType": "ui", | |
"items": [ | |
{ | |
"name": "address", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "15" | |
}, | |
{ | |
"name": "function", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "44" | |
}, | |
{ | |
"name": "ack", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "20" | |
}, | |
{ | |
"name": "mode", | |
"type": "byte", | |
"length": 1, | |
"dataType": "str", | |
"data": "0" | |
}, | |
{ | |
"name": "speed", | |
"type": "uint16le", | |
"length": 1, | |
"dataType": "jsonata", | |
"data": "payload*4" | |
} | |
], | |
"swap1": "", | |
"swap2": "", | |
"swap3": "", | |
"swap1Type": "swap", | |
"swap2Type": "swap", | |
"swap3Type": "swap", | |
"msgProperty": "payload", | |
"msgPropertyType": "str", | |
"x": 1010, | |
"y": 1340, | |
"wires": [ | |
[ | |
"51d8025d6801b13f" | |
] | |
] | |
}, | |
{ | |
"id": "89fee9f6e9a2964e", | |
"type": "inject", | |
"z": "9856a1d38d13eaca", | |
"name": "Set Demand", | |
"props": [], | |
"repeat": "", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"x": 150, | |
"y": 1500, | |
"wires": [ | |
[ | |
"dc134d75a115f423" | |
] | |
] | |
}, | |
{ | |
"id": "2274705a6d34c36c", | |
"type": "debug", | |
"z": "9856a1d38d13eaca", | |
"name": "Motor Set Demand", | |
"active": false, | |
"tosidebar": true, | |
"console": false, | |
"tostatus": false, | |
"complete": "payload", | |
"targetType": "msg", | |
"statusVal": "", | |
"statusType": "auto", | |
"x": 1590, | |
"y": 1340, | |
"wires": [] | |
}, | |
{ | |
"id": "5278cf8bcb2e9c0d", | |
"type": "buffer-maker", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"specification": "spec", | |
"specificationType": "ui", | |
"items": [ | |
{ | |
"name": "address", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "15" | |
}, | |
{ | |
"name": "function", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "45" | |
}, | |
{ | |
"name": "ack", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "20" | |
}, | |
{ | |
"name": "page", | |
"type": "byte", | |
"length": 1, | |
"dataType": "msg", | |
"data": "payload.page" | |
}, | |
{ | |
"name": "address", | |
"type": "hex", | |
"length": 2, | |
"dataType": "msg", | |
"data": "payload.address" | |
} | |
], | |
"swap1": "", | |
"swap2": "", | |
"swap3": "", | |
"swap1Type": "swap", | |
"swap2Type": "swap", | |
"swap3Type": "swap", | |
"msgProperty": "payload", | |
"msgPropertyType": "str", | |
"x": 530, | |
"y": 460, | |
"wires": [ | |
[ | |
"e02d930b4bc13943" | |
] | |
] | |
}, | |
{ | |
"id": "114dcb299af1d170", | |
"type": "debug", | |
"z": "9856a1d38d13eaca", | |
"name": "Speed Value", | |
"active": false, | |
"tosidebar": false, | |
"console": false, | |
"tostatus": true, | |
"complete": "payload", | |
"targetType": "msg", | |
"statusVal": "payload", | |
"statusType": "auto", | |
"x": 1390, | |
"y": 500, | |
"wires": [] | |
}, | |
{ | |
"id": "373b1b08f5bbcb4c", | |
"type": "buffer-maker", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"specification": "spec", | |
"specificationType": "ui", | |
"items": [ | |
{ | |
"name": "address", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "15" | |
}, | |
{ | |
"name": "function", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "45" | |
}, | |
{ | |
"name": "ack", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "20" | |
}, | |
{ | |
"name": "page", | |
"type": "byte", | |
"length": 1, | |
"dataType": "msg", | |
"data": "payload.page" | |
}, | |
{ | |
"name": "address", | |
"type": "hex", | |
"length": 2, | |
"dataType": "msg", | |
"data": "payload.address" | |
} | |
], | |
"swap1": "", | |
"swap2": "", | |
"swap3": "", | |
"swap1Type": "swap", | |
"swap2Type": "swap", | |
"swap3Type": "swap", | |
"msgProperty": "payload", | |
"msgPropertyType": "str", | |
"x": 530, | |
"y": 580, | |
"wires": [ | |
[ | |
"a877925ae9253b37" | |
] | |
] | |
}, | |
{ | |
"id": "a5a1bf72f23f55d8", | |
"type": "debug", | |
"z": "9856a1d38d13eaca", | |
"name": "Current Value", | |
"active": false, | |
"tosidebar": false, | |
"console": false, | |
"tostatus": true, | |
"complete": "payload", | |
"targetType": "msg", | |
"statusVal": "payload", | |
"statusType": "auto", | |
"x": 1400, | |
"y": 620, | |
"wires": [] | |
}, | |
{ | |
"id": "696dcf268e07cb5b", | |
"type": "buffer-parser", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"data": "payload", | |
"dataType": "msg", | |
"specification": "spec", | |
"specificationType": "ui", | |
"items": [ | |
{ | |
"type": "int16le", | |
"name": "value", | |
"offset": 2, | |
"length": 1, | |
"offsetbit": 0, | |
"scale": "/1000", | |
"mask": "" | |
} | |
], | |
"swap1": "", | |
"swap2": "", | |
"swap3": "", | |
"swap1Type": "swap", | |
"swap2Type": "swap", | |
"swap3Type": "swap", | |
"msgProperty": "payload", | |
"msgPropertyType": "str", | |
"resultType": "value", | |
"resultTypeType": "return", | |
"multipleResult": true, | |
"fanOutMultipleResult": true, | |
"setTopic": true, | |
"outputs": 1, | |
"x": 870, | |
"y": 580, | |
"wires": [ | |
[ | |
"ad28d9ed11bb4562" | |
] | |
] | |
}, | |
{ | |
"id": "7b20cdf23d3c3c9d", | |
"type": "mqtt in", | |
"z": "9856a1d38d13eaca", | |
"name": "Filter Pump", | |
"topic": "aqualinkd/Filter_Pump", | |
"qos": "2", | |
"datatype": "auto-detect", | |
"broker": "2996cb7f9b91f906", | |
"nl": false, | |
"rap": true, | |
"rh": 0, | |
"inputs": 0, | |
"x": 90, | |
"y": 60, | |
"wires": [ | |
[ | |
"49c498588ec62ebc" | |
] | |
] | |
}, | |
{ | |
"id": "49c498588ec62ebc", | |
"type": "change", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "pump_on", | |
"pt": "flow", | |
"to": "payload", | |
"tot": "msg" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 310, | |
"y": 60, | |
"wires": [ | |
[ | |
"b3a1abcb1cdcf955", | |
"8af346049398efea" | |
] | |
] | |
}, | |
{ | |
"id": "b3a1abcb1cdcf955", | |
"type": "debug", | |
"z": "9856a1d38d13eaca", | |
"name": "Pump On", | |
"active": true, | |
"tosidebar": false, | |
"console": false, | |
"tostatus": true, | |
"complete": "payload", | |
"targetType": "msg", | |
"statusVal": "payload", | |
"statusType": "auto", | |
"x": 520, | |
"y": 40, | |
"wires": [] | |
}, | |
{ | |
"id": "aabe1de92c8f18af", | |
"type": "change", | |
"z": "9856a1d38d13eaca", | |
"name": "Format Status", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "$lookup(\t {\t \"00\":\"stopped\",\t \"09\":\"boot\",\t \"0b\": \"running\",\t \"20\": \"fault\"\t },\t payload\t)", | |
"tot": "jsonata" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 1320, | |
"y": 360, | |
"wires": [ | |
[ | |
"bd4bc3e2bd030a14", | |
"4703066f31f10bb5" | |
] | |
] | |
}, | |
{ | |
"id": "ad32feeeb3ba227f", | |
"type": "buffer-parser", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"data": "payload", | |
"dataType": "msg", | |
"specification": "spec", | |
"specificationType": "ui", | |
"items": [ | |
{ | |
"type": "hex", | |
"name": "status", | |
"offset": 0, | |
"length": 1, | |
"offsetbit": 0, | |
"scale": "1", | |
"mask": "" | |
} | |
], | |
"swap1": "", | |
"swap2": "", | |
"swap3": "", | |
"swap1Type": "swap", | |
"swap2Type": "swap", | |
"swap3Type": "swap", | |
"msgProperty": "payload", | |
"msgPropertyType": "str", | |
"resultType": "value", | |
"resultTypeType": "return", | |
"multipleResult": true, | |
"fanOutMultipleResult": true, | |
"setTopic": true, | |
"outputs": 1, | |
"x": 870, | |
"y": 360, | |
"wires": [ | |
[ | |
"f03633129b33107b", | |
"2f1837693c6c5cc0" | |
] | |
] | |
}, | |
{ | |
"id": "4703066f31f10bb5", | |
"type": "mqtt out", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"topic": "aqualink-nr/pump_status", | |
"qos": "", | |
"retain": "", | |
"respTopic": "", | |
"contentType": "", | |
"userProps": "", | |
"correl": "", | |
"expiry": "", | |
"broker": "2996cb7f9b91f906", | |
"x": 1550, | |
"y": 360, | |
"wires": [] | |
}, | |
{ | |
"id": "805cdcd9b1887272", | |
"type": "switch", | |
"z": "9856a1d38d13eaca", | |
"name": "Pump On?", | |
"property": "pump_on", | |
"propertyType": "flow", | |
"rules": [ | |
{ | |
"t": "eq", | |
"v": "1", | |
"vt": "num" | |
}, | |
{ | |
"t": "else" | |
} | |
], | |
"checkall": "true", | |
"repair": false, | |
"outputs": 2, | |
"x": 330, | |
"y": 360, | |
"wires": [ | |
[ | |
"3fe341deb791895d" | |
], | |
[ | |
"61109a0e98136dca" | |
] | |
] | |
}, | |
{ | |
"id": "44af821c2f82ee5e", | |
"type": "switch", | |
"z": "9856a1d38d13eaca", | |
"name": "Pump On?", | |
"property": "pump_on", | |
"propertyType": "flow", | |
"rules": [ | |
{ | |
"t": "eq", | |
"v": "1", | |
"vt": "num" | |
}, | |
{ | |
"t": "else" | |
} | |
], | |
"checkall": "true", | |
"repair": false, | |
"outputs": 2, | |
"x": 330, | |
"y": 460, | |
"wires": [ | |
[ | |
"5278cf8bcb2e9c0d" | |
], | |
[ | |
"1df5892b99e699a0", | |
"9cbd1b8bdc1f631e" | |
] | |
] | |
}, | |
{ | |
"id": "ab6a6927aef0646c", | |
"type": "buffer-parser", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"data": "payload", | |
"dataType": "msg", | |
"specification": "spec", | |
"specificationType": "ui", | |
"items": [ | |
{ | |
"type": "int16le", | |
"name": "value", | |
"offset": 2, | |
"length": 1, | |
"offsetbit": 0, | |
"scale": "/4", | |
"mask": "" | |
} | |
], | |
"swap1": "", | |
"swap2": "", | |
"swap3": "", | |
"swap1Type": "swap", | |
"swap2Type": "swap", | |
"swap3Type": "swap", | |
"msgProperty": "payload", | |
"msgPropertyType": "str", | |
"resultType": "value", | |
"resultTypeType": "return", | |
"multipleResult": true, | |
"fanOutMultipleResult": true, | |
"setTopic": true, | |
"outputs": 1, | |
"x": 870, | |
"y": 460, | |
"wires": [ | |
[ | |
"2ed72ae53bdecbd9" | |
] | |
] | |
}, | |
{ | |
"id": "ed1e7575f92d95b1", | |
"type": "mqtt out", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"topic": "aqualink-nr/pump_speed", | |
"qos": "", | |
"retain": "", | |
"respTopic": "", | |
"contentType": "", | |
"userProps": "", | |
"correl": "", | |
"expiry": "", | |
"broker": "2996cb7f9b91f906", | |
"x": 1430, | |
"y": 460, | |
"wires": [] | |
}, | |
{ | |
"id": "973e010ee2ff2624", | |
"type": "switch", | |
"z": "9856a1d38d13eaca", | |
"name": "Pump On?", | |
"property": "pump_on", | |
"propertyType": "flow", | |
"rules": [ | |
{ | |
"t": "eq", | |
"v": "1", | |
"vt": "num" | |
}, | |
{ | |
"t": "else" | |
} | |
], | |
"checkall": "false", | |
"repair": false, | |
"outputs": 2, | |
"x": 330, | |
"y": 580, | |
"wires": [ | |
[ | |
"373b1b08f5bbcb4c" | |
], | |
[ | |
"f54ccb8e7a722fa1", | |
"5ec988d96ae0e32d" | |
] | |
] | |
}, | |
{ | |
"id": "7fd53b9d08463a29", | |
"type": "mqtt out", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"topic": "aqualink-nr/pump_current", | |
"qos": "", | |
"retain": "", | |
"respTopic": "", | |
"contentType": "", | |
"userProps": "", | |
"correl": "", | |
"expiry": "", | |
"broker": "2996cb7f9b91f906", | |
"x": 1430, | |
"y": 580, | |
"wires": [] | |
}, | |
{ | |
"id": "e1e3e789212d3308", | |
"type": "link in", | |
"z": "9856a1d38d13eaca", | |
"name": "Pump Go", | |
"links": [ | |
"fcc9695096cea357" | |
], | |
"x": 555, | |
"y": 1600, | |
"wires": [ | |
[ | |
"2edc52c6b5caf98a" | |
] | |
] | |
}, | |
{ | |
"id": "fcc9695096cea357", | |
"type": "link out", | |
"z": "9856a1d38d13eaca", | |
"name": "Pump Set Demand", | |
"mode": "link", | |
"links": [ | |
"e1e3e789212d3308", | |
"d15193bc17607eed" | |
], | |
"x": 1285, | |
"y": 1400, | |
"wires": [] | |
}, | |
{ | |
"id": "e28a345839aa6003", | |
"type": "buffer-maker", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"specification": "spec", | |
"specificationType": "ui", | |
"items": [ | |
{ | |
"name": "address", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "15" | |
}, | |
{ | |
"name": "function", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "45" | |
}, | |
{ | |
"name": "ack", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "20" | |
}, | |
{ | |
"name": "page", | |
"type": "byte", | |
"length": 1, | |
"dataType": "msg", | |
"data": "payload.page" | |
}, | |
{ | |
"name": "address", | |
"type": "hex", | |
"length": 2, | |
"dataType": "msg", | |
"data": "payload.address" | |
} | |
], | |
"swap1": "", | |
"swap2": "", | |
"swap3": "", | |
"swap1Type": "swap", | |
"swap2Type": "swap", | |
"swap3Type": "swap", | |
"msgProperty": "payload", | |
"msgPropertyType": "str", | |
"x": 530, | |
"y": 680, | |
"wires": [ | |
[ | |
"b575422a85ea0db1" | |
] | |
] | |
}, | |
{ | |
"id": "3b9c6ef378bc6ba1", | |
"type": "debug", | |
"z": "9856a1d38d13eaca", | |
"name": "Demand Value", | |
"active": false, | |
"tosidebar": false, | |
"console": false, | |
"tostatus": true, | |
"complete": "payload", | |
"targetType": "msg", | |
"statusVal": "payload", | |
"statusType": "auto", | |
"x": 1400, | |
"y": 720, | |
"wires": [] | |
}, | |
{ | |
"id": "dee06ba78bb6907a", | |
"type": "switch", | |
"z": "9856a1d38d13eaca", | |
"name": "Pump On?", | |
"property": "pump_on", | |
"propertyType": "flow", | |
"rules": [ | |
{ | |
"t": "eq", | |
"v": "1", | |
"vt": "num" | |
}, | |
{ | |
"t": "else" | |
} | |
], | |
"checkall": "true", | |
"repair": false, | |
"outputs": 2, | |
"x": 330, | |
"y": 680, | |
"wires": [ | |
[ | |
"e28a345839aa6003" | |
], | |
[ | |
"8a87c5043bf80cb0", | |
"f6bc15ceb61dbd44" | |
] | |
] | |
}, | |
{ | |
"id": "5454f251f5acc9ee", | |
"type": "buffer-parser", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"data": "payload", | |
"dataType": "msg", | |
"specification": "spec", | |
"specificationType": "ui", | |
"items": [ | |
{ | |
"type": "int16le", | |
"name": "value", | |
"offset": 2, | |
"length": 1, | |
"offsetbit": 0, | |
"scale": "/4", | |
"mask": "" | |
} | |
], | |
"swap1": "", | |
"swap2": "", | |
"swap3": "", | |
"swap1Type": "swap", | |
"swap2Type": "swap", | |
"swap3Type": "swap", | |
"msgProperty": "payload", | |
"msgPropertyType": "str", | |
"resultType": "value", | |
"resultTypeType": "return", | |
"multipleResult": true, | |
"fanOutMultipleResult": true, | |
"setTopic": true, | |
"outputs": 1, | |
"x": 870, | |
"y": 680, | |
"wires": [ | |
[ | |
"c758db1d6466f4d0" | |
] | |
] | |
}, | |
{ | |
"id": "82dd53db072751ce", | |
"type": "mqtt out", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"topic": "aqualink-nr/pump_target_speed", | |
"qos": "", | |
"retain": "", | |
"respTopic": "", | |
"contentType": "", | |
"userProps": "", | |
"correl": "", | |
"expiry": "", | |
"broker": "2996cb7f9b91f906", | |
"x": 1450, | |
"y": 680, | |
"wires": [] | |
}, | |
{ | |
"id": "a686f6cefc8cd582", | |
"type": "mqtt in", | |
"z": "9856a1d38d13eaca", | |
"name": "Pump Target Speed", | |
"topic": "aqualink-nr/pump_target_speed/set", | |
"qos": "2", | |
"datatype": "auto-detect", | |
"broker": "2996cb7f9b91f906", | |
"nl": false, | |
"rap": true, | |
"rh": 0, | |
"inputs": 0, | |
"x": 150, | |
"y": 1360, | |
"wires": [ | |
[ | |
"a6350ebe85ecd080", | |
"237343edf7786b5b" | |
] | |
] | |
}, | |
{ | |
"id": "0c6ac4facff93db8", | |
"type": "mqtt out", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"topic": "aqualink-nr/pump_target_speed", | |
"qos": "", | |
"retain": "", | |
"respTopic": "", | |
"contentType": "", | |
"userProps": "", | |
"correl": "", | |
"expiry": "", | |
"broker": "2996cb7f9b91f906", | |
"x": 1630, | |
"y": 1380, | |
"wires": [] | |
}, | |
{ | |
"id": "bda3037a145009a2", | |
"type": "switch", | |
"z": "9856a1d38d13eaca", | |
"name": "0?", | |
"property": "payload", | |
"propertyType": "msg", | |
"rules": [ | |
{ | |
"t": "gt", | |
"v": "0", | |
"vt": "num" | |
}, | |
{ | |
"t": "eq", | |
"v": "0", | |
"vt": "num" | |
} | |
], | |
"checkall": "true", | |
"repair": false, | |
"outputs": 2, | |
"x": 810, | |
"y": 1360, | |
"wires": [ | |
[ | |
"301cbfb6b3dfa361" | |
], | |
[ | |
"ecc0b61b0c49e4e5", | |
"0c6ac4facff93db8" | |
] | |
] | |
}, | |
{ | |
"id": "ecc0b61b0c49e4e5", | |
"type": "link out", | |
"z": "9856a1d38d13eaca", | |
"name": "Target Speed 0", | |
"mode": "link", | |
"links": [ | |
"01816a40e86df819" | |
], | |
"x": 975, | |
"y": 1400, | |
"wires": [] | |
}, | |
{ | |
"id": "01816a40e86df819", | |
"type": "link in", | |
"z": "9856a1d38d13eaca", | |
"name": "Pump Stop", | |
"links": [ | |
"ecc0b61b0c49e4e5" | |
], | |
"x": 565, | |
"y": 1680, | |
"wires": [ | |
[ | |
"82f1d9fb7cb2e986" | |
] | |
] | |
}, | |
{ | |
"id": "afabc6ce13c5e8a3", | |
"type": "buffer-parser", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"data": "payload", | |
"dataType": "msg", | |
"specification": "spec", | |
"specificationType": "ui", | |
"items": [ | |
{ | |
"type": "int16le", | |
"name": "value", | |
"offset": 1, | |
"length": 1, | |
"offsetbit": 0, | |
"scale": "/4", | |
"mask": "" | |
} | |
], | |
"swap1": "", | |
"swap2": "", | |
"swap3": "", | |
"swap1Type": "swap", | |
"swap2Type": "swap", | |
"swap3Type": "swap", | |
"msgProperty": "payload", | |
"msgPropertyType": "str", | |
"resultType": "value", | |
"resultTypeType": "return", | |
"multipleResult": true, | |
"fanOutMultipleResult": true, | |
"setTopic": true, | |
"outputs": 1, | |
"x": 1330, | |
"y": 1340, | |
"wires": [ | |
[ | |
"2274705a6d34c36c", | |
"0c6ac4facff93db8" | |
] | |
] | |
}, | |
{ | |
"id": "61109a0e98136dca", | |
"type": "template", | |
"z": "9856a1d38d13eaca", | |
"name": "Speed", | |
"field": "payload", | |
"fieldType": "msg", | |
"format": "json", | |
"syntax": "mustache", | |
"template": "{\n \"page\": 0,\n \"address\": \"00\"\n}", | |
"output": "json", | |
"x": 110, | |
"y": 460, | |
"wires": [ | |
[ | |
"44af821c2f82ee5e" | |
] | |
] | |
}, | |
{ | |
"id": "c84b1ee2d0589a75", | |
"type": "mqtt in", | |
"z": "9856a1d38d13eaca", | |
"name": "Cleaner Pump", | |
"topic": "aqualinkd/Aux_1", | |
"qos": "2", | |
"datatype": "auto-detect", | |
"broker": "2996cb7f9b91f906", | |
"nl": false, | |
"rap": true, | |
"rh": 0, | |
"inputs": 0, | |
"x": 90, | |
"y": 160, | |
"wires": [ | |
[ | |
"b0fb27e4516b817d" | |
] | |
] | |
}, | |
{ | |
"id": "b0fb27e4516b817d", | |
"type": "change", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "cleaner_on", | |
"pt": "flow", | |
"to": "payload", | |
"tot": "msg" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 310, | |
"y": 160, | |
"wires": [ | |
[ | |
"924d6c736ff753c1" | |
] | |
] | |
}, | |
{ | |
"id": "924d6c736ff753c1", | |
"type": "debug", | |
"z": "9856a1d38d13eaca", | |
"name": "Cleaner On", | |
"active": true, | |
"tosidebar": false, | |
"console": false, | |
"tostatus": true, | |
"complete": "payload", | |
"targetType": "msg", | |
"statusVal": "payload", | |
"statusType": "auto", | |
"x": 530, | |
"y": 160, | |
"wires": [] | |
}, | |
{ | |
"id": "206189d56d7c2de1", | |
"type": "mqtt in", | |
"z": "9856a1d38d13eaca", | |
"name": "Pump Run", | |
"topic": "aqualink-nr/pump_run/set", | |
"qos": "2", | |
"datatype": "auto-detect", | |
"broker": "2996cb7f9b91f906", | |
"nl": false, | |
"rap": true, | |
"rh": 0, | |
"inputs": 0, | |
"x": 140, | |
"y": 1620, | |
"wires": [ | |
[ | |
"75eec75ee6702654" | |
] | |
] | |
}, | |
{ | |
"id": "65600a32ed1bcaf3", | |
"type": "mqtt out", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"topic": "aqualink-nr/pump_run", | |
"qos": "", | |
"retain": "", | |
"respTopic": "", | |
"contentType": "", | |
"userProps": "", | |
"correl": "", | |
"expiry": "", | |
"broker": "2996cb7f9b91f906", | |
"x": 1180, | |
"y": 1580, | |
"wires": [] | |
}, | |
{ | |
"id": "12a7ca669d3ac850", | |
"type": "function", | |
"z": "9856a1d38d13eaca", | |
"name": "Speed to On/Off", | |
"func": "if (msg.payload > 0) {\n msg.payload = \"ON\";\n} else {\n msg.payload = \"OFF\";\n}\nreturn msg;", | |
"outputs": 1, | |
"noerr": 0, | |
"initialize": "", | |
"finalize": "", | |
"libs": [], | |
"x": 940, | |
"y": 1520, | |
"wires": [ | |
[ | |
"65600a32ed1bcaf3" | |
] | |
] | |
}, | |
{ | |
"id": "a2753cbd2209a013", | |
"type": "link out", | |
"z": "9856a1d38d13eaca", | |
"name": "Speed Read", | |
"mode": "link", | |
"links": [ | |
"b5627b790619c3d8" | |
], | |
"x": 1335, | |
"y": 540, | |
"wires": [] | |
}, | |
{ | |
"id": "b5627b790619c3d8", | |
"type": "link in", | |
"z": "9856a1d38d13eaca", | |
"name": "Run Switch", | |
"links": [ | |
"a2753cbd2209a013" | |
], | |
"x": 815, | |
"y": 1520, | |
"wires": [ | |
[ | |
"12a7ca669d3ac850" | |
] | |
] | |
}, | |
{ | |
"id": "238d96936802c14a", | |
"type": "change", | |
"z": "9856a1d38d13eaca", | |
"name": "Store Target", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "target_speed", | |
"pt": "flow", | |
"to": "payload", | |
"tot": "msg" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 830, | |
"y": 1400, | |
"wires": [ | |
[] | |
] | |
}, | |
{ | |
"id": "75eec75ee6702654", | |
"type": "switch", | |
"z": "9856a1d38d13eaca", | |
"name": "ON/OFF", | |
"property": "payload", | |
"propertyType": "msg", | |
"rules": [ | |
{ | |
"t": "eq", | |
"v": "ON", | |
"vt": "str" | |
}, | |
{ | |
"t": "eq", | |
"v": "OFF", | |
"vt": "str" | |
} | |
], | |
"checkall": "true", | |
"repair": false, | |
"outputs": 2, | |
"x": 300, | |
"y": 1620, | |
"wires": [ | |
[ | |
"2edc52c6b5caf98a", | |
"dc134d75a115f423" | |
], | |
[ | |
"82f1d9fb7cb2e986" | |
] | |
] | |
}, | |
{ | |
"id": "dc134d75a115f423", | |
"type": "change", | |
"z": "9856a1d38d13eaca", | |
"name": "Get Target", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "target_speed", | |
"tot": "flow" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 390, | |
"y": 1500, | |
"wires": [ | |
[ | |
"5dff72d07a169bc1" | |
] | |
] | |
}, | |
{ | |
"id": "5e27d594ed74cb79", | |
"type": "change", | |
"z": "9856a1d38d13eaca", | |
"name": "ON", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "ON", | |
"tot": "str" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 970, | |
"y": 1580, | |
"wires": [ | |
[ | |
"65600a32ed1bcaf3" | |
] | |
] | |
}, | |
{ | |
"id": "9f9843abaf3083d7", | |
"type": "change", | |
"z": "9856a1d38d13eaca", | |
"name": "OFF", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "OFF", | |
"tot": "str" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 970, | |
"y": 1660, | |
"wires": [ | |
[ | |
"65600a32ed1bcaf3" | |
] | |
] | |
}, | |
{ | |
"id": "4b3a0a811247516c", | |
"type": "mqtt in", | |
"z": "9856a1d38d13eaca", | |
"name": "Spa Heater Enabled", | |
"topic": "aqualinkd/Spa_Heater/enabled", | |
"qos": "2", | |
"datatype": "auto-detect", | |
"broker": "2996cb7f9b91f906", | |
"nl": false, | |
"rap": true, | |
"rh": 0, | |
"inputs": 0, | |
"x": 110, | |
"y": 220, | |
"wires": [ | |
[ | |
"3ef8b7dc59d155bb" | |
] | |
] | |
}, | |
{ | |
"id": "3ef8b7dc59d155bb", | |
"type": "change", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "spa_heater_enabled", | |
"pt": "flow", | |
"to": "payload", | |
"tot": "msg" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 360, | |
"y": 220, | |
"wires": [ | |
[ | |
"7fc3ec16b21d5395" | |
] | |
] | |
}, | |
{ | |
"id": "7fc3ec16b21d5395", | |
"type": "debug", | |
"z": "9856a1d38d13eaca", | |
"name": "Heater Enabled", | |
"active": true, | |
"tosidebar": false, | |
"console": false, | |
"tostatus": true, | |
"complete": "payload", | |
"targetType": "msg", | |
"statusVal": "payload", | |
"statusType": "auto", | |
"x": 600, | |
"y": 220, | |
"wires": [] | |
}, | |
{ | |
"id": "a030e9b158e4dbf4", | |
"type": "mqtt in", | |
"z": "9856a1d38d13eaca", | |
"name": "Pool Heater Enabled", | |
"topic": "aqualinkd/Pool_Heater/enabled", | |
"qos": "2", | |
"datatype": "auto-detect", | |
"broker": "2996cb7f9b91f906", | |
"nl": false, | |
"rap": true, | |
"rh": 0, | |
"inputs": 0, | |
"x": 110, | |
"y": 280, | |
"wires": [ | |
[ | |
"4b529de83445df6a" | |
] | |
] | |
}, | |
{ | |
"id": "4b529de83445df6a", | |
"type": "change", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "pool_heater_enabled", | |
"pt": "flow", | |
"to": "payload", | |
"tot": "msg" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 360, | |
"y": 280, | |
"wires": [ | |
[ | |
"c8e53cb19834f117" | |
] | |
] | |
}, | |
{ | |
"id": "c8e53cb19834f117", | |
"type": "debug", | |
"z": "9856a1d38d13eaca", | |
"name": "Heater Enabled", | |
"active": true, | |
"tosidebar": false, | |
"console": false, | |
"tostatus": true, | |
"complete": "payload", | |
"targetType": "msg", | |
"statusVal": "payload", | |
"statusType": "auto", | |
"x": 600, | |
"y": 280, | |
"wires": [] | |
}, | |
{ | |
"id": "5550d5ac98b808d9", | |
"type": "switch", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"property": "payload", | |
"propertyType": "msg", | |
"rules": [ | |
{ | |
"t": "eq", | |
"v": "0", | |
"vt": "num" | |
}, | |
{ | |
"t": "eq", | |
"v": "1", | |
"vt": "num" | |
} | |
], | |
"checkall": "true", | |
"repair": false, | |
"outputs": 2, | |
"x": 650, | |
"y": 100, | |
"wires": [ | |
[ | |
"f19a12b6816876d3" | |
], | |
[ | |
"69df13b4b5c07425" | |
] | |
] | |
}, | |
{ | |
"id": "a6350ebe85ecd080", | |
"type": "switch", | |
"z": "9856a1d38d13eaca", | |
"name": "Pump On?", | |
"property": "pump_on", | |
"propertyType": "flow", | |
"rules": [ | |
{ | |
"t": "eq", | |
"v": "1", | |
"vt": "num" | |
} | |
], | |
"checkall": "true", | |
"repair": false, | |
"outputs": 1, | |
"x": 410, | |
"y": 1360, | |
"wires": [ | |
[ | |
"5dff72d07a169bc1" | |
] | |
] | |
}, | |
{ | |
"id": "94ef44a77b2dfe64", | |
"type": "change", | |
"z": "9856a1d38d13eaca", | |
"name": "Store Demand", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "target_speed", | |
"pt": "flow", | |
"to": "payload", | |
"tot": "msg" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 1120, | |
"y": 740, | |
"wires": [ | |
[ | |
"0cf5e4c4033732e9" | |
] | |
] | |
}, | |
{ | |
"id": "f54ccb8e7a722fa1", | |
"type": "change", | |
"z": "9856a1d38d13eaca", | |
"name": "0", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "0.0", | |
"tot": "num" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 510, | |
"y": 620, | |
"wires": [ | |
[ | |
"ad28d9ed11bb4562" | |
] | |
] | |
}, | |
{ | |
"id": "1df5892b99e699a0", | |
"type": "change", | |
"z": "9856a1d38d13eaca", | |
"name": "0", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "0.0", | |
"tot": "num" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 510, | |
"y": 500, | |
"wires": [ | |
[ | |
"2ed72ae53bdecbd9" | |
] | |
] | |
}, | |
{ | |
"id": "8a87c5043bf80cb0", | |
"type": "change", | |
"z": "9856a1d38d13eaca", | |
"name": "0", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "0.0", | |
"tot": "num" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 510, | |
"y": 720, | |
"wires": [ | |
[ | |
"8865d8114489529b" | |
] | |
] | |
}, | |
{ | |
"id": "5dff72d07a169bc1", | |
"type": "function", | |
"z": "9856a1d38d13eaca", | |
"name": "Min Speed for Heater", | |
"func": "const min_speed = 2400;\n\nlet spa_heater = flow.get(\"spa_heater_enabled\");\nlet pool_heater = flow.get(\"pool_heater_enabled\"); \n\nif (spa_heater || pool_heater) {\n if (msg.payload < min_speed) {\n msg.payload = min_speed;\n node.status({ fill: \"red\", shape: \"dot\", text: `Speed adjusted to ${min_speed}` });\n return msg;\n }\n node.status({ fill: \"green\", shape: \"dot\", text: `Speed OK for heater` });\n return msg;\n} \nnode.status({ fill: \"green\", shape: \"ring\", text: `No heater in use` });\nreturn msg;", | |
"outputs": 1, | |
"noerr": 0, | |
"initialize": "", | |
"finalize": "", | |
"libs": [], | |
"x": 620, | |
"y": 1360, | |
"wires": [ | |
[ | |
"bda3037a145009a2", | |
"238d96936802c14a" | |
] | |
] | |
}, | |
{ | |
"id": "9cbd1b8bdc1f631e", | |
"type": "template", | |
"z": "9856a1d38d13eaca", | |
"name": "Current", | |
"field": "payload", | |
"fieldType": "msg", | |
"format": "json", | |
"syntax": "mustache", | |
"template": "{\n \"page\": 0,\n \"address\": \"01\"\n}", | |
"output": "json", | |
"x": 120, | |
"y": 580, | |
"wires": [ | |
[ | |
"973e010ee2ff2624" | |
] | |
] | |
}, | |
{ | |
"id": "5ec988d96ae0e32d", | |
"type": "template", | |
"z": "9856a1d38d13eaca", | |
"name": "Demand", | |
"field": "payload", | |
"fieldType": "msg", | |
"format": "json", | |
"syntax": "mustache", | |
"template": "{\n \"page\": 0,\n \"address\": \"03\"\n}", | |
"output": "json", | |
"x": 120, | |
"y": 680, | |
"wires": [ | |
[ | |
"dee06ba78bb6907a" | |
] | |
] | |
}, | |
{ | |
"id": "0f29a84c5c5e0d68", | |
"type": "cron-filter", | |
"z": "9856a1d38d13eaca", | |
"name": "Not 0700-0800 or 1600-1700", | |
"crontab": "* * 0-6,8-15,17-23 * * * *", | |
"x": 420, | |
"y": 2140, | |
"wires": [ | |
[ | |
"534e4d91d06dfc23" | |
] | |
] | |
}, | |
{ | |
"id": "972a23c34cb68d85", | |
"type": "change", | |
"z": "9856a1d38d13eaca", | |
"name": "1800", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "1800", | |
"tot": "num" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 210, | |
"y": 2140, | |
"wires": [ | |
[ | |
"0f29a84c5c5e0d68" | |
] | |
] | |
}, | |
{ | |
"id": "380c2223e3d4824a", | |
"type": "cron-filter", | |
"z": "9856a1d38d13eaca", | |
"name": "0700-0800 or 1600-1700", | |
"crontab": "* * 7,16 * * * *", | |
"x": 410, | |
"y": 2180, | |
"wires": [ | |
[ | |
"534e4d91d06dfc23" | |
] | |
] | |
}, | |
{ | |
"id": "57dc37a7e12bbe2d", | |
"type": "change", | |
"z": "9856a1d38d13eaca", | |
"name": "2950", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "3000", | |
"tot": "num" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 210, | |
"y": 2180, | |
"wires": [ | |
[ | |
"380c2223e3d4824a" | |
] | |
] | |
}, | |
{ | |
"id": "06ad6e5a9253c850", | |
"type": "mqtt in", | |
"z": "9856a1d38d13eaca", | |
"name": "Pump Schedule Set", | |
"topic": "aqualink-nr/pump_schedule/set", | |
"qos": "2", | |
"datatype": "auto-detect", | |
"broker": "2996cb7f9b91f906", | |
"nl": false, | |
"rap": true, | |
"rh": 0, | |
"inputs": 0, | |
"x": 170, | |
"y": 1740, | |
"wires": [ | |
[ | |
"c81e53d2823450e8" | |
] | |
] | |
}, | |
{ | |
"id": "c81e53d2823450e8", | |
"type": "switch", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"property": "payload", | |
"propertyType": "msg", | |
"rules": [ | |
{ | |
"t": "eq", | |
"v": "ON", | |
"vt": "str" | |
}, | |
{ | |
"t": "eq", | |
"v": "OFF", | |
"vt": "str" | |
} | |
], | |
"checkall": "true", | |
"repair": false, | |
"outputs": 2, | |
"x": 350, | |
"y": 1740, | |
"wires": [ | |
[ | |
"7fdfec3ab876e0d2" | |
], | |
[ | |
"7fdfec3ab876e0d2" | |
] | |
] | |
}, | |
{ | |
"id": "7fdfec3ab876e0d2", | |
"type": "mqtt out", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"topic": "aqualink-nr/pump_schedule", | |
"qos": "", | |
"retain": "true", | |
"respTopic": "", | |
"contentType": "", | |
"userProps": "", | |
"correl": "", | |
"expiry": "", | |
"broker": "2996cb7f9b91f906", | |
"x": 600, | |
"y": 1740, | |
"wires": [] | |
}, | |
{ | |
"id": "cc55743bb712bdc9", | |
"type": "link in", | |
"z": "9856a1d38d13eaca", | |
"name": "Schedule In", | |
"links": [], | |
"x": 95, | |
"y": 2160, | |
"wires": [ | |
[ | |
"972a23c34cb68d85", | |
"57dc37a7e12bbe2d" | |
] | |
] | |
}, | |
{ | |
"id": "534e4d91d06dfc23", | |
"type": "link out", | |
"z": "9856a1d38d13eaca", | |
"name": "Schedule Out", | |
"mode": "return", | |
"links": [], | |
"x": 605, | |
"y": 2160, | |
"wires": [] | |
}, | |
{ | |
"id": "a809b7ce6f439b82", | |
"type": "link call", | |
"z": "9856a1d38d13eaca", | |
"name": "Sched Speed", | |
"links": [ | |
"cc55743bb712bdc9" | |
], | |
"linkType": "static", | |
"timeout": "30", | |
"x": 380, | |
"y": 1280, | |
"wires": [ | |
[ | |
"5ebcbb8892ca1aa7" | |
] | |
] | |
}, | |
{ | |
"id": "61b793f22cb0261c", | |
"type": "comment", | |
"z": "9856a1d38d13eaca", | |
"name": "Schedule", | |
"info": "", | |
"x": 140, | |
"y": 2100, | |
"wires": [] | |
}, | |
{ | |
"id": "f49466b8275ed2b8", | |
"type": "delay", | |
"z": "9856a1d38d13eaca", | |
"name": "Priming Delay", | |
"pauseType": "delay", | |
"timeout": "170", | |
"timeoutUnits": "seconds", | |
"rate": "1", | |
"nbRateUnits": "1", | |
"rateUnits": "second", | |
"randomFirst": "1", | |
"randomLast": "5", | |
"randomUnits": "seconds", | |
"drop": false, | |
"allowrate": false, | |
"outputs": 1, | |
"x": 1000, | |
"y": 100, | |
"wires": [ | |
[ | |
"362e83248885fac0" | |
] | |
] | |
}, | |
{ | |
"id": "f19a12b6816876d3", | |
"type": "change", | |
"z": "9856a1d38d13eaca", | |
"name": "Reset", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "reset", | |
"pt": "msg", | |
"to": "true", | |
"tot": "bool" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 810, | |
"y": 80, | |
"wires": [ | |
[ | |
"f49466b8275ed2b8" | |
] | |
] | |
}, | |
{ | |
"id": "046175adc7824848", | |
"type": "mqtt in", | |
"z": "9856a1d38d13eaca", | |
"name": "Following Schedule?", | |
"topic": "aqualink-nr/pump_schedule", | |
"qos": "2", | |
"datatype": "auto-detect", | |
"broker": "2996cb7f9b91f906", | |
"nl": false, | |
"rap": true, | |
"rh": 0, | |
"inputs": 0, | |
"x": 170, | |
"y": 1800, | |
"wires": [ | |
[ | |
"225d0311a9846c48" | |
] | |
] | |
}, | |
{ | |
"id": "05ade3e47f398686", | |
"type": "change", | |
"z": "9856a1d38d13eaca", | |
"name": "Store Sched Enabled", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "schedule_enabled", | |
"pt": "flow", | |
"to": "payload", | |
"tot": "msg" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 540, | |
"y": 1800, | |
"wires": [ | |
[ | |
"134112ac273a67f3" | |
] | |
] | |
}, | |
{ | |
"id": "134112ac273a67f3", | |
"type": "debug", | |
"z": "9856a1d38d13eaca", | |
"name": "Schedule Enabled?", | |
"active": false, | |
"tosidebar": true, | |
"console": false, | |
"tostatus": true, | |
"complete": "$flowContext(\"schedule_enabled\")\t", | |
"targetType": "jsonata", | |
"statusVal": "payload", | |
"statusType": "auto", | |
"x": 770, | |
"y": 1800, | |
"wires": [] | |
}, | |
{ | |
"id": "d08cbee75dba0fbb", | |
"type": "switch", | |
"z": "9856a1d38d13eaca", | |
"name": "Follow Schedule?", | |
"property": "schedule_enabled", | |
"propertyType": "flow", | |
"rules": [ | |
{ | |
"t": "eq", | |
"v": "ON", | |
"vt": "str" | |
}, | |
{ | |
"t": "eq", | |
"v": "OFF", | |
"vt": "str" | |
} | |
], | |
"checkall": "true", | |
"repair": false, | |
"outputs": 2, | |
"x": 170, | |
"y": 1280, | |
"wires": [ | |
[ | |
"a809b7ce6f439b82" | |
], | |
[] | |
] | |
}, | |
{ | |
"id": "b270dc6dc937911b", | |
"type": "link in", | |
"z": "9856a1d38d13eaca", | |
"name": "link in 1", | |
"links": [ | |
"7c27e7881d003242" | |
], | |
"x": 385, | |
"y": 1700, | |
"wires": [ | |
[ | |
"7fdfec3ab876e0d2" | |
] | |
] | |
}, | |
{ | |
"id": "225d0311a9846c48", | |
"type": "rbe", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"func": "rbe", | |
"gap": "", | |
"start": "", | |
"inout": "out", | |
"septopics": true, | |
"property": "payload", | |
"topi": "topic", | |
"x": 350, | |
"y": 1800, | |
"wires": [ | |
[ | |
"05ade3e47f398686" | |
] | |
] | |
}, | |
{ | |
"id": "237343edf7786b5b", | |
"type": "change", | |
"z": "9856a1d38d13eaca", | |
"name": "Sched OFF", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "OFF", | |
"tot": "str" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 410, | |
"y": 1420, | |
"wires": [ | |
[ | |
"7c27e7881d003242" | |
] | |
] | |
}, | |
{ | |
"id": "7c27e7881d003242", | |
"type": "link out", | |
"z": "9856a1d38d13eaca", | |
"name": "link out 2", | |
"mode": "link", | |
"links": [ | |
"b270dc6dc937911b", | |
"4a7358bc52fc815a" | |
], | |
"x": 525, | |
"y": 1420, | |
"wires": [] | |
}, | |
{ | |
"id": "5ebcbb8892ca1aa7", | |
"type": "function", | |
"z": "9856a1d38d13eaca", | |
"name": "At Speed?", | |
"func": "let target_speed = flow.get(\"target_speed\");\nlet priming = flow.get(\"priming\");\n\n// Check if we're at the scheduled target speed\nif (msg.payload === target_speed) {\n node.status({fill:\"green\",shape:\"dot\",text:`At target ${msg.payload}`});\n return null;\n}\n\n// or if the pump is still priming\nif (priming) {\n node.status({ fill: \"yellow\", shape: \"dot\", text: \"Still priming\" });\n return null;\n}\n\n// If not update the flow variable and proceed with new speed.\nflow.set(\"target_speed\", msg.payload);\nnode.status({fill:\"red\",shape:\"ring\",text:`New Speed ${msg.payload}`});\nreturn msg;", | |
"outputs": 1, | |
"noerr": 0, | |
"initialize": "", | |
"finalize": "", | |
"libs": [], | |
"x": 570, | |
"y": 1280, | |
"wires": [ | |
[ | |
"bef015b50f79d33a" | |
] | |
] | |
}, | |
{ | |
"id": "69df13b4b5c07425", | |
"type": "change", | |
"z": "9856a1d38d13eaca", | |
"name": "Priming", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "priming", | |
"pt": "flow", | |
"to": "true", | |
"tot": "bool" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 820, | |
"y": 120, | |
"wires": [ | |
[ | |
"f49466b8275ed2b8" | |
] | |
] | |
}, | |
{ | |
"id": "362e83248885fac0", | |
"type": "change", | |
"z": "9856a1d38d13eaca", | |
"name": "Done Priming", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "priming", | |
"pt": "flow", | |
"to": "false", | |
"tot": "bool" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 1200, | |
"y": 100, | |
"wires": [ | |
[] | |
] | |
}, | |
{ | |
"id": "8af346049398efea", | |
"type": "rbe", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"func": "rbe", | |
"gap": "", | |
"start": "", | |
"inout": "out", | |
"septopics": true, | |
"property": "payload", | |
"topi": "topic", | |
"x": 510, | |
"y": 100, | |
"wires": [ | |
[ | |
"5550d5ac98b808d9" | |
] | |
] | |
}, | |
{ | |
"id": "d93016d36e83b648", | |
"type": "mqtt in", | |
"z": "9856a1d38d13eaca", | |
"name": "Boost Mode Set", | |
"topic": "aqualink-nr/pump_boost/set", | |
"qos": "2", | |
"datatype": "auto-detect", | |
"broker": "2996cb7f9b91f906", | |
"nl": false, | |
"rap": true, | |
"rh": 0, | |
"inputs": 0, | |
"x": 160, | |
"y": 1900, | |
"wires": [ | |
[ | |
"da11096def3a0353" | |
] | |
] | |
}, | |
{ | |
"id": "da11096def3a0353", | |
"type": "switch", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"property": "payload", | |
"propertyType": "msg", | |
"rules": [ | |
{ | |
"t": "eq", | |
"v": "ON", | |
"vt": "str" | |
}, | |
{ | |
"t": "eq", | |
"v": "OFF", | |
"vt": "str" | |
} | |
], | |
"checkall": "true", | |
"repair": false, | |
"outputs": 2, | |
"x": 350, | |
"y": 1900, | |
"wires": [ | |
[ | |
"2f44d37dd4e891f5" | |
], | |
[ | |
"2f44d37dd4e891f5" | |
] | |
] | |
}, | |
{ | |
"id": "2f44d37dd4e891f5", | |
"type": "mqtt out", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"topic": "aqualink-nr/pump_boost", | |
"qos": "", | |
"retain": "true", | |
"respTopic": "", | |
"contentType": "", | |
"userProps": "", | |
"correl": "", | |
"expiry": "", | |
"broker": "2996cb7f9b91f906", | |
"x": 590, | |
"y": 1900, | |
"wires": [] | |
}, | |
{ | |
"id": "09dc31a6978f7282", | |
"type": "mqtt in", | |
"z": "9856a1d38d13eaca", | |
"name": "Boost Mode?", | |
"topic": "aqualink-nr/pump_boost", | |
"qos": "2", | |
"datatype": "auto-detect", | |
"broker": "2996cb7f9b91f906", | |
"nl": false, | |
"rap": true, | |
"rh": 0, | |
"inputs": 0, | |
"x": 150, | |
"y": 1960, | |
"wires": [ | |
[ | |
"5c221ece0a285b8a" | |
] | |
] | |
}, | |
{ | |
"id": "1c888c385bccf777", | |
"type": "change", | |
"z": "9856a1d38d13eaca", | |
"name": "Store pump_boost", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "pump_boost", | |
"pt": "flow", | |
"to": "payload", | |
"tot": "msg" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 530, | |
"y": 1960, | |
"wires": [ | |
[ | |
"fa6d7f421a11a000" | |
] | |
] | |
}, | |
{ | |
"id": "fa6d7f421a11a000", | |
"type": "debug", | |
"z": "9856a1d38d13eaca", | |
"name": "Boost Mode?", | |
"active": false, | |
"tosidebar": true, | |
"console": false, | |
"tostatus": true, | |
"complete": "$flowContext(\"pump_boost\")\t", | |
"targetType": "jsonata", | |
"statusVal": "payload", | |
"statusType": "auto", | |
"x": 750, | |
"y": 1960, | |
"wires": [] | |
}, | |
{ | |
"id": "4a7358bc52fc815a", | |
"type": "link in", | |
"z": "9856a1d38d13eaca", | |
"name": "link in 2", | |
"links": [ | |
"7c27e7881d003242", | |
"7e3833b20884fb6c" | |
], | |
"x": 385, | |
"y": 1860, | |
"wires": [ | |
[ | |
"2f44d37dd4e891f5" | |
] | |
] | |
}, | |
{ | |
"id": "5c221ece0a285b8a", | |
"type": "rbe", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"func": "rbe", | |
"gap": "", | |
"start": "", | |
"inout": "out", | |
"septopics": true, | |
"property": "payload", | |
"topi": "topic", | |
"x": 350, | |
"y": 1960, | |
"wires": [ | |
[ | |
"1c888c385bccf777", | |
"40a142a015cb9902" | |
] | |
] | |
}, | |
{ | |
"id": "8ae1a1d4c09cfb1f", | |
"type": "switch", | |
"z": "9856a1d38d13eaca", | |
"name": "Boost Mode?", | |
"property": "pump_boost", | |
"propertyType": "flow", | |
"rules": [ | |
{ | |
"t": "eq", | |
"v": "ON", | |
"vt": "str" | |
}, | |
{ | |
"t": "eq", | |
"v": "OFF", | |
"vt": "str" | |
} | |
], | |
"checkall": "true", | |
"repair": false, | |
"outputs": 2, | |
"x": 190, | |
"y": 1200, | |
"wires": [ | |
[ | |
"e40d742037120669" | |
], | |
[ | |
"d08cbee75dba0fbb" | |
] | |
] | |
}, | |
{ | |
"id": "e40d742037120669", | |
"type": "function", | |
"z": "9856a1d38d13eaca", | |
"name": "At Speed?", | |
"func": "let priming = flow.get(\"priming\");\nlet boost_speed = 3450;\n\n// Check if we're at the scheduled target speed\nif (msg.payload === boost_speed) {\n node.status({fill:\"green\",shape:\"dot\",text:`At boost speed ${msg.payload}`});\n return null;\n}\n\n// or if the pump is still priming\nif (priming) {\n node.status({ fill: \"yellow\", shape: \"dot\", text: \"Still priming\" });\n return null;\n}\n\n// If not, proceed with new speed.\nmsg.payload = boost_speed;\nnode.status({ fill: \"red\", shape: \"ring\", text: `New Speed ${boost_speed}`});\nreturn msg;", | |
"outputs": 1, | |
"noerr": 0, | |
"initialize": "", | |
"finalize": "", | |
"libs": [], | |
"x": 570, | |
"y": 1200, | |
"wires": [ | |
[ | |
"bef015b50f79d33a" | |
] | |
] | |
}, | |
{ | |
"id": "b5505107690d9120", | |
"type": "delay", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"pauseType": "delay", | |
"timeout": "30", | |
"timeoutUnits": "minutes", | |
"rate": "1", | |
"nbRateUnits": "1", | |
"rateUnits": "second", | |
"randomFirst": "1", | |
"randomLast": "5", | |
"randomUnits": "seconds", | |
"drop": false, | |
"allowrate": false, | |
"outputs": 1, | |
"x": 770, | |
"y": 2020, | |
"wires": [ | |
[ | |
"a36c4f6039edb7e9" | |
] | |
] | |
}, | |
{ | |
"id": "a36c4f6039edb7e9", | |
"type": "change", | |
"z": "9856a1d38d13eaca", | |
"name": "Boost OFF", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "OFF", | |
"tot": "str" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 950, | |
"y": 2020, | |
"wires": [ | |
[ | |
"7e3833b20884fb6c" | |
] | |
] | |
}, | |
{ | |
"id": "7e3833b20884fb6c", | |
"type": "link out", | |
"z": "9856a1d38d13eaca", | |
"name": "link out 3", | |
"mode": "link", | |
"links": [ | |
"4a7358bc52fc815a" | |
], | |
"x": 1065, | |
"y": 2020, | |
"wires": [] | |
}, | |
{ | |
"id": "40a142a015cb9902", | |
"type": "switch", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"property": "payload", | |
"propertyType": "msg", | |
"rules": [ | |
{ | |
"t": "eq", | |
"v": "ON", | |
"vt": "str" | |
}, | |
{ | |
"t": "eq", | |
"v": "OFF", | |
"vt": "str" | |
} | |
], | |
"checkall": "true", | |
"repair": false, | |
"outputs": 2, | |
"x": 490, | |
"y": 2000, | |
"wires": [ | |
[ | |
"b5505107690d9120" | |
], | |
[ | |
"4127f594976762e2" | |
] | |
] | |
}, | |
{ | |
"id": "4127f594976762e2", | |
"type": "change", | |
"z": "9856a1d38d13eaca", | |
"name": "Reset", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "reset", | |
"pt": "msg", | |
"to": "true", | |
"tot": "bool" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 630, | |
"y": 2040, | |
"wires": [ | |
[ | |
"b5505107690d9120" | |
] | |
] | |
}, | |
{ | |
"id": "f6bc15ceb61dbd44", | |
"type": "template", | |
"z": "9856a1d38d13eaca", | |
"name": "Shaft Power", | |
"field": "payload", | |
"fieldType": "msg", | |
"format": "json", | |
"syntax": "mustache", | |
"template": "{\n \"page\": 0,\n \"address\": \"0a\"\n}", | |
"output": "json", | |
"x": 130, | |
"y": 780, | |
"wires": [ | |
[ | |
"b63115af550674c9" | |
] | |
] | |
}, | |
{ | |
"id": "d9552ee1e8158fd8", | |
"type": "buffer-maker", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"specification": "spec", | |
"specificationType": "ui", | |
"items": [ | |
{ | |
"name": "address", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "15" | |
}, | |
{ | |
"name": "function", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "45" | |
}, | |
{ | |
"name": "ack", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "20" | |
}, | |
{ | |
"name": "page", | |
"type": "byte", | |
"length": 1, | |
"dataType": "msg", | |
"data": "payload.page" | |
}, | |
{ | |
"name": "address", | |
"type": "hex", | |
"length": 2, | |
"dataType": "msg", | |
"data": "payload.address" | |
} | |
], | |
"swap1": "", | |
"swap2": "", | |
"swap3": "", | |
"swap1Type": "swap", | |
"swap2Type": "swap", | |
"swap3Type": "swap", | |
"msgProperty": "payload", | |
"msgPropertyType": "str", | |
"x": 530, | |
"y": 780, | |
"wires": [ | |
[ | |
"5b0a98625cf55f34" | |
] | |
] | |
}, | |
{ | |
"id": "489f747b383515b3", | |
"type": "debug", | |
"z": "9856a1d38d13eaca", | |
"name": "Output Power", | |
"active": false, | |
"tosidebar": false, | |
"console": false, | |
"tostatus": true, | |
"complete": "payload", | |
"targetType": "msg", | |
"statusVal": "payload", | |
"statusType": "auto", | |
"x": 1400, | |
"y": 820, | |
"wires": [] | |
}, | |
{ | |
"id": "a5d91f6f892a344b", | |
"type": "buffer-parser", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"data": "payload", | |
"dataType": "msg", | |
"specification": "spec", | |
"specificationType": "ui", | |
"items": [ | |
{ | |
"type": "int16le", | |
"name": "value", | |
"offset": 2, | |
"length": 1, | |
"offsetbit": 0, | |
"scale": "1", | |
"mask": "" | |
} | |
], | |
"swap1": "", | |
"swap2": "", | |
"swap3": "", | |
"swap1Type": "swap", | |
"swap2Type": "swap", | |
"swap3Type": "swap", | |
"msgProperty": "payload", | |
"msgPropertyType": "str", | |
"resultType": "value", | |
"resultTypeType": "return", | |
"multipleResult": true, | |
"fanOutMultipleResult": true, | |
"setTopic": true, | |
"outputs": 1, | |
"x": 870, | |
"y": 780, | |
"wires": [ | |
[ | |
"eda98a70a4b354b8" | |
] | |
] | |
}, | |
{ | |
"id": "b63115af550674c9", | |
"type": "switch", | |
"z": "9856a1d38d13eaca", | |
"name": "Pump On?", | |
"property": "pump_on", | |
"propertyType": "flow", | |
"rules": [ | |
{ | |
"t": "eq", | |
"v": "1", | |
"vt": "num" | |
}, | |
{ | |
"t": "else" | |
} | |
], | |
"checkall": "false", | |
"repair": false, | |
"outputs": 2, | |
"x": 330, | |
"y": 780, | |
"wires": [ | |
[ | |
"d9552ee1e8158fd8" | |
], | |
[ | |
"c1b0d106c165f997", | |
"06c1e0ef16747009" | |
] | |
] | |
}, | |
{ | |
"id": "fa4d6ea0827cec5e", | |
"type": "mqtt out", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"topic": "aqualink-nr/pump_output_power", | |
"qos": "", | |
"retain": "", | |
"respTopic": "", | |
"contentType": "", | |
"userProps": "", | |
"correl": "", | |
"expiry": "", | |
"broker": "2996cb7f9b91f906", | |
"x": 1450, | |
"y": 780, | |
"wires": [] | |
}, | |
{ | |
"id": "c1b0d106c165f997", | |
"type": "change", | |
"z": "9856a1d38d13eaca", | |
"name": "0", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "0.0", | |
"tot": "num" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 510, | |
"y": 820, | |
"wires": [ | |
[ | |
"eda98a70a4b354b8" | |
] | |
] | |
}, | |
{ | |
"id": "06c1e0ef16747009", | |
"type": "template", | |
"z": "9856a1d38d13eaca", | |
"name": "Inverter Power", | |
"field": "payload", | |
"fieldType": "msg", | |
"format": "json", | |
"syntax": "mustache", | |
"template": "{\n \"page\": 0,\n \"address\": \"05\"\n}", | |
"output": "json", | |
"x": 140, | |
"y": 880, | |
"wires": [ | |
[ | |
"84f0057416057941" | |
] | |
] | |
}, | |
{ | |
"id": "d79518222f16760a", | |
"type": "buffer-maker", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"specification": "spec", | |
"specificationType": "ui", | |
"items": [ | |
{ | |
"name": "address", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "15" | |
}, | |
{ | |
"name": "function", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "45" | |
}, | |
{ | |
"name": "ack", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "20" | |
}, | |
{ | |
"name": "page", | |
"type": "byte", | |
"length": 1, | |
"dataType": "msg", | |
"data": "payload.page" | |
}, | |
{ | |
"name": "address", | |
"type": "hex", | |
"length": 2, | |
"dataType": "msg", | |
"data": "payload.address" | |
} | |
], | |
"swap1": "", | |
"swap2": "", | |
"swap3": "", | |
"swap1Type": "swap", | |
"swap2Type": "swap", | |
"swap3Type": "swap", | |
"msgProperty": "payload", | |
"msgPropertyType": "str", | |
"x": 530, | |
"y": 880, | |
"wires": [ | |
[ | |
"a235bb5283d470aa" | |
] | |
] | |
}, | |
{ | |
"id": "815e89d8f8d2a26e", | |
"type": "debug", | |
"z": "9856a1d38d13eaca", | |
"name": "Inverter Input Power", | |
"active": false, | |
"tosidebar": false, | |
"console": false, | |
"tostatus": true, | |
"complete": "payload", | |
"targetType": "msg", | |
"statusVal": "payload", | |
"statusType": "auto", | |
"x": 1420, | |
"y": 920, | |
"wires": [] | |
}, | |
{ | |
"id": "066d899bbcf2244d", | |
"type": "buffer-parser", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"data": "payload", | |
"dataType": "msg", | |
"specification": "spec", | |
"specificationType": "ui", | |
"items": [ | |
{ | |
"type": "int16le", | |
"name": "value", | |
"offset": 2, | |
"length": 1, | |
"offsetbit": 0, | |
"scale": "1", | |
"mask": "" | |
} | |
], | |
"swap1": "", | |
"swap2": "", | |
"swap3": "", | |
"swap1Type": "swap", | |
"swap2Type": "swap", | |
"swap3Type": "swap", | |
"msgProperty": "payload", | |
"msgPropertyType": "str", | |
"resultType": "value", | |
"resultTypeType": "return", | |
"multipleResult": true, | |
"fanOutMultipleResult": true, | |
"setTopic": true, | |
"outputs": 1, | |
"x": 870, | |
"y": 880, | |
"wires": [ | |
[ | |
"bba17e656f3471af" | |
] | |
] | |
}, | |
{ | |
"id": "84f0057416057941", | |
"type": "switch", | |
"z": "9856a1d38d13eaca", | |
"name": "Pump On?", | |
"property": "pump_on", | |
"propertyType": "flow", | |
"rules": [ | |
{ | |
"t": "eq", | |
"v": "1", | |
"vt": "num" | |
}, | |
{ | |
"t": "else" | |
} | |
], | |
"checkall": "false", | |
"repair": false, | |
"outputs": 2, | |
"x": 330, | |
"y": 880, | |
"wires": [ | |
[ | |
"d79518222f16760a" | |
], | |
[ | |
"cfab475da831c990", | |
"72f4e1e779ba618c" | |
] | |
] | |
}, | |
{ | |
"id": "2232dc901efaa633", | |
"type": "mqtt out", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"topic": "aqualink-nr/pump_input_power", | |
"qos": "", | |
"retain": "", | |
"respTopic": "", | |
"contentType": "", | |
"userProps": "", | |
"correl": "", | |
"expiry": "", | |
"broker": "2996cb7f9b91f906", | |
"x": 1450, | |
"y": 880, | |
"wires": [] | |
}, | |
{ | |
"id": "cfab475da831c990", | |
"type": "change", | |
"z": "9856a1d38d13eaca", | |
"name": "0", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "0.0", | |
"tot": "num" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 510, | |
"y": 920, | |
"wires": [ | |
[ | |
"bba17e656f3471af" | |
] | |
] | |
}, | |
{ | |
"id": "72f4e1e779ba618c", | |
"type": "template", | |
"z": "9856a1d38d13eaca", | |
"name": "Bus Voltage", | |
"field": "payload", | |
"fieldType": "msg", | |
"format": "json", | |
"syntax": "mustache", | |
"template": "{\n \"page\": 0,\n \"address\": \"06\"\n}", | |
"output": "json", | |
"x": 130, | |
"y": 980, | |
"wires": [ | |
[ | |
"f6c9f1a425d8de4c" | |
] | |
] | |
}, | |
{ | |
"id": "458e97797557e358", | |
"type": "buffer-maker", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"specification": "spec", | |
"specificationType": "ui", | |
"items": [ | |
{ | |
"name": "address", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "15" | |
}, | |
{ | |
"name": "function", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "45" | |
}, | |
{ | |
"name": "ack", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "20" | |
}, | |
{ | |
"name": "page", | |
"type": "byte", | |
"length": 1, | |
"dataType": "msg", | |
"data": "payload.page" | |
}, | |
{ | |
"name": "address", | |
"type": "hex", | |
"length": 2, | |
"dataType": "msg", | |
"data": "payload.address" | |
} | |
], | |
"swap1": "", | |
"swap2": "", | |
"swap3": "", | |
"swap1Type": "swap", | |
"swap2Type": "swap", | |
"swap3Type": "swap", | |
"msgProperty": "payload", | |
"msgPropertyType": "str", | |
"x": 530, | |
"y": 980, | |
"wires": [ | |
[ | |
"4533d49327560a2a" | |
] | |
] | |
}, | |
{ | |
"id": "d12836adba922648", | |
"type": "debug", | |
"z": "9856a1d38d13eaca", | |
"name": "DC Bus Voltage", | |
"active": false, | |
"tosidebar": false, | |
"console": false, | |
"tostatus": true, | |
"complete": "payload", | |
"targetType": "msg", | |
"statusVal": "payload", | |
"statusType": "auto", | |
"x": 1400, | |
"y": 1020, | |
"wires": [] | |
}, | |
{ | |
"id": "88f6ebb608da8b2c", | |
"type": "buffer-parser", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"data": "payload", | |
"dataType": "msg", | |
"specification": "spec", | |
"specificationType": "ui", | |
"items": [ | |
{ | |
"type": "int16le", | |
"name": "value", | |
"offset": 2, | |
"length": 1, | |
"offsetbit": 0, | |
"scale": "/64", | |
"mask": "" | |
} | |
], | |
"swap1": "", | |
"swap2": "", | |
"swap3": "", | |
"swap1Type": "swap", | |
"swap2Type": "swap", | |
"swap3Type": "swap", | |
"msgProperty": "payload", | |
"msgPropertyType": "str", | |
"resultType": "value", | |
"resultTypeType": "return", | |
"multipleResult": true, | |
"fanOutMultipleResult": true, | |
"setTopic": true, | |
"outputs": 1, | |
"x": 870, | |
"y": 980, | |
"wires": [ | |
[ | |
"185974b58432a9d5" | |
] | |
] | |
}, | |
{ | |
"id": "f6c9f1a425d8de4c", | |
"type": "switch", | |
"z": "9856a1d38d13eaca", | |
"name": "Pump On?", | |
"property": "pump_on", | |
"propertyType": "flow", | |
"rules": [ | |
{ | |
"t": "eq", | |
"v": "1", | |
"vt": "num" | |
}, | |
{ | |
"t": "else" | |
} | |
], | |
"checkall": "false", | |
"repair": false, | |
"outputs": 2, | |
"x": 330, | |
"y": 980, | |
"wires": [ | |
[ | |
"458e97797557e358" | |
], | |
[ | |
"9bb2b4ebdeba2d0b", | |
"c14fe640d524f1a8" | |
] | |
] | |
}, | |
{ | |
"id": "7a280a5b52669187", | |
"type": "mqtt out", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"topic": "aqualink-nr/pump_dc_bus_voltage", | |
"qos": "", | |
"retain": "", | |
"respTopic": "", | |
"contentType": "", | |
"userProps": "", | |
"correl": "", | |
"expiry": "", | |
"broker": "2996cb7f9b91f906", | |
"x": 1460, | |
"y": 980, | |
"wires": [] | |
}, | |
{ | |
"id": "9bb2b4ebdeba2d0b", | |
"type": "change", | |
"z": "9856a1d38d13eaca", | |
"name": "0", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "0.0", | |
"tot": "num" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 510, | |
"y": 1020, | |
"wires": [ | |
[ | |
"185974b58432a9d5" | |
] | |
] | |
}, | |
{ | |
"id": "c14fe640d524f1a8", | |
"type": "template", | |
"z": "9856a1d38d13eaca", | |
"name": "Previous Fault", | |
"field": "payload", | |
"fieldType": "msg", | |
"format": "json", | |
"syntax": "mustache", | |
"template": "{\n \"page\": 0,\n \"address\": \"09\"\n}", | |
"output": "json", | |
"x": 140, | |
"y": 1080, | |
"wires": [ | |
[ | |
"3a844e883c737470" | |
] | |
] | |
}, | |
{ | |
"id": "fd1f2cbd837f86be", | |
"type": "buffer-maker", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"specification": "spec", | |
"specificationType": "ui", | |
"items": [ | |
{ | |
"name": "address", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "15" | |
}, | |
{ | |
"name": "function", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "45" | |
}, | |
{ | |
"name": "ack", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "20" | |
}, | |
{ | |
"name": "page", | |
"type": "byte", | |
"length": 1, | |
"dataType": "msg", | |
"data": "payload.page" | |
}, | |
{ | |
"name": "address", | |
"type": "hex", | |
"length": 2, | |
"dataType": "msg", | |
"data": "payload.address" | |
} | |
], | |
"swap1": "", | |
"swap2": "", | |
"swap3": "", | |
"swap1Type": "swap", | |
"swap2Type": "swap", | |
"swap3Type": "swap", | |
"msgProperty": "payload", | |
"msgPropertyType": "str", | |
"x": 530, | |
"y": 1080, | |
"wires": [ | |
[ | |
"b9941b6367c99613" | |
] | |
] | |
}, | |
{ | |
"id": "ead0ada6ee788607", | |
"type": "debug", | |
"z": "9856a1d38d13eaca", | |
"name": "Previous Fault", | |
"active": false, | |
"tosidebar": false, | |
"console": false, | |
"tostatus": true, | |
"complete": "payload", | |
"targetType": "msg", | |
"statusVal": "payload", | |
"statusType": "auto", | |
"x": 1400, | |
"y": 1120, | |
"wires": [] | |
}, | |
{ | |
"id": "d2c1f04a1b685254", | |
"type": "buffer-parser", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"data": "payload", | |
"dataType": "msg", | |
"specification": "spec", | |
"specificationType": "ui", | |
"items": [ | |
{ | |
"type": "hex", | |
"name": "value", | |
"offset": 0, | |
"length": 1, | |
"offsetbit": 0, | |
"scale": "1", | |
"mask": "" | |
} | |
], | |
"swap1": "", | |
"swap2": "", | |
"swap3": "", | |
"swap1Type": "swap", | |
"swap2Type": "swap", | |
"swap3Type": "swap", | |
"msgProperty": "payload", | |
"msgPropertyType": "str", | |
"resultType": "value", | |
"resultTypeType": "return", | |
"multipleResult": true, | |
"fanOutMultipleResult": true, | |
"setTopic": true, | |
"outputs": 1, | |
"x": 870, | |
"y": 1080, | |
"wires": [ | |
[ | |
"033641d56247364c", | |
"5356cb0212a12a2f" | |
] | |
] | |
}, | |
{ | |
"id": "3a844e883c737470", | |
"type": "switch", | |
"z": "9856a1d38d13eaca", | |
"name": "Pump On?", | |
"property": "pump_on", | |
"propertyType": "flow", | |
"rules": [ | |
{ | |
"t": "eq", | |
"v": "1", | |
"vt": "num" | |
}, | |
{ | |
"t": "else" | |
} | |
], | |
"checkall": "false", | |
"repair": false, | |
"outputs": 2, | |
"x": 330, | |
"y": 1080, | |
"wires": [ | |
[ | |
"fd1f2cbd837f86be" | |
], | |
[] | |
] | |
}, | |
{ | |
"id": "eb0e0b0d06bae896", | |
"type": "mqtt out", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"topic": "aqualink-nr/pump_fault", | |
"qos": "", | |
"retain": "", | |
"respTopic": "", | |
"contentType": "", | |
"userProps": "", | |
"correl": "", | |
"expiry": "", | |
"broker": "2996cb7f9b91f906", | |
"x": 1420, | |
"y": 1080, | |
"wires": [] | |
}, | |
{ | |
"id": "0cf5e4c4033732e9", | |
"type": "link out", | |
"z": "9856a1d38d13eaca", | |
"name": "Check Demand", | |
"mode": "link", | |
"links": [ | |
"316e3181807ea58d" | |
], | |
"x": 1235, | |
"y": 740, | |
"wires": [] | |
}, | |
{ | |
"id": "316e3181807ea58d", | |
"type": "link in", | |
"z": "9856a1d38d13eaca", | |
"name": "Check Demand", | |
"links": [ | |
"0cf5e4c4033732e9" | |
], | |
"x": 75, | |
"y": 1200, | |
"wires": [ | |
[ | |
"8ae1a1d4c09cfb1f" | |
] | |
] | |
}, | |
{ | |
"id": "15381188ce92036c", | |
"type": "link in", | |
"z": "9856a1d38d13eaca", | |
"g": "927832aead2f5fea", | |
"name": "Serial In", | |
"links": [], | |
"x": 955, | |
"y": 220, | |
"wires": [ | |
[ | |
"ec6342cad808afe5" | |
] | |
] | |
}, | |
{ | |
"id": "15c28d09e12eb077", | |
"type": "serial request", | |
"z": "9856a1d38d13eaca", | |
"g": "927832aead2f5fea", | |
"name": "Pump", | |
"serial": "70d595318ad0cd72", | |
"x": 1190, | |
"y": 220, | |
"wires": [ | |
[ | |
"b2fe3c569209c4e7" | |
] | |
] | |
}, | |
{ | |
"id": "ec6342cad808afe5", | |
"type": "function", | |
"z": "9856a1d38d13eaca", | |
"g": "927832aead2f5fea", | |
"name": "CRC16", | |
"func": "function crc16(buffer) {\n var crc = 0xFFFF;\n var odd;\n\n for (var i = 0; i < buffer.length; i++) {\n crc = crc ^ buffer[i];\n\n for (var j = 0; j < 8; j++) {\n odd = crc & 0x0001;\n crc = crc >> 1;\n if (odd) {\n crc = crc ^ 0xA001;\n }\n }\n }\n\n return crc;\n};\n\nfunction swap16(val) {\n return ((val & 0xFF) << 8)\n | ((val >> 8) & 0xFF);\n}\n\nlet checksumBuffer = Buffer.allocUnsafe(2);\nchecksumBuffer.writeUInt16LE(crc16(msg.payload), 0);\nmsg.payload = Buffer.concat([msg.payload, checksumBuffer], \n msg.payload.length + checksumBuffer.length);\n\nreturn msg;\n\n", | |
"outputs": 1, | |
"noerr": 0, | |
"initialize": "", | |
"finalize": "", | |
"libs": [], | |
"x": 1060, | |
"y": 220, | |
"wires": [ | |
[ | |
"15c28d09e12eb077" | |
] | |
] | |
}, | |
{ | |
"id": "2a28bc47eff77744", | |
"type": "link out", | |
"z": "9856a1d38d13eaca", | |
"g": "927832aead2f5fea", | |
"name": "Serial Out", | |
"mode": "return", | |
"links": [], | |
"x": 1485, | |
"y": 220, | |
"wires": [] | |
}, | |
{ | |
"id": "15313b5d48ecc4e0", | |
"type": "link call", | |
"z": "9856a1d38d13eaca", | |
"name": "Serial", | |
"links": [ | |
"15381188ce92036c" | |
], | |
"linkType": "static", | |
"timeout": "15", | |
"x": 690, | |
"y": 360, | |
"wires": [ | |
[ | |
"ad32feeeb3ba227f", | |
"61109a0e98136dca" | |
] | |
] | |
}, | |
{ | |
"id": "e02d930b4bc13943", | |
"type": "link call", | |
"z": "9856a1d38d13eaca", | |
"name": "Serial", | |
"links": [ | |
"15381188ce92036c" | |
], | |
"linkType": "static", | |
"timeout": "15", | |
"x": 690, | |
"y": 460, | |
"wires": [ | |
[ | |
"ab6a6927aef0646c", | |
"9cbd1b8bdc1f631e" | |
] | |
] | |
}, | |
{ | |
"id": "a877925ae9253b37", | |
"type": "link call", | |
"z": "9856a1d38d13eaca", | |
"name": "Serial", | |
"links": [ | |
"15381188ce92036c" | |
], | |
"linkType": "static", | |
"timeout": "15", | |
"x": 690, | |
"y": 580, | |
"wires": [ | |
[ | |
"696dcf268e07cb5b", | |
"5ec988d96ae0e32d" | |
] | |
] | |
}, | |
{ | |
"id": "b575422a85ea0db1", | |
"type": "link call", | |
"z": "9856a1d38d13eaca", | |
"name": "Serial", | |
"links": [ | |
"15381188ce92036c" | |
], | |
"linkType": "static", | |
"timeout": "15", | |
"x": 690, | |
"y": 680, | |
"wires": [ | |
[ | |
"5454f251f5acc9ee", | |
"f6bc15ceb61dbd44" | |
] | |
] | |
}, | |
{ | |
"id": "5b0a98625cf55f34", | |
"type": "link call", | |
"z": "9856a1d38d13eaca", | |
"name": "Serial", | |
"links": [ | |
"15381188ce92036c" | |
], | |
"linkType": "static", | |
"timeout": "15", | |
"x": 690, | |
"y": 780, | |
"wires": [ | |
[ | |
"a5d91f6f892a344b", | |
"06c1e0ef16747009" | |
] | |
] | |
}, | |
{ | |
"id": "a235bb5283d470aa", | |
"type": "link call", | |
"z": "9856a1d38d13eaca", | |
"name": "Serial", | |
"links": [ | |
"15381188ce92036c" | |
], | |
"linkType": "static", | |
"timeout": "15", | |
"x": 690, | |
"y": 880, | |
"wires": [ | |
[ | |
"066d899bbcf2244d", | |
"72f4e1e779ba618c" | |
] | |
] | |
}, | |
{ | |
"id": "4533d49327560a2a", | |
"type": "link call", | |
"z": "9856a1d38d13eaca", | |
"name": "Serial", | |
"links": [ | |
"15381188ce92036c" | |
], | |
"linkType": "static", | |
"timeout": "15", | |
"x": 690, | |
"y": 980, | |
"wires": [ | |
[ | |
"88f6ebb608da8b2c", | |
"c14fe640d524f1a8" | |
] | |
] | |
}, | |
{ | |
"id": "b9941b6367c99613", | |
"type": "link call", | |
"z": "9856a1d38d13eaca", | |
"name": "Serial", | |
"links": [ | |
"15381188ce92036c" | |
], | |
"linkType": "static", | |
"timeout": "15", | |
"x": 690, | |
"y": 1080, | |
"wires": [ | |
[ | |
"d2c1f04a1b685254" | |
] | |
] | |
}, | |
{ | |
"id": "51d8025d6801b13f", | |
"type": "link call", | |
"z": "9856a1d38d13eaca", | |
"name": "Serial", | |
"links": [ | |
"15381188ce92036c" | |
], | |
"linkType": "static", | |
"timeout": "15", | |
"x": 1170, | |
"y": 1340, | |
"wires": [ | |
[ | |
"afabc6ce13c5e8a3", | |
"fcc9695096cea357" | |
] | |
] | |
}, | |
{ | |
"id": "0fa33270fef00b29", | |
"type": "link call", | |
"z": "9856a1d38d13eaca", | |
"name": "Serial", | |
"links": [ | |
"15381188ce92036c" | |
], | |
"linkType": "static", | |
"timeout": "15", | |
"x": 830, | |
"y": 1580, | |
"wires": [ | |
[ | |
"5e27d594ed74cb79" | |
] | |
] | |
}, | |
{ | |
"id": "43d526e1a24335ab", | |
"type": "link call", | |
"z": "9856a1d38d13eaca", | |
"name": "Serial", | |
"links": [ | |
"15381188ce92036c" | |
], | |
"linkType": "static", | |
"timeout": "15", | |
"x": 830, | |
"y": 1660, | |
"wires": [ | |
[ | |
"9f9843abaf3083d7" | |
] | |
] | |
}, | |
{ | |
"id": "b2fe3c569209c4e7", | |
"type": "function", | |
"z": "9856a1d38d13eaca", | |
"g": "927832aead2f5fea", | |
"name": "Check CRC16", | |
"func": "function crc16(buffer) {\n var crc = 0xFFFF;\n var odd;\n\n for (var i = 0; i < buffer.length; i++) {\n crc = crc ^ buffer[i];\n\n for (var j = 0; j < 8; j++) {\n odd = crc & 0x0001;\n crc = crc >> 1;\n if (odd) {\n crc = crc ^ 0xA001;\n }\n }\n }\n\n return crc;\n};\n\nlet nack_codes = {\n \"01\": \"Command not recognized / illegal\",\n \"02\": \"Operand out of allowed range\",\n \"03\": \"Data out of range\",\n \"04\": \"General failure: fault mode\",\n \"05\": \"Incorrect command length\",\n \"06\": \"Command cannot be executed now\",\n \"09\": \"Buffer error\",\n \"0A\": \"Running parameters incomplete\",\n \"10\": \"OK\"\n};\n\nlet received_crc = msg.payload.readUInt16LE(msg.payload.length - 2);\n\nmsg.payload = msg.payload.subarray(0, -2);\nlet calc_crc = crc16(msg.payload);\n\n\nif (received_crc === calc_crc) {\n let cmd = msg.payload[1].toString(16);\n let ack = msg.payload[2].toString(16);\n msg.payload = msg.payload.subarray(3);\n if (ack === \"10\") {\n node.status({fill:\"green\",shape:\"dot\",text:`Cmd ${cmd} OK`});\n return msg;\n }\n node.status({ fill: \"red\", shape: \"ring\", text: `Bad Cmd ${cmd}: ${nack_codes[ack]}`});\n node.error(`NACK Received: ${cmd} ${nack_codes[ack]}`, msg);\n}\n\nnode.status({fill:\"red\",shape:\"ring\",text:\"Invalid message\"});\nnode.error(\"Invalid message, checksum mismatch\", msg);\nreturn null;\n\n", | |
"outputs": 1, | |
"noerr": 0, | |
"initialize": "", | |
"finalize": "", | |
"libs": [], | |
"x": 1360, | |
"y": 220, | |
"wires": [ | |
[ | |
"2a28bc47eff77744" | |
] | |
] | |
}, | |
{ | |
"id": "f03633129b33107b", | |
"type": "delay", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"pauseType": "rate", | |
"timeout": "5", | |
"timeoutUnits": "seconds", | |
"rate": "1", | |
"nbRateUnits": "30", | |
"rateUnits": "second", | |
"randomFirst": "1", | |
"randomLast": "5", | |
"randomUnits": "seconds", | |
"drop": true, | |
"allowrate": false, | |
"outputs": 1, | |
"x": 1100, | |
"y": 360, | |
"wires": [ | |
[ | |
"aabe1de92c8f18af" | |
] | |
] | |
}, | |
{ | |
"id": "2f1837693c6c5cc0", | |
"type": "rbe", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"func": "rbei", | |
"gap": "20%", | |
"start": "", | |
"inout": "out", | |
"septopics": false, | |
"property": "payload", | |
"topi": "topic", | |
"x": 1090, | |
"y": 400, | |
"wires": [ | |
[ | |
"aabe1de92c8f18af" | |
] | |
] | |
}, | |
{ | |
"id": "65c04568a955e257", | |
"type": "rbe", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"func": "deadbandEq", | |
"gap": "20%", | |
"start": "", | |
"inout": "out", | |
"septopics": false, | |
"property": "payload", | |
"topi": "topic", | |
"x": 1100, | |
"y": 500, | |
"wires": [ | |
[ | |
"3ee19bd474ee13a9" | |
] | |
] | |
}, | |
{ | |
"id": "d57a8908f6ddef08", | |
"type": "delay", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"pauseType": "rate", | |
"timeout": "5", | |
"timeoutUnits": "seconds", | |
"rate": "1", | |
"nbRateUnits": "30", | |
"rateUnits": "second", | |
"randomFirst": "1", | |
"randomLast": "5", | |
"randomUnits": "seconds", | |
"drop": true, | |
"allowrate": false, | |
"outputs": 1, | |
"x": 1100, | |
"y": 460, | |
"wires": [ | |
[ | |
"3ee19bd474ee13a9" | |
] | |
] | |
}, | |
{ | |
"id": "efc823c8b8697a1f", | |
"type": "rbe", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"func": "deadbandEq", | |
"gap": "20%", | |
"start": "", | |
"inout": "out", | |
"septopics": false, | |
"property": "payload", | |
"topi": "topic", | |
"x": 1100, | |
"y": 620, | |
"wires": [ | |
[ | |
"443aaab7b4cb6a8c" | |
] | |
] | |
}, | |
{ | |
"id": "3749220ec5e4af58", | |
"type": "delay", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"pauseType": "rate", | |
"timeout": "5", | |
"timeoutUnits": "seconds", | |
"rate": "1", | |
"nbRateUnits": "30", | |
"rateUnits": "second", | |
"randomFirst": "1", | |
"randomLast": "5", | |
"randomUnits": "seconds", | |
"drop": true, | |
"allowrate": false, | |
"outputs": 1, | |
"x": 1100, | |
"y": 580, | |
"wires": [ | |
[ | |
"443aaab7b4cb6a8c" | |
] | |
] | |
}, | |
{ | |
"id": "159f9b5e26c6c389", | |
"type": "rbe", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"func": "deadbandEq", | |
"gap": "20%", | |
"start": "", | |
"inout": "out", | |
"septopics": false, | |
"property": "payload", | |
"topi": "topic", | |
"x": 1120, | |
"y": 700, | |
"wires": [ | |
[ | |
"606324011d7bbf0a" | |
] | |
] | |
}, | |
{ | |
"id": "46bc79ee5b833e5e", | |
"type": "delay", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"pauseType": "rate", | |
"timeout": "5", | |
"timeoutUnits": "seconds", | |
"rate": "1", | |
"nbRateUnits": "30", | |
"rateUnits": "second", | |
"randomFirst": "1", | |
"randomLast": "5", | |
"randomUnits": "seconds", | |
"drop": true, | |
"allowrate": false, | |
"outputs": 1, | |
"x": 1120, | |
"y": 660, | |
"wires": [ | |
[ | |
"606324011d7bbf0a" | |
] | |
] | |
}, | |
{ | |
"id": "a10c89b3db825710", | |
"type": "rbe", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"func": "deadbandEq", | |
"gap": "20%", | |
"start": "", | |
"inout": "out", | |
"septopics": false, | |
"property": "payload", | |
"topi": "topic", | |
"x": 1100, | |
"y": 820, | |
"wires": [ | |
[ | |
"c28a163409c834e2" | |
] | |
] | |
}, | |
{ | |
"id": "5ef00dd339776cef", | |
"type": "delay", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"pauseType": "rate", | |
"timeout": "5", | |
"timeoutUnits": "seconds", | |
"rate": "1", | |
"nbRateUnits": "30", | |
"rateUnits": "second", | |
"randomFirst": "1", | |
"randomLast": "5", | |
"randomUnits": "seconds", | |
"drop": true, | |
"allowrate": false, | |
"outputs": 1, | |
"x": 1100, | |
"y": 780, | |
"wires": [ | |
[ | |
"c28a163409c834e2" | |
] | |
] | |
}, | |
{ | |
"id": "8fedc03c590b3285", | |
"type": "rbe", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"func": "deadbandEq", | |
"gap": "20%", | |
"start": "", | |
"inout": "out", | |
"septopics": false, | |
"property": "payload", | |
"topi": "topic", | |
"x": 1100, | |
"y": 920, | |
"wires": [ | |
[ | |
"4785572017fce44a" | |
] | |
] | |
}, | |
{ | |
"id": "62a9892f3f654245", | |
"type": "delay", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"pauseType": "rate", | |
"timeout": "5", | |
"timeoutUnits": "seconds", | |
"rate": "1", | |
"nbRateUnits": "30", | |
"rateUnits": "second", | |
"randomFirst": "1", | |
"randomLast": "5", | |
"randomUnits": "seconds", | |
"drop": true, | |
"allowrate": false, | |
"outputs": 1, | |
"x": 1100, | |
"y": 880, | |
"wires": [ | |
[ | |
"4785572017fce44a" | |
] | |
] | |
}, | |
{ | |
"id": "57fc08c115c23bfe", | |
"type": "rbe", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"func": "deadbandEq", | |
"gap": "20%", | |
"start": "", | |
"inout": "out", | |
"septopics": false, | |
"property": "payload", | |
"topi": "topic", | |
"x": 1100, | |
"y": 1020, | |
"wires": [ | |
[ | |
"52412dd9c6b64122" | |
] | |
] | |
}, | |
{ | |
"id": "4cb729eb16dd8486", | |
"type": "delay", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"pauseType": "rate", | |
"timeout": "5", | |
"timeoutUnits": "seconds", | |
"rate": "1", | |
"nbRateUnits": "30", | |
"rateUnits": "second", | |
"randomFirst": "1", | |
"randomLast": "5", | |
"randomUnits": "seconds", | |
"drop": true, | |
"allowrate": false, | |
"outputs": 1, | |
"x": 1100, | |
"y": 980, | |
"wires": [ | |
[ | |
"52412dd9c6b64122" | |
] | |
] | |
}, | |
{ | |
"id": "033641d56247364c", | |
"type": "delay", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"pauseType": "rate", | |
"timeout": "5", | |
"timeoutUnits": "seconds", | |
"rate": "1", | |
"nbRateUnits": "30", | |
"rateUnits": "second", | |
"randomFirst": "1", | |
"randomLast": "5", | |
"randomUnits": "seconds", | |
"drop": true, | |
"allowrate": false, | |
"outputs": 1, | |
"x": 1100, | |
"y": 1080, | |
"wires": [ | |
[ | |
"34c8e66c9117a153" | |
] | |
] | |
}, | |
{ | |
"id": "5356cb0212a12a2f", | |
"type": "rbe", | |
"z": "9856a1d38d13eaca", | |
"name": "", | |
"func": "rbei", | |
"gap": "20%", | |
"start": "", | |
"inout": "out", | |
"septopics": false, | |
"property": "payload", | |
"topi": "topic", | |
"x": 1090, | |
"y": 1120, | |
"wires": [ | |
[ | |
"34c8e66c9117a153" | |
] | |
] | |
}, | |
{ | |
"id": "3bd2d948f28c6502", | |
"type": "catch", | |
"z": "9856a1d38d13eaca", | |
"g": "927832aead2f5fea", | |
"name": "Serial Error", | |
"scope": [ | |
"15c28d09e12eb077" | |
], | |
"uncaught": false, | |
"x": 1070, | |
"y": 280, | |
"wires": [ | |
[ | |
"b44ccc7877a2be15" | |
] | |
] | |
}, | |
{ | |
"id": "b44ccc7877a2be15", | |
"type": "mqtt out", | |
"z": "9856a1d38d13eaca", | |
"g": "927832aead2f5fea", | |
"name": "", | |
"topic": "aqualink-nr/last_serial_comms_error", | |
"qos": "", | |
"retain": "true", | |
"respTopic": "", | |
"contentType": "", | |
"userProps": "", | |
"correl": "", | |
"expiry": "", | |
"broker": "2996cb7f9b91f906", | |
"x": 1330, | |
"y": 280, | |
"wires": [] | |
}, | |
{ | |
"id": "f0927bbfeb643062", | |
"type": "mqtt out", | |
"z": "0b8cc767e1d33f36", | |
"name": "", | |
"topic": "", | |
"qos": "", | |
"retain": "true", | |
"respTopic": "", | |
"contentType": "", | |
"userProps": "", | |
"correl": "", | |
"expiry": "", | |
"broker": "2996cb7f9b91f906", | |
"x": 1330, | |
"y": 140, | |
"wires": [] | |
}, | |
{ | |
"id": "c7678859afd0c898", | |
"type": "inject", | |
"z": "0b8cc767e1d33f36", | |
"name": "Send Discovery Info", | |
"props": [], | |
"repeat": "", | |
"crontab": "", | |
"once": true, | |
"onceDelay": "0.5", | |
"topic": "", | |
"x": 200, | |
"y": 140, | |
"wires": [ | |
[ | |
"9783f19f0e5f9d10" | |
] | |
] | |
}, | |
{ | |
"id": "652272f6e8be157d", | |
"type": "change", | |
"z": "0b8cc767e1d33f36", | |
"name": "Pump Status", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "topic", | |
"pt": "msg", | |
"to": "homeassistant/sensor/aqualink-nr/pump_status/config", | |
"tot": "str" | |
}, | |
{ | |
"t": "set", | |
"p": "payload.device", | |
"pt": "msg", | |
"to": "device_payload", | |
"tot": "msg" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 1050, | |
"y": 80, | |
"wires": [ | |
[ | |
"f0927bbfeb643062" | |
] | |
] | |
}, | |
{ | |
"id": "9783f19f0e5f9d10", | |
"type": "template", | |
"z": "0b8cc767e1d33f36", | |
"name": "Device Info", | |
"field": "device_payload", | |
"fieldType": "msg", | |
"format": "json", | |
"syntax": "mustache", | |
"template": "{\n \"name\": \"Pool Filter Pump\",\n \"configuration_url\": \"http://aqualink-rps.lan.bond.casa:1880/ui\",\n \"suggested_area\": \"Pool\",\n \"sw_version\": \"1.0.0\",\n \"manufacturer\": \"Century\",\n \"model\": \"VGreen Evo\",\n \"identifiers\": [\n \"2a:c3:bb:68:5d:4c\"\n ],\n \"connections\": [\n [\n \"mac\",\n \"2a:c3:bb:68:5d:4c\"\n ]\n ]\n}", | |
"output": "json", | |
"x": 450, | |
"y": 140, | |
"wires": [ | |
[ | |
"42ec027f56f75fc3" | |
] | |
] | |
}, | |
{ | |
"id": "e297237faa0368c1", | |
"type": "template", | |
"z": "0b8cc767e1d33f36", | |
"name": "Pump Status Discovery Payload", | |
"field": "payload", | |
"fieldType": "msg", | |
"format": "json", | |
"syntax": "mustache", | |
"template": "{\n \"availability\": [\n {\n \"payload_available\": \"online\",\n \"payload_not_available\": \"offline\",\n \"topic\": \"aqualink-nr/status\"\n }\n ],\n \"force_update\": true,\n \"expire_after\": 3600,\n \"icon\": \"mdi:pump\",\n \"unique_id\": \"vgreen_evo_pump_status\",\n \"state_topic\": \"aqualink-nr/pump_status\",\n \"name\": \"Pool Filter Pump Status\",\n \"device_class\": \"enum\"\n}\n", | |
"output": "json", | |
"x": 770, | |
"y": 80, | |
"wires": [ | |
[ | |
"652272f6e8be157d" | |
] | |
] | |
}, | |
{ | |
"id": "1f6daea9a3817c19", | |
"type": "template", | |
"z": "0b8cc767e1d33f36", | |
"name": "Pump Speed Discovery Payload", | |
"field": "payload", | |
"fieldType": "msg", | |
"format": "json", | |
"syntax": "mustache", | |
"template": "{\n \"availability\": [\n {\n \"payload_available\": \"online\",\n \"payload_not_available\": \"offline\",\n \"topic\": \"aqualink-nr/status\"\n }\n ],\n \"force_update\": true,\n \"expire_after\": 3600,\n \"icon\": \"mdi:speedometer\",\n \"unique_id\": \"vgreen_evo_pump_speed\",\n \"state_topic\": \"aqualink-nr/pump_speed\",\n \"name\": \"Pool Filter Pump Speed\",\n \"state_class\": \"measurement\",\n \"unit_of_measurement\": \"rpm\"\n}", | |
"output": "json", | |
"x": 770, | |
"y": 120, | |
"wires": [ | |
[ | |
"a7b2c7f8664fe740" | |
] | |
] | |
}, | |
{ | |
"id": "a7b2c7f8664fe740", | |
"type": "change", | |
"z": "0b8cc767e1d33f36", | |
"name": "Pump Speed", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "topic", | |
"pt": "msg", | |
"to": "homeassistant/sensor/aqualink-nr/pump_speed/config", | |
"tot": "str" | |
}, | |
{ | |
"t": "set", | |
"p": "payload.device", | |
"pt": "msg", | |
"to": "device_payload", | |
"tot": "msg" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 1050, | |
"y": 120, | |
"wires": [ | |
[ | |
"f0927bbfeb643062" | |
] | |
] | |
}, | |
{ | |
"id": "3d58e446346e585e", | |
"type": "template", | |
"z": "0b8cc767e1d33f36", | |
"name": "Pump Current Discovery Payload", | |
"field": "payload", | |
"fieldType": "msg", | |
"format": "json", | |
"syntax": "mustache", | |
"template": "{\n \"availability\": [\n {\n \"payload_available\": \"online\",\n \"payload_not_available\": \"offline\",\n \"topic\": \"aqualink-nr/status\"\n }\n ],\n \"force_update\": true,\n \"expire_after\": 3600,\n \"unique_id\": \"vgreen_evo_pump_current\",\n \"state_topic\": \"aqualink-nr/pump_current\",\n \"name\": \"Pool Filter Pump Current\",\n \"state_class\": \"measurement\",\n \"unit_of_measurement\": \"A\",\n \"device_class\": \"current\"\n}", | |
"output": "json", | |
"x": 780, | |
"y": 160, | |
"wires": [ | |
[ | |
"e319fc26dd4d6443" | |
] | |
] | |
}, | |
{ | |
"id": "e319fc26dd4d6443", | |
"type": "change", | |
"z": "0b8cc767e1d33f36", | |
"name": "Pump Current", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "topic", | |
"pt": "msg", | |
"to": "homeassistant/sensor/aqualink-nr/pump_current/config", | |
"tot": "str" | |
}, | |
{ | |
"t": "set", | |
"p": "payload.device", | |
"pt": "msg", | |
"to": "device_payload", | |
"tot": "msg" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 1060, | |
"y": 160, | |
"wires": [ | |
[ | |
"f0927bbfeb643062" | |
] | |
] | |
}, | |
{ | |
"id": "9b493016d3a1e737", | |
"type": "template", | |
"z": "0b8cc767e1d33f36", | |
"name": "Pump Target Speed Discovery Payload", | |
"field": "payload", | |
"fieldType": "msg", | |
"format": "json", | |
"syntax": "mustache", | |
"template": "{\n \"availability\": [\n {\n \"payload_available\": \"online\",\n \"payload_not_available\": \"offline\",\n \"topic\": \"aqualink-nr/status\"\n }\n ],\n \"force_update\": true,\n \"expire_after\": 3600,\n \"unique_id\": \"vgreen_evo_pump_target_speed\",\n \"state_topic\": \"aqualink-nr/pump_target_speed\",\n \"command_topic\": \"aqualink-nr/pump_target_speed/set\",\n \"name\": \"Pool Filter Pump Target Speed\",\n \"unit_of_measurement\": \"rpm\",\n \"min\": 1150,\n \"max\": 3450,\n \"mode\": \"slider\",\n \"step\": 50,\n \"icon\": \"mdi:speedometer\"\n}", | |
"output": "json", | |
"x": 800, | |
"y": 200, | |
"wires": [ | |
[ | |
"8233024ebd5c042d" | |
] | |
] | |
}, | |
{ | |
"id": "8233024ebd5c042d", | |
"type": "change", | |
"z": "0b8cc767e1d33f36", | |
"name": "Pump Target Speed", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "topic", | |
"pt": "msg", | |
"to": "homeassistant/number/aqualink-nr/pump_target_speed/config", | |
"tot": "str" | |
}, | |
{ | |
"t": "set", | |
"p": "payload.device", | |
"pt": "msg", | |
"to": "device_payload", | |
"tot": "msg" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 1080, | |
"y": 200, | |
"wires": [ | |
[ | |
"f0927bbfeb643062" | |
] | |
] | |
}, | |
{ | |
"id": "65270f8e6232ba37", | |
"type": "template", | |
"z": "0b8cc767e1d33f36", | |
"name": "Pump Run Discovery Payload", | |
"field": "payload", | |
"fieldType": "msg", | |
"format": "json", | |
"syntax": "mustache", | |
"template": "{\n \"availability\": [\n {\n \"payload_available\": \"online\",\n \"payload_not_available\": \"offline\",\n \"topic\": \"aqualink-nr/status\"\n }\n ],\n \"force_update\": true,\n \"expire_after\": 3600,\n \"unique_id\": \"vgreen_evo_pump_run\",\n \"state_topic\": \"aqualink-nr/pump_run\",\n \"command_topic\": \"aqualink-nr/pump_run/set\",\n \"name\": \"Pool Filter Pump Run\",\n \"icon\": \"mdi:pump\"\n}", | |
"output": "json", | |
"x": 770, | |
"y": 240, | |
"wires": [ | |
[ | |
"9fe4ed5b6b57f421" | |
] | |
] | |
}, | |
{ | |
"id": "9fe4ed5b6b57f421", | |
"type": "change", | |
"z": "0b8cc767e1d33f36", | |
"name": "Pump Run", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "topic", | |
"pt": "msg", | |
"to": "homeassistant/switch/aqualink-nr/pump_run/config", | |
"tot": "str" | |
}, | |
{ | |
"t": "set", | |
"p": "payload.device", | |
"pt": "msg", | |
"to": "device_payload", | |
"tot": "msg" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 1050, | |
"y": 240, | |
"wires": [ | |
[ | |
"f0927bbfeb643062" | |
] | |
] | |
}, | |
{ | |
"id": "2e250cfd413905c9", | |
"type": "change", | |
"z": "0b8cc767e1d33f36", | |
"name": "Pump Schedule", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "topic", | |
"pt": "msg", | |
"to": "homeassistant/switch/aqualink-nr/pump_schedule/config", | |
"tot": "str" | |
}, | |
{ | |
"t": "set", | |
"p": "payload.device", | |
"pt": "msg", | |
"to": "device_payload", | |
"tot": "msg" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 1060, | |
"y": 280, | |
"wires": [ | |
[ | |
"f0927bbfeb643062" | |
] | |
] | |
}, | |
{ | |
"id": "4f62b5cb98529931", | |
"type": "template", | |
"z": "0b8cc767e1d33f36", | |
"name": "Pump Schedule Discovery Payload", | |
"field": "payload", | |
"fieldType": "msg", | |
"format": "json", | |
"syntax": "mustache", | |
"template": "{\n \"availability\": [\n {\n \"payload_available\": \"online\",\n \"payload_not_available\": \"offline\",\n \"topic\": \"aqualink-nr/status\"\n }\n ],\n \"force_update\": true,\n \"expire_after\": 3600,\n \"unique_id\": \"vgreen_evo_pump_schedule\",\n \"state_topic\": \"aqualink-nr/pump_schedule\",\n \"command_topic\": \"aqualink-nr/pump_schedule/set\",\n \"name\": \"Pool Filter Pump Schedule\",\n \"icon\": \"mdi:calendar-clock\"\n}", | |
"output": "json", | |
"x": 780, | |
"y": 280, | |
"wires": [ | |
[ | |
"2e250cfd413905c9" | |
] | |
] | |
}, | |
{ | |
"id": "b4b0db590b51bd61", | |
"type": "template", | |
"z": "0b8cc767e1d33f36", | |
"name": "Pump Skim Boost Discovery Payload", | |
"field": "payload", | |
"fieldType": "msg", | |
"format": "json", | |
"syntax": "mustache", | |
"template": "{\n \"availability\": [\n {\n \"payload_available\": \"online\",\n \"payload_not_available\": \"offline\",\n \"topic\": \"aqualink-nr/status\"\n }\n ],\n \"force_update\": true,\n \"expire_after\": 3600,\n \"unique_id\": \"vgreen_evo_pump_boost\",\n \"state_topic\": \"aqualink-nr/pump_boost\",\n \"command_topic\": \"aqualink-nr/pump_boost/set\",\n \"name\": \"Pool Filter Pump Skim Boost\",\n \"icon\": \"mdi:calendar-clock\"\n}", | |
"output": "json", | |
"x": 790, | |
"y": 320, | |
"wires": [ | |
[ | |
"017a124da2c8419c" | |
] | |
] | |
}, | |
{ | |
"id": "017a124da2c8419c", | |
"type": "change", | |
"z": "0b8cc767e1d33f36", | |
"name": "Pump Skim Boost", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "topic", | |
"pt": "msg", | |
"to": "homeassistant/switch/aqualink-nr/pump_boost/config", | |
"tot": "str" | |
}, | |
{ | |
"t": "set", | |
"p": "payload.device", | |
"pt": "msg", | |
"to": "device_payload", | |
"tot": "msg" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 1070, | |
"y": 320, | |
"wires": [ | |
[ | |
"f0927bbfeb643062" | |
] | |
] | |
}, | |
{ | |
"id": "b4559c057a9e4e84", | |
"type": "template", | |
"z": "0b8cc767e1d33f36", | |
"name": "Pump Output Power Payload", | |
"field": "payload", | |
"fieldType": "msg", | |
"format": "json", | |
"syntax": "mustache", | |
"template": "{\n \"availability\": [\n {\n \"payload_available\": \"online\",\n \"payload_not_available\": \"offline\",\n \"topic\": \"aqualink-nr/status\"\n }\n ],\n \"force_update\": true,\n \"expire_after\": 3600,\n \"unique_id\": \"vgreen_evo_pump_output_power\",\n \"state_topic\": \"aqualink-nr/pump_output_power\",\n \"name\": \"Pool Filter Pump Output Power\",\n \"state_class\": \"measurement\",\n \"unit_of_measurement\": \"W\",\n \"device_class\": \"power\"\n}", | |
"output": "json", | |
"x": 760, | |
"y": 360, | |
"wires": [ | |
[ | |
"db6fb19d235a72f0" | |
] | |
] | |
}, | |
{ | |
"id": "db6fb19d235a72f0", | |
"type": "change", | |
"z": "0b8cc767e1d33f36", | |
"name": "Pump Output Power", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "topic", | |
"pt": "msg", | |
"to": "homeassistant/sensor/aqualink-nr/pump_output_power/config", | |
"tot": "str" | |
}, | |
{ | |
"t": "set", | |
"p": "payload.device", | |
"pt": "msg", | |
"to": "device_payload", | |
"tot": "msg" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 1080, | |
"y": 360, | |
"wires": [ | |
[ | |
"f0927bbfeb643062" | |
] | |
] | |
}, | |
{ | |
"id": "4ad822d5a507dce2", | |
"type": "template", | |
"z": "0b8cc767e1d33f36", | |
"name": "Pump Input Power Payload", | |
"field": "payload", | |
"fieldType": "msg", | |
"format": "json", | |
"syntax": "mustache", | |
"template": "{\n \"availability\": [\n {\n \"payload_available\": \"online\",\n \"payload_not_available\": \"offline\",\n \"topic\": \"aqualink-nr/status\"\n }\n ],\n \"force_update\": true,\n \"expire_after\": 3600,\n \"unique_id\": \"vgreen_evo_pump_input_power\",\n \"state_topic\": \"aqualink-nr/pump_input_power\",\n \"name\": \"Pool Filter Pump Input Power\",\n \"state_class\": \"measurement\",\n \"unit_of_measurement\": \"W\",\n \"device_class\": \"power\"\n}", | |
"output": "json", | |
"x": 760, | |
"y": 400, | |
"wires": [ | |
[ | |
"c53506cb7bb9a260" | |
] | |
] | |
}, | |
{ | |
"id": "c53506cb7bb9a260", | |
"type": "change", | |
"z": "0b8cc767e1d33f36", | |
"name": "Pump Input Power", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "topic", | |
"pt": "msg", | |
"to": "homeassistant/sensor/aqualink-nr/pump_input_power/config", | |
"tot": "str" | |
}, | |
{ | |
"t": "set", | |
"p": "payload.device", | |
"pt": "msg", | |
"to": "device_payload", | |
"tot": "msg" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 1070, | |
"y": 400, | |
"wires": [ | |
[ | |
"f0927bbfeb643062" | |
] | |
] | |
}, | |
{ | |
"id": "a897a22d073195e5", | |
"type": "template", | |
"z": "0b8cc767e1d33f36", | |
"name": "Pump Fault Code Payload", | |
"field": "payload", | |
"fieldType": "msg", | |
"format": "json", | |
"syntax": "mustache", | |
"template": "{\n \"availability\": [\n {\n \"payload_available\": \"online\",\n \"payload_not_available\": \"offline\",\n \"topic\": \"aqualink-nr/status\"\n }\n ],\n \"force_update\": true,\n \"expire_after\": 3600,\n \"unique_id\": \"vgreen_evo_pump_fault\",\n \"state_topic\": \"aqualink-nr/pump_fault\",\n \"name\": \"Pool Filter Pump Fault Code\",\n \"device_class\": \"enum\"\n}", | |
"output": "json", | |
"x": 750, | |
"y": 440, | |
"wires": [ | |
[ | |
"d6e5aa02b1119d30" | |
] | |
] | |
}, | |
{ | |
"id": "d6e5aa02b1119d30", | |
"type": "change", | |
"z": "0b8cc767e1d33f36", | |
"name": "Pump Fault Code", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "topic", | |
"pt": "msg", | |
"to": "homeassistant/sensor/aqualink-nr/pump_fault/config", | |
"tot": "str" | |
}, | |
{ | |
"t": "set", | |
"p": "payload.device", | |
"pt": "msg", | |
"to": "device_payload", | |
"tot": "msg" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 1070, | |
"y": 440, | |
"wires": [ | |
[ | |
"f0927bbfeb643062" | |
] | |
] | |
}, | |
{ | |
"id": "80d36e7adbe2c06c", | |
"type": "buffer-maker", | |
"z": "5009531429fbeac6", | |
"name": "", | |
"specification": "spec", | |
"specificationType": "ui", | |
"items": [ | |
{ | |
"name": "address", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "15" | |
}, | |
{ | |
"name": "function", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "45" | |
}, | |
{ | |
"name": "ack", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "20" | |
}, | |
{ | |
"name": "page", | |
"type": "byte", | |
"length": 1, | |
"dataType": "msg", | |
"data": "payload.page" | |
}, | |
{ | |
"name": "address", | |
"type": "hex", | |
"length": 2, | |
"dataType": "msg", | |
"data": "payload.address" | |
} | |
], | |
"swap1": "", | |
"swap2": "", | |
"swap3": "", | |
"swap1Type": "swap", | |
"swap2Type": "swap", | |
"swap3Type": "swap", | |
"msgProperty": "payload", | |
"msgPropertyType": "str", | |
"x": 690, | |
"y": 60, | |
"wires": [ | |
[ | |
"01ae7cfcc1091a64" | |
] | |
] | |
}, | |
{ | |
"id": "b8ed759c7b68d912", | |
"type": "inject", | |
"z": "5009531429fbeac6", | |
"name": "Read Sensor", | |
"props": [], | |
"repeat": "", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"x": 130, | |
"y": 60, | |
"wires": [ | |
[ | |
"37307a76dc8d3784" | |
] | |
] | |
}, | |
{ | |
"id": "af9fbea860ba9919", | |
"type": "debug", | |
"z": "5009531429fbeac6", | |
"name": "Read Sensor Value", | |
"active": true, | |
"tosidebar": true, | |
"console": false, | |
"tostatus": false, | |
"complete": "payload", | |
"targetType": "msg", | |
"statusVal": "", | |
"statusType": "auto", | |
"x": 1210, | |
"y": 60, | |
"wires": [] | |
}, | |
{ | |
"id": "c97e8820e3bd9b3f", | |
"type": "buffer-parser", | |
"z": "5009531429fbeac6", | |
"name": "", | |
"data": "payload", | |
"dataType": "msg", | |
"specification": "spec", | |
"specificationType": "ui", | |
"items": [ | |
{ | |
"type": "hex", | |
"name": "page", | |
"offset": 0, | |
"length": 1, | |
"offsetbit": 0, | |
"scale": "1", | |
"mask": "" | |
}, | |
{ | |
"type": "hex", | |
"name": "address", | |
"offset": 1, | |
"length": 1, | |
"offsetbit": 0, | |
"scale": "1", | |
"mask": "" | |
}, | |
{ | |
"type": "int16le", | |
"name": "value", | |
"offset": 2, | |
"length": 1, | |
"offsetbit": 0, | |
"scale": "1", | |
"mask": "" | |
} | |
], | |
"swap1": "", | |
"swap2": "", | |
"swap3": "", | |
"swap1Type": "swap", | |
"swap2Type": "swap", | |
"swap3Type": "swap", | |
"msgProperty": "payload", | |
"msgPropertyType": "str", | |
"resultType": "keyvalue", | |
"resultTypeType": "return", | |
"multipleResult": false, | |
"fanOutMultipleResult": false, | |
"setTopic": true, | |
"outputs": 1, | |
"x": 1010, | |
"y": 60, | |
"wires": [ | |
[ | |
"af9fbea860ba9919" | |
] | |
] | |
}, | |
{ | |
"id": "37307a76dc8d3784", | |
"type": "template", | |
"z": "5009531429fbeac6", | |
"name": "Page/Address", | |
"field": "payload", | |
"fieldType": "msg", | |
"format": "json", | |
"syntax": "mustache", | |
"template": "{\n \"page\": 0,\n \"address\": \"0a\"\n}", | |
"output": "json", | |
"x": 320, | |
"y": 60, | |
"wires": [ | |
[ | |
"8fce8548d604c1a1" | |
] | |
] | |
}, | |
{ | |
"id": "f8ae4884a308f614", | |
"type": "buffer-maker", | |
"z": "5009531429fbeac6", | |
"name": "", | |
"specification": "spec", | |
"specificationType": "ui", | |
"items": [ | |
{ | |
"name": "address", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "15" | |
}, | |
{ | |
"name": "function", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "64" | |
}, | |
{ | |
"name": "ack", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "20" | |
}, | |
{ | |
"name": "page", | |
"type": "hex", | |
"length": 2, | |
"dataType": "msg", | |
"data": "payload.page" | |
}, | |
{ | |
"name": "address", | |
"type": "hex", | |
"length": 2, | |
"dataType": "msg", | |
"data": "payload.address" | |
}, | |
{ | |
"name": "length", | |
"type": "hex", | |
"length": 2, | |
"dataType": "msg", | |
"data": "payload.length" | |
} | |
], | |
"swap1": "", | |
"swap2": "", | |
"swap3": "", | |
"swap1Type": "swap", | |
"swap2Type": "swap", | |
"swap3Type": "swap", | |
"msgProperty": "payload", | |
"msgPropertyType": "str", | |
"x": 690, | |
"y": 100, | |
"wires": [ | |
[ | |
"91a3b09cae387053" | |
] | |
] | |
}, | |
{ | |
"id": "551165a453f320d2", | |
"type": "inject", | |
"z": "5009531429fbeac6", | |
"name": "Read Config", | |
"props": [], | |
"repeat": "", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"x": 130, | |
"y": 100, | |
"wires": [ | |
[ | |
"fec81c861b1ec238" | |
] | |
] | |
}, | |
{ | |
"id": "421955f5ceb1cfe4", | |
"type": "debug", | |
"z": "5009531429fbeac6", | |
"name": "Read Sensor Value", | |
"active": true, | |
"tosidebar": true, | |
"console": false, | |
"tostatus": false, | |
"complete": "payload", | |
"targetType": "msg", | |
"statusVal": "", | |
"statusType": "auto", | |
"x": 1210, | |
"y": 100, | |
"wires": [] | |
}, | |
{ | |
"id": "012e9d20164d4082", | |
"type": "buffer-parser", | |
"z": "5009531429fbeac6", | |
"name": "", | |
"data": "payload", | |
"dataType": "msg", | |
"specification": "spec", | |
"specificationType": "ui", | |
"items": [ | |
{ | |
"type": "byte", | |
"name": "hours", | |
"offset": 3, | |
"length": 1, | |
"offsetbit": 0, | |
"scale": "1", | |
"mask": "" | |
} | |
], | |
"swap1": "", | |
"swap2": "", | |
"swap3": "", | |
"swap1Type": "swap", | |
"swap2Type": "swap", | |
"swap3Type": "swap", | |
"msgProperty": "payload", | |
"msgPropertyType": "str", | |
"resultType": "keyvalue", | |
"resultTypeType": "return", | |
"multipleResult": false, | |
"fanOutMultipleResult": true, | |
"setTopic": true, | |
"outputs": 1, | |
"x": 1010, | |
"y": 100, | |
"wires": [ | |
[ | |
"421955f5ceb1cfe4" | |
] | |
] | |
}, | |
{ | |
"id": "d2944b2534c00a16", | |
"type": "switch", | |
"z": "5009531429fbeac6", | |
"name": "Pump On?", | |
"property": "pump_on", | |
"propertyType": "flow", | |
"rules": [ | |
{ | |
"t": "eq", | |
"v": "1", | |
"vt": "num" | |
} | |
], | |
"checkall": "true", | |
"repair": false, | |
"outputs": 1, | |
"x": 510, | |
"y": 100, | |
"wires": [ | |
[ | |
"f8ae4884a308f614" | |
] | |
] | |
}, | |
{ | |
"id": "fec81c861b1ec238", | |
"type": "template", | |
"z": "5009531429fbeac6", | |
"name": "Override Time", | |
"field": "payload", | |
"fieldType": "msg", | |
"format": "json", | |
"syntax": "mustache", | |
"template": "{\n \"page\": \"0A\",\n \"address\": \"63\",\n \"length\": \"00\"\n}", | |
"output": "json", | |
"x": 320, | |
"y": 100, | |
"wires": [ | |
[ | |
"d2944b2534c00a16" | |
] | |
] | |
}, | |
{ | |
"id": "cac3eb05cb70d5df", | |
"type": "buffer-maker", | |
"z": "5009531429fbeac6", | |
"name": "", | |
"specification": "spec", | |
"specificationType": "ui", | |
"items": [ | |
{ | |
"name": "address", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "15" | |
}, | |
{ | |
"name": "function", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "64" | |
}, | |
{ | |
"name": "ack", | |
"type": "hex", | |
"length": 2, | |
"dataType": "str", | |
"data": "20" | |
}, | |
{ | |
"name": "page", | |
"type": "hex", | |
"length": 2, | |
"dataType": "msg", | |
"data": "payload.page" | |
}, | |
{ | |
"name": "address", | |
"type": "hex", | |
"length": 2, | |
"dataType": "msg", | |
"data": "payload.address" | |
} | |
], | |
"swap1": "", | |
"swap2": "", | |
"swap3": "", | |
"swap1Type": "swap", | |
"swap2Type": "swap", | |
"swap3Type": "swap", | |
"msgProperty": "payload", | |
"msgPropertyType": "str", | |
"x": 690, | |
"y": 140, | |
"wires": [ | |
[ | |
"198ef7f13f6a223f" | |
] | |
] | |
}, | |
{ | |
"id": "cca5ae01e951656b", | |
"type": "inject", | |
"z": "5009531429fbeac6", | |
"name": "Read Config", | |
"props": [], | |
"repeat": "", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"x": 130, | |
"y": 140, | |
"wires": [ | |
[ | |
"4e3c70a08b8ad5e9" | |
] | |
] | |
}, | |
{ | |
"id": "982ece2c7783d429", | |
"type": "debug", | |
"z": "5009531429fbeac6", | |
"name": "Read Sensor Value", | |
"active": true, | |
"tosidebar": true, | |
"console": false, | |
"tostatus": false, | |
"complete": "payload", | |
"targetType": "msg", | |
"statusVal": "", | |
"statusType": "auto", | |
"x": 1210, | |
"y": 140, | |
"wires": [] | |
}, | |
{ | |
"id": "8680c965e5bc84ad", | |
"type": "buffer-parser", | |
"z": "5009531429fbeac6", | |
"name": "", | |
"data": "payload", | |
"dataType": "msg", | |
"specification": "spec", | |
"specificationType": "ui", | |
"items": [ | |
{ | |
"type": "byte", | |
"name": "value", | |
"offset": 2, | |
"length": 1, | |
"offsetbit": 0, | |
"scale": "1", | |
"mask": "" | |
} | |
], | |
"swap1": "", | |
"swap2": "", | |
"swap3": "", | |
"swap1Type": "swap", | |
"swap2Type": "swap", | |
"swap3Type": "swap", | |
"msgProperty": "payload", | |
"msgPropertyType": "str", | |
"resultType": "value", | |
"resultTypeType": "return", | |
"multipleResult": true, | |
"fanOutMultipleResult": true, | |
"setTopic": true, | |
"outputs": 1, | |
"x": 1010, | |
"y": 140, | |
"wires": [ | |
[ | |
"982ece2c7783d429" | |
] | |
] | |
}, | |
{ | |
"id": "7ce302eeb730a5bb", | |
"type": "switch", | |
"z": "5009531429fbeac6", | |
"name": "Pump On?", | |
"property": "pump_on", | |
"propertyType": "flow", | |
"rules": [ | |
{ | |
"t": "eq", | |
"v": "1", | |
"vt": "num" | |
} | |
], | |
"checkall": "true", | |
"repair": false, | |
"outputs": 1, | |
"x": 510, | |
"y": 140, | |
"wires": [ | |
[ | |
"cac3eb05cb70d5df" | |
] | |
] | |
}, | |
{ | |
"id": "4e3c70a08b8ad5e9", | |
"type": "template", | |
"z": "5009531429fbeac6", | |
"name": "Override Minutes", | |
"field": "payload", | |
"fieldType": "msg", | |
"format": "json", | |
"syntax": "mustache", | |
"template": "{\n \"page\": \"0A\",\n \"address\": \"59\"\n}", | |
"output": "json", | |
"x": 330, | |
"y": 140, | |
"wires": [ | |
[ | |
"7ce302eeb730a5bb" | |
] | |
] | |
}, | |
{ | |
"id": "01ae7cfcc1091a64", | |
"type": "link call", | |
"z": "5009531429fbeac6", | |
"name": "Serial", | |
"links": [ | |
"15381188ce92036c" | |
], | |
"linkType": "static", | |
"timeout": "15", | |
"x": 850, | |
"y": 60, | |
"wires": [ | |
[ | |
"c97e8820e3bd9b3f" | |
] | |
] | |
}, | |
{ | |
"id": "91a3b09cae387053", | |
"type": "link call", | |
"z": "5009531429fbeac6", | |
"name": "Serial", | |
"links": [ | |
"15381188ce92036c" | |
], | |
"linkType": "static", | |
"timeout": "15", | |
"x": 850, | |
"y": 100, | |
"wires": [ | |
[ | |
"012e9d20164d4082" | |
] | |
] | |
}, | |
{ | |
"id": "198ef7f13f6a223f", | |
"type": "link call", | |
"z": "5009531429fbeac6", | |
"name": "Serial", | |
"links": [ | |
"15381188ce92036c" | |
], | |
"linkType": "static", | |
"timeout": "15", | |
"x": 850, | |
"y": 140, | |
"wires": [ | |
[ | |
"8680c965e5bc84ad" | |
] | |
] | |
}, | |
{ | |
"id": "8fce8548d604c1a1", | |
"type": "switch", | |
"z": "5009531429fbeac6", | |
"name": "Pump On?", | |
"property": "pump_on", | |
"propertyType": "flow", | |
"rules": [ | |
{ | |
"t": "eq", | |
"v": "1", | |
"vt": "num" | |
} | |
], | |
"checkall": "true", | |
"repair": false, | |
"outputs": 1, | |
"x": 510, | |
"y": 60, | |
"wires": [ | |
[ | |
"80d36e7adbe2c06c" | |
] | |
] | |
} | |
] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment