victron-virtual-shelly-em
Emulates a Shelly Energy Meter and connects it to Victron VenusOS via Websocket.
Changelog
- v0.0.1 initial release
[{"id":"80792cf660f87bf6","type":"tab","label":"Flow 2","disabled":false,"info":"","env":[]},{"id":"d9f7b8675aac7695","type":"websocket out","z":"80792cf660f87bf6","name":"","server":"","client":"b553283038cd31d8","x":1050,"y":120,"wires":[]},{"id":"d4c1a8f69bccbfaf","type":"websocket in","z":"80792cf660f87bf6","name":"","server":"","client":"b553283038cd31d8","x":170,"y":120,"wires":[["e22c931c661b9e21"]]},{"id":"5703b421b407af9e","type":"debug","z":"80792cf660f87bf6","name":"Status message","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1040,"y":460,"wires":[]},{"id":"e22c931c661b9e21","type":"json","z":"80792cf660f87bf6","name":"","property":"payload","action":"","pretty":false,"x":410,"y":120,"wires":[["12bdcbb28c638047","22a7c862c718dc9c"]]},{"id":"12bdcbb28c638047","type":"function","z":"80792cf660f87bf6","name":"Prepare device info","func":"if (msg.payload[\"id\"].startsWith(\"GetDeviceInfo-\"))\n{\n var id = msg.payload[\"id\"].split(\"-\");\n return [\n {\n payload: {\n id: \"GetDeviceInfo-\"+id[1],\n result: {\n mac: \"AADEADBEEFAA\",\n fw_id: \"20240101\"\n }\n }\n }\n ]\n}\n\nreturn null;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":610,"y":120,"wires":[["648fb2c58ef525cf","b9b85eff872d869a"]]},{"id":"648fb2c58ef525cf","type":"json","z":"80792cf660f87bf6","name":"","property":"payload","action":"str","pretty":false,"x":810,"y":120,"wires":[["d9f7b8675aac7695"]]},{"id":"1f99c6a856b04f84","type":"join","z":"80792cf660f87bf6","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"6","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":690,"y":360,"wires":[["6b5a0e0402458ddc"]]},{"id":"096fe2bf570ce886","type":"change","z":"80792cf660f87bf6","name":"topic = a_power","rules":[{"t":"set","p":"topic","pt":"msg","to":"a_power","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":460,"y":260,"wires":[["1f99c6a856b04f84"]]},{"id":"6941717412fa5e22","type":"change","z":"80792cf660f87bf6","name":"topic = a_voltage","rules":[{"t":"set","p":"topic","pt":"msg","to":"a_voltage","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":460,"y":300,"wires":[["1f99c6a856b04f84"]]},{"id":"86aa4318e81c9c48","type":"change","z":"80792cf660f87bf6","name":"topic = a_current","rules":[{"t":"set","p":"topic","pt":"msg","to":"a_current","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":460,"y":340,"wires":[["1f99c6a856b04f84"]]},{"id":"1a9ab41ab66110d5","type":"change","z":"80792cf660f87bf6","name":"topic = a_frequency","rules":[{"t":"set","p":"topic","pt":"msg","to":"a_frequency","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":470,"y":380,"wires":[["1f99c6a856b04f84"]]},{"id":"1b9cb8b11eb4cc6b","type":"change","z":"80792cf660f87bf6","name":"topic = a_energy","rules":[{"t":"set","p":"topic","pt":"msg","to":"a_energy","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":460,"y":420,"wires":[["1f99c6a856b04f84"]]},{"id":"22a7c862c718dc9c","type":"debug","z":"80792cf660f87bf6","name":"Request from VenusOS","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":600,"y":60,"wires":[]},{"id":"07f3616c732b6a1e","type":"inject","z":"80792cf660f87bf6","name":"test","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":110,"y":360,"wires":[["40ed1671f371bd31","b03ba6f72a8a9d07","c3df07b1f6999b21","feb6a29d11d35c2c","9df2b37935262c17","3f984b895733743f"]]},{"id":"40ed1671f371bd31","type":"function","z":"80792cf660f87bf6","name":"115.0","func":"msg.payload = 115.0;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":290,"y":260,"wires":[["096fe2bf570ce886"]]},{"id":"b03ba6f72a8a9d07","type":"function","z":"80792cf660f87bf6","name":"230.0","func":"msg.payload = 230.0;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":290,"y":300,"wires":[["6941717412fa5e22"]]},{"id":"c3df07b1f6999b21","type":"function","z":"80792cf660f87bf6","name":"0.5","func":"msg.payload = 0.5;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":290,"y":340,"wires":[["86aa4318e81c9c48"]]},{"id":"feb6a29d11d35c2c","type":"function","z":"80792cf660f87bf6","name":"50.0","func":"msg.payload = 50.0;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":290,"y":380,"wires":[["1a9ab41ab66110d5"]]},{"id":"9df2b37935262c17","type":"function","z":"80792cf660f87bf6","name":"1000.0","func":"msg.payload = 1000.0;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":290,"y":420,"wires":[["1b9cb8b11eb4cc6b"]]},{"id":"6b5a0e0402458ddc","type":"function","z":"80792cf660f87bf6","name":"prepare status message","func":"msg.payload.b_energy = 0;\nmsg.payload.c_energy = 0;\n\nlet total_act = msg.payload.a_energy + msg.payload.b_energy + msg.payload.c_energy;\n\nreturn [\n {\n payload: {\n \"src\":\"shellypro3em400-aadeadbeefaa\",\n \"method\":\"NotifyStatus\",\n \"params\":{\n \"em:0\":{\n \"id\":0,\n \"a_current\":msg.payload.a_current,\n \"a_voltage\":msg.payload.a_voltage,\n \"a_act_power\":msg.payload.a_power,\n \"a_aprt_power\":0.0,\n \"a_pf\":1.0,\n \"a_freq\":msg.payload.a_frequency,\n \"b_current\":0.0,\n \"b_voltage\":0.0,\n \"b_act_power\":0.0,\n \"b_aprt_power\":0.0,\n \"b_pf\":1.0,\n \"b_freq\":0.0,\n \"c_current\":0.0,\n \"c_voltage\":0.0,\n \"c_act_power\":0.0,\n \"c_aprt_power\":0.0,\n \"c_pf\":1.0,\n \"c_freq\":0.0,\n \"n_current\":\"None\",\n \"total_current\":0.0,\n \"total_act_power\":0.0,\n \"total_aprt_power\":0.0,\n \"user_calibrated_phase\":[\n \n ]\n },\n \"emdata:0\":{\n \"id\":0,\n \"a_total_act_energy\":msg.payload.a_energy,\n \"a_total_act_ret_energy\":msg.payload.a_ret_energy,\n \"b_total_act_energy\":0.0,\n \"b_total_act_ret_energy\":0.0,\n \"c_total_act_energy\":0.0,\n \"c_total_act_ret_energy\":0.0,\n \"total_act\":total_act,\n \"total_act_ret\":0.0\n }\n }\n }\n }\n]","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":910,"y":360,"wires":[["45d084bf55fa463e"]]},{"id":"45d084bf55fa463e","type":"json","z":"80792cf660f87bf6","name":"","property":"payload","action":"str","pretty":false,"x":1130,"y":360,"wires":[["5703b421b407af9e","d9f7b8675aac7695"]]},{"id":"e23dfaba97f6bb59","type":"comment","z":"80792cf660f87bf6","name":"Example: ws://192.168.0.18:8000/ws","info":"ip address from VenusOS device","x":180,"y":80,"wires":[]},{"id":"b54330a5869ce55f","type":"change","z":"80792cf660f87bf6","name":"topic = a_ret_energy","rules":[{"t":"set","p":"topic","pt":"msg","to":"a_ret_energy","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":480,"y":460,"wires":[["1f99c6a856b04f84"]]},{"id":"3f984b895733743f","type":"function","z":"80792cf660f87bf6","name":"0.0","func":"msg.payload = 0.0;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":290,"y":460,"wires":[["b54330a5869ce55f"]]},{"id":"b9b85eff872d869a","type":"debug","z":"80792cf660f87bf6","name":"Response to VenusOS","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":860,"y":60,"wires":[]},{"id":"225f119cb7e035cf","type":"comment","z":"80792cf660f87bf6","name":"v0.0.1","info":"Last modified: 2024-02-07","x":90,"y":40,"wires":[]},{"id":"b553283038cd31d8","type":"websocket-client","path":"ws://192.168.0.18:8000/ws","tls":"","wholemsg":"false","hb":"0","subprotocol":""}]