[{"id":"f7cea86d.c6da88","type":"tab","label":"P1 + SMA Logging","disabled":false,"info":""},{"id":"a101e8f.2ad0618","type":"function","z":"f7cea86d.c6da88","name":"Extract + Format MPPT A DC+AC","func":"let DCCurrent1 = msg.payload[1] / 1000; // 30769\nlet DCVoltage1 = msg.payload[3] /10; // 30771\nlet DCPower1 = msg.payload[5]; // 30773\nlet PowerTot = msg.payload[7]; // 30775\nlet ACPowerL1 = msg.payload[9]; // 30777\nlet ACPowerL2 = msg.payload[11]; // 30779\nlet ACPowerL3 = msg.payload[13]; // 30781\n\nlet GridVoltagePhase1= 0;\nif (msg.payload[15] !== 65535) {\n GridVoltagePhase1 = msg.payload[15] / 100; // 30783\n}\n\nlet GridVoltagePhase2= 0;\nif (msg.payload[17] !== 65535) {\n GridVoltagePhase2 = msg.payload[17] / 100; // 30785\n}\n\nlet GridVoltagePhase3= 0;\nif (msg.payload[19] !== 65535) {\n GridVoltagePhase3 = msg.payload[19] / 100; // 30787\n}\n\nlet GridCurrent = 0;\nif (msg.payload[27] !== 65535) {\n GridCurrent = msg.payload[27] / 1000; // 30795\n}\n\nlet GridFrequency = 0;\nif (msg.payload[35] !== 65535) {\n GridFrequency = msg.payload[35] / 100; // 30803\n}\n\nlet _msg = {\n payload: []\n};\n\n_msg.payload=\n {\n\t\tmeasurement: \"pv_energy\",\n\t\tfields: {\n\t\t\tdc_current1: DCCurrent1,\n\t\t\tdc_voltage1: DCVoltage1,\n\t\t\tdc_power1: DCPower1, \n\t\t\tac_power_tot: PowerTot,\n\t\t\tac_powerL1: ACPowerL1,\n\t\t\tac_powerL2: ACPowerL2,\n\t\t\tac_powerL3: ACPowerL3,\n\t\t\tac_voltage1: GridVoltagePhase1,\n\t\t\tac_voltage2: GridVoltagePhase2,\n\t\t\tac_voltage3: GridVoltagePhase3,\n\t\t\tac_current_tot: GridCurrent,\n\t\t\tac_frequency: GridFrequency\n\t\t},\n\t\ttags:{\n\t\t device: \"SMA STP 8.0\",\n\t\t},\n\t\ttimestamp: new Date()\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":752.4999961853027,"y":598.9999866485596,"wires":[["f5f9eff5.bd3d","122a20d3.ea9bff","2be050fe.0fd02"]]},{"id":"46dec42c.3c2cc4","type":"join","z":"f7cea86d.c6da88","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"10","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":1717.5000381469727,"y":360.0000343322754,"wires":[["8e3642a2.d5d99","6faad80f.a1e4d8"]]},{"id":"467f5ce3.98657c","type":"function","z":"f7cea86d.c6da88","name":"Extract SMA AC + Temp","func":"let InternalTemperature = msg.payload[1] /10; // 30953\nlet ACCurrentL1 = msg.payload[25] / 1000; // 30977\nlet ACCurrentL2 = msg.payload[27] / 1000; // 30979\nlet ACCurrentL3 = msg.payload[29] / 1000; // 30981\n\nlet _msg = {\n payload: []\n};\n\n_msg.payload=\n {\n\t\t\tsma_temperature: InternalTemperature,\n\t\t\tsma_ac_currentL1: ACCurrentL1,\n\t\t\tsma_ac_currentL2: ACCurrentL2,\n\t\t\tsma_ac_currentL3: ACCurrentL3,\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":730,"y":340,"wires":[["9a40dc05.66145"]]},{"id":"9a40dc05.66145","type":"join","z":"f7cea86d.c6da88","name":"","mode":"custom","build":"merged","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"8","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":954.5000534057617,"y":374.0000057220459,"wires":[["afafdc15.ea9698","13967085.f7056f"]]},{"id":"afafdc15.ea9698","type":"function","z":"f7cea86d.c6da88","name":"Format SMA AC","func":"let _msg = {\n payload: []\n};\n\n_msg.payload=\n {\n measurement: \"pv_energy\",\n\t\tfields: {\n\t\t\tACCurrentL1: msg.payload.sma_ac_currentL1,\n\t\t\tACCurrentL2: msg.payload.sma_ac_currentL2,\n\t\t\tACCurrentL3: msg.payload.sma_ac_currentL3,\n\t\t\t//voltage: msg.payload.sma_ac_voltage,\n\t\t\t//power: msg.payload.sma_ac_power_tot,\n\t\t},\n\t\ttags:{\n\t\t device: \"SMA STP 8.0\",\n\t\t type: \"AC\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1140,"y":400,"wires":[["5b6ba5a7.94f24c"]]},{"id":"13967085.f7056f","type":"function","z":"f7cea86d.c6da88","name":"Format SMA Temp","func":"let _msg = {\n payload: []\n};\n\n_msg.payload=\n {\n measurement: \"temperature\",\n\t\tfields: {\n\t\t\tsma_temperature: msg.payload.sma_temperature,\n\t\t},\n\t\ttags:{\n\t\t device: \"SMA STP 8.0\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1150,"y":340,"wires":[["4ec5997d.9ba75"]]},{"id":"6faad80f.a1e4d8","type":"influxdb batch","z":"f7cea86d.c6da88","influxdb":"3695f597.44c56a","precision":"","retentionPolicy":"","name":"InfluxDB","x":1860,"y":300,"wires":[]},{"id":"f5f9eff5.bd3d","type":"switch","z":"f7cea86d.c6da88","name":"Filter null","property":"payload.fields.ac_power_tot","propertyType":"msg","rules":[{"t":"neq","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1332.4999961853027,"y":598.9999866485596,"wires":[["46dec42c.3c2cc4"]]},{"id":"4ec5997d.9ba75","type":"switch","z":"f7cea86d.c6da88","name":"Filter null","property":"payload.fields.sma_temperature","propertyType":"msg","rules":[{"t":"neq","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1340,"y":340,"wires":[["46dec42c.3c2cc4"]]},{"id":"5b6ba5a7.94f24c","type":"switch","z":"f7cea86d.c6da88","name":"Filter null","property":"payload.fields.power","propertyType":"msg","rules":[{"t":"neq","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1340,"y":400,"wires":[["46dec42c.3c2cc4"]]},{"id":"71135a9b.3ffab4","type":"function","z":"f7cea86d.c6da88","name":"Set totalyield filter value","func":"flow.set('totalyield_sma',msg.payload.fields.totalyield);","outputs":1,"noerr":0,"x":1590,"y":180,"wires":[[]]},{"id":"11bc3a9d.3aaa55","type":"switch","z":"f7cea86d.c6da88","name":"Limit Repeating","property":"payload.fields.totalyield","propertyType":"msg","rules":[{"t":"neq","v":"totalyield_sma","vt":"flow"}],"checkall":"true","repair":false,"outputs":1,"x":1360,"y":240,"wires":[["71135a9b.3ffab4","46dec42c.3c2cc4"]]},{"id":"a91b04f.6f2d9f8","type":"inject","z":"f7cea86d.c6da88","name":"Reset totalyield filter","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":171.5,"y":58,"wires":[["84f8825b.609848"]]},{"id":"84f8825b.609848","type":"function","z":"f7cea86d.c6da88","name":"Reset totalyield filter value","func":"flow.set('totalyield',0);\nflow.set('gas',0);","outputs":1,"noerr":0,"x":486,"y":58,"wires":[[]]},{"id":"3befd1b9.070d36","type":"switch","z":"f7cea86d.c6da88","name":"Filter invalid","property":"payload.fields.totalyield","propertyType":"msg","rules":[{"t":"lt","v":"200000","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1150,"y":240,"wires":[["11bc3a9d.3aaa55"]]},{"id":"4121f2f.c02e20c","type":"function","z":"f7cea86d.c6da88","name":"Extract DSMR","func":"var payload = msg.payload\n//var clean_payload = msg.payload.trim();\n//var output = clean_payload.split('\\t');\n//var USAGE1 = (JSON.parse(msg.payload.electricity_delivered_1*1000)).toString();\n//var RETURN1 = (JSON.parse(msg.payload.electricity_returned_1*1000)).toString();\n//var USAGE2 = (JSON.parse(msg.payload.electricity_delivered_2*1000)).toString();\n//var RETURN2 = (JSON.parse(msg.payload.electricity_returned_2*1000)).toString();\n//var CONS = (JSON.parse(msg.payload.electricity_currently_delivered*1000)).toString();\n//var PROD = (JSON.parse(msg.payload.electricity_currently_returned*1000)).toString();\n\n\nvar consumed_high = JSON.parse(msg.payload.results[0].electricity_delivered_2*1000);\nvar consumed_low = JSON.parse(msg.payload.results[0].electricity_delivered_1*1000);\nvar consumed_gas = JSON.parse(payload.results[0].extra_device_delivered);\nvar produced_high = JSON.parse(msg.payload.results[0].electricity_returned_2*1000);\nvar produced_low = JSON.parse(msg.payload.results[0].electricity_returned_1*1000);\nvar current_consumption = JSON.parse(msg.payload.results[0].electricity_currently_delivered*1000);\nvar current_production = JSON.parse(msg.payload.results[0].electricity_currently_returned*1000);\nvar current_voltage1 = JSON.parse(msg.payload.results[0].phase_voltage_l1);\nvar current_voltage2 = JSON.parse(msg.payload.results[0].phase_voltage_l2);\nvar current_voltage3 = JSON.parse(msg.payload.results[0].phase_voltage_l3);\n\n\nlet _msg = {\n payload: []\n};\n\n_msg.payload=\n {\n consumed_high: consumed_high,\n consumed_low: consumed_low,\n consumed_gas: consumed_gas,\n produced_high: produced_high,\n produced_low: produced_low,\n current_consumption: current_consumption,\n current_production: current_production,\n current_voltage1: current_voltage1,\n current_voltage2: current_voltage2,\n current_voltage3: current_voltage3,\n\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":520,"y":700,"wires":[["7b2a9aef.a261b4","e5e389f2.0ca03","78b3d1da.3d5708","573d9c09.a1858c","8cfe68b3.6353c8","17c1351.9baa44b","1983145f.c11604","a85fb598.bb6fc8","182f6aa7.d874a5","6c3e43e8.e0c2bc","5d8d4682.21b8a","122a20d3.ea9bff"]]},{"id":"e5e389f2.0ca03","type":"function","z":"f7cea86d.c6da88","name":"Format P1 Consumption Low - kWh","func":"let consumed_low = msg.payload.consumed_low / 1000;\nlet _msg = {\n payload:[]\n};\n\n_msg.payload=\n {\n measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\tgrid_consumption_low: consumed_low,\n\t\t},\n\t\ttags:{\n\t\t device: \"P1\",\n\t\t rate: \"Low\",\n\t\t direction: \"Grid Consumption kWh\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1476.4999732971191,"y":1102.0000019073486,"wires":[["46dec42c.3c2cc4"]]},{"id":"78b3d1da.3d5708","type":"function","z":"f7cea86d.c6da88","name":"Format P1 Consumption High kWh","func":"let consumed_high = msg.payload.consumed_high / 1000;\nlet _msg = {\n payload:[]\n};\n\n_msg.payload=\n {\n measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\tgrid_consumption_high: consumed_high,\n\t\t},\n\t\ttags:{\n\t\t device: \"P1\",\n\t\t rate: \"High\",\n\t\t direction: \"Grid Consumption - kWh\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1476.4999732971191,"y":1142.0000019073486,"wires":[["46dec42c.3c2cc4"]]},{"id":"8cfe68b3.6353c8","type":"function","z":"f7cea86d.c6da88","name":"Format P1 Production High","func":"let produced_high = msg.payload.produced_high / 1000;\nlet _msg = {\n payload:[]\n};\n\n_msg.payload=\n {\n measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\tgrid_production_high: produced_high,\n\t\t},\n\t\ttags:{\n\t\t device: \"P1\",\n\t\t rate: \"High\",\n\t\t direction: \"Grid Production\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1455.5,"y":1282,"wires":[["46dec42c.3c2cc4"]]},{"id":"17c1351.9baa44b","type":"function","z":"f7cea86d.c6da88","name":"Format P1 Production Low","func":"let produced_low = msg.payload.produced_low / 1000;\nlet _msg = {\n payload:[]\n};\n\n_msg.payload=\n {\n measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\tgrid_production_low: produced_low,\n\t\t},\n\t\ttags:{\n\t\t device: \"P1\",\n\t\t rate: \"Low\",\n\t\t direction: \"Grid Production\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1456.5,"y":1241,"wires":[["46dec42c.3c2cc4"]]},{"id":"182f6aa7.d874a5","type":"function","z":"f7cea86d.c6da88","name":"Extract P1 Power","func":"let current_voltage1 = msg.payload.current_voltage1\nlet current_voltage2 = msg.payload.current_voltage2\nlet current_voltage3 = msg.payload.current_voltage3\nlet current_consumption = msg.payload.current_consumption\nlet current_production = msg.payload.current_production\n\n\nlet _msg = {\n payload: []\n};\n\n_msg.payload=\n {\n\t\t\tp1_ac_power_consumption: Number(current_consumption),\n\t\t\tp1_ac_power_production: Number(current_production),\n\t\t\tp1_ac_voltage1: Number(current_voltage1),\n\t\t\tp1_ac_voltage2: Number(current_voltage2),\n\t\t\tp1_ac_voltage3: Number(current_voltage3),\n\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"x":814.5001831054688,"y":820.5,"wires":[["40537bfb.ce2f24","d7649d7.edc21e","fd3c6c2a.175f2","2be050fe.0fd02"]]},{"id":"40537bfb.ce2f24","type":"function","z":"f7cea86d.c6da88","name":"Format P1 Net Power Consumption - W","func":"let _msg = {\n payload: []\n};\n\n_msg.payload=\n {\n measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\t//voltage1: msg.payload.p1_ac_voltage1,\n\t\t\t//voltage2: msg.payload.p1_ac_voltage2,\n\t\t\t//voltage3: msg.payload.p1_ac_voltage3,\n\t\t\tnet_power_consumption: msg.payload.p1_ac_power_consumption - msg.payload.p1_ac_power_production,\n\t\t},\n\t\ttags:{\n\t\t device: \"P1\",\n\t\t type: \"AC\",\n\t\t direction: \"Grid Net Power Consumption - W\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"x":1296.4999732971191,"y":822.0000019073486,"wires":[["46dec42c.3c2cc4"]]},{"id":"573d9c09.a1858c","type":"function","z":"f7cea86d.c6da88","name":"Format P1 Consumption Total - kWh","func":"let consumed_high = msg.payload.consumed_high / 1000;\nlet consumed_low = msg.payload.consumed_low / 1000;\nlet _msg = {\n payload:[]\n};\n\n_msg.payload=\n {\n measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\tgrid_consumption_total: consumed_high + consumed_low,\n\t\t},\n\t\ttags:{\n\t\t device: \"P1\",\n\t\t rate: \"Total\",\n\t\t direction: \"Grid Consumption - kWh\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1486.4999732971191,"y":1182.0000019073486,"wires":[["46dec42c.3c2cc4"]]},{"id":"1983145f.c11604","type":"function","z":"f7cea86d.c6da88","name":"Format P1 Production Total","func":"let produced_low = msg.payload.produced_low / 1000;\nlet produced_high = msg.payload.produced_high / 1000;\nlet _msg = {\n payload:[]\n};\n\n_msg.payload=\n {\n measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\tgrid_production_total: produced_low + produced_high,\n\t\t},\n\t\ttags:{\n\t\t device: \"P1\",\n\t\t rate: \"Total\",\n\t\t direction: \"Grid Production\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1456.4999732971191,"y":1322.0000019073486,"wires":[["46dec42c.3c2cc4"]]},{"id":"a85fb598.bb6fc8","type":"function","z":"f7cea86d.c6da88","name":"Format P1 Net Consumption Total - kWh","func":"let consumed_low = msg.payload.consumed_low / 1000;\nlet consumed_high = msg.payload.consumed_high / 1000;\nlet produced_low = msg.payload.produced_low / 1000;\nlet produced_high = msg.payload.produced_high / 1000;\n\nlet TotalUsage = consumed_low + consumed_high;\nlet TotalDelivery = produced_low + produced_high;\nlet _msg = {\n payload:[]\n};\n\n_msg.payload=\n {\n measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\tnet_consumption_total: TotalUsage.toFixed(2) - TotalDelivery.toFixed(2),\n\t\t},\n\t\ttags:{\n\t\t device: \"P1\",\n\t\t rate: \"Total\",\n\t\t direction: \"Grid Net Consumption Total - kWh\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1496.4999732971191,"y":1462.0000019073486,"wires":[["46dec42c.3c2cc4"]]},{"id":"7b2a9aef.a261b4","type":"function","z":"f7cea86d.c6da88","name":"Format P1 Gas","func":"let consumed_gas = msg.payload.consumed_gas;\nlet _msg = {\n payload:[]\n};\n\n_msg.payload=\n {\n measurement: \"gas\",\n\t\tfields: {\n\t\t\ttotalyield: consumed_gas,\n\t\t},\n\t\ttags:{\n\t\t device: \"P1\",\n\t\t direction: \"Gas Consumption\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1216.4999732971191,"y":982.0000019073486,"wires":[["f77198cf.8248d"]]},{"id":"d7649d7.edc21e","type":"function","z":"f7cea86d.c6da88","name":"Format P1 Consumption - W","func":"let _msg = {\n payload: []\n};\n\n_msg.payload=\n {\n measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\t//voltage1: msg.payload.p1_ac_voltage1,\n\t\t\t//voltage2: msg.payload.p1_ac_voltage2,\n\t\t\t//voltage3: msg.payload.p1_ac_voltage3,\n\t\t\tgrid_power_consumption: msg.payload.p1_ac_power_consumption,\n\t\t},\n\t\ttags:{\n\t\t device: \"P1\",\n\t\t type: \"AC\",\n\t\t direction: \"Grid Consumption - W\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"x":1256.4999732971191,"y":862.0000019073486,"wires":[["fa37d4b0.4766d"]]},{"id":"fd3c6c2a.175f2","type":"function","z":"f7cea86d.c6da88","name":"Format P1 Production - W","func":"let _msg = {\n payload: []\n};\n\n_msg.payload=\n {\n measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\t//voltage1: msg.payload.p1_ac_voltage1,\n\t\t\t//voltage2: msg.payload.p1_ac_voltage2,\n\t\t\t//voltage3: msg.payload.p1_ac_voltage3,\n\t\t\tgrid_power_production: msg.payload.p1_ac_power_production*-1,\n\t\t},\n\t\ttags:{\n\t\t device: \"P1\",\n\t\t type: \"AC\",\n\t\t direction: \"Grid Production - W\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"x":1256.4999732971191,"y":902.0000019073486,"wires":[["da6e1769.a56ce8"]]},{"id":"fa37d4b0.4766d","type":"switch","z":"f7cea86d.c6da88","name":"Filter null","property":"payload.fields.power","propertyType":"msg","rules":[{"t":"neq","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1476.4999732971191,"y":862.0000019073486,"wires":[["46dec42c.3c2cc4"]]},{"id":"da6e1769.a56ce8","type":"switch","z":"f7cea86d.c6da88","name":"Filter null","property":"payload.fields.power","propertyType":"msg","rules":[{"t":"neq","v":"","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1476.4999732971191,"y":902.0000019073486,"wires":[["46dec42c.3c2cc4"]]},{"id":"3a407c0c.71b7e4","type":"function","z":"f7cea86d.c6da88","name":"Format Internal Power Consumption - W","func":"grid_consumption = Number(msg.payload.p1_ac_power_consumption);\ngrid_production = Number(msg.payload.p1_ac_power_production);\n\ninternal_production = msg.payload.fields.ac_power_tot\nif(internal_production === null)\n{\n internal_production = 0;\n}\n\nnet_grid = grid_consumption - grid_production;\nnet_internal_consumption = internal_production + net_grid;\n\n\n\n\n_msg = {\n payload: []\n};\n\n_msg.payload=\n {\n measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\tvoltage1: msg.payload.p1_ac_voltage1,\n\t\t\tvoltage2: msg.payload.p1_ac_voltage2,\n\t\t\tvoltage3: msg.payload.p1_ac_voltage3,\n\t\t\tnet_power_consumption: (Number(net_internal_consumption)),\n\t\t},\n\t\ttags:{\n\t\t device: \"P1\",\n\t\t type: \"AC\",\n\t\t direction: \"Internal Power Consumption - W\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"x":1296.4999732971191,"y":782.0000019073486,"wires":[["46dec42c.3c2cc4"]]},{"id":"2be050fe.0fd02","type":"join","z":"f7cea86d.c6da88","name":"","mode":"custom","build":"merged","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"10","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":1046.4999732971191,"y":782.0000019073486,"wires":[["3a407c0c.71b7e4"]]},{"id":"f62fd7ab.e75f58","type":"function","z":"f7cea86d.c6da88","name":"Create Timestamp","func":"let _msg = {\n payload:[]\n};\n\n_msg.payload=\n {\n\t\ttimestamp: new Date(),\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":155,"y":496.00000190734863,"wires":[["402cc80e.e06c68"]]},{"id":"402cc80e.e06c68","type":"change","z":"f7cea86d.c6da88","name":"Set Timestamp","rules":[{"t":"move","p":"payload.timestamp","pt":"msg","to":"timestamp","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":209.28905487060547,"y":556.3437805175781,"wires":[["955d6017.df9658"]]},{"id":"f77198cf.8248d","type":"switch","z":"f7cea86d.c6da88","name":"Limit Repeating","property":"payload.fields.totalyield","propertyType":"msg","rules":[{"t":"neq","v":"gas","vt":"flow"}],"checkall":"true","repair":false,"outputs":1,"x":1456.4999732971191,"y":982.0000019073486,"wires":[["bcd0d36f.8bad58","46dec42c.3c2cc4"]]},{"id":"bcd0d36f.8bad58","type":"function","z":"f7cea86d.c6da88","name":"Set totalyield filter value","func":"flow.set('gas',msg.payload.fields.totalyield);","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1446.4999732971191,"y":1042.0000019073486,"wires":[[]]},{"id":"5d8d4682.21b8a","type":"function","z":"f7cea86d.c6da88","name":"Format P1 Net Consumption Low","func":"let consumed_low = msg.payload.consumed_low / 1000;\nlet produced_low = msg.payload.produced_low / 1000;\n\nlet TotalUsage = consumed_low;\nlet TotalDelivery = produced_low;\nlet _msg = {\n payload:[]\n};\n\n_msg.payload=\n {\n measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\tnet_consumption_low: TotalUsage.toFixed(2) - TotalDelivery.toFixed(2),\n\t\t},\n\t\ttags:{\n\t\t device: \"P1\",\n\t\t rate: \"Low\",\n\t\t direction: \"Grid Net Consumption Low\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1476.4999732971191,"y":1382.0000019073486,"wires":[["46dec42c.3c2cc4"]]},{"id":"6c3e43e8.e0c2bc","type":"function","z":"f7cea86d.c6da88","name":"Format P1 Net Consumption High","func":"let consumed_high = msg.payload.consumed_high / 1000;\nlet produced_high = msg.payload.produced_high / 1000;\n\nlet TotalUsage = consumed_high;\nlet TotalDelivery = produced_high;\nlet _msg = {\n payload:[]\n};\n\n_msg.payload=\n {\n measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\tnet_consumption_high: TotalUsage.toFixed(2) - TotalDelivery.toFixed(2),\n\t\t},\n\t\ttags:{\n\t\t device: \"P1\",\n\t\t rate: \"High\",\n\t\t direction: \"Grid Net Consumption High\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1476.4999732971191,"y":1422.0000019073486,"wires":[["46dec42c.3c2cc4"]]},{"id":"52519521.7bd0a4","type":"function","z":"f7cea86d.c6da88","name":"Format SMA Yield","func":"let _msg = {\n payload:[]\n};\n\n_msg.payload=\n {\n measurement: \"pv_energy\",\n\t\tfields: {\n\t\t\ttotalyield: msg.payload.totalyield,\n\t\t\t//dailyyield: msg.payload.dailyyield,\n\t\t},\n\t\ttags:{\n\t\t device: \"SMA - STP 8.0\",\n\t\t direction: \"Internal Production\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":950,"y":240,"wires":[["3befd1b9.070d36"]]},{"id":"122a20d3.ea9bff","type":"join","z":"f7cea86d.c6da88","name":"","mode":"custom","build":"merged","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"10","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":950,"y":500,"wires":[["fa93721a.17b628"]]},{"id":"52ba2809.da429","type":"function","z":"f7cea86d.c6da88","name":"CalculateYield","func":"let yieldCycle = msg.payload[0]; // 30531\nlet yieldCycleValue = 65535; // 30531\nlet yieldCurrent = msg.payload[1];\nlet DailyYield = msg.payload[7] / 1000; // 30535\n\nlet TotalYieldwH = (yieldCycle * yieldCycleValue) + yieldCurrent;\nlet TotalYield = TotalYieldwH / 1000;\n\nlet _msg = {\n payload:[]\n};\n\n_msg.payload=\n {\n totalyield: TotalYield,\n dailyyield: DailyYield,\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"x":700,"y":240,"wires":[["52519521.7bd0a4","122a20d3.ea9bff"]]},{"id":"773312c4.c3f9f4","type":"function","z":"f7cea86d.c6da88","name":"Format Total Consumption incl. direct - kWh","func":"internal_consumption = msg.payload.total_direct_consumption + msg.payload.net_consumption;\n\n\nlet _msg = {\n payload: []\n};\n\n_msg.payload=\n {\n measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\ttotal_consumption_incl_direct: parseFloat(internal_consumption.toFixed(2)),\n\t\t},\n\t\ttags:{\n\t\t device: \"P1\",\n\t\t direction: \"Total Consumption incl. direct - kWh\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1330,"y":460,"wires":[["46dec42c.3c2cc4"]]},{"id":"2a3a401c.7485c8","type":"function","z":"f7cea86d.c6da88","name":"Combine Data","func":"start_sma_production = 2661.41; //Value of SMA production at installation of new meter\nnet_production_wh = (Number(msg.payload.produced_high) + Number(msg.payload.produced_low));\nnet_consumption_wh = (Number(msg.payload.consumed_high) + Number(msg.payload.consumed_low));\nnet_consumption = net_consumption_wh / 1000;\nnet_production = net_production_wh / 1000;\nsma_production = msg.payload.totalyield - start_sma_production;\ndirect_consumption = sma_production - net_production;\ncurrent_net_powerusage = msg.payload.fields.ac_power_tot - msg.payload.current_production + msg.payload.current_consumption \n\nlet _msg = {\n payload: []\n};\n\n_msg.payload=\n {\n net_consumption: net_consumption,\n net_production: net_production,\n sma_production: sma_production,\n total_direct_consumption: direct_consumption,\n current_direct_consumption: current_net_powerusage,\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1306,"y":502,"wires":[["773312c4.c3f9f4","1556de9c.5e0ba9"]]},{"id":"1556de9c.5e0ba9","type":"function","z":"f7cea86d.c6da88","name":"Format Direct Consumption - KWH / W","func":"total_direct_consumption = msg.payload.total_direct_consumption;\ncurrent_direct_consumption = msg.payload.current_direct_consumption;\n\nlet _msg = {\n payload: []\n};\n\n_msg.payload=\n {\n measurement: \"p1_energy\",\n\t\tfields: {\n\t\t\ttotal_direct_consumption: parseFloat(total_direct_consumption.toFixed(2)),\n\t\t\tcurrent_direct_consumption: current_direct_consumption,\n\t\t},\n\t\ttags:{\n\t\t device: \"P1\",\n\t\t direction: \"Direct Consumption\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1310,"y":540,"wires":[["46dec42c.3c2cc4"]]},{"id":"fa93721a.17b628","type":"switch","z":"f7cea86d.c6da88","name":"Filter Invalid","property":"payload.totalyield","propertyType":"msg","rules":[{"t":"lt","v":"200000","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1110,"y":500,"wires":[["2a3a401c.7485c8"]]},{"id":"9a22c62d.fee228","type":"interval","z":"f7cea86d.c6da88","name":"interval","interval":"15","onstart":false,"msg":"ping","showstatus":true,"unit":"seconds","statusformat":"YYYY-MM-D HH:mm:ss","x":55,"y":436.00000190734863,"wires":[["f62fd7ab.e75f58"]]},{"id":"955d6017.df9658","type":"function","z":"f7cea86d.c6da88","name":"Set API key here - DSMR reader","func":"msg.action = msg.payload;\nmsg.headers = { \n 'X-AUTHKEY': '3ONYSGO32RGJBBBH3M0PZD6LOIUNM0KB2X5IJ3YGT58603SOW3CGBXP04CCDJU80',\n};\n\nreturn msg;","outputs":1,"noerr":0,"x":190,"y":640,"wires":[["19a99c3.07593e4"]]},{"id":"19a99c3.07593e4","type":"function","z":"f7cea86d.c6da88","name":"Set up data","func":"msg.action = msg.payload;\n\nmsg.url = \"http://dsmr/api/v2/datalogger/dsmrreading?ordering=-timestamp&limit=1\";\n\nreturn msg;\n\n","outputs":1,"noerr":0,"x":90,"y":700,"wires":[["64e0f49e.41f294"]]},{"id":"64e0f49e.41f294","type":"http request","z":"f7cea86d.c6da88","name":"Post","method":"GET","ret":"obj","paytoqs":false,"url":"","tls":"","proxy":"","authType":"","x":270,"y":700,"wires":[["4121f2f.c02e20c"]]},{"id":"c2583d8f.841018","type":"debug","z":"f7cea86d.c6da88","name":"headercheck","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":250,"y":840,"wires":[]},{"id":"c8e41a61.7213d","type":"modbustcp-read","z":"f7cea86d.c6da88","name":"SMA MPPT A DC + AC","topic":"","dataType":"HoldingRegister","adr":"30769","quantity":"36","rate":"15","rateUnit":"s","server":"e20e236b.c03ae","ieeeType":"off","ieeeBE":"true","x":468.5,"y":600,"wires":[["a101e8f.2ad0618","3d9ecd88.86d752"]]},{"id":"b014d4e3.c91d98","type":"modbustcp-read","z":"f7cea86d.c6da88","name":"SMA Yield","topic":"","dataType":"HoldingRegister","adr":"30529","quantity":"8","rate":"15","rateUnit":"s","server":"e20e236b.c03ae","ieeeType":"off","ieeeBE":"true","x":477.5,"y":236,"wires":[["52ba2809.da429"]]},{"id":"51cb1751.32c66","type":"modbustcp-read","z":"f7cea86d.c6da88","name":"SMA Temp + AC currents","topic":"","dataType":"HoldingRegister","adr":"30953","quantity":"32","rate":"15","rateUnit":"s","server":"e20e236b.c03ae","ieeeType":"off","ieeeBE":"true","x":481.5,"y":342,"wires":[["467f5ce3.98657c"]]},{"id":"8e3642a2.d5d99","type":"debug","z":"f7cea86d.c6da88","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1886.5,"y":392,"wires":[]},{"id":"3d9ecd88.86d752","type":"debug","z":"f7cea86d.c6da88","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":733.5,"y":468,"wires":[]},{"id":"3695f597.44c56a","type":"influxdb","z":"","hostname":"192.168.168.250","port":"8086","protocol":"http","database":"alldata","name":"InfluxDB","usetls":false,"tls":""},{"id":"e20e236b.c03ae","type":"modbustcp-server","z":"","name":"SMA STP 8.0","host":"192.168.168.105","port":"502","unit_id":"3","reconnecttimeout":"30"}]