Last active
April 12, 2025 04:42
-
-
Save nalditopr/493af377e9928b88c2639a9e1607f127 to your computer and use it in GitHub Desktop.
Eco Flow Delta 3 + Node-Red + Homeassistant
This file contains hidden or 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": "5c3a7efbb734c312", | |
"type": "tab", | |
"label": "Ecoflow MQTT", | |
"disabled": false, | |
"info": "", | |
"env": [] | |
}, | |
{ | |
"id": "773fab09ddaa9e53", | |
"type": "inject", | |
"z": "5c3a7efbb734c312", | |
"name": "connect", | |
"props": [ | |
{ | |
"p": "action", | |
"v": "connect", | |
"vt": "str" | |
}, | |
{ | |
"p": "topic", | |
"vt": "str" | |
} | |
], | |
"repeat": "", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"x": 350, | |
"y": 520, | |
"wires": [ | |
[ | |
"d5d7e8960ba14429" | |
] | |
] | |
}, | |
{ | |
"id": "d5d7e8960ba14429", | |
"type": "mqtt out", | |
"z": "5c3a7efbb734c312", | |
"name": "ef-mqtt", | |
"topic": "", | |
"qos": "", | |
"retain": "", | |
"respTopic": "", | |
"contentType": "", | |
"userProps": "", | |
"correl": "", | |
"expiry": "", | |
"broker": "4a025f91e9595714", | |
"x": 540, | |
"y": 540, | |
"wires": [] | |
}, | |
{ | |
"id": "6d38c1d92d6c19eb", | |
"type": "mqtt in", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"topic": "/app/[[APPID]]/[[SN]]/thing/property/get", | |
"qos": "2", | |
"datatype": "base64", | |
"broker": "4a025f91e9595714", | |
"nl": false, | |
"rap": true, | |
"rh": 0, | |
"inputs": 0, | |
"x": 970, | |
"y": 340, | |
"wires": [ | |
[ | |
"0cf29e3992e7bfdc" | |
] | |
] | |
}, | |
{ | |
"id": "c8d401ac3c0d530b", | |
"type": "debug", | |
"z": "5c3a7efbb734c312", | |
"name": "debug 2", | |
"active": false, | |
"tosidebar": true, | |
"console": false, | |
"tostatus": false, | |
"complete": "payload", | |
"targetType": "msg", | |
"statusVal": "", | |
"statusType": "auto", | |
"x": 1180, | |
"y": 220, | |
"wires": [] | |
}, | |
{ | |
"id": "0cf29e3992e7bfdc", | |
"type": "debug", | |
"z": "5c3a7efbb734c312", | |
"name": "debug 3", | |
"active": false, | |
"tosidebar": true, | |
"console": false, | |
"tostatus": false, | |
"complete": "false", | |
"statusVal": "", | |
"statusType": "auto", | |
"x": 1420, | |
"y": 340, | |
"wires": [] | |
}, | |
{ | |
"id": "d9ecc011d0be04ea", | |
"type": "mqtt in", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"topic": "/app/[[APPID]]/[[SN]]/thing/property/get_reply", | |
"qos": "2", | |
"datatype": "base64", | |
"broker": "4a025f91e9595714", | |
"nl": false, | |
"rap": true, | |
"rh": 0, | |
"inputs": 0, | |
"x": 990, | |
"y": 460, | |
"wires": [ | |
[ | |
"5dc759c3914d8893" | |
] | |
] | |
}, | |
{ | |
"id": "34495fd19ce3c931", | |
"type": "mqtt in", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"topic": "/app/[[APPID]]/[[SN]]/thing/property/set", | |
"qos": "2", | |
"datatype": "base64", | |
"broker": "4a025f91e9595714", | |
"nl": false, | |
"rap": true, | |
"rh": 0, | |
"inputs": 0, | |
"x": 970, | |
"y": 580, | |
"wires": [ | |
[ | |
"1b07cbc9319439e6" | |
] | |
] | |
}, | |
{ | |
"id": "196e8e1147aa9c70", | |
"type": "mqtt in", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"topic": "/app/[[APPID]]/[[SN]]/thing/property/set_reply", | |
"qos": "2", | |
"datatype": "base64", | |
"broker": "4a025f91e9595714", | |
"nl": false, | |
"rap": true, | |
"rh": 0, | |
"inputs": 0, | |
"x": 980, | |
"y": 700, | |
"wires": [ | |
[ | |
"222174cf92b067ba" | |
] | |
] | |
}, | |
{ | |
"id": "5dc759c3914d8893", | |
"type": "debug", | |
"z": "5c3a7efbb734c312", | |
"name": "debug 4", | |
"active": false, | |
"tosidebar": true, | |
"console": false, | |
"tostatus": false, | |
"complete": "false", | |
"statusVal": "", | |
"statusType": "auto", | |
"x": 1420, | |
"y": 460, | |
"wires": [] | |
}, | |
{ | |
"id": "1b07cbc9319439e6", | |
"type": "debug", | |
"z": "5c3a7efbb734c312", | |
"name": "debug 5", | |
"active": false, | |
"tosidebar": true, | |
"console": false, | |
"tostatus": false, | |
"complete": "false", | |
"statusVal": "", | |
"statusType": "auto", | |
"x": 1420, | |
"y": 580, | |
"wires": [] | |
}, | |
{ | |
"id": "222174cf92b067ba", | |
"type": "debug", | |
"z": "5c3a7efbb734c312", | |
"name": "debug 6", | |
"active": false, | |
"tosidebar": true, | |
"console": false, | |
"tostatus": false, | |
"complete": "false", | |
"statusVal": "", | |
"statusType": "auto", | |
"x": 1420, | |
"y": 700, | |
"wires": [] | |
}, | |
{ | |
"id": "2ea889238290350b", | |
"type": "mqtt out", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"topic": "/app/[[APPID]]/[[SN]]/thing/property/set", | |
"qos": "0", | |
"retain": "", | |
"respTopic": "", | |
"contentType": "", | |
"userProps": "", | |
"correl": "", | |
"expiry": "", | |
"broker": "4a025f91e9595714", | |
"x": 990, | |
"y": 980, | |
"wires": [] | |
}, | |
{ | |
"id": "3507d66f640759d3", | |
"type": "inject", | |
"z": "5c3a7efbb734c312", | |
"name": "beep_on", | |
"props": [ | |
{ | |
"p": "payload" | |
} | |
], | |
"repeat": "", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"payload": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"int_9\":1},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":2,\"int_11\":1,\"int_14\":128301330,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"payloadType": "json", | |
"x": 340, | |
"y": 1080, | |
"wires": [ | |
[ | |
"1879d2c74d981f0a" | |
] | |
] | |
}, | |
{ | |
"id": "2126c09b8693f86a", | |
"type": "mqtt in", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"topic": "/app/[[APPID]]/[[SN]]/thing/property/set", | |
"qos": "2", | |
"datatype": "auto-detect", | |
"broker": "4a025f91e9595714", | |
"nl": false, | |
"rap": true, | |
"rh": 0, | |
"inputs": 0, | |
"x": 990, | |
"y": 640, | |
"wires": [ | |
[ | |
"1b07cbc9319439e6" | |
] | |
] | |
}, | |
{ | |
"id": "1771f8034a515b9c", | |
"type": "mqtt in", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"topic": "/app/[[APPID]]/[[SN]]/thing/property/get", | |
"qos": "2", | |
"datatype": "auto-detect", | |
"broker": "4a025f91e9595714", | |
"nl": false, | |
"rap": true, | |
"rh": 0, | |
"inputs": 0, | |
"x": 990, | |
"y": 400, | |
"wires": [ | |
[ | |
"0cf29e3992e7bfdc" | |
] | |
] | |
}, | |
{ | |
"id": "6bd61b7f744cd6dd", | |
"type": "mqtt in", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"topic": "/app/[[APPID]]/[[SN]]/thing/property/get_reply", | |
"qos": "2", | |
"datatype": "auto-detect", | |
"broker": "4a025f91e9595714", | |
"nl": false, | |
"rap": true, | |
"rh": 0, | |
"inputs": 0, | |
"x": 1010, | |
"y": 520, | |
"wires": [ | |
[ | |
"5dc759c3914d8893", | |
"15622328ecef2318" | |
] | |
] | |
}, | |
{ | |
"id": "2aa01b5bcbc04c2d", | |
"type": "mqtt in", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"topic": "/app/[[APPID]]/[[SN]]/thing/property/set_reply", | |
"qos": "2", | |
"datatype": "auto-detect", | |
"broker": "4a025f91e9595714", | |
"nl": false, | |
"rap": true, | |
"rh": 0, | |
"inputs": 0, | |
"x": 1000, | |
"y": 760, | |
"wires": [ | |
[ | |
"222174cf92b067ba" | |
] | |
] | |
}, | |
{ | |
"id": "af84a2f4c0da27f2", | |
"type": "mqtt in", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"topic": "/app/device/status/[[SN]]", | |
"qos": "2", | |
"datatype": "auto-detect", | |
"broker": "4a025f91e9595714", | |
"nl": false, | |
"rap": true, | |
"rh": 0, | |
"inputs": 0, | |
"x": 900, | |
"y": 280, | |
"wires": [ | |
[ | |
"c8d401ac3c0d530b" | |
] | |
] | |
}, | |
{ | |
"id": "1879d2c74d981f0a", | |
"type": "encode", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"protofile": "fd04eecb52341faa", | |
"protoType": "MessageFromJson", | |
"x": 620, | |
"y": 980, | |
"wires": [ | |
[ | |
"2ea889238290350b" | |
] | |
] | |
}, | |
{ | |
"id": "c41e867bd65c48cc", | |
"type": "inject", | |
"z": "5c3a7efbb734c312", | |
"name": "beep_off", | |
"props": [ | |
{ | |
"p": "payload" | |
} | |
], | |
"repeat": "", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"payload": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"int_9\":0},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":2,\"int_11\":1,\"int_14\":128301330,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"payloadType": "json", | |
"x": 340, | |
"y": 1200, | |
"wires": [ | |
[ | |
"1879d2c74d981f0a" | |
] | |
] | |
}, | |
{ | |
"id": "4ec8c1c4e51da6e7", | |
"type": "inject", | |
"z": "5c3a7efbb734c312", | |
"name": "get", | |
"props": [ | |
{ | |
"p": "payload" | |
} | |
], | |
"repeat": "15", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"payload": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"int_14\":128301330,\"bytes_23\":\"Android\"}}}", | |
"payloadType": "json", | |
"x": 350, | |
"y": 660, | |
"wires": [ | |
[ | |
"d0662aaa5ced35c4" | |
] | |
] | |
}, | |
{ | |
"id": "1050b450dc646a9f", | |
"type": "mqtt out", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"topic": "/app/[[APPID]]/[[SN]]/thing/property/get", | |
"qos": "2", | |
"retain": "", | |
"respTopic": "", | |
"contentType": "", | |
"userProps": "", | |
"correl": "", | |
"expiry": "", | |
"broker": "4a025f91e9595714", | |
"x": 990, | |
"y": 860, | |
"wires": [] | |
}, | |
{ | |
"id": "d0662aaa5ced35c4", | |
"type": "encode", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"protofile": "fd04eecb52341faa", | |
"protoType": "MessageFromJson", | |
"x": 620, | |
"y": 860, | |
"wires": [ | |
[ | |
"1050b450dc646a9f" | |
] | |
] | |
}, | |
{ | |
"id": "1981b4272caec0f1", | |
"type": "debug", | |
"z": "5c3a7efbb734c312", | |
"name": "debug 7", | |
"active": false, | |
"tosidebar": true, | |
"console": false, | |
"tostatus": false, | |
"complete": "false", | |
"statusVal": "", | |
"statusType": "auto", | |
"x": 2240, | |
"y": 520, | |
"wires": [] | |
}, | |
{ | |
"id": "668e876f10fa3918", | |
"type": "inject", | |
"z": "5c3a7efbb734c312", | |
"name": "charge_15", | |
"props": [ | |
{ | |
"p": "payload" | |
} | |
], | |
"repeat": "", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"payload": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"int_102\":15},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":3,\"int_11\":1,\"int_14\":148771586,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"payloadType": "json", | |
"x": 340, | |
"y": 1000, | |
"wires": [ | |
[ | |
"1879d2c74d981f0a" | |
] | |
] | |
}, | |
{ | |
"id": "fab3e8f819aca276", | |
"type": "inject", | |
"z": "5c3a7efbb734c312", | |
"name": "charge_90", | |
"props": [ | |
{ | |
"p": "payload" | |
} | |
], | |
"repeat": "", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"payload": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"int_102\":90},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":3,\"int_11\":1,\"int_14\":148771586,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"payloadType": "json", | |
"x": 340, | |
"y": 920, | |
"wires": [ | |
[ | |
"1879d2c74d981f0a" | |
] | |
] | |
}, | |
{ | |
"id": "15622328ecef2318", | |
"type": "decode", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"protofile": "09526bce7b477f38", | |
"protoType": "MessageFromJson", | |
"x": 1560, | |
"y": 520, | |
"wires": [ | |
[ | |
"86e09c3f6d07938c" | |
] | |
] | |
}, | |
{ | |
"id": "86e09c3f6d07938c", | |
"type": "function", | |
"z": "5c3a7efbb734c312", | |
"name": "parser", | |
"func": "// Array of variables to convert (define the path to each variable as a string, excluding the array index)\nlet variablesToConvert = [\n \"NestedsubMesssage_1.batteryLevel\",\n \"NestedsubMesssage_1.acPower\",\n \"NestedsubMesssage_1.acOut\"\n];\n\n// Helper function to access and modify nested properties\nfunction convertFixed32ToFloat(obj, path) {\n let keys = path.split(\".\");\n let lastKey = keys.pop();\n let target = keys.reduce((o, k) => (o && o[k] ? o[k] : undefined), obj);\n\n if (target && target[lastKey] !== undefined) {\n let fixed32Value = target[lastKey];\n let buffer = Buffer.alloc(4);\n buffer.writeUInt32LE(fixed32Value); // Write as little-endian\n let dataView = new DataView(buffer.buffer);\n let floatValue = dataView.getFloat32(0, true); // Convert to float (little-endian)\n target[lastKey] = Math.round(floatValue * 100) / 100; // Round to 2 decimals\n }\n}\n\n// Validate that the array exists\nif (\n msg.payload.subMesssage_1 &&\n Array.isArray(msg.payload.subMesssage_1)\n) {\n // Automatically find the element with the largest NestedsubMesssage_1 (by number of keys)\n let selectedElement = msg.payload.subMesssage_1.reduce((largest, current) => {\n const currentSize = current?.NestedsubMesssage_1 ? Object.keys(current.NestedsubMesssage_1).length : 0;\n const largestSize = largest?.NestedsubMesssage_1 ? Object.keys(largest.NestedsubMesssage_1).length : 0;\n return currentSize > largestSize ? current : largest;\n }, null);\n\n if (selectedElement) {\n // Loop through the variables and convert them for the selected element\n variablesToConvert.forEach(path => {\n convertFixed32ToFloat(selectedElement, path);\n });\n\n // Flatten the selected element for output\n msg.payload = {\n ...selectedElement.NestedsubMesssage_1\n };\n } else {\n msg.payload = { error: \"No valid element found in subMesssage_1.\" };\n }\n} else {\n // Handle the case where the array is invalid\n msg.payload = {\n error: \"subMesssage_1 is not a valid array.\"\n };\n}\n\n// Return the flattened object as the payload\nreturn msg;\n", | |
"outputs": 1, | |
"timeout": 0, | |
"noerr": 0, | |
"initialize": "", | |
"finalize": "", | |
"libs": [], | |
"x": 1710, | |
"y": 520, | |
"wires": [ | |
[ | |
"1981b4272caec0f1", | |
"16d905301a29dbdf", | |
"4df43232664f45b5", | |
"2177e930db19a389", | |
"5adb6177ab992ca0" | |
] | |
] | |
}, | |
{ | |
"id": "ab9e1d2599c501f9", | |
"type": "inject", | |
"z": "5c3a7efbb734c312", | |
"name": "self-powered off", | |
"props": [ | |
{ | |
"p": "payload" | |
} | |
], | |
"repeat": "", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"payload": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"selfpowered_106\":{}},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":3,\"int_11\":1,\"int_14\":148771586,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"payloadType": "json", | |
"x": 320, | |
"y": 860, | |
"wires": [ | |
[ | |
"1879d2c74d981f0a" | |
] | |
] | |
}, | |
{ | |
"id": "2b4391ab6cfa2082", | |
"type": "inject", | |
"z": "5c3a7efbb734c312", | |
"name": "self-powered on", | |
"props": [ | |
{ | |
"p": "payload" | |
} | |
], | |
"repeat": "", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"payload": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"int_26\":0,\"selfpowered_106\":{\"int_1\":1},\"int_138\":0},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":11,\"int_11\":1,\"int_14\":357051739,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"payloadType": "json", | |
"x": 320, | |
"y": 740, | |
"wires": [ | |
[ | |
"1879d2c74d981f0a" | |
] | |
] | |
}, | |
{ | |
"id": "16d905301a29dbdf", | |
"type": "ha-sensor", | |
"z": "5c3a7efbb734c312", | |
"name": "device_a_Battery Level", | |
"entityConfig": "49b4f2bfd1956a24", | |
"version": 0, | |
"state": "payload.batteryLevel", | |
"stateType": "msg", | |
"attributes": [], | |
"inputOverride": "allow", | |
"outputProperties": [], | |
"x": 1950, | |
"y": 700, | |
"wires": [ | |
[ | |
"1981b4272caec0f1" | |
] | |
] | |
}, | |
{ | |
"id": "4df43232664f45b5", | |
"type": "ha-sensor", | |
"z": "5c3a7efbb734c312", | |
"name": "device_a_Charge Target", | |
"entityConfig": "87a97985e13b1458", | |
"version": 0, | |
"state": "payload.target", | |
"stateType": "msg", | |
"attributes": [], | |
"inputOverride": "allow", | |
"outputProperties": [], | |
"x": 1960, | |
"y": 760, | |
"wires": [ | |
[ | |
"1981b4272caec0f1" | |
] | |
] | |
}, | |
{ | |
"id": "dfcac4c65259021a", | |
"type": "ha-switch", | |
"z": "5c3a7efbb734c312", | |
"name": "device_a_self-powered", | |
"version": 0, | |
"debugenabled": false, | |
"inputs": 0, | |
"outputs": 2, | |
"entityConfig": "20ef2d5be7415ccd", | |
"enableInput": false, | |
"outputOnStateChange": true, | |
"outputProperties": [ | |
{ | |
"property": "payload", | |
"propertyType": "msg", | |
"value": "", | |
"valueType": "str" | |
} | |
], | |
"x": 90, | |
"y": 800, | |
"wires": [ | |
[ | |
"14cf1dbdc9323cf5" | |
], | |
[ | |
"168a92bf365a0769" | |
] | |
] | |
}, | |
{ | |
"id": "14cf1dbdc9323cf5", | |
"type": "change", | |
"z": "5c3a7efbb734c312", | |
"name": "self-powered on", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"int_26\":0,\"selfpowered_106\":{\"int_1\":1},\"int_138\":0},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":11,\"int_11\":1,\"int_14\":357051739,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"tot": "json" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 320, | |
"y": 780, | |
"wires": [ | |
[ | |
"1879d2c74d981f0a" | |
] | |
] | |
}, | |
{ | |
"id": "168a92bf365a0769", | |
"type": "change", | |
"z": "5c3a7efbb734c312", | |
"name": "self-powered off", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"selfpowered_106\":{}},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":3,\"int_11\":1,\"int_14\":148771586,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"tot": "json" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 320, | |
"y": 820, | |
"wires": [ | |
[ | |
"1879d2c74d981f0a" | |
] | |
] | |
}, | |
{ | |
"id": "2177e930db19a389", | |
"type": "ha-sensor", | |
"z": "5c3a7efbb734c312", | |
"name": "device_a_AC Power", | |
"entityConfig": "6670dfa7e6a8c02e", | |
"version": 0, | |
"state": "payload.acPower", | |
"stateType": "msg", | |
"attributes": [], | |
"inputOverride": "allow", | |
"outputProperties": [], | |
"x": 1940, | |
"y": 640, | |
"wires": [ | |
[ | |
"1981b4272caec0f1" | |
] | |
] | |
}, | |
{ | |
"id": "18c73ca84e0549a8", | |
"type": "ha-number", | |
"z": "5c3a7efbb734c312", | |
"name": "device_a_charge-target", | |
"version": 1, | |
"debugenabled": false, | |
"inputs": 0, | |
"outputs": 1, | |
"entityConfig": "a0136659e84650bb", | |
"exposeAsEntityConfig": "", | |
"mode": "listen", | |
"value": "payload", | |
"valueType": "msg", | |
"outputProperties": [ | |
{ | |
"property": "payload", | |
"propertyType": "msg", | |
"value": "", | |
"valueType": "value" | |
}, | |
{ | |
"property": "previousValue", | |
"propertyType": "msg", | |
"value": "", | |
"valueType": "previousValue" | |
} | |
], | |
"x": 90, | |
"y": 960, | |
"wires": [ | |
[ | |
"06a42ae752c09211" | |
] | |
] | |
}, | |
{ | |
"id": "06a42ae752c09211", | |
"type": "function", | |
"z": "5c3a7efbb734c312", | |
"name": "charge-target", | |
"func": "// Get the input number from the msg payload\nlet inputNumber = msg.payload;\n\n// Validate the input number and clamp it between 15 and 90\nif (inputNumber < 15) {\n inputNumber = 15;\n} else if (inputNumber > 90) {\n inputNumber = 90;\n}\n\n// Define the JSON structure\nconst jsonResponse = {\n \"subMesssage_1\": {\n \"NestedsubMesssage_1\": {\n \"int_102\": inputNumber // Use the validated input number here\n },\n \"int_2\": 32,\n \"int_3\": 2,\n \"int_4\": 1,\n \"int_5\": 1,\n \"int_8\": 254,\n \"int_9\": 17,\n \"int_10\": 3,\n \"int_11\": 1,\n \"int_14\": 148771586,\n \"int_15\": 1,\n \"int_16\": 19,\n \"int_17\": 1\n }\n};\n\n// Assign the JSON to msg.payload\nmsg.payload = jsonResponse;\n\n// Return the modified msg object\nreturn msg;\n", | |
"outputs": 1, | |
"timeout": 0, | |
"noerr": 0, | |
"initialize": "", | |
"finalize": "", | |
"libs": [], | |
"x": 330, | |
"y": 960, | |
"wires": [ | |
[ | |
"1879d2c74d981f0a" | |
] | |
] | |
}, | |
{ | |
"id": "20d9b6e2c35b70fc", | |
"type": "ha-switch", | |
"z": "5c3a7efbb734c312", | |
"name": "device_a_beep", | |
"version": 0, | |
"debugenabled": false, | |
"inputs": 0, | |
"outputs": 2, | |
"entityConfig": "43ab0950c992e96d", | |
"enableInput": false, | |
"outputOnStateChange": true, | |
"outputProperties": [ | |
{ | |
"property": "payload", | |
"propertyType": "msg", | |
"value": "", | |
"valueType": "str" | |
} | |
], | |
"x": 120, | |
"y": 1140, | |
"wires": [ | |
[ | |
"8d0c4baed56b9bfe" | |
], | |
[ | |
"f591f651b4d2153a" | |
] | |
] | |
}, | |
{ | |
"id": "8d0c4baed56b9bfe", | |
"type": "change", | |
"z": "5c3a7efbb734c312", | |
"name": "beep-on", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"int_9\":1},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":2,\"int_11\":1,\"int_14\":128301330,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"tot": "json" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 340, | |
"y": 1120, | |
"wires": [ | |
[ | |
"1879d2c74d981f0a" | |
] | |
] | |
}, | |
{ | |
"id": "f591f651b4d2153a", | |
"type": "change", | |
"z": "5c3a7efbb734c312", | |
"name": "beep-off", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"int_9\":0},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":2,\"int_11\":1,\"int_14\":128301330,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"tot": "json" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 340, | |
"y": 1160, | |
"wires": [ | |
[ | |
"1879d2c74d981f0a" | |
] | |
] | |
}, | |
{ | |
"id": "5adb6177ab992ca0", | |
"type": "ha-sensor", | |
"z": "5c3a7efbb734c312", | |
"name": "device_a_AC Out", | |
"entityConfig": "9531e396809c4293", | |
"version": 0, | |
"state": "payload.acOut", | |
"stateType": "msg", | |
"attributes": [], | |
"inputOverride": "allow", | |
"outputProperties": [], | |
"x": 1930, | |
"y": 580, | |
"wires": [ | |
[ | |
"1981b4272caec0f1" | |
] | |
] | |
}, | |
{ | |
"id": "61291127c9a9b736", | |
"type": "debug", | |
"z": "5c3a7efbb734c312", | |
"name": "debug 10", | |
"active": false, | |
"tosidebar": true, | |
"console": false, | |
"tostatus": false, | |
"complete": "false", | |
"statusVal": "", | |
"statusType": "auto", | |
"x": 1420, | |
"y": 1440, | |
"wires": [] | |
}, | |
{ | |
"id": "78bcd84f0434c885", | |
"type": "mqtt out", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"topic": "/app/[[APPID]]/[[SN]]/thing/property/set", | |
"qos": "0", | |
"retain": "", | |
"respTopic": "", | |
"contentType": "", | |
"userProps": "", | |
"correl": "", | |
"expiry": "", | |
"broker": "4a025f91e9595714", | |
"x": 990, | |
"y": 1960, | |
"wires": [] | |
}, | |
{ | |
"id": "cbc2dd792fc76a03", | |
"type": "inject", | |
"z": "5c3a7efbb734c312", | |
"name": "beep_on", | |
"props": [ | |
{ | |
"p": "payload" | |
} | |
], | |
"repeat": "", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"payload": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"int_9\":1},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":2,\"int_11\":1,\"int_14\":128301330,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"payloadType": "json", | |
"x": 340, | |
"y": 2060, | |
"wires": [ | |
[ | |
"4afdedfb126c3adb" | |
] | |
] | |
}, | |
{ | |
"id": "79a047ea301467c3", | |
"type": "mqtt in", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"topic": "/app/[[APPID]]/[[SN]]/thing/property/get_reply", | |
"qos": "2", | |
"datatype": "auto-detect", | |
"broker": "4a025f91e9595714", | |
"nl": false, | |
"rap": true, | |
"rh": 0, | |
"inputs": 0, | |
"x": 1010, | |
"y": 1500, | |
"wires": [ | |
[ | |
"61291127c9a9b736", | |
"a3ddcd10a21dabe5" | |
] | |
] | |
}, | |
{ | |
"id": "4afdedfb126c3adb", | |
"type": "encode", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"protofile": "fd04eecb52341faa", | |
"protoType": "MessageFromJson", | |
"x": 620, | |
"y": 1960, | |
"wires": [ | |
[ | |
"78bcd84f0434c885" | |
] | |
] | |
}, | |
{ | |
"id": "d2c67cfa36b8eddd", | |
"type": "inject", | |
"z": "5c3a7efbb734c312", | |
"name": "beep_off", | |
"props": [ | |
{ | |
"p": "payload" | |
} | |
], | |
"repeat": "", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"payload": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"int_9\":0},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":2,\"int_11\":1,\"int_14\":128301330,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"payloadType": "json", | |
"x": 340, | |
"y": 2180, | |
"wires": [ | |
[ | |
"4afdedfb126c3adb" | |
] | |
] | |
}, | |
{ | |
"id": "4c886e6bc42a159d", | |
"type": "inject", | |
"z": "5c3a7efbb734c312", | |
"name": "get", | |
"props": [ | |
{ | |
"p": "payload" | |
} | |
], | |
"repeat": "15", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"payload": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"int_14\":128301340,\"bytes_23\":\"Android\"}}}", | |
"payloadType": "json", | |
"x": 350, | |
"y": 1640, | |
"wires": [ | |
[ | |
"a866568cee5cc41b" | |
] | |
] | |
}, | |
{ | |
"id": "53e91d153c751f3b", | |
"type": "mqtt out", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"topic": "/app/[[APPID]]/[[SN]]/thing/property/get", | |
"qos": "2", | |
"retain": "", | |
"respTopic": "", | |
"contentType": "", | |
"userProps": "", | |
"correl": "", | |
"expiry": "", | |
"broker": "4a025f91e9595714", | |
"x": 990, | |
"y": 1840, | |
"wires": [] | |
}, | |
{ | |
"id": "a866568cee5cc41b", | |
"type": "encode", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"protofile": "fd04eecb52341faa", | |
"protoType": "MessageFromJson", | |
"x": 620, | |
"y": 1840, | |
"wires": [ | |
[ | |
"53e91d153c751f3b" | |
] | |
] | |
}, | |
{ | |
"id": "14915a090ac399a6", | |
"type": "debug", | |
"z": "5c3a7efbb734c312", | |
"name": "debug 13", | |
"active": false, | |
"tosidebar": true, | |
"console": false, | |
"tostatus": false, | |
"complete": "false", | |
"statusVal": "", | |
"statusType": "auto", | |
"x": 2240, | |
"y": 1500, | |
"wires": [] | |
}, | |
{ | |
"id": "3117402a17b4b898", | |
"type": "inject", | |
"z": "5c3a7efbb734c312", | |
"name": "charge_15", | |
"props": [ | |
{ | |
"p": "payload" | |
} | |
], | |
"repeat": "", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"payload": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"int_102\":15},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":3,\"int_11\":1,\"int_14\":148771586,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"payloadType": "json", | |
"x": 340, | |
"y": 1980, | |
"wires": [ | |
[ | |
"4afdedfb126c3adb" | |
] | |
] | |
}, | |
{ | |
"id": "78ab8f746a16080b", | |
"type": "inject", | |
"z": "5c3a7efbb734c312", | |
"name": "charge_90", | |
"props": [ | |
{ | |
"p": "payload" | |
} | |
], | |
"repeat": "", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"payload": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"int_102\":90},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":3,\"int_11\":1,\"int_14\":148771586,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"payloadType": "json", | |
"x": 340, | |
"y": 1900, | |
"wires": [ | |
[ | |
"4afdedfb126c3adb" | |
] | |
] | |
}, | |
{ | |
"id": "a3ddcd10a21dabe5", | |
"type": "decode", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"protofile": "09526bce7b477f38", | |
"protoType": "MessageFromJson", | |
"x": 1560, | |
"y": 1500, | |
"wires": [ | |
[ | |
"2ccc9eebdc8b1c6d" | |
] | |
] | |
}, | |
{ | |
"id": "2ccc9eebdc8b1c6d", | |
"type": "function", | |
"z": "5c3a7efbb734c312", | |
"name": "parser", | |
"func": "// Array of variables to convert (define the path to each variable as a string, excluding the array index)\nlet variablesToConvert = [\n \"NestedsubMesssage_1.batteryLevel\",\n \"NestedsubMesssage_1.acPower\",\n \"NestedsubMesssage_1.acOut\"\n];\n\n// Helper function to access and modify nested properties\nfunction convertFixed32ToFloat(obj, path) {\n let keys = path.split(\".\");\n let lastKey = keys.pop();\n let target = keys.reduce((o, k) => (o && o[k] ? o[k] : undefined), obj);\n\n if (target && target[lastKey] !== undefined) {\n let fixed32Value = target[lastKey];\n let buffer = Buffer.alloc(4);\n buffer.writeUInt32LE(fixed32Value); // Write as little-endian\n let dataView = new DataView(buffer.buffer);\n let floatValue = dataView.getFloat32(0, true); // Convert to float (little-endian)\n target[lastKey] = Math.round(floatValue * 100) / 100; // Round to 2 decimals\n }\n}\n\n// Validate that the array exists\nif (\n msg.payload.subMesssage_1 &&\n Array.isArray(msg.payload.subMesssage_1)\n) {\n // Automatically find the element with the largest NestedsubMesssage_1 (by number of keys)\n let selectedElement = msg.payload.subMesssage_1.reduce((largest, current) => {\n const currentSize = current?.NestedsubMesssage_1 ? Object.keys(current.NestedsubMesssage_1).length : 0;\n const largestSize = largest?.NestedsubMesssage_1 ? Object.keys(largest.NestedsubMesssage_1).length : 0;\n return currentSize > largestSize ? current : largest;\n }, null);\n\n if (selectedElement) {\n // Loop through the variables and convert them for the selected element\n variablesToConvert.forEach(path => {\n convertFixed32ToFloat(selectedElement, path);\n });\n\n // Flatten the selected element for output\n msg.payload = {\n ...selectedElement.NestedsubMesssage_1\n };\n } else {\n msg.payload = { error: \"No valid element found in subMesssage_1.\" };\n }\n} else {\n // Handle the case where the array is invalid\n msg.payload = {\n error: \"subMesssage_1 is not a valid array.\"\n };\n}\n\n// Return the flattened object as the payload\nreturn msg;\n", | |
"outputs": 1, | |
"timeout": 0, | |
"noerr": 0, | |
"initialize": "", | |
"finalize": "", | |
"libs": [], | |
"x": 1710, | |
"y": 1500, | |
"wires": [ | |
[ | |
"14915a090ac399a6", | |
"9cee10300a29e6a9", | |
"1b4d1659ea3a926c", | |
"bada8f8ece2635aa", | |
"43c3e714cd35d499" | |
] | |
] | |
}, | |
{ | |
"id": "b48fdb9a8c3cc648", | |
"type": "inject", | |
"z": "5c3a7efbb734c312", | |
"name": "self-powered off", | |
"props": [ | |
{ | |
"p": "payload" | |
} | |
], | |
"repeat": "", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"payload": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"selfpowered_106\":{}},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":3,\"int_11\":1,\"int_14\":148771586,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"payloadType": "json", | |
"x": 320, | |
"y": 1840, | |
"wires": [ | |
[ | |
"4afdedfb126c3adb" | |
] | |
] | |
}, | |
{ | |
"id": "cdb9de6cfa82de2f", | |
"type": "inject", | |
"z": "5c3a7efbb734c312", | |
"name": "self-powered on", | |
"props": [ | |
{ | |
"p": "payload" | |
} | |
], | |
"repeat": "", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"payload": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"int_26\":0,\"selfpowered_106\":{\"int_1\":1},\"int_138\":0},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":11,\"int_11\":1,\"int_14\":357051739,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"payloadType": "json", | |
"x": 320, | |
"y": 1720, | |
"wires": [ | |
[ | |
"4afdedfb126c3adb" | |
] | |
] | |
}, | |
{ | |
"id": "9cee10300a29e6a9", | |
"type": "ha-sensor", | |
"z": "5c3a7efbb734c312", | |
"name": "device_b_Battery Level", | |
"entityConfig": "dde3390b2670ecca", | |
"version": 0, | |
"state": "payload.batteryLevel", | |
"stateType": "msg", | |
"attributes": [], | |
"inputOverride": "allow", | |
"outputProperties": [], | |
"x": 1950, | |
"y": 1680, | |
"wires": [ | |
[ | |
"14915a090ac399a6" | |
] | |
] | |
}, | |
{ | |
"id": "1b4d1659ea3a926c", | |
"type": "ha-sensor", | |
"z": "5c3a7efbb734c312", | |
"name": "device_b_Charge Target", | |
"entityConfig": "8a7f89d5a9fa7c02", | |
"version": 0, | |
"state": "payload.target", | |
"stateType": "msg", | |
"attributes": [], | |
"inputOverride": "allow", | |
"outputProperties": [], | |
"x": 1950, | |
"y": 1740, | |
"wires": [ | |
[ | |
"14915a090ac399a6" | |
] | |
] | |
}, | |
{ | |
"id": "99b6426401998b0e", | |
"type": "ha-switch", | |
"z": "5c3a7efbb734c312", | |
"name": "device_b_self-powered", | |
"version": 0, | |
"debugenabled": false, | |
"inputs": 0, | |
"outputs": 2, | |
"entityConfig": "0ed3beaf87d1c18b", | |
"enableInput": false, | |
"outputOnStateChange": true, | |
"outputProperties": [ | |
{ | |
"property": "payload", | |
"propertyType": "msg", | |
"value": "", | |
"valueType": "str" | |
} | |
], | |
"x": 90, | |
"y": 1780, | |
"wires": [ | |
[ | |
"63aceac7ccac0171" | |
], | |
[ | |
"d832c92ebdc1011f" | |
] | |
] | |
}, | |
{ | |
"id": "63aceac7ccac0171", | |
"type": "change", | |
"z": "5c3a7efbb734c312", | |
"name": "self-powered on", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"int_26\":0,\"selfpowered_106\":{\"int_1\":1},\"int_138\":0},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":11,\"int_11\":1,\"int_14\":357051739,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"tot": "json" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 320, | |
"y": 1760, | |
"wires": [ | |
[ | |
"4afdedfb126c3adb" | |
] | |
] | |
}, | |
{ | |
"id": "d832c92ebdc1011f", | |
"type": "change", | |
"z": "5c3a7efbb734c312", | |
"name": "self-powered off", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"selfpowered_106\":{}},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":3,\"int_11\":1,\"int_14\":148771586,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"tot": "json" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 320, | |
"y": 1800, | |
"wires": [ | |
[ | |
"4afdedfb126c3adb" | |
] | |
] | |
}, | |
{ | |
"id": "bada8f8ece2635aa", | |
"type": "ha-sensor", | |
"z": "5c3a7efbb734c312", | |
"name": "device_b_AC Power", | |
"entityConfig": "026a8517f7533933", | |
"version": 0, | |
"state": "payload.acPower", | |
"stateType": "msg", | |
"attributes": [], | |
"inputOverride": "allow", | |
"outputProperties": [], | |
"x": 1940, | |
"y": 1620, | |
"wires": [ | |
[ | |
"14915a090ac399a6" | |
] | |
] | |
}, | |
{ | |
"id": "2ebdec0e9dfb2275", | |
"type": "ha-number", | |
"z": "5c3a7efbb734c312", | |
"name": "device_b_charge-target", | |
"version": 1, | |
"debugenabled": false, | |
"inputs": 0, | |
"outputs": 1, | |
"entityConfig": "3c4b70a170c5034c", | |
"exposeAsEntityConfig": "", | |
"mode": "listen", | |
"value": "payload", | |
"valueType": "msg", | |
"outputProperties": [ | |
{ | |
"property": "payload", | |
"propertyType": "msg", | |
"value": "", | |
"valueType": "value" | |
}, | |
{ | |
"property": "previousValue", | |
"propertyType": "msg", | |
"value": "", | |
"valueType": "previousValue" | |
} | |
], | |
"x": 90, | |
"y": 1940, | |
"wires": [ | |
[ | |
"154a232e234fcd68" | |
] | |
] | |
}, | |
{ | |
"id": "154a232e234fcd68", | |
"type": "function", | |
"z": "5c3a7efbb734c312", | |
"name": "charge-target", | |
"func": "// Get the input number from the msg payload\nlet inputNumber = msg.payload;\n\n// Validate the input number and clamp it between 15 and 90\nif (inputNumber < 15) {\n inputNumber = 15;\n} else if (inputNumber > 90) {\n inputNumber = 90;\n}\n\n// Define the JSON structure\nconst jsonResponse = {\n \"subMesssage_1\": {\n \"NestedsubMesssage_1\": {\n \"int_102\": inputNumber // Use the validated input number here\n },\n \"int_2\": 32,\n \"int_3\": 2,\n \"int_4\": 1,\n \"int_5\": 1,\n \"int_8\": 254,\n \"int_9\": 17,\n \"int_10\": 3,\n \"int_11\": 1,\n \"int_14\": 148771586,\n \"int_15\": 1,\n \"int_16\": 19,\n \"int_17\": 1\n }\n};\n\n// Assign the JSON to msg.payload\nmsg.payload = jsonResponse;\n\n// Return the modified msg object\nreturn msg;\n", | |
"outputs": 1, | |
"timeout": 0, | |
"noerr": 0, | |
"initialize": "", | |
"finalize": "", | |
"libs": [], | |
"x": 330, | |
"y": 1940, | |
"wires": [ | |
[ | |
"4afdedfb126c3adb" | |
] | |
] | |
}, | |
{ | |
"id": "e01d4a7f5c8794e8", | |
"type": "ha-switch", | |
"z": "5c3a7efbb734c312", | |
"name": "device_b_beep", | |
"version": 0, | |
"debugenabled": false, | |
"inputs": 0, | |
"outputs": 2, | |
"entityConfig": "3631ea3e83d0c784", | |
"enableInput": false, | |
"outputOnStateChange": true, | |
"outputProperties": [ | |
{ | |
"property": "payload", | |
"propertyType": "msg", | |
"value": "", | |
"valueType": "str" | |
} | |
], | |
"x": 120, | |
"y": 2120, | |
"wires": [ | |
[ | |
"da187d62e67d4740" | |
], | |
[ | |
"0db6d726d44ba972" | |
] | |
] | |
}, | |
{ | |
"id": "da187d62e67d4740", | |
"type": "change", | |
"z": "5c3a7efbb734c312", | |
"name": "beep-on", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"int_9\":1},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":2,\"int_11\":1,\"int_14\":128301330,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"tot": "json" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 340, | |
"y": 2100, | |
"wires": [ | |
[ | |
"4afdedfb126c3adb" | |
] | |
] | |
}, | |
{ | |
"id": "0db6d726d44ba972", | |
"type": "change", | |
"z": "5c3a7efbb734c312", | |
"name": "beep-off", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"int_9\":0},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":2,\"int_11\":1,\"int_14\":128301330,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"tot": "json" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 340, | |
"y": 2140, | |
"wires": [ | |
[ | |
"4afdedfb126c3adb" | |
] | |
] | |
}, | |
{ | |
"id": "43c3e714cd35d499", | |
"type": "ha-sensor", | |
"z": "5c3a7efbb734c312", | |
"name": "device_b_AC Out", | |
"entityConfig": "2a388ed5ce9b5e60", | |
"version": 0, | |
"state": "payload.acOut", | |
"stateType": "msg", | |
"attributes": [], | |
"inputOverride": "allow", | |
"outputProperties": [], | |
"x": 1930, | |
"y": 1560, | |
"wires": [ | |
[ | |
"14915a090ac399a6" | |
] | |
] | |
}, | |
{ | |
"id": "2c1452e5064f0d52", | |
"type": "mqtt in", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"topic": "/app/[[APPID]]/[[SN]]/thing/property/get_reply", | |
"qos": "2", | |
"datatype": "base64", | |
"broker": "4a025f91e9595714", | |
"nl": false, | |
"rap": true, | |
"rh": 0, | |
"inputs": 0, | |
"x": 1010, | |
"y": 1440, | |
"wires": [ | |
[ | |
"61291127c9a9b736" | |
] | |
] | |
}, | |
{ | |
"id": "40899d5bf070eb87", | |
"type": "mqtt out", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"topic": "/app/[[APPID]]/[[SN]]/thing/property/set", | |
"qos": "0", | |
"retain": "", | |
"respTopic": "", | |
"contentType": "", | |
"userProps": "", | |
"correl": "", | |
"expiry": "", | |
"broker": "4a025f91e9595714", | |
"x": 990, | |
"y": 2640, | |
"wires": [] | |
}, | |
{ | |
"id": "e7b270e459122203", | |
"type": "inject", | |
"z": "5c3a7efbb734c312", | |
"name": "beep_on", | |
"props": [ | |
{ | |
"p": "payload" | |
} | |
], | |
"repeat": "", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"payload": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"int_9\":1},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":2,\"int_11\":1,\"int_14\":128301330,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"payloadType": "json", | |
"x": 340, | |
"y": 2740, | |
"wires": [ | |
[ | |
"0df3e8fca92c4338" | |
] | |
] | |
}, | |
{ | |
"id": "0df3e8fca92c4338", | |
"type": "encode", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"protofile": "fd04eecb52341faa", | |
"protoType": "MessageFromJson", | |
"x": 620, | |
"y": 2640, | |
"wires": [ | |
[ | |
"40899d5bf070eb87" | |
] | |
] | |
}, | |
{ | |
"id": "da568bf8284dcb21", | |
"type": "inject", | |
"z": "5c3a7efbb734c312", | |
"name": "beep_off", | |
"props": [ | |
{ | |
"p": "payload" | |
} | |
], | |
"repeat": "", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"payload": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"int_9\":0},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":2,\"int_11\":1,\"int_14\":128301330,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"payloadType": "json", | |
"x": 340, | |
"y": 2860, | |
"wires": [ | |
[ | |
"0df3e8fca92c4338" | |
] | |
] | |
}, | |
{ | |
"id": "206aee2b11b63f84", | |
"type": "inject", | |
"z": "5c3a7efbb734c312", | |
"name": "get", | |
"props": [ | |
{ | |
"p": "payload" | |
} | |
], | |
"repeat": "15", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"payload": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"int_14\":128301340,\"bytes_23\":\"Android\"}}}", | |
"payloadType": "json", | |
"x": 350, | |
"y": 2320, | |
"wires": [ | |
[ | |
"e48d93fa9bd1dede" | |
] | |
] | |
}, | |
{ | |
"id": "c041d0230aae2212", | |
"type": "mqtt out", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"topic": "/app/[[APPID]]/[[SN]]/thing/property/get", | |
"qos": "2", | |
"retain": "", | |
"respTopic": "", | |
"contentType": "", | |
"userProps": "", | |
"correl": "", | |
"expiry": "", | |
"broker": "4a025f91e9595714", | |
"x": 990, | |
"y": 2520, | |
"wires": [] | |
}, | |
{ | |
"id": "e48d93fa9bd1dede", | |
"type": "encode", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"protofile": "fd04eecb52341faa", | |
"protoType": "MessageFromJson", | |
"x": 620, | |
"y": 2520, | |
"wires": [ | |
[ | |
"c041d0230aae2212" | |
] | |
] | |
}, | |
{ | |
"id": "9d19d00006660558", | |
"type": "inject", | |
"z": "5c3a7efbb734c312", | |
"name": "charge_15", | |
"props": [ | |
{ | |
"p": "payload" | |
} | |
], | |
"repeat": "", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"payload": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"int_102\":15},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":3,\"int_11\":1,\"int_14\":148771586,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"payloadType": "json", | |
"x": 340, | |
"y": 2660, | |
"wires": [ | |
[ | |
"0df3e8fca92c4338" | |
] | |
] | |
}, | |
{ | |
"id": "9c7d06381f17ec47", | |
"type": "inject", | |
"z": "5c3a7efbb734c312", | |
"name": "charge_90", | |
"props": [ | |
{ | |
"p": "payload" | |
} | |
], | |
"repeat": "", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"payload": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"int_102\":90},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":3,\"int_11\":1,\"int_14\":148771586,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"payloadType": "json", | |
"x": 340, | |
"y": 2580, | |
"wires": [ | |
[ | |
"0df3e8fca92c4338" | |
] | |
] | |
}, | |
{ | |
"id": "606d09cff852da57", | |
"type": "inject", | |
"z": "5c3a7efbb734c312", | |
"name": "self-powered off", | |
"props": [ | |
{ | |
"p": "payload" | |
} | |
], | |
"repeat": "", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"payload": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"selfpowered_106\":{}},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":3,\"int_11\":1,\"int_14\":148771586,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"payloadType": "json", | |
"x": 320, | |
"y": 2520, | |
"wires": [ | |
[ | |
"0df3e8fca92c4338" | |
] | |
] | |
}, | |
{ | |
"id": "0c965edcfaee92e2", | |
"type": "inject", | |
"z": "5c3a7efbb734c312", | |
"name": "self-powered on", | |
"props": [ | |
{ | |
"p": "payload" | |
} | |
], | |
"repeat": "", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"payload": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"int_26\":0,\"selfpowered_106\":{\"int_1\":1},\"int_138\":0},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":11,\"int_11\":1,\"int_14\":357051739,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"payloadType": "json", | |
"x": 320, | |
"y": 2400, | |
"wires": [ | |
[ | |
"0df3e8fca92c4338" | |
] | |
] | |
}, | |
{ | |
"id": "2a75e18e8370d8dc", | |
"type": "ha-switch", | |
"z": "5c3a7efbb734c312", | |
"name": "game-room_self-powered", | |
"version": 0, | |
"debugenabled": false, | |
"inputs": 0, | |
"outputs": 2, | |
"entityConfig": "0ed3beaf87d1c18b", | |
"enableInput": false, | |
"outputOnStateChange": true, | |
"outputProperties": [ | |
{ | |
"property": "payload", | |
"propertyType": "msg", | |
"value": "", | |
"valueType": "str" | |
} | |
], | |
"x": 110, | |
"y": 2460, | |
"wires": [ | |
[ | |
"d58f942610d15d41" | |
], | |
[ | |
"36b8aa2e46921246" | |
] | |
] | |
}, | |
{ | |
"id": "d58f942610d15d41", | |
"type": "change", | |
"z": "5c3a7efbb734c312", | |
"name": "self-powered on", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"int_26\":0,\"selfpowered_106\":{\"int_1\":1},\"int_138\":0},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":11,\"int_11\":1,\"int_14\":357051739,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"tot": "json" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 320, | |
"y": 2440, | |
"wires": [ | |
[ | |
"0df3e8fca92c4338" | |
] | |
] | |
}, | |
{ | |
"id": "36b8aa2e46921246", | |
"type": "change", | |
"z": "5c3a7efbb734c312", | |
"name": "self-powered off", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"selfpowered_106\":{}},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":3,\"int_11\":1,\"int_14\":148771586,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"tot": "json" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 320, | |
"y": 2480, | |
"wires": [ | |
[ | |
"0df3e8fca92c4338" | |
] | |
] | |
}, | |
{ | |
"id": "a8889aac5fe8adba", | |
"type": "ha-number", | |
"z": "5c3a7efbb734c312", | |
"name": "game_room_charge-target", | |
"version": 1, | |
"debugenabled": false, | |
"inputs": 0, | |
"outputs": 1, | |
"entityConfig": "6d6efedc5ce72e03", | |
"exposeAsEntityConfig": "", | |
"mode": "listen", | |
"value": "payload", | |
"valueType": "msg", | |
"outputProperties": [ | |
{ | |
"property": "payload", | |
"propertyType": "msg", | |
"value": "", | |
"valueType": "value" | |
}, | |
{ | |
"property": "previousValue", | |
"propertyType": "msg", | |
"value": "", | |
"valueType": "previousValue" | |
} | |
], | |
"x": 110, | |
"y": 2620, | |
"wires": [ | |
[ | |
"a0e3545c22e94120" | |
] | |
] | |
}, | |
{ | |
"id": "a0e3545c22e94120", | |
"type": "function", | |
"z": "5c3a7efbb734c312", | |
"name": "charge-target", | |
"func": "// Get the input number from the msg payload\nlet inputNumber = msg.payload;\n\n// Validate the input number and clamp it between 15 and 90\nif (inputNumber < 15) {\n inputNumber = 15;\n} else if (inputNumber > 90) {\n inputNumber = 90;\n}\n\n// Define the JSON structure\nconst jsonResponse = {\n \"subMesssage_1\": {\n \"NestedsubMesssage_1\": {\n \"int_102\": inputNumber // Use the validated input number here\n },\n \"int_2\": 32,\n \"int_3\": 2,\n \"int_4\": 1,\n \"int_5\": 1,\n \"int_8\": 254,\n \"int_9\": 17,\n \"int_10\": 3,\n \"int_11\": 1,\n \"int_14\": 148771586,\n \"int_15\": 1,\n \"int_16\": 19,\n \"int_17\": 1\n }\n};\n\n// Assign the JSON to msg.payload\nmsg.payload = jsonResponse;\n\n// Return the modified msg object\nreturn msg;\n", | |
"outputs": 1, | |
"timeout": 0, | |
"noerr": 0, | |
"initialize": "", | |
"finalize": "", | |
"libs": [], | |
"x": 330, | |
"y": 2620, | |
"wires": [ | |
[ | |
"0df3e8fca92c4338" | |
] | |
] | |
}, | |
{ | |
"id": "c87da4bdf1d50ee0", | |
"type": "ha-switch", | |
"z": "5c3a7efbb734c312", | |
"name": "game_romm_beep", | |
"version": 0, | |
"debugenabled": false, | |
"inputs": 0, | |
"outputs": 2, | |
"entityConfig": "7780b0daa4506eb3", | |
"enableInput": false, | |
"outputOnStateChange": true, | |
"outputProperties": [ | |
{ | |
"property": "payload", | |
"propertyType": "msg", | |
"value": "", | |
"valueType": "str" | |
} | |
], | |
"x": 150, | |
"y": 2800, | |
"wires": [ | |
[ | |
"84ef3666b4918b11" | |
], | |
[ | |
"7797631b8793f548" | |
] | |
] | |
}, | |
{ | |
"id": "84ef3666b4918b11", | |
"type": "change", | |
"z": "5c3a7efbb734c312", | |
"name": "beep-on", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"int_9\":1},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":2,\"int_11\":1,\"int_14\":128301330,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"tot": "json" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 340, | |
"y": 2780, | |
"wires": [ | |
[ | |
"0df3e8fca92c4338" | |
] | |
] | |
}, | |
{ | |
"id": "7797631b8793f548", | |
"type": "change", | |
"z": "5c3a7efbb734c312", | |
"name": "beep-off", | |
"rules": [ | |
{ | |
"t": "set", | |
"p": "payload", | |
"pt": "msg", | |
"to": "{\"subMesssage_1\":{\"NestedsubMesssage_1\":{\"int_9\":0},\"int_2\":32,\"int_3\":2,\"int_4\":1,\"int_5\":1,\"int_8\":254,\"int_9\":17,\"int_10\":2,\"int_11\":1,\"int_14\":128301330,\"int_15\":1,\"int_16\":19,\"int_17\":1}}", | |
"tot": "json" | |
} | |
], | |
"action": "", | |
"property": "", | |
"from": "", | |
"to": "", | |
"reg": false, | |
"x": 340, | |
"y": 2820, | |
"wires": [ | |
[ | |
"0df3e8fca92c4338" | |
] | |
] | |
}, | |
{ | |
"id": "86fd2954650666b0", | |
"type": "debug", | |
"z": "5c3a7efbb734c312", | |
"name": "debug 14", | |
"active": false, | |
"tosidebar": true, | |
"console": false, | |
"tostatus": false, | |
"complete": "false", | |
"statusVal": "", | |
"statusType": "auto", | |
"x": 1380, | |
"y": 2380, | |
"wires": [] | |
}, | |
{ | |
"id": "384d158b61792940", | |
"type": "mqtt in", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"topic": "/app/[[APPID]]/[[SN]]/thing/property/get_reply", | |
"qos": "2", | |
"datatype": "auto-detect", | |
"broker": "4a025f91e9595714", | |
"nl": false, | |
"rap": true, | |
"rh": 0, | |
"inputs": 0, | |
"x": 970, | |
"y": 2440, | |
"wires": [ | |
[ | |
"86fd2954650666b0", | |
"26d30e88ae82ce2e" | |
] | |
] | |
}, | |
{ | |
"id": "d0116386713bae5c", | |
"type": "debug", | |
"z": "5c3a7efbb734c312", | |
"name": "debug 15", | |
"active": false, | |
"tosidebar": true, | |
"console": false, | |
"tostatus": false, | |
"complete": "false", | |
"statusVal": "", | |
"statusType": "auto", | |
"x": 2260, | |
"y": 2440, | |
"wires": [] | |
}, | |
{ | |
"id": "26d30e88ae82ce2e", | |
"type": "decode", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"protofile": "09526bce7b477f38", | |
"protoType": "MessageFromJson", | |
"x": 1520, | |
"y": 2440, | |
"wires": [ | |
[ | |
"549457785dda7568", | |
"d0116386713bae5c" | |
] | |
] | |
}, | |
{ | |
"id": "549457785dda7568", | |
"type": "function", | |
"z": "5c3a7efbb734c312", | |
"name": "parser", | |
"func": "// Array of variables to convert (define the path to each variable as a string, excluding the array index)\nlet variablesToConvert = [\n \"NestedsubMesssage_1.batteryLevel\",\n \"NestedsubMesssage_1.acPower\",\n \"NestedsubMesssage_1.acOut\"\n];\n\n// Helper function to access and modify nested properties\nfunction convertFixed32ToFloat(obj, path) {\n let keys = path.split(\".\");\n let lastKey = keys.pop();\n let target = keys.reduce((o, k) => (o && o[k] ? o[k] : undefined), obj);\n\n if (target && target[lastKey] !== undefined) {\n let fixed32Value = target[lastKey];\n let buffer = Buffer.alloc(4);\n buffer.writeUInt32LE(fixed32Value); // Write as little-endian\n let dataView = new DataView(buffer.buffer);\n let floatValue = dataView.getFloat32(0, true); // Convert to float (little-endian)\n target[lastKey] = Math.round(floatValue * 100) / 100; // Round to 2 decimals\n }\n}\n\n// Validate that the array exists\nif (\n msg.payload.subMesssage_1 &&\n Array.isArray(msg.payload.subMesssage_1)\n) {\n // Automatically find the element with the largest NestedsubMesssage_1 (by number of keys)\n let selectedElement = msg.payload.subMesssage_1.reduce((largest, current) => {\n const currentSize = current?.NestedsubMesssage_1 ? Object.keys(current.NestedsubMesssage_1).length : 0;\n const largestSize = largest?.NestedsubMesssage_1 ? Object.keys(largest.NestedsubMesssage_1).length : 0;\n return currentSize > largestSize ? current : largest;\n }, null);\n\n if (selectedElement) {\n // Loop through the variables and convert them for the selected element\n variablesToConvert.forEach(path => {\n convertFixed32ToFloat(selectedElement, path);\n });\n\n // Flatten the selected element for output\n msg.payload = {\n ...selectedElement.NestedsubMesssage_1\n };\n } else {\n msg.payload = { error: \"No valid element found in subMesssage_1.\" };\n }\n} else {\n // Handle the case where the array is invalid\n msg.payload = {\n error: \"subMesssage_1 is not a valid array.\"\n };\n}\n\n// Return the flattened object as the payload\nreturn msg;\n", | |
"outputs": 1, | |
"timeout": 0, | |
"noerr": 0, | |
"initialize": "", | |
"finalize": "", | |
"libs": [], | |
"x": 1670, | |
"y": 2440, | |
"wires": [ | |
[ | |
"d0116386713bae5c", | |
"0c4901bd2280a3d7", | |
"45baf5736570e2ad", | |
"329113f3c0c5de18", | |
"e0919f7e1a368afa" | |
] | |
] | |
}, | |
{ | |
"id": "0c4901bd2280a3d7", | |
"type": "ha-sensor", | |
"z": "5c3a7efbb734c312", | |
"name": "game_room_Battery Level", | |
"entityConfig": "7151f98c7353537a", | |
"version": 0, | |
"state": "payload.batteryLevel", | |
"stateType": "msg", | |
"attributes": [], | |
"inputOverride": "allow", | |
"outputProperties": [], | |
"x": 1940, | |
"y": 2620, | |
"wires": [ | |
[ | |
"d0116386713bae5c" | |
] | |
] | |
}, | |
{ | |
"id": "45baf5736570e2ad", | |
"type": "ha-sensor", | |
"z": "5c3a7efbb734c312", | |
"name": "game_room_Charge Target", | |
"entityConfig": "441b901f84dcda6f", | |
"version": 0, | |
"state": "payload.target", | |
"stateType": "msg", | |
"attributes": [], | |
"inputOverride": "allow", | |
"outputProperties": [], | |
"x": 1940, | |
"y": 2680, | |
"wires": [ | |
[ | |
"d0116386713bae5c" | |
] | |
] | |
}, | |
{ | |
"id": "329113f3c0c5de18", | |
"type": "ha-sensor", | |
"z": "5c3a7efbb734c312", | |
"name": "game_room_AC Power", | |
"entityConfig": "0f0fe1c43b8f4534", | |
"version": 0, | |
"state": "payload.acPower", | |
"stateType": "msg", | |
"attributes": [], | |
"inputOverride": "allow", | |
"outputProperties": [], | |
"x": 1930, | |
"y": 2560, | |
"wires": [ | |
[ | |
"d0116386713bae5c" | |
] | |
] | |
}, | |
{ | |
"id": "e0919f7e1a368afa", | |
"type": "ha-sensor", | |
"z": "5c3a7efbb734c312", | |
"name": "game_room_AC Out", | |
"entityConfig": "859ef31dd27d08ad", | |
"version": 0, | |
"state": "payload.acOut", | |
"stateType": "msg", | |
"attributes": [], | |
"inputOverride": "allow", | |
"outputProperties": [], | |
"x": 1920, | |
"y": 2500, | |
"wires": [ | |
[ | |
"d0116386713bae5c" | |
] | |
] | |
}, | |
{ | |
"id": "fd881a468a285660", | |
"type": "mqtt in", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"topic": "/app/[[APPID]]/[[SN]]/thing/property/get_reply", | |
"qos": "2", | |
"datatype": "base64", | |
"broker": "4a025f91e9595714", | |
"nl": false, | |
"rap": true, | |
"rh": 0, | |
"inputs": 0, | |
"x": 970, | |
"y": 2380, | |
"wires": [ | |
[ | |
"86fd2954650666b0" | |
] | |
] | |
}, | |
{ | |
"id": "671e0ceff575862c", | |
"type": "inject", | |
"z": "5c3a7efbb734c312", | |
"name": "disconnect", | |
"props": [ | |
{ | |
"p": "action", | |
"v": "disconnect", | |
"vt": "str" | |
}, | |
{ | |
"p": "topic", | |
"vt": "str" | |
} | |
], | |
"repeat": "", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"x": 340, | |
"y": 580, | |
"wires": [ | |
[ | |
"d5d7e8960ba14429" | |
] | |
] | |
}, | |
{ | |
"id": "5b6c19b0a776f928", | |
"type": "mqtt in", | |
"z": "5c3a7efbb734c312", | |
"name": "", | |
"topic": "/app/device/status/[[SN]]", | |
"qos": "2", | |
"datatype": "base64", | |
"broker": "4a025f91e9595714", | |
"nl": false, | |
"rap": true, | |
"rh": 0, | |
"inputs": 0, | |
"x": 900, | |
"y": 220, | |
"wires": [ | |
[ | |
"c8d401ac3c0d530b" | |
] | |
] | |
}, | |
{ | |
"id": "4a025f91e9595714", | |
"type": "mqtt-broker", | |
"name": "ecoflow", | |
"broker": "mqtts://mqtt.ecoflow.com:8883", | |
"port": "8883", | |
"clientid": "ANDROID_58AC938C-00B3-4635-8D83-D0575E20C8B7_[[APPID]]", | |
"autoConnect": false, | |
"usetls": false, | |
"protocolVersion": "4", | |
"keepalive": "60", | |
"cleansession": true, | |
"autoUnsubscribe": true, | |
"birthTopic": "", | |
"birthQos": "0", | |
"birthRetain": "false", | |
"birthPayload": "", | |
"birthMsg": {}, | |
"closeTopic": "", | |
"closeQos": "0", | |
"closeRetain": "false", | |
"closePayload": "", | |
"closeMsg": {}, | |
"willTopic": "", | |
"willQos": "0", | |
"willRetain": "false", | |
"willPayload": "", | |
"willMsg": {}, | |
"userProps": "", | |
"sessionExpiry": "" | |
}, | |
{ | |
"id": "fd04eecb52341faa", | |
"type": "protobuf-file", | |
"protopath": "/homeassistant/www/get-delta3.proto", | |
"watchFile": true, | |
"keepCase": false | |
}, | |
{ | |
"id": "09526bce7b477f38", | |
"type": "protobuf-file", | |
"protopath": "/homeassistant/www/decodev2-delta3.proto", | |
"watchFile": true, | |
"keepCase": false | |
}, | |
{ | |
"id": "49b4f2bfd1956a24", | |
"type": "ha-entity-config", | |
"server": "399b9507.fdb0ea", | |
"deviceConfig": "5953bb61763c4552", | |
"name": "device_a_Battery Level", | |
"version": "6", | |
"entityType": "sensor", | |
"haConfig": [ | |
{ | |
"property": "name", | |
"value": "Battery Level" | |
}, | |
{ | |
"property": "icon", | |
"value": "" | |
}, | |
{ | |
"property": "entity_picture", | |
"value": "" | |
}, | |
{ | |
"property": "entity_category", | |
"value": "diagnostic" | |
}, | |
{ | |
"property": "device_class", | |
"value": "battery" | |
}, | |
{ | |
"property": "unit_of_measurement", | |
"value": "%" | |
}, | |
{ | |
"property": "state_class", | |
"value": "measurement" | |
} | |
], | |
"resend": false, | |
"debugEnabled": false | |
}, | |
{ | |
"id": "87a97985e13b1458", | |
"type": "ha-entity-config", | |
"server": "399b9507.fdb0ea", | |
"deviceConfig": "5953bb61763c4552", | |
"name": "device_a_Charge Target", | |
"version": "6", | |
"entityType": "sensor", | |
"haConfig": [ | |
{ | |
"property": "name", | |
"value": "Charge Target" | |
}, | |
{ | |
"property": "icon", | |
"value": "" | |
}, | |
{ | |
"property": "entity_picture", | |
"value": "" | |
}, | |
{ | |
"property": "entity_category", | |
"value": "diagnostic" | |
}, | |
{ | |
"property": "device_class", | |
"value": "" | |
}, | |
{ | |
"property": "unit_of_measurement", | |
"value": "%" | |
}, | |
{ | |
"property": "state_class", | |
"value": "" | |
} | |
], | |
"resend": false, | |
"debugEnabled": false | |
}, | |
{ | |
"id": "20ef2d5be7415ccd", | |
"type": "ha-entity-config", | |
"server": "399b9507.fdb0ea", | |
"deviceConfig": "5953bb61763c4552", | |
"name": "device_a_self-powered", | |
"version": "6", | |
"entityType": "switch", | |
"haConfig": [ | |
{ | |
"property": "name", | |
"value": "self-powered" | |
}, | |
{ | |
"property": "icon", | |
"value": "" | |
}, | |
{ | |
"property": "entity_picture", | |
"value": "" | |
}, | |
{ | |
"property": "entity_category", | |
"value": "config" | |
}, | |
{ | |
"property": "device_class", | |
"value": "" | |
} | |
], | |
"resend": false, | |
"debugEnabled": false | |
}, | |
{ | |
"id": "6670dfa7e6a8c02e", | |
"type": "ha-entity-config", | |
"server": "399b9507.fdb0ea", | |
"deviceConfig": "5953bb61763c4552", | |
"name": "device_a_AC Power", | |
"version": "6", | |
"entityType": "sensor", | |
"haConfig": [ | |
{ | |
"property": "name", | |
"value": "AC Power" | |
}, | |
{ | |
"property": "icon", | |
"value": "" | |
}, | |
{ | |
"property": "entity_picture", | |
"value": "" | |
}, | |
{ | |
"property": "entity_category", | |
"value": "diagnostic" | |
}, | |
{ | |
"property": "device_class", | |
"value": "energy" | |
}, | |
{ | |
"property": "unit_of_measurement", | |
"value": "Wh" | |
}, | |
{ | |
"property": "state_class", | |
"value": "measurement" | |
} | |
], | |
"resend": false, | |
"debugEnabled": false | |
}, | |
{ | |
"id": "a0136659e84650bb", | |
"type": "ha-entity-config", | |
"server": "399b9507.fdb0ea", | |
"deviceConfig": "5953bb61763c4552", | |
"name": "device_a_charge-target", | |
"version": "6", | |
"entityType": "number", | |
"haConfig": [ | |
{ | |
"property": "name", | |
"value": "charge-target" | |
}, | |
{ | |
"property": "icon", | |
"value": "" | |
}, | |
{ | |
"property": "entity_picture", | |
"value": "" | |
}, | |
{ | |
"property": "entity_category", | |
"value": "config" | |
}, | |
{ | |
"property": "device_class", | |
"value": "" | |
}, | |
{ | |
"property": "unit_of_measurement", | |
"value": "%" | |
}, | |
{ | |
"property": "min_value", | |
"value": 15 | |
}, | |
{ | |
"property": "max_value", | |
"value": 90 | |
}, | |
{ | |
"property": "step_value", | |
"value": 1 | |
}, | |
{ | |
"property": "mode", | |
"value": "auto" | |
} | |
], | |
"resend": false, | |
"debugEnabled": false | |
}, | |
{ | |
"id": "43ab0950c992e96d", | |
"type": "ha-entity-config", | |
"server": "399b9507.fdb0ea", | |
"deviceConfig": "5953bb61763c4552", | |
"name": "device_a_beep", | |
"version": "6", | |
"entityType": "switch", | |
"haConfig": [ | |
{ | |
"property": "name", | |
"value": "Beep" | |
}, | |
{ | |
"property": "icon", | |
"value": "" | |
}, | |
{ | |
"property": "entity_picture", | |
"value": "" | |
}, | |
{ | |
"property": "entity_category", | |
"value": "config" | |
}, | |
{ | |
"property": "device_class", | |
"value": "" | |
} | |
], | |
"resend": false, | |
"debugEnabled": false | |
}, | |
{ | |
"id": "9531e396809c4293", | |
"type": "ha-entity-config", | |
"server": "399b9507.fdb0ea", | |
"deviceConfig": "5953bb61763c4552", | |
"name": "device_a_AC Out", | |
"version": "6", | |
"entityType": "sensor", | |
"haConfig": [ | |
{ | |
"property": "name", | |
"value": "AC Out" | |
}, | |
{ | |
"property": "icon", | |
"value": "" | |
}, | |
{ | |
"property": "entity_picture", | |
"value": "" | |
}, | |
{ | |
"property": "entity_category", | |
"value": "diagnostic" | |
}, | |
{ | |
"property": "device_class", | |
"value": "energy" | |
}, | |
{ | |
"property": "unit_of_measurement", | |
"value": "Wh" | |
}, | |
{ | |
"property": "state_class", | |
"value": "measurement" | |
} | |
], | |
"resend": false, | |
"debugEnabled": false | |
}, | |
{ | |
"id": "dde3390b2670ecca", | |
"type": "ha-entity-config", | |
"server": "399b9507.fdb0ea", | |
"deviceConfig": "65845f97489716d9", | |
"name": "device_b_Battery Level", | |
"version": "6", | |
"entityType": "sensor", | |
"haConfig": [ | |
{ | |
"property": "name", | |
"value": "Battery Level" | |
}, | |
{ | |
"property": "icon", | |
"value": "" | |
}, | |
{ | |
"property": "entity_picture", | |
"value": "" | |
}, | |
{ | |
"property": "entity_category", | |
"value": "diagnostic" | |
}, | |
{ | |
"property": "device_class", | |
"value": "battery" | |
}, | |
{ | |
"property": "unit_of_measurement", | |
"value": "%" | |
}, | |
{ | |
"property": "state_class", | |
"value": "measurement" | |
} | |
], | |
"resend": false, | |
"debugEnabled": false | |
}, | |
{ | |
"id": "8a7f89d5a9fa7c02", | |
"type": "ha-entity-config", | |
"server": "399b9507.fdb0ea", | |
"deviceConfig": "65845f97489716d9", | |
"name": "device_b_Charge Target", | |
"version": "6", | |
"entityType": "sensor", | |
"haConfig": [ | |
{ | |
"property": "name", | |
"value": "Charge Target" | |
}, | |
{ | |
"property": "icon", | |
"value": "" | |
}, | |
{ | |
"property": "entity_picture", | |
"value": "" | |
}, | |
{ | |
"property": "entity_category", | |
"value": "diagnostic" | |
}, | |
{ | |
"property": "device_class", | |
"value": "" | |
}, | |
{ | |
"property": "unit_of_measurement", | |
"value": "%" | |
}, | |
{ | |
"property": "state_class", | |
"value": "" | |
} | |
], | |
"resend": false, | |
"debugEnabled": false | |
}, | |
{ | |
"id": "0ed3beaf87d1c18b", | |
"type": "ha-entity-config", | |
"server": "399b9507.fdb0ea", | |
"deviceConfig": "295aed1158103b7f", | |
"name": "game-room_self-powered", | |
"version": "6", | |
"entityType": "switch", | |
"haConfig": [ | |
{ | |
"property": "name", | |
"value": "self-powered" | |
}, | |
{ | |
"property": "icon", | |
"value": "" | |
}, | |
{ | |
"property": "entity_picture", | |
"value": "" | |
}, | |
{ | |
"property": "entity_category", | |
"value": "" | |
}, | |
{ | |
"property": "device_class", | |
"value": "switch" | |
} | |
], | |
"resend": false, | |
"debugEnabled": false | |
}, | |
{ | |
"id": "026a8517f7533933", | |
"type": "ha-entity-config", | |
"server": "399b9507.fdb0ea", | |
"deviceConfig": "65845f97489716d9", | |
"name": "device_b_AC Power", | |
"version": "6", | |
"entityType": "sensor", | |
"haConfig": [ | |
{ | |
"property": "name", | |
"value": "AC Power" | |
}, | |
{ | |
"property": "icon", | |
"value": "" | |
}, | |
{ | |
"property": "entity_picture", | |
"value": "" | |
}, | |
{ | |
"property": "entity_category", | |
"value": "diagnostic" | |
}, | |
{ | |
"property": "device_class", | |
"value": "energy" | |
}, | |
{ | |
"property": "unit_of_measurement", | |
"value": "Wh" | |
}, | |
{ | |
"property": "state_class", | |
"value": "measurement" | |
} | |
], | |
"resend": false, | |
"debugEnabled": false | |
}, | |
{ | |
"id": "3c4b70a170c5034c", | |
"type": "ha-entity-config", | |
"server": "399b9507.fdb0ea", | |
"deviceConfig": "65845f97489716d9", | |
"name": "device_b_charge-target", | |
"version": "6", | |
"entityType": "number", | |
"haConfig": [ | |
{ | |
"property": "name", | |
"value": "charge-target" | |
}, | |
{ | |
"property": "icon", | |
"value": "" | |
}, | |
{ | |
"property": "entity_picture", | |
"value": "" | |
}, | |
{ | |
"property": "entity_category", | |
"value": "config" | |
}, | |
{ | |
"property": "device_class", | |
"value": "" | |
}, | |
{ | |
"property": "unit_of_measurement", | |
"value": "%" | |
}, | |
{ | |
"property": "min_value", | |
"value": 15 | |
}, | |
{ | |
"property": "max_value", | |
"value": 90 | |
}, | |
{ | |
"property": "step_value", | |
"value": 1 | |
}, | |
{ | |
"property": "mode", | |
"value": "slider" | |
} | |
], | |
"resend": false, | |
"debugEnabled": false | |
}, | |
{ | |
"id": "3631ea3e83d0c784", | |
"type": "ha-entity-config", | |
"server": "399b9507.fdb0ea", | |
"deviceConfig": "65845f97489716d9", | |
"name": "device_b_beep", | |
"version": "6", | |
"entityType": "switch", | |
"haConfig": [ | |
{ | |
"property": "name", | |
"value": "Beep" | |
}, | |
{ | |
"property": "icon", | |
"value": "" | |
}, | |
{ | |
"property": "entity_picture", | |
"value": "" | |
}, | |
{ | |
"property": "entity_category", | |
"value": "config" | |
}, | |
{ | |
"property": "device_class", | |
"value": "switch" | |
} | |
], | |
"resend": false, | |
"debugEnabled": false | |
}, | |
{ | |
"id": "2a388ed5ce9b5e60", | |
"type": "ha-entity-config", | |
"server": "399b9507.fdb0ea", | |
"deviceConfig": "65845f97489716d9", | |
"name": "device_b_AC Out", | |
"version": "6", | |
"entityType": "sensor", | |
"haConfig": [ | |
{ | |
"property": "name", | |
"value": "AC Out" | |
}, | |
{ | |
"property": "icon", | |
"value": "" | |
}, | |
{ | |
"property": "entity_picture", | |
"value": "" | |
}, | |
{ | |
"property": "entity_category", | |
"value": "diagnostic" | |
}, | |
{ | |
"property": "device_class", | |
"value": "energy" | |
}, | |
{ | |
"property": "unit_of_measurement", | |
"value": "Wh" | |
}, | |
{ | |
"property": "state_class", | |
"value": "measurement" | |
} | |
], | |
"resend": false, | |
"debugEnabled": false | |
}, | |
{ | |
"id": "6d6efedc5ce72e03", | |
"type": "ha-entity-config", | |
"server": "399b9507.fdb0ea", | |
"deviceConfig": "295aed1158103b7f", | |
"name": "game_room_charge-target", | |
"version": "6", | |
"entityType": "number", | |
"haConfig": [ | |
{ | |
"property": "name", | |
"value": "" | |
}, | |
{ | |
"property": "icon", | |
"value": "" | |
}, | |
{ | |
"property": "entity_picture", | |
"value": "" | |
}, | |
{ | |
"property": "entity_category", | |
"value": "config" | |
}, | |
{ | |
"property": "device_class", | |
"value": "" | |
}, | |
{ | |
"property": "unit_of_measurement", | |
"value": "%" | |
}, | |
{ | |
"property": "min_value", | |
"value": 15 | |
}, | |
{ | |
"property": "max_value", | |
"value": 90 | |
}, | |
{ | |
"property": "step_value", | |
"value": 1 | |
}, | |
{ | |
"property": "mode", | |
"value": "slider" | |
} | |
], | |
"resend": false, | |
"debugEnabled": false | |
}, | |
{ | |
"id": "7780b0daa4506eb3", | |
"type": "ha-entity-config", | |
"server": "399b9507.fdb0ea", | |
"deviceConfig": "295aed1158103b7f", | |
"name": "game_room_beep", | |
"version": "6", | |
"entityType": "switch", | |
"haConfig": [ | |
{ | |
"property": "name", | |
"value": "Beep" | |
}, | |
{ | |
"property": "icon", | |
"value": "" | |
}, | |
{ | |
"property": "entity_picture", | |
"value": "" | |
}, | |
{ | |
"property": "entity_category", | |
"value": "config" | |
}, | |
{ | |
"property": "device_class", | |
"value": "switch" | |
} | |
], | |
"resend": false, | |
"debugEnabled": false | |
}, | |
{ | |
"id": "7151f98c7353537a", | |
"type": "ha-entity-config", | |
"server": "399b9507.fdb0ea", | |
"deviceConfig": "295aed1158103b7f", | |
"name": "game_room_Battery_Level", | |
"version": "6", | |
"entityType": "sensor", | |
"haConfig": [ | |
{ | |
"property": "name", | |
"value": "Battery Level" | |
}, | |
{ | |
"property": "icon", | |
"value": "" | |
}, | |
{ | |
"property": "entity_picture", | |
"value": "" | |
}, | |
{ | |
"property": "entity_category", | |
"value": "diagnostic" | |
}, | |
{ | |
"property": "device_class", | |
"value": "battery" | |
}, | |
{ | |
"property": "unit_of_measurement", | |
"value": "%" | |
}, | |
{ | |
"property": "state_class", | |
"value": "measurement" | |
} | |
], | |
"resend": false, | |
"debugEnabled": false | |
}, | |
{ | |
"id": "441b901f84dcda6f", | |
"type": "ha-entity-config", | |
"server": "399b9507.fdb0ea", | |
"deviceConfig": "295aed1158103b7f", | |
"name": "game_room_charge_target", | |
"version": "6", | |
"entityType": "sensor", | |
"haConfig": [ | |
{ | |
"property": "name", | |
"value": "Charge Target" | |
}, | |
{ | |
"property": "icon", | |
"value": "" | |
}, | |
{ | |
"property": "entity_picture", | |
"value": "" | |
}, | |
{ | |
"property": "entity_category", | |
"value": "diagnostic" | |
}, | |
{ | |
"property": "device_class", | |
"value": "" | |
}, | |
{ | |
"property": "unit_of_measurement", | |
"value": "%" | |
}, | |
{ | |
"property": "state_class", | |
"value": "" | |
} | |
], | |
"resend": false, | |
"debugEnabled": false | |
}, | |
{ | |
"id": "0f0fe1c43b8f4534", | |
"type": "ha-entity-config", | |
"server": "399b9507.fdb0ea", | |
"deviceConfig": "295aed1158103b7f", | |
"name": "game_room_AC_Power", | |
"version": "6", | |
"entityType": "sensor", | |
"haConfig": [ | |
{ | |
"property": "name", | |
"value": "AC Power" | |
}, | |
{ | |
"property": "icon", | |
"value": "" | |
}, | |
{ | |
"property": "entity_picture", | |
"value": "" | |
}, | |
{ | |
"property": "entity_category", | |
"value": "diagnostic" | |
}, | |
{ | |
"property": "device_class", | |
"value": "energy" | |
}, | |
{ | |
"property": "unit_of_measurement", | |
"value": "Wh" | |
}, | |
{ | |
"property": "state_class", | |
"value": "measurement" | |
} | |
], | |
"resend": false, | |
"debugEnabled": false | |
}, | |
{ | |
"id": "859ef31dd27d08ad", | |
"type": "ha-entity-config", | |
"server": "399b9507.fdb0ea", | |
"deviceConfig": "295aed1158103b7f", | |
"name": "game_room_AC Out", | |
"version": "6", | |
"entityType": "sensor", | |
"haConfig": [ | |
{ | |
"property": "name", | |
"value": "AC Out" | |
}, | |
{ | |
"property": "icon", | |
"value": "" | |
}, | |
{ | |
"property": "entity_picture", | |
"value": "" | |
}, | |
{ | |
"property": "entity_category", | |
"value": "diagnostic" | |
}, | |
{ | |
"property": "device_class", | |
"value": "energy" | |
}, | |
{ | |
"property": "unit_of_measurement", | |
"value": "Wh" | |
}, | |
{ | |
"property": "state_class", | |
"value": "measurement" | |
} | |
], | |
"resend": false, | |
"debugEnabled": false | |
}, | |
{ | |
"id": "399b9507.fdb0ea", | |
"type": "server", | |
"name": "Home Assistant", | |
"addon": true | |
}, | |
{ | |
"id": "5953bb61763c4552", | |
"type": "ha-device-config", | |
"name": "device_a D3+", | |
"hwVersion": "", | |
"manufacturer": "EcoFlow", | |
"model": "Delta 3+", | |
"swVersion": "" | |
}, | |
{ | |
"id": "65845f97489716d9", | |
"type": "ha-device-config", | |
"name": "device_b D3+", | |
"hwVersion": "", | |
"manufacturer": "EcoFlow", | |
"model": "Delta 3+", | |
"swVersion": "" | |
}, | |
{ | |
"id": "295aed1158103b7f", | |
"type": "ha-device-config", | |
"name": "Game Room D3+", | |
"hwVersion": "", | |
"manufacturer": "EcoFlow", | |
"model": "Delta 3+", | |
"swVersion": "" | |
} | |
] |
Did you mean 70 is dc_02 and 361 is dc_01? That's what I worked out on mine.
I'm guessing you need to parse the protobuf file differently?
I've also noticed a small error in the way you've set up the sensors. Category and Last Reset should be blank: (According to this: HA Forum Link - but I could be wrong)
However, Last Reset should be filled out here: (If not, you are not able to use it in the energy pages)
I'm not too sure if the actual date means anything or if it needs to be calculated elsewhere for some reason. But it does stop the Energy pages from throwing up an error message.
The final step is to get that protobuf nesting solved; then, it should work quite nicely. Until we find a different error LOL
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@phoniclynx The root cause is that the message coming from ecoflow has some nesting in the protobuf structure that I have not been able to parse.
for example, dc_input 1 is located at position 70 as fixed 32, but on the next value of the array, position 70 has a string message, this causes it to fail decoding.
the other values do not have this problem and parse just fine.
fwiw, value 3 is combined dc input, 70 is dc_01 and 361 is dc_02.