Energy Price Selection

For an other (project) I needed a node that could select the current energy price from an array.
I used the energy zero node (anwb) from dirkjanfaber as input to get the current price.

I created a subflow that has several outputs that you can expand to get more prices in the next hours.

Result of selection of the current hour: image

"Prices" subflow:

image image

[{"id":"688fd37cac510ae5","type":"subflow","name":"EnergyPrices","info":"","category":"","in":[{"x":50,"y":135,"wires":[{"id":"95e764185d61c0c8"},{"id":"62c463232e20606a"},{"id":"349a0f6b105f0722"}]}],"out":[{"x":1050,"y":315,"wires":[{"id":"60776426555b8fcb","port":0}]},{"x":1025,"y":375,"wires":[{"id":"e419136f74e2fbf8","port":0}]},{"x":1025,"y":420,"wires":[{"id":"eb125081a7400749","port":0}]},{"x":1025,"y":465,"wires":[{"id":"25f1bc41265fedea","port":0}]},{"x":1025,"y":510,"wires":[{"id":"dd2e76f0672abee2","port":0}]},{"x":1280,"y":660,"wires":[{"id":"f492ce93eefd66f0","port":0}]},{"x":1255,"y":735,"wires":[{"id":"846c4d87cb7790bb","port":0}]},{"x":1255,"y":780,"wires":[{"id":"7e7e392964beafb7","port":0}]},{"x":1255,"y":825,"wires":[{"id":"8ba903af320bb1e3","port":0}]},{"x":1255,"y":870,"wires":[{"id":"6c37462c9c75da47","port":0}]}],"env":[{"name":"inctax","type":"bool","value":"true","ui":{"icon":"font-awesome/fa-money","type":"checkbox"}}],"meta":{},"color":"#00ff99","outputLabels":["Anwb  Current Hour","Anwb +1h","Anwb +2h","Anwb +3h","Anwb +4h","Easyenergy Current Hour","Easyenergy +1h","Easyenergy +2h","Easyenergy +3h","Easyenergy +4h"],"icon":"font-awesome/fa-euro","status":{"x":875,"y":315,"wires":[{"id":"60776426555b8fcb","port":0}]}},{"id":"b1052985ea5d8cdf","type":"http request","z":"688fd37cac510ae5","name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"","tls":"b3c79543815bebe7","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":355,"y":705,"wires":[["45e2e883466139cd"]]},{"id":"95e764185d61c0c8","type":"function","z":"688fd37cac510ae5","name":"create easyenergy url","func":"//msg.url = 'https://api.energyzero.nl/v1/energyprices';\n//msg.url = 'https://api.frankenergie.nl/energyprices';\n//msg.url = 'https://enever.nl/api/stroomprijs_vandaag.php?' ;\nmsg.url = 'https://mijn.easyenergy.com/nl/api/tariff/getapxtariffs?startTimestamp=2020-04-29T22%3A00%3A00.000Z&endTimestamp=2020-04-30T22%3A00%3A00.000Z&grouping=';\nvar offset = 0;\nmsg.delay = 0;\nvar start = new Date();\n\nif (env.get('type') == 'tomorrow') {\n    offset = 24;\n    const targetTime = new Date(start.getFullYear(), start.getMonth(), start.getDate(), 15, 0, 0);\n    msg.delay = targetTime.getTime() - start.getTime();\n}\n\nstart.setUTCHours(0 + offset, start.getTimezoneOffset(), 0, 0);\nmsg.url += '?fromDate=' + start.toISOString();\n\nvar end = new Date();\nend.setUTCHours(23 + offset, start.getTimezoneOffset()+59, 59, 999);\nmsg.url += '&tillDate=' + end.toISOString();\n\nmsg.url += '&interval=4&usageType=1'\n\nif (env.get('inctax')) {\n    msg.url += '&inclBtw=true'\n} else {\n    msg.url += '&inclBtw=false'\n}\n\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":170,"y":660,"wires":[["b1052985ea5d8cdf","a7b55265d1ca1ce3"]]},{"id":"45e2e883466139cd","type":"json","z":"688fd37cac510ae5","name":"Convert to json","property":"payload","action":"","pretty":false,"x":535,"y":660,"wires":[["49a505a1b1892c5c","5c7c087c1aeba6aa","147ee8d661b1f2de","dc867a22fe62bffd","d057aacd79ec1187"]]},{"id":"49a505a1b1892c5c","type":"function","z":"688fd37cac510ae5","name":"Current Price easyenergy","func":"const d = new Date();\n\nvar hourOffset = 0\nlet hour = d.getHours() + hourOffset;\n\nvar msg = msg.payload[hour].TariffUsage; //select correct object\nreturn [{payload: msg}];\n\n\n// https://energie.anwb.nl/actuele-tarieven","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":760,"y":660,"wires":[["e6e185a01fea9165"]]},{"id":"5c7c087c1aeba6aa","type":"function","z":"688fd37cac510ae5","name":"Current Price easyenergy +1h","func":"const d = new Date();\n\nvar hourOffset = 1\nlet hour = d.getHours() + hourOffset;\n\nvar msg = msg.payload[hour].TariffUsage; //select correct object\nreturn [{payload: msg}];\n\n\n// https://energie.anwb.nl/actuele-tarieven","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":740,"y":735,"wires":[["0cac120bfbf5fbd8"]]},{"id":"147ee8d661b1f2de","type":"function","z":"688fd37cac510ae5","name":"Current Price easyenergy +2h","func":"const d = new Date();\n\nvar hourOffset = 2\nlet hour = d.getHours() + hourOffset;\n\nvar msg = msg.payload[hour].TariffUsage; //select correct object\nreturn [{payload: msg}];\n\n\n// https://energie.anwb.nl/actuele-tarieven","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":740,"y":780,"wires":[["2ae76677358feb58"]]},{"id":"0cac120bfbf5fbd8","type":"function","z":"688fd37cac510ae5","name":"0.xx","func":"msg.payload= msg.payload.toFixed(2);\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":940,"y":735,"wires":[["846c4d87cb7790bb"]]},{"id":"2ae76677358feb58","type":"function","z":"688fd37cac510ae5","name":"0.xx","func":"msg.payload= msg.payload.toFixed(2);\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":940,"y":780,"wires":[["7e7e392964beafb7"]]},{"id":"becd89b77a497713","type":"http request","z":"688fd37cac510ae5","name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":400,"y":285,"wires":[["4ff1bf7d5c10acaa"]]},{"id":"62c463232e20606a","type":"function","z":"688fd37cac510ae5","name":"create anwb url","func":"msg.url = 'https://api.energyzero.nl/v1/energyprices';\n//msg.url = 'https://api.frankenergie.nl/energyprices';\n//msg.url = 'https://enever.nl/api/stroomprijs_vandaag.php?' ;\n//msg.url = 'https://mijn.easyenergy.com/nl/api/tariff/getapxtariffs?startTimestamp=2020-04-29T22%3A00%3A00.000Z&endTimestamp=2020-04-30T22%3A00%3A00.000Z&grouping=';\nvar offset = 0;\nmsg.delay = 0;\nvar start = new Date();\n\nif (env.get('type') == 'tomorrow') {\n    offset = 24;\n    const targetTime = new Date(start.getFullYear(), start.getMonth(), start.getDate(), 15, 0, 0);\n    msg.delay = targetTime.getTime() - start.getTime();\n}\n\nstart.setUTCHours(0 + offset, start.getTimezoneOffset(), 0, 0);\nmsg.url += '?fromDate=' + start.toISOString();\n\nvar end = new Date();\nend.setUTCHours(23 + offset, start.getTimezoneOffset()+59, 59, 999);\nmsg.url += '&tillDate=' + end.toISOString();\n\nmsg.url += '&interval=4&usageType=1'\n\nif (env.get('inctax')) {\n    msg.url += '&inclBtw=true'\n} else {\n    msg.url += '&inclBtw=false'\n}\n\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":220,"y":240,"wires":[["becd89b77a497713","c296e88bfdffba7f"]]},{"id":"4ff1bf7d5c10acaa","type":"json","z":"688fd37cac510ae5","name":"Convert to json","property":"payload","action":"","pretty":false,"x":580,"y":240,"wires":[["60776426555b8fcb","e419136f74e2fbf8","eb125081a7400749","25f1bc41265fedea","dd2e76f0672abee2","f1064d44ceb8ba4b"]]},{"id":"349a0f6b105f0722","type":"function","z":"688fd37cac510ae5","name":"Current Hour","func":"//msg.payload = {};\n\nconst d = new Date();\nlet hour = d.getHours();\n//let value = payload.average();\n\n//var msg = payload.Prices[hour].price;\nmsg.payload = msg.array[hour];\n\n\n\n\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":410,"y":75,"wires":[["1ed450da46e16ec6"]]},{"id":"60776426555b8fcb","type":"function","z":"688fd37cac510ae5","name":"Current Price","func":"const d = new Date();\n\nvar hourOffset = 0\nlet hour = d.getHours() + hourOffset;\n\nvar msg = msg.payload.Prices[hour].price;\nreturn [{payload: msg}];\n\n\n// https://energie.anwb.nl/actuele-tarieven","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":775,"y":240,"wires":[["cdc57798e90a24e3","2a2cae757d5ce995"]]},{"id":"e419136f74e2fbf8","type":"function","z":"688fd37cac510ae5","name":"Next Hour","func":"const d = new Date();\n\nvar hourOffset = 1\nlet hour = d.getHours() + hourOffset;\n\nvar msg = msg.payload.Prices[hour].price;\nreturn [{payload: msg}];\n\n\n// https://energie.anwb.nl/actuele-tarieven","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":780,"y":375,"wires":[[]]},{"id":"eb125081a7400749","type":"function","z":"688fd37cac510ae5","name":"+2","func":"const d = new Date();\n\nvar hourOffset = 2\nlet hour = d.getHours() + hourOffset;\n\nvar msg = msg.payload.Prices[hour].price;\nreturn [{payload: msg}];\n\n\n// https://energie.anwb.nl/actuele-tarieven","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":780,"y":420,"wires":[[]]},{"id":"25f1bc41265fedea","type":"function","z":"688fd37cac510ae5","name":"+3","func":"const d = new Date();\n\nvar hourOffset = 3\nlet hour = d.getHours() + hourOffset;\n\nvar msg = msg.payload.Prices[hour].price;\nreturn [{payload: msg}];\n\n\n// https://energie.anwb.nl/actuele-tarieven","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":780,"y":465,"wires":[[]]},{"id":"dd2e76f0672abee2","type":"function","z":"688fd37cac510ae5","name":"+4","func":"const d = new Date();\n\nvar hourOffset = 4\nlet hour = d.getHours() + hourOffset;\n\nvar msg = msg.payload.Prices[hour].price;\nreturn [{payload: msg}];\n\n\n// https://energie.anwb.nl/actuele-tarieven","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":780,"y":510,"wires":[[]]},{"id":"dc867a22fe62bffd","type":"function","z":"688fd37cac510ae5","name":"Current Price easyenergy +3h","func":"const d = new Date();\n\nvar hourOffset = 3\nlet hour = d.getHours() + hourOffset;\n\nvar msg = msg.payload[hour].TariffUsage; //select correct object\nreturn [{payload: msg}];\n\n\n// https://energie.anwb.nl/actuele-tarieven","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":740,"y":825,"wires":[["009c0a6c49397cfc"]]},{"id":"009c0a6c49397cfc","type":"function","z":"688fd37cac510ae5","name":"0.xx","func":"msg.payload= msg.payload.toFixed(2);\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":940,"y":825,"wires":[["8ba903af320bb1e3"]]},{"id":"d057aacd79ec1187","type":"function","z":"688fd37cac510ae5","name":"Current Price easyenergy +4h","func":"const d = new Date();\n\nvar hourOffset = 4\nlet hour = d.getHours() + hourOffset;\n\nvar msg = msg.payload[hour].TariffUsage; //select correct object\nreturn [{payload: msg}];\n\n\n// https://energie.anwb.nl/actuele-tarieven","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":740,"y":870,"wires":[["4bd53c75a0e26204"]]},{"id":"4bd53c75a0e26204","type":"function","z":"688fd37cac510ae5","name":"0.xx","func":"msg.payload= msg.payload.toFixed(2);\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":935,"y":870,"wires":[["6c37462c9c75da47"]]},{"id":"e6e185a01fea9165","type":"function","z":"688fd37cac510ae5","name":"0.xx","func":"msg.payload= msg.payload.toFixed(2);\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":940,"y":660,"wires":[["f492ce93eefd66f0"]]},{"id":"f492ce93eefd66f0","type":"json","z":"688fd37cac510ae5","name":"","property":"payload","action":"","pretty":false,"x":1060,"y":660,"wires":[[]]},{"id":"846c4d87cb7790bb","type":"json","z":"688fd37cac510ae5","name":"","property":"payload","action":"","pretty":false,"x":1055,"y":735,"wires":[[]]},{"id":"7e7e392964beafb7","type":"json","z":"688fd37cac510ae5","name":"","property":"payload","action":"","pretty":false,"x":1060,"y":780,"wires":[[]]},{"id":"8ba903af320bb1e3","type":"json","z":"688fd37cac510ae5","name":"","property":"payload","action":"","pretty":false,"x":1060,"y":825,"wires":[[]]},{"id":"6c37462c9c75da47","type":"json","z":"688fd37cac510ae5","name":"","property":"payload","action":"","pretty":false,"x":1060,"y":870,"wires":[[]]},{"id":"f1064d44ceb8ba4b","type":"debug","z":"688fd37cac510ae5","name":"Current hour and price","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1160,"y":105,"wires":[]},{"id":"1ed450da46e16ec6","type":"delay","z":"688fd37cac510ae5","name":"","pauseType":"delay","timeout":"0.5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":940,"y":75,"wires":[["f1064d44ceb8ba4b"]]},{"id":"cdc57798e90a24e3","type":"delay","z":"688fd37cac510ae5","name":"","pauseType":"delay","timeout":"0.8","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":940,"y":195,"wires":[["f1064d44ceb8ba4b"]]},{"id":"2a2cae757d5ce995","type":"change","z":"688fd37cac510ae5","name":"","rules":[{"t":"set","p":"CurrentPrice","pt":"global","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1055,"y":240,"wires":[[]]},{"id":"c296e88bfdffba7f","type":"axios-request","z":"688fd37cac510ae5","name":"","endpoint":"fbd3590c1dfc2692","method":"get","url":"","responseType":"arraybuffer","keepAlive":false,"timeout":30000,"validateStatus":true,"headers":[],"params":[],"x":400,"y":210,"wires":[["4ff1bf7d5c10acaa"]]},{"id":"a7b55265d1ca1ce3","type":"axios-request","z":"688fd37cac510ae5","name":"","endpoint":"fbd3590c1dfc2692","method":"get","url":"","responseType":"arraybuffer","keepAlive":false,"timeout":30000,"validateStatus":true,"headers":[],"params":[],"x":355,"y":615,"wires":[["45e2e883466139cd"]]},{"id":"8e92dc094af2b39c","type":"comment","z":"688fd37cac510ae5","name":"use oxio in case node red > 4.0","info":"","x":400,"y":165,"wires":[]},{"id":"c2ead893dabb4820","type":"comment","z":"688fd37cac510ae5","name":"request node is broken in node red >4.0","info":"","x":405,"y":330,"wires":[]},{"id":"ca00514ef76b26d1","type":"tls-config","z":"688fd37cac510ae5","name":"","cert":"","key":"","ca":"","certname":"","keyname":"","caname":"","servername":"","verifyservercert":false,"alpnprotocol":""},{"id":"b3c79543815bebe7","type":"tls-config","z":"688fd37cac510ae5","name":"","cert":"","key":"","ca":"","certname":"","keyname":"","caname":"","servername":"","verifyservercert":false,"alpnprotocol":""},{"id":"fbd3590c1dfc2692","type":"axios-endpoint","name":"","baseURL":"https://","caCertPath":"","rejectUnauthorized":true,"proxyEnabled":false,"proxyProtocol":"https","proxyHost":"","proxyPort":""},{"id":"553a626e21b80ea4","type":"tab","label":"Prices","disabled":false,"info":"","env":[]},{"id":"3cc803553dd21bb6","type":"inject","z":"553a626e21b80ea4","name":"","props":[{"p":"payload"},{"p":"rejectUnauthorized","v":"false","vt":"bool"},{"p":"array","v":"[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"20\",\"21\",\"22\",\"23\"]","vt":"json"}],"repeat":"600","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":310,"y":240,"wires":[["79a250d35c338ef2"]]},{"id":"79a250d35c338ef2","type":"subflow:688fd37cac510ae5","z":"553a626e21b80ea4","name":"EnergyPrices","x":520,"y":240,"wires":[["1a4e856e852c6304"],["3c30cc76c60df062"],["34dadb3097c79905"],[],[],["04b995198c026993"],["ef14accaf40a0d2f"],["351fd6e881801537"],[],[]]},{"id":"04b995198c026993","type":"debug","z":"553a626e21b80ea4","name":"EasyEnergy current hour","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"payload","statusType":"auto","x":815,"y":240,"wires":[]},{"id":"ef14accaf40a0d2f","type":"debug","z":"553a626e21b80ea4","name":"EasyEnergy current +1h","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"payload","statusType":"auto","x":820,"y":300,"wires":[]},{"id":"351fd6e881801537","type":"debug","z":"553a626e21b80ea4","name":"EasyEnergy current +2h","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"payload","statusType":"auto","x":820,"y":360,"wires":[]},{"id":"1a4e856e852c6304","type":"debug","z":"553a626e21b80ea4","name":"Anwb current hour","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"payload","statusType":"auto","x":795,"y":60,"wires":[]},{"id":"3c30cc76c60df062","type":"debug","z":"553a626e21b80ea4","name":"Anwb current +1h","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"payload","statusType":"auto","x":795,"y":120,"wires":[]},{"id":"34dadb3097c79905","type":"debug","z":"553a626e21b80ea4","name":"Anwb current +2h","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"payload","statusType":"auto","x":795,"y":180,"wires":[]}]

Flow Info

Created 11 months, 3 weeks ago
Updated 10 months, 1 week ago
Rating: not yet rated

Owner

Actions

Rate:

Node Types

Core
  • change (x1)
  • comment (x2)
  • debug (x7)
  • delay (x2)
  • function (x18)
  • http request (x2)
  • inject (x1)
  • json (x7)
  • tls-config (x2)
Other

Tags

  • energy
  • price
  • subflow
  • current
  • hour
  • energyzero
  • anwb
Copy this flow JSON to your clipboard and then import into Node-RED using the Import From > Clipboard (Ctrl-I) menu option