Skip to content

Instantly share code, notes, and snippets.

@Slayerrulez
Created November 13, 2018 18:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Slayerrulez/09f81780458d23156b74bf3f1168bbd8 to your computer and use it in GitHub Desktop.
Save Slayerrulez/09f81780458d23156b74bf3f1168bbd8 to your computer and use it in GitHub Desktop.
Energy monitor

This flow measures my kamstrup 162 smart meter which is connected to my raspberry pi3 with an usb cable. My raspberry pi3 is running hassio.

What this flow does is:

Start measuring gas usage on 0:00 and end at 23:59, and display this on the ui on daily basis. Calculate the costs from the start at 0:00 and outputs this to the ui.

e.g. 0:00 gas meter: 10000m3 0:20 gas meter: 10030m3 calc delta, multiply by costs per m3, display usage plus costs

Used cable: https://nl.aliexpress.com/item/Ftdi-usb-uart-ttl-kabel-voor-kaifa-ma105-Iskra-ME-382-Kamstrup-162-382-en351-landis/32843044297.html?spm=a2g0s.9042311.0.0.21934c4d0zlCmw

With a special thanks to ukmoose from the forum, who helped me with the example flow.

[{"id":"88fa0739.2e94a8","type":"tab","label":"Energie verbruik","disabled":false,"info":""},{"id":"9ca1a2c.bafe76","type":"inject","z":"88fa0739.2e94a8","name":"Start of the day","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"00 00 * * *","once":false,"onceDelay":0.1,"x":140,"y":120,"wires":[["90799776.afa048","de17266b.9b4b18","9cc1f9a1.27cf18"]]},{"id":"90799776.afa048","type":"change","z":"88fa0739.2e94a8","name":"Gas","rules":[{"t":"set","p":"payload","pt":"msg","to":"dailyusage","tot":"global"},{"t":"set","p":"dailyusage","pt":"global","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":350,"y":80,"wires":[["159ea88.8d6ec58"]]},{"id":"cb270f6d.24d6e","type":"debug","z":"88fa0739.2e94a8","name":"Last Days","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":760,"y":80,"wires":[]},{"id":"675fb147.46d4c","type":"comment","z":"88fa0739.2e94a8","name":"Dagelijks verbruik en reset","info":"","x":150,"y":20,"wires":[]},{"id":"159ea88.8d6ec58","type":"function","z":"88fa0739.2e94a8","name":"Total usage","func":"msg.payload = \"Total usage today is \"+msg.payload\nreturn msg;","outputs":1,"noerr":0,"x":570,"y":80,"wires":[["cb270f6d.24d6e"]]},{"id":"2d264d5.9fe0bb2","type":"poll-state","z":"88fa0739.2e94a8","name":"Dal Tarief","server":"4463f6c4.b567b8","updateinterval":"2","outputinitially":false,"outputonchanged":false,"entity_id":"sensor.power_consumption_low","x":120,"y":360,"wires":[["47f912f1.565eec"]]},{"id":"47f912f1.565eec","type":"change","z":"88fa0739.2e94a8","name":"Convert","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(payload)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":300,"y":360,"wires":[["4351a607.4d2808"]]},{"id":"4351a607.4d2808","type":"function","z":"88fa0739.2e94a8","name":"Power usage","func":"//Grab vorig dal from global variable for total usage\nvorigdal = global.get(\"totaaldal\")||0;\n\n//How much usage since the last update\nperiodedal = msg.payload - vorigdal;\n\n//Grab vorig dal from global variable for daily usage\ndagelijksdal = global.get(\"dagelijksdal\")||0;\n\ndagelijksdal = dagelijksdal + periodedal;\n\n//Update the global variables\nglobal.set(\"dagelijksdal\",dagelijksdal );\nglobal.set(\"totaaldal\", msg.payload);\n\nmsg.payload = parseFloat(dagelijksdal).toFixed(3)\n\nreturn msg;","outputs":1,"noerr":0,"x":530,"y":360,"wires":[["ef7ea479.50ec18"]]},{"id":"d5c007ef.eb55b8","type":"ui_gauge","z":"88fa0739.2e94a8","name":"Stroom nu","group":"88cbb72.df21948","order":1,"width":"3","height":"3","gtype":"donut","title":"Stroom nu","label":"W","format":"{{value}}","min":0,"max":"6000","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":510,"y":260,"wires":[]},{"id":"ef7ea479.50ec18","type":"function","z":"88fa0739.2e94a8","name":"KWh naar Euro","func":"kwhprijs = 0.23 //23 cent\ncalc = parseFloat(msg.payload * kwhprijs).toFixed(2);\nvar msg1 = {payload:calc};\nreturn [msg1];","outputs":1,"noerr":0,"x":760,"y":340,"wires":[["244e1b79.28b1a4"]]},{"id":"244e1b79.28b1a4","type":"ui_text","z":"88fa0739.2e94a8","group":"88cbb72.df21948","order":3,"width":"6","height":"1","name":"Dal tarief","label":"Dal tarief","format":"{{msg.payload}} Euro","layout":"row-spread","x":740,"y":380,"wires":[]},{"id":"939b58c5.b66018","type":"ui_chart","z":"88fa0739.2e94a8","name":"VerbruikGrafiek","group":"88cbb72.df21948","order":2,"width":0,"height":0,"label":"","chartType":"line","legend":"false","xformat":"dd HH:mm","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":"1","removeOlderPoints":"10000","removeOlderUnit":"604800","cutout":0,"useOneColor":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":false,"x":520,"y":300,"wires":[[],[]]},{"id":"de17266b.9b4b18","type":"change","z":"88fa0739.2e94a8","name":"Dal","rules":[{"t":"set","p":"payload","pt":"msg","to":"dagelijksdal","tot":"global"},{"t":"set","p":"dagelijksdal","pt":"global","to":"0","tot":"num"},{"t":"set","p":"vorigdal","pt":"msg","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":350,"y":120,"wires":[["ed2ef7e.b41ce08"]]},{"id":"4d94f71a.934e88","type":"debug","z":"88fa0739.2e94a8","name":"Last Days","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":760,"y":120,"wires":[]},{"id":"ed2ef7e.b41ce08","type":"function","z":"88fa0739.2e94a8","name":"Total usage","func":"msg.payload = \"Total usage today is \"+msg.payload\nreturn msg;","outputs":1,"noerr":0,"x":570,"y":120,"wires":[["4d94f71a.934e88"]]},{"id":"1094f192.43f43e","type":"change","z":"88fa0739.2e94a8","name":"Convert","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(payload)*1000","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":300,"y":280,"wires":[["d5c007ef.eb55b8","939b58c5.b66018"]]},{"id":"f6258372.f7858","type":"poll-state","z":"88fa0739.2e94a8","name":"Gas","server":"4463f6c4.b567b8","updateinterval":"2","outputinitially":false,"outputonchanged":false,"entity_id":"sensor.gas_consumption","x":110,"y":720,"wires":[["94be3317.721d1"]]},{"id":"94be3317.721d1","type":"change","z":"88fa0739.2e94a8","name":"Convert","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(payload)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":300,"y":720,"wires":[["a43aa836.e30f78"]]},{"id":"a43aa836.e30f78","type":"function","z":"88fa0739.2e94a8","name":"Gas usage","func":"//Grab previous value from global variable for total usage\npreviousvalue = global.get(\"totalvalue\")||0;\n\n//How much usage since the last update\nperiodvalue = msg.payload - previousvalue;\n\n//Grab previous value from global variable for daily usage\ndailyvalue = global.get(\"dailyusage\")||0;\n\ndailyvalue = dailyvalue + periodvalue;\n\n//Update the global variables.\nglobal.set(\"dailyusage\",dailyvalue );\nglobal.set(\"totalvalue\", msg.payload);\n\nmsg.payload = parseFloat(dailyvalue).toFixed(3)\n\nreturn msg;","outputs":1,"noerr":0,"x":490,"y":720,"wires":[["6bcc3e1a.d41b9","450350a7.1bd2e","6cae5772.5418d8"]]},{"id":"450350a7.1bd2e","type":"ui_gauge","z":"88fa0739.2e94a8","name":"Gas vandaag","group":"5dd90078.dcc25","order":1,"width":"3","height":"3","gtype":"donut","title":"Gas vandaag","label":"m3","format":"{{value}}","min":0,"max":"10","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":770,"y":660,"wires":[]},{"id":"6cae5772.5418d8","type":"ui_chart","z":"88fa0739.2e94a8","name":"VerbruikGrafiek","group":"5dd90078.dcc25","order":3,"width":"0","height":"0","label":"","chartType":"line","legend":"false","xformat":"dd HH:mm","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":"1","removeOlderPoints":"10000","removeOlderUnit":"604800","cutout":0,"useOneColor":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":false,"x":780,"y":700,"wires":[[],[]]},{"id":"6bcc3e1a.d41b9","type":"function","z":"88fa0739.2e94a8","name":"m3 naar Euro","func":"gasprijs = 0.71 //0.7060 cent\ncalc = parseFloat(msg.payload * gasprijs).toFixed(2);\nvar msg1 = {payload:calc};\nreturn [msg1];","outputs":1,"noerr":0,"x":780,"y":740,"wires":[["f380c562.31b788"]]},{"id":"f380c562.31b788","type":"ui_text","z":"88fa0739.2e94a8","group":"5dd90078.dcc25","order":2,"width":0,"height":0,"name":"Verbruik Euro","label":"Kosten vandaag","format":"{{msg.payload}} Euro","layout":"row-spread","x":780,"y":800,"wires":[]},{"id":"fcf6f7a3.5eb198","type":"poll-state","z":"88fa0739.2e94a8","name":"Elektra verbruik","server":"4463f6c4.b567b8","updateinterval":"2","outputinitially":false,"outputonchanged":false,"entity_id":"sensor.power_consumption","x":140,"y":280,"wires":[["1094f192.43f43e"]]},{"id":"5e57a412.1e905c","type":"poll-state","z":"88fa0739.2e94a8","name":"Normaal Tarief","server":"4463f6c4.b567b8","updateinterval":"2","outputinitially":false,"outputonchanged":false,"entity_id":"sensor.power_consumption_normal","x":130,"y":500,"wires":[["8a920a62.d4b098"]]},{"id":"8a920a62.d4b098","type":"change","z":"88fa0739.2e94a8","name":"Convert","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(payload)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":320,"y":500,"wires":[["c5ace9b1.f967d8"]]},{"id":"c5ace9b1.f967d8","type":"function","z":"88fa0739.2e94a8","name":"Power usage","func":"//Grab vorig normaal from global variable for total usage\nvorignormaal = global.get(\"totaalnormaal\")||0;\n\n//How much usage since the last update\nperiodenormaal = msg.payload - vorignormaal;\n\n//Grab vorig normaal from global variable for daily usage\ndagelijksnormaal = global.get(\"dagelijksnormaal\")||0;\n\ndagelijksnormaal = dagelijksnormaal + periodenormaal;\n\n//Update the global variables\nglobal.set(\"dagelijksnormaal\",dagelijksnormaal );\nglobal.set(\"totaalnormaal\", msg.payload);\n\nmsg.payload = parseFloat(dagelijksnormaal).toFixed(3)\n\nreturn msg;","outputs":1,"noerr":0,"x":530,"y":500,"wires":[["c3bc14e5.1a6888"]]},{"id":"c3bc14e5.1a6888","type":"function","z":"88fa0739.2e94a8","name":"KWh naar Euro","func":"kwhprijs = 0.23 //23 cent\ncalc = parseFloat(msg.payload * kwhprijs).toFixed(2);\nvar msg1 = {payload:calc};\nreturn [msg1];","outputs":1,"noerr":0,"x":760,"y":500,"wires":[["397c1ee5.ddbed2"]]},{"id":"397c1ee5.ddbed2","type":"ui_text","z":"88fa0739.2e94a8","group":"88cbb72.df21948","order":4,"width":"6","height":"1","name":"Normaal tarief","label":"Normaal tarief","format":"{{msg.payload}} Euro","layout":"row-spread","x":760,"y":540,"wires":[]},{"id":"9cc1f9a1.27cf18","type":"change","z":"88fa0739.2e94a8","name":"Normaal","rules":[{"t":"set","p":"payload","pt":"msg","to":"dagelijksnormaal","tot":"global"},{"t":"set","p":"dagelijksnormaal","pt":"global","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":360,"y":160,"wires":[["399201e2.91d64e"]]},{"id":"399201e2.91d64e","type":"function","z":"88fa0739.2e94a8","name":"Total usage","func":"msg.payload = \"Total usage today is \"+msg.payload\nreturn msg;","outputs":1,"noerr":0,"x":570,"y":160,"wires":[["49c330da.d8856"]]},{"id":"49c330da.d8856","type":"debug","z":"88fa0739.2e94a8","name":"Last Days","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":760,"y":160,"wires":[]},{"id":"4463f6c4.b567b8","type":"server","z":"","name":"Home Assistant","legacy":true},{"id":"88cbb72.df21948","type":"ui_group","z":"","name":"Elektra","tab":"bfc64ecd.f4499","order":8,"disp":true,"width":"6","collapse":false},{"id":"5dd90078.dcc25","type":"ui_group","z":"","name":"Gas","tab":"bfc64ecd.f4499","order":9,"disp":true,"width":"6","collapse":false},{"id":"bfc64ecd.f4499","type":"ui_tab","z":"","name":"Energie","icon":"dashboard","order":1}]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment