Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon! 🥇🥈🥉

Anbefalte innlegg

Skrevet (endret)

Har nok småputlet og fixet litt nå og da. Pr i dag ser det slik ut hos meg (med både Dash1.0 og Dash 2.0 noder":

image.thumb.png.6438bd5e226a85112da967e369d62198.png

 

[{"id":"c622a1c1b5d187fe","type":"function","z":"2447f70b5f1095ba","name":"List all stations & create flow.stations","func":"var brands = flow.get(\"brands\");\nvar statsRaw = flow.get(\"stationsRaw\");\n//flow.set(\"Stations\",msg.payload);\n//node.warn( \"pl.length: \" + statsRaw.length);\nvar arr = [];\nvar arr2 = [];\nvar obj2 = {}\nvar msg2 = {}\nvar i = 0;\nvar j = 0;\nfor (i = 0;i < statsRaw.length;i++){\n    let obj = {}\n    //if (i == 2150)i++;\n    //if (i == 2302)i++;\n    //if (i == 2305)i++;\n    //if (i == 3512)i++;\n    obj.id = statsRaw[i].id;\n    obj.name = statsRaw[i].name || \"-\"\n    // Find brand from brandId\n    for (j = 0;j < brands.length;j++){\n        if (Number(statsRaw[i].brandId) == Number(brands[j].id)){\n             obj.brand = brands[j].name || \"-\"\n             obj.logo = brands[j].pictureUrl || \"-\"\n             //node.warn(i + \" \" + j + \" \" + brands[j].name);\n             break;\n        }\n    }\n    obj.location = statsRaw[i].location || \"-\"\n    // Add prices, some stations miss prices, skip these\n    //node.warn(\"Add prices\");\n    var obj3 = {}\n    //console.log(statsRaw[i].prices.length);\n    if (statsRaw[i].hasOwnProperty(\"prices\")){ // skip no-price stations\n        for (j = 0;j < statsRaw[i].prices.length;j++){\n        //node.warn(\"Add prices: \" + i + \" \" + j);\n        var ftid = statsRaw[i].prices[j].fuelTypeId;\n        if (ftid == 1 && statsRaw[i].prices[j].price != 0){ \n            obj3.D = {}\n            obj3.D.price = statsRaw[i].prices[j].price;\n            obj3.D.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n            obj3.D.type = \"D\";\n        }\n        if (ftid == 2 && statsRaw[i].prices[j].price != 0){ \n            obj3.B95 = {}\n            obj3.B95.price = statsRaw[i].prices[j].price;\n            obj3.B95.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n            obj3.B95.type = \"B95\";\n        } \n        if (ftid == 3 && statsRaw[i].prices[j].price != 0){\n            obj3.B98 = {}\n            obj3.B98.price = statsRaw[i].prices[j].price;\n            obj3.B98.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n            obj3.B98.type = \"B98\";\n        }\n        if (ftid == 4 && statsRaw[i].prices[j].price != 0){\n            obj3.FD = {}\n            obj3.FD.price = statsRaw[i].prices[j].price;\n            obj3.FD.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n            obj3.FD.type = \"FD\";\n        }\n    }\n    }//skip to here\n//    console.log(obj3);\n    obj.prices = obj3;\n\n    \n    arr.push(obj);\n}\nmsg2.payload = arr;\nflow.set(\"stationsPrepd\",arr);\nreturn msg2;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":260,"y":550,"wires":[["ee9831abc8e3a182"]]},{"id":"6d9e547c291b0fbc","type":"delay","z":"2447f70b5f1095ba","name":"+1 gang","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":460,"y":150,"wires":[["920c8e464a11c598"]]},{"id":"e6a31dc9dfb2064d","type":"change","z":"2447f70b5f1095ba","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"stationsPrepd","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":470,"y":100,"wires":[["920c8e464a11c598","92ef0335f61a9718","6d9e547c291b0fbc"]]},{"id":"ee9831abc8e3a182","type":"junction","z":"2447f70b5f1095ba","x":530,"y":880,"wires":[["6ffebf4f1340a92e","e6a31dc9dfb2064d","f193882be2dc7762"]]},{"id":"1187eef693a5d073","type":"group","z":"2447f70b5f1095ba","name":"Hent drivstoffpriser fra Drivstoffappen","style":{"label":true,"color":"#000000"},"nodes":["9103052baf82e5d0","08c3e48feae420a1","5301761a12ee53d3"],"x":14,"y":39,"w":239,"h":152},{"id":"9103052baf82e5d0","type":"inject","z":"2447f70b5f1095ba","g":"1187eef693a5d073","name":"Hvert 15 min","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"*/15 6-23 * * *","once":false,"onceDelay":"5","topic":"","payload":"","payloadType":"date","x":140,"y":80,"wires":[["ad3a3a41bdece374"]]},{"id":"08c3e48feae420a1","type":"inject","z":"2447f70b5f1095ba","g":"1187eef693a5d073","name":"Hvert 60 min","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"0 0-5 * * *","once":false,"onceDelay":"5","topic":"","payload":"","payloadType":"date","x":140,"y":110,"wires":[["ad3a3a41bdece374"]]},{"id":"5301761a12ee53d3","type":"ui_button","z":"2447f70b5f1095ba","g":"1187eef693a5d073","name":"","group":"c5147f5beba7be52","order":23,"width":"3","height":"2","passthru":false,"label":"Oppdater","tooltip":"","color":"","bgcolor":"","className":"","icon":"","payload":"","payloadType":"str","topic":"topic","topicType":"msg","x":120,"y":150,"wires":[["fb25d94b.139e78"]]},{"id":"c5147f5beba7be52","type":"ui_group","name":"Wide","tab":"8b4128994ad0c3a1","order":2,"disp":false,"width":"40","collapse":false,"className":""},{"id":"8b4128994ad0c3a1","type":"ui_tab","name":"Dieselpriser","icon":"drive_eta","order":24,"disabled":false,"hidden":false},{"id":"77e67d4e89c2c546","type":"group","z":"2447f70b5f1095ba","name":"Vis utvalgte dieselpriser m/trend","style":{"label":true,"color":"#000000"},"nodes":["dc20c0baebcded39","52943a1fc077d28f","7014c2032a87fc3b","671050bdedc0c3cb","8e502b90702d3857","b1eaf76d80b124b2","13527989f83e29d2","a789bc33845b6aae","28fe85a134fe0971","dfb010ed7eafaf57","f10d3ac86fabfb52","920c8e464a11c598","80fadd7556b173c2","a25c248dc4ebd8e1","4845524c229e5de4","4bc7a1bfe0edbd3d","a0ed1589c7578ebc","313d717f04abb611","df6111373c9fcb74","9115f8c79d2fb5bf","bb875534cb2f1287","ef238c7de03c89ba","342412d6ccffa890","deb634361ea88282","7d2c0b671fe55eb5","73f01377bb3987bb","2ca32bed009a91c7","c4e4ad48e1be3967","fedddf6d961e47e1","f004caf9b1859658","f280cce61136ea5f","35afefb923880a86","13a80ea70008ef69","de080617e02b76c0","efb09c551659ae8e","c9be417364a0636a","c1e1c529d2ebbbe3","ba85ec803b447086","575ebc0b7826b668","a5b30e2c9a5b185b","5cdf4a4e44ba3e96","7907e0a5a1ff80b6","ee11d26aa7381961","c6597ae705c493fd","197fde062f906fe2","d3117ab9bbdc344d","a76caa7a16bac95c","99fbdbd6f1247a74","f41e2331b0b830d3","98ad46a8c1cec362","b4db27ab8e1249f9","211a49ea39c47dbf","345e2bc8bcaeeffd","f3a5b1da15641fda","f82266bbecc5f929","7ec8a975f4e62ea5","b4c42883c0d1b421","89f905a2a16a5653","bd92fd80ba8708f5","919354dd3a9d85e1","af920dde227a02ba","42965b35532dc0a6","198ea5a17cf29258","591771770c56781a","72b2d1bb06c9fd47","835b0df2bd3edcbb","69d3c375167219d4","e329d720082ab3ca","494289de7de6d7f1","26ccfdd89731f3a7","1e1b7ff7040d7b80","9b2dcbd582073b91","836292a9fd69e76b","bcc37ebceee47007","a05d8f5407d2cdb1","900c5206972e6c86","0d6ee42acdd37ff2","dfd2ccaa5bc1b57f","f69279700d78497e","23f00bc1a8a74fa9","335994ff4485b3ec","42b492a395c7e579","3c9ceafdd8c29bf3","a01f5e223eb1c084","ea45b82d3dbb59a7","2b1034676d5cf0ad","edda9c63ecdd3aa5","9b8a839f4476974a","211cc02ca79c120b","b17af5ca3a29fb12","f3a4d2156cdcdab6","dce9b94037817b13","d1d4e9dece7df913","c34edf432a785f77","88e00589654790f5","a83908819ec381b2","93aeb62e57c14023","ee43915933528bfa","89afa177a44ffbc5","85512989de4690f3","6024725ae75382fb","419d1e6e4e82482e","1ea7fb4b20337450","7a0bc26925236777","86b7aca3b73895f5","13a4afa74f1e8be6","a5989d0a9b6bbaeb"],"x":644,"y":9,"w":1682,"h":812},{"id":"2835c4be2e0c346c","type":"subflow","name":"subDrivstoffpris","info":"","category":"","in":[{"x":60,"y":80,"wires":[{"id":"629ced2da13dc595"}]}],"out":[{"x":440,"y":50,"wires":[{"id":"629ced2da13dc595","port":0}]},{"x":440,"y":110,"wires":[{"id":"629ced2da13dc595","port":1}]}],"env":[{"name":"station","type":"str","value":""},{"name":"statInt","type":"str","value":""},{"name":"statInt_Prev","type":"str","value":""}],"meta":{"version":"1.0","author":"SveinHa"},"color":"#DDAA99","outputLabels":["Trend","Skilt"]},{"id":"629ced2da13dc595","type":"function","z":"2835c4be2e0c346c","name":"Hjernen ;-)","func":"var ts = new Date();\nlet sid = msg.id;\nvar station = msg.station;\nvar statInt = msg.statInt;\n//var statInt_Prev = statInt_Prev;\n\nvar prev = 0;\nvar diff = 0;\nvar msg2 = {}\n//console.log(msg.payload);\n//msg.payload = msg.payload.filter((/** @type {{ id: string; }} */ e) => e.id == sid);\nmsg.payload = msg.payload.filter((e) => e.id == sid);\n//console.log(msg.payload[0].brandId);\n//node.warn(msg);\n\n//msg.payload = msg.payload.filter((/** @type {{ discountInfo: string; }} */ e) => e.discountInfo == station); \n//console.log(msg.payload[0].prices.D.type);\n//msg.payload[0].type = msg.payload[0].prices.D.type;//.filter(e => e.type == 'D');\nvar price = msg.payload[0].prices.D.price;\n//console.log(price);\nvar now = Number(new Date());\nvar age = (now - msg.payload[0].prices.D.lastUpdated) / 3600 / 1000; //age in hours\nvar diffSymbol = \"\";\nflow.set(\"$parent.\" + statInt, price);\nprev = flow.get(\"$parent.\" + statInt + \"_Prev\") || 0\n\n//node.warn(\"ID: \" + msg.payload[0].id + \", name: \" + msg.payload[0].name + \", brand: \" + msg.payload[0].brand );\n\nvar snitt = flow.get(\"$parent.AvgPrice\");\nvar min = flow.get(\"$parent.MinPrice\");\nvar max = flow.get(\"$parent.MaxPrice\");\nvar lolim = snitt - ((max - min)/6);\nvar hilim = snitt + ((max - min)/6);\nif (price < lolim) msg2.color = \"LIME\";\nelse if (price > hilim) msg2.color = \"RED\";\nelse msg2.color = \"YELLOW\";\n//node.warn(min + \"-\" + lolim + \"-\" + snitt + \"-\" + hilim + \"-\" + max);\n\nif (price != prev) {\n    var ts = new Date();\n    flow.set(\"$parent.\" + statInt + \"_Diff\", Number((price - prev).toFixed(2)));\n    flow.set(\"$parent.\" + statInt + \"_Prev\", price);\n    flow.set(\"$parent.\" + statInt + \"_PrevT\", Number(ts));\n}\n\ndiff = flow.get(\"$parent.\" + statInt + \"_Diff\") || \"-\"\nvar tss = flow.get(\"$parent.\" + statInt + \"_PrevT\") || 0\nvar ageD = Number((Number(now) - Number(tss))) / 3600 / 1000; //age in hours\nif (ageD > 999.9) ageD = 999.9;\n\nif (diff >= 0) diffSymbol = \"<font color=RED> \" + diff;//.toFixed(2);\nelse diffSymbol = \"<font color=LIME> \" + diff;//.toFixed(2);\nflow.set(\"$parent.\" + statInt + \"_DiffS\", diffSymbol);\n\ndiffSymbol = flow.get(\"$parent.\" + statInt + \"_DiffS\") || \"-\"\nmsg2.payload = \"<font size=6>\" + price.toFixed(2) + \"<font size=2>\" + diffSymbol + \"(\" + ageD.toFixed(1) + \"h)\";\nmsg2.topic = station.slice(0,15);    //Forkort for lange navn\nmsg2.age = age.toFixed(1);\nif (age < 1) { msg2.stationcolor = \"LIME\"; }\nelse if (age < 6) { msg2.stationcolor = \"YELLOW\"; }\nelse if (age <= 12) { msg2.stationcolor = \"ORANGE\"; }\nelse if (age > 12) { msg2.stationcolor = \"RED\"; }\n\n//node.warn(msg2.topic + \"Price: \" + price + \" Prev: \" + prev + \"Diff: \" + diff);\nmsg2.pri  = flow.get(\"$parent.\" + statInt + \"_Pri\") \n//node.send([null,msg2]);\n//node.warn(\"$parent.\" + statInt + \"-\" + msg2.pri);\nmsg2.src = msg.payload[0].logo;\n\n\nmsg2.label = \"<font color=\" + msg2.stationcolor + \">\" + msg2.topic + \" (\" + msg2.age + \"h)\";\nmsg2.payload= \"<font color=\" + msg2.color + \">Kr.\" + msg2.payload;\n//msg2.ui_update = true;\n\nmsg.payload = Number(price.toFixed(2));\nmsg.topic = station;\n\nvar te = new Date();\n//console.log(station + \": \" + (Number(te) - Number(ts)))\nreturn [msg, msg2];","outputs":2,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":220,"y":80,"wires":[[],[]]},{"id":"dc20c0baebcded39","type":"persist in","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Dieselpriser","storageNode":"8a6654beead70801","x":1830,"y":680,"wires":[]},{"id":"52943a1fc077d28f","type":"persist out","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Dieselpriser","storageNode":"8a6654beead70801","x":1460,"y":670,"wires":[["835b0df2bd3edcbb"]]},{"id":"7014c2032a87fc3b","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":5,"width":"6","height":"2","name":"Price 1","label":"{{msg.label}}","format":"{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1970,"y":150,"wires":[]},{"id":"671050bdedc0c3cb","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":15,"width":"6","height":"2","name":"Price 6","label":"{{msg.label}}","format":"{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1970,"y":450,"wires":[]},{"id":"8e502b90702d3857","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":17,"width":"6","height":"2","name":"Price 7","label":"{{msg.label}}","format":"{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1970,"y":510,"wires":[]},{"id":"b1eaf76d80b124b2","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":13,"width":"6","height":"2","name":"Price 5","label":"{{msg.label}}","format":"{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1970,"y":390,"wires":[]},{"id":"13527989f83e29d2","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":3,"width":"6","height":"2","name":"Price 0","label":"{{msg.label}}","format":"{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1970,"y":90,"wires":[]},{"id":"a789bc33845b6aae","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":9,"width":"6","height":"2","name":"Price 3","label":"{{msg.label}}","format":"{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1970,"y":270,"wires":[]},{"id":"28fe85a134fe0971","type":"debug","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"debug 89","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":790,"y":600,"wires":[]},{"id":"dfb010ed7eafaf57","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Last update","func":"msg.label = \"Siste oppdatering\";\n//var d = new Date(msg.headers.date);\nvar d = new Date();\n//node.warn(d);\nmsg.payload = d.toLocaleString('nb-NO' );//.slice(0,16);\n//node.warn(msg.payload);\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":980,"y":530,"wires":[["f10d3ac86fabfb52","a25c248dc4ebd8e1"]]},{"id":"f10d3ac86fabfb52","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":24,"width":"6","height":"2","name":"Siste oppdat","label":"{{msg.label}}","format":"{{msg.payload}}","layout":"row-left","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1300,"y":530,"wires":[]},{"id":"920c8e464a11c598","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":670,"y":130,"wires":[["28fe85a134fe0971","313d717f04abb611","efb09c551659ae8e","c1e1c529d2ebbbe3","7d2c0b671fe55eb5","9115f8c79d2fb5bf","bb875534cb2f1287","ef238c7de03c89ba","342412d6ccffa890","deb634361ea88282","73f01377bb3987bb","7907e0a5a1ff80b6","72b2d1bb06c9fd47","dfb010ed7eafaf57"]]},{"id":"80fadd7556b173c2","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":25,"width":"6","height":"1","name":"Legend","label":"<font color=\"LIME\"><1h <font color=\"YELLOW\"><6h <font color=\"ORANGE\"><=12h <font color=\"RED\">>12h<font color=#43464B>","format":"","layout":"row-left","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1290,"y":600,"wires":[]},{"id":"a25c248dc4ebd8e1","type":"change","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"flow.get.AvgPrice","rules":[{"t":"set","p":"payload","pt":"msg","to":"AvgPrice","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":980,"y":600,"wires":[["80fadd7556b173c2","4845524c229e5de4","575ebc0b7826b668"]]},{"id":"4845524c229e5de4","type":"change","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","rules":[{"t":"set","p":"topic","pt":"msg","to":"Snitt","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1300,"y":570,"wires":[[]]},{"id":"4bc7a1bfe0edbd3d","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":7,"width":"6","height":"2","name":"Price 2","label":"{{msg.label}}","format":"{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1970,"y":210,"wires":[]},{"id":"a0ed1589c7578ebc","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":11,"width":"6","height":"2","name":"Price 4","label":"{{msg.label}}","format":"{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1970,"y":330,"wires":[]},{"id":"313d717f04abb611","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Esso Avaldsnes","func":"//console.log(\"Dieselpriser start\");\nmsg.id = 203;                   // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'Esso Avaldsnes'; // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'EssoAval';       // Unikt kortnavn, 8 tegn, for bruk  i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":990,"y":130,"wires":[["df6111373c9fcb74"]]},{"id":"df6111373c9fcb74","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1310,"y":130,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"9115f8c79d2fb5bf","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Uno-X Avaldsnes","func":"msg.id = 137;                       // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'Uno-X Avaldsnes';    // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'UnoXAval';           // Unikt kortnavn, 8 tegn, for bruk  i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":1000,"y":210,"wires":[["c4e4ad48e1be3967"]]},{"id":"bb875534cb2f1287","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Uno-X Norheim","func":"msg.id = 269;                           // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'Uno-X Norheim';          // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'UnoXNorh';               // Unikt kortnavn, 8 tegn, for bruk  i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":990,"y":250,"wires":[["fedddf6d961e47e1"]]},{"id":"ef238c7de03c89ba","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Tanken Helganes - Flyplassv.","func":"msg.id = 1546;                                      // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'Tanken Helganes - Flyplassvegen';    // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'TankFlyp';                           // Unikt kortnavn, 8 tegn, for bruk  i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":1030,"y":290,"wires":[["f004caf9b1859658"]]},{"id":"342412d6ccffa890","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Cirkle K Kvala","func":"msg.id = 187;                   // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'Circle K Kvala'; // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'CirKKval';       // Unikt kortnavn, 8 tegn, for bruk  i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":990,"y":330,"wires":[["f280cce61136ea5f"]]},{"id":"deb634361ea88282","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Revheim Storbilvask","func":"msg.id = 22828;                         // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'Revheim Storbilvask';    // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'RevhStor';               // Unikt kortnavn, 8 tegn, for bruk  i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":1010,"y":370,"wires":[["35afefb923880a86"]]},{"id":"7d2c0b671fe55eb5","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Esso Raglamyr","func":"msg.id = 216;                   // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'Esso Raglamyr';  // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'EssoRagl';       // Unikt kortnavn, 8 tegn, for bruk  i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":990,"y":170,"wires":[["2ca32bed009a91c7"]]},{"id":"73f01377bb3987bb","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Shell Norheim","func":"msg.id = 1342;                  // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'Shell Norheim';  // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'ShelNorh';       // Unikt kortnavn, 8 tegn, for bruk  i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":990,"y":410,"wires":[["13a80ea70008ef69"]]},{"id":"2ca32bed009a91c7","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1310,"y":170,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"c4e4ad48e1be3967","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1310,"y":210,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"fedddf6d961e47e1","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1310,"y":250,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"f004caf9b1859658","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1310,"y":290,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"f280cce61136ea5f","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1310,"y":330,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"35afefb923880a86","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1310,"y":370,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"13a80ea70008ef69","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1310,"y":410,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"de080617e02b76c0","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Beregn snittpris","func":"var sum = 0;\nvar temp = 0;\nvar antall = 0;\nvar minPrice = 999;\nvar maxPrice = 0;\n\nflow.keys().forEach(function(element) {\n//    if(element.substring(element.length -5,element.length)!=\"_Prev\"){\n    if(element.slice(-5) == \"_Prev\"){\n        temp = flow.get(element.slice(0, element.length -5));\n        sum += temp;\n        antall += 1;\n        if (temp > maxPrice) maxPrice = temp;\n        if (temp < minPrice) minPrice = temp;\n        //node.warn(element.slice(0,element.length -5) + \" Sum: \" + sum + \" Antall: \" + antall + \" temp: \" + temp);\n    }\n})\nmsg.payload = (sum / antall).toFixed(2);\nflow.set(\"AvgPrice\", Number(msg.payload));\nflow.set(\"MaxPrice\", Number(maxPrice));\nflow.set(\"MinPrice\", Number(minPrice));\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":980,"y":670,"wires":[["ba85ec803b447086"]]},{"id":"efb09c551659ae8e","type":"delay","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":790,"y":670,"wires":[["de080617e02b76c0"]]},{"id":"c9be417364a0636a","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Sorter på pris, store in flow","func":"var statList = []\nvar i = 0;\nvar temp = \"\";\n// Hent alle stasjoner of pris\nflow.keys().forEach(function(element) {\n    if(element.slice(-5) == \"_Prev\"){\n        temp = flow.get(element.slice(0, element.length -5));\n        var name = element.slice(0, element.length - 5);\n        var value = flow.get(element.slice(0, element.length - 5));\n        statList.push({ name, value });\n    }\n})\n// Sort lav->høy pris\nstatList.sort( (A,B) => A.value - B.value ) \n//node.warn((statList));\nstatList.forEach(function(element) {\n    flow.set(element.name + \"_Pri\", i);\n    i++;\n//    node.warn(element);\n})","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1020,"y":720,"wires":[[]]},{"id":"c1e1c529d2ebbbe3","type":"delay","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","pauseType":"delay","timeout":"100","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":800,"y":720,"wires":[["c9be417364a0636a"]]},{"id":"ba85ec803b447086","type":"debug","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Snittpris","active":true,"tosidebar":false,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"payload","statusType":"auto","x":1290,"y":670,"wires":[]},{"id":"575ebc0b7826b668","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":26,"width":"6","height":"1","name":"Legend price","label":"","format":"<font color=\"LIME\" size=5>1/3 < <font color=\"YELLOW\">{{msg.payload}}<font color=\"RED\">< 1/3","layout":"row-left","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1300,"y":630,"wires":[]},{"id":"a5b30e2c9a5b185b","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":19,"width":"6","height":"2","name":"Price 8","label":"{{msg.label}}","format":"{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1970,"y":570,"wires":[]},{"id":"5cdf4a4e44ba3e96","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":21,"width":"6","height":"2","name":"Price 9","label":"{{msg.label}}","format":"{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1970,"y":630,"wires":[]},{"id":"7907e0a5a1ff80b6","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"CircleK Hafrsfjord","func":"msg.id = 3691;                  // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'CircleK Hafrsfjord';  // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'CirKHafr';       // Unikt kortnavn, 8 tegn, for bruk  i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":1000,"y":450,"wires":[["ee11d26aa7381961"]]},{"id":"ee11d26aa7381961","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1310,"y":450,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"c6597ae705c493fd","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1310,"y":490,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"197fde062f906fe2","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 0","width":"2","height":"2","order":2,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1970,"y":60,"wires":[[]]},{"id":"d3117ab9bbdc344d","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 1","width":"2","height":"2","order":4,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1970,"y":120,"wires":[[]]},{"id":"a76caa7a16bac95c","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 2","width":"2","height":"2","order":6,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1970,"y":180,"wires":[[]]},{"id":"99fbdbd6f1247a74","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 3","width":"2","height":"2","order":8,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1970,"y":240,"wires":[[]]},{"id":"f41e2331b0b830d3","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 4","width":"2","height":"2","order":10,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1970,"y":300,"wires":[[]]},{"id":"98ad46a8c1cec362","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 5","width":"2","height":"2","order":12,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1970,"y":360,"wires":[[]]},{"id":"b4db27ab8e1249f9","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 6","width":"2","height":"2","order":14,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1970,"y":420,"wires":[[]]},{"id":"211a49ea39c47dbf","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 7","width":"2","height":"2","order":16,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1970,"y":480,"wires":[[]]},{"id":"345e2bc8bcaeeffd","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 8","width":"2","height":"2","order":18,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1970,"y":540,"wires":[[]]},{"id":"f3a5b1da15641fda","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 9","width":"2","height":"2","order":20,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1970,"y":600,"wires":[[]]},{"id":"f82266bbecc5f929","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1870,"y":80,"wires":[["13527989f83e29d2","197fde062f906fe2","900c5206972e6c86","edda9c63ecdd3aa5"]]},{"id":"7ec8a975f4e62ea5","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1870,"y":140,"wires":[["7014c2032a87fc3b","d3117ab9bbdc344d","0d6ee42acdd37ff2","b17af5ca3a29fb12"]]},{"id":"b4c42883c0d1b421","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1870,"y":200,"wires":[["4bc7a1bfe0edbd3d","a76caa7a16bac95c","dfd2ccaa5bc1b57f","dce9b94037817b13"]]},{"id":"89f905a2a16a5653","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1870,"y":260,"wires":[["a789bc33845b6aae","99fbdbd6f1247a74","f69279700d78497e","c34edf432a785f77"]]},{"id":"bd92fd80ba8708f5","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1870,"y":310,"wires":[["a0ed1589c7578ebc","f41e2331b0b830d3","23f00bc1a8a74fa9","a83908819ec381b2"]]},{"id":"919354dd3a9d85e1","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1870,"y":370,"wires":[["b1eaf76d80b124b2","98ad46a8c1cec362","335994ff4485b3ec","ee43915933528bfa"]]},{"id":"af920dde227a02ba","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1870,"y":430,"wires":[["b4db27ab8e1249f9","671050bdedc0c3cb","42b492a395c7e579","85512989de4690f3"]]},{"id":"42965b35532dc0a6","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1870,"y":500,"wires":[["8e502b90702d3857","211a49ea39c47dbf","3c9ceafdd8c29bf3","419d1e6e4e82482e"]]},{"id":"198ea5a17cf29258","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1870,"y":560,"wires":[["a5b30e2c9a5b185b","345e2bc8bcaeeffd","a01f5e223eb1c084","7a0bc26925236777"]]},{"id":"591771770c56781a","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1870,"y":620,"wires":[["5cdf4a4e44ba3e96","f3a5b1da15641fda","ea45b82d3dbb59a7","13a4afa74f1e8be6"]]},{"id":"72b2d1bb06c9fd47","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Uno-X Tananger","func":"msg.id = 3589;                  // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'Uno-X Tananger';  // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'UnoXTana';       // Unikt kortnavn, 8 tegn, for bruk  i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":990,"y":490,"wires":[["c6597ae705c493fd"]]},{"id":"835b0df2bd3edcbb","type":"ui_chart","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","group":"c5147f5beba7be52","order":1,"width":"32","height":"20","label":"Dieselpris (6u).","chartType":"line","legend":"true","xformat":"DD dd hh:mm","interpolate":"step","nodata":"No data...","dot":false,"ymin":"","ymax":"","removeOlder":"6","removeOlderPoints":"","removeOlderUnit":"604800","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#f9fafa","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#0501f9","#9467bd","#f5ed00"],"outputs":1,"useDifferentColor":false,"className":"","x":1660,"y":630,"wires":[["494289de7de6d7f1","dc20c0baebcded39"]]},{"id":"69d3c375167219d4","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1450,"y":640,"wires":[["835b0df2bd3edcbb","a5989d0a9b6bbaeb"]]},{"id":"e329d720082ab3ca","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"pri-pens","func":"switch (msg.pri){\n    case 0:\n    return [msg,null,null,null,null,null,null,null,null,null]\n    case 1:\n    return [null,msg,null,null,null,null,null,null,null,null]\n    case 2:\n    return [null,null,msg,null,null,null,null,null,null,null]\n    case 3:\n    return [null,null,null,msg,null,null,null,null,null,null]\n    case 4:\n    return [null,null,null,null,msg,null,null,null,null,null]\n    case 5:\n    return [null,null,null,null,null,msg,null,null,null,null]\n    case 6:\n    return [null,null,null,null,null,null,msg,null,null,null]\n    case 7:\n    return [null,null,null,null,null,null,null,msg,null,null]\n    case 8:\n    return [null,null,null,null,null,null,null,null,msg,null]\n    case 9:\n    return [null,null,null,null,null,null,null,null,null,msg]\n}\n","outputs":10,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1710,"y":320,"wires":[["f82266bbecc5f929"],["7ec8a975f4e62ea5"],["b4c42883c0d1b421"],["89f905a2a16a5653"],["bd92fd80ba8708f5"],["919354dd3a9d85e1"],["af920dde227a02ba"],["42965b35532dc0a6"],["198ea5a17cf29258"],["591771770c56781a"]]},{"id":"494289de7de6d7f1","type":"change","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"to flow.test","rules":[{"t":"set","p":"test","pt":"flow","to":"payload","tot":"msg"},{"t":"delete","p":"payload[0].data[10]","pt":"msg"},{"t":"delete","p":"payload[0].data[11]","pt":"msg"},{"t":"delete","p":"payload[0].series[10]","pt":"msg"},{"t":"delete","p":"payload[0].series[11]","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1980,"y":660,"wires":[[]]},{"id":"26ccfdd89731f3a7","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Change data for chart","func":"/*for (var i in msg.payload[0].series){\n    if (msg.payload[0].series[i] == \"YX 7-Eleven Norheim\") msg.payload[0].series[i] = \"Uno-X Norheim\";\n    //node.warn(msg.payload[0].series[i]);\n}*/\nfor (var i in msg.payload[0].data[6]){\n//    console.log(msg.payload[0].data[6][i].y);\n    if (msg.payload[0].data[6][i].y == 29.99){\n        node.warn(\"Old data: \" + msg.payload[0].data[6][i].y);\n        msg.payload[0].data[6][i].y = 18.99;\n    }\n}\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1680,"y":740,"wires":[["9b2dcbd582073b91","835b0df2bd3edcbb"]]},{"id":"1e1b7ff7040d7b80","type":"inject","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"flow.test","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"test","payloadType":"flow","x":1480,"y":740,"wires":[["26ccfdd89731f3a7"]]},{"id":"9b2dcbd582073b91","type":"debug","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"debug 160","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":2000,"y":740,"wires":[]},{"id":"836292a9fd69e76b","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Change stationname for chart","func":"for (var i in msg.payload[0].series){\n    if (msg.payload[0].series[i] == \"YX 7-Eleven Norheim\") msg.payload[0].series[i] = \"Uno-X Norheim\";\n    //node.warn(msg.payload[0].series[i]);\n}\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1610,"y":520,"wires":[["835b0df2bd3edcbb"]]},{"id":"bcc37ebceee47007","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Console log ferdig","func":"console.log(\"Dieselpriser innhenting ferdig\");\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":2020,"y":780,"wires":[[]]},{"id":"a05d8f5407d2cdb1","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"console.log Diesel End","func":"console.log(\"Dieselpriser slutt\");\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1090,"y":640,"wires":[[]]},{"id":"900c5206972e6c86","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":2,"width":"2","height":"1","name":"Price0","label":"","format":"{{msg.payload}}","layout":"col-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2120,"y":80,"wires":[]},{"id":"0d6ee42acdd37ff2","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":4,"width":"2","height":"1","name":"Price1","label":"","format":"{{msg.payload}}","layout":"col-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2120,"y":140,"wires":[]},{"id":"dfd2ccaa5bc1b57f","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":6,"width":"2","height":"1","name":"Price2","label":"","format":"{{msg.payload}}","layout":"col-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2120,"y":190,"wires":[]},{"id":"f69279700d78497e","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":8,"width":"2","height":"1","name":"Price3","label":"","format":"{{msg.payload}}","layout":"col-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2120,"y":250,"wires":[]},{"id":"23f00bc1a8a74fa9","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":10,"width":"2","height":"1","name":"Price4","label":"","format":"{{msg.payload}}","layout":"col-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2120,"y":310,"wires":[]},{"id":"335994ff4485b3ec","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":12,"width":"2","height":"1","name":"Price5","label":"","format":"{{msg.payload}}","layout":"col-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2120,"y":370,"wires":[]},{"id":"42b492a395c7e579","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":14,"width":"2","height":"1","name":"Price6","label":"","format":"{{msg.payload}}","layout":"col-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2120,"y":440,"wires":[]},{"id":"3c9ceafdd8c29bf3","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":16,"width":"2","height":"1","name":"Price7","label":"","format":"{{msg.payload}}","layout":"col-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2120,"y":500,"wires":[]},{"id":"a01f5e223eb1c084","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":18,"width":"2","height":"1","name":"Price8","label":"","format":"{{msg.payload}}","layout":"col-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2120,"y":560,"wires":[]},{"id":"ea45b82d3dbb59a7","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":20,"width":"2","height":"1","name":"Price9","label":"","format":"{{msg.payload}}","layout":"col-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2120,"y":620,"wires":[]},{"id":"2b1034676d5cf0ad","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":1,"width":"2","height":"1","name":"Label0","label":"","format":"{{msg.payload}}","layout":"row-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2250,"y":50,"wires":[]},{"id":"edda9c63ecdd3aa5","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"lab2pl","func":"msg.payload = msg.label;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":2120,"y":50,"wires":[["2b1034676d5cf0ad"]]},{"id":"9b8a839f4476974a","type":"inject","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":1730,"y":70,"wires":[["e6a31dc9dfb2064d"]]},{"id":"211cc02ca79c120b","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":3,"width":"2","height":"1","name":"Label1","label":"","format":"{{msg.payload}}","layout":"row-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2250,"y":110,"wires":[]},{"id":"b17af5ca3a29fb12","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"lab2pl","func":"msg.payload = msg.label;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":2120,"y":110,"wires":[["211cc02ca79c120b"]]},{"id":"f3a4d2156cdcdab6","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":5,"width":"2","height":"1","name":"Label2","label":"","format":"{{msg.payload}}","layout":"row-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2250,"y":170,"wires":[]},{"id":"dce9b94037817b13","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"lab2pl","func":"msg.payload = msg.label;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":2120,"y":170,"wires":[["f3a4d2156cdcdab6"]]},{"id":"d1d4e9dece7df913","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":7,"width":"2","height":"1","name":"Label3","label":"","format":"{{msg.payload}}","layout":"row-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2250,"y":220,"wires":[]},{"id":"c34edf432a785f77","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"lab2pl","func":"msg.payload = msg.label;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":2120,"y":220,"wires":[["d1d4e9dece7df913"]]},{"id":"88e00589654790f5","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":9,"width":"2","height":"1","name":"Label4","label":"","format":"{{msg.payload}}","layout":"row-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2250,"y":280,"wires":[]},{"id":"a83908819ec381b2","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"lab2pl","func":"msg.payload = msg.label;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":2120,"y":280,"wires":[["88e00589654790f5"]]},{"id":"93aeb62e57c14023","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":11,"width":"2","height":"1","name":"Label5","label":"","format":"{{msg.payload}}","layout":"row-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2250,"y":340,"wires":[]},{"id":"ee43915933528bfa","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"lab2pl","func":"msg.payload = msg.label;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":2120,"y":340,"wires":[["93aeb62e57c14023"]]},{"id":"89afa177a44ffbc5","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":13,"width":"2","height":"1","name":"Label6","label":"","format":"{{msg.payload}}","layout":"row-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2250,"y":400,"wires":[]},{"id":"85512989de4690f3","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"lab2pl","func":"msg.payload = msg.label;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":2120,"y":400,"wires":[["89afa177a44ffbc5"]]},{"id":"6024725ae75382fb","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":15,"width":"2","height":"1","name":"Label7","label":"","format":"{{msg.payload}}","layout":"row-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2250,"y":470,"wires":[]},{"id":"419d1e6e4e82482e","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"lab2pl","func":"msg.payload = msg.label;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":2120,"y":470,"wires":[["6024725ae75382fb"]]},{"id":"1ea7fb4b20337450","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":17,"width":"2","height":"1","name":"Label8","label":"","format":"{{msg.payload}}","layout":"row-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2250,"y":530,"wires":[]},{"id":"7a0bc26925236777","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"lab2pl","func":"msg.payload = msg.label;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":2120,"y":530,"wires":[["1ea7fb4b20337450"]]},{"id":"86b7aca3b73895f5","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":19,"width":"2","height":"1","name":"Label9","label":"","format":"{{msg.payload}}","layout":"row-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2250,"y":590,"wires":[]},{"id":"13a4afa74f1e8be6","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"lab2pl","func":"msg.payload = msg.label;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":2120,"y":590,"wires":[["86b7aca3b73895f5"]]},{"id":"a5989d0a9b6bbaeb","type":"ui-chart","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"deae7d4f0db6abd8","name":"","label":"Dieselpris (6u)","order":1,"chartType":"line","category":"topic","categoryType":"msg","xAxisLabel":"","xAxisProperty":"","xAxisPropertyType":"timestamp","xAxisType":"time","xAxisFormat":"","xAxisFormatType":"auto","xmin":"","xmax":"","yAxisLabel":"","yAxisProperty":"payload","yAxisPropertyType":"msg","ymin":"","ymax":"","bins":10,"action":"append","stackSeries":false,"pointShape":"false","pointRadius":4,"showLegend":true,"removeOlder":"6","removeOlderUnit":"604800","removeOlderPoints":"","colors":["#0095ff","#ff0000","#ff7f0e","#2ca02c","#a347e1","#d62728","#ff9896","#9467bd","#c5b0d5"],"textColor":["#f6f5f4"],"textColorDefault":false,"gridColor":["#e5e5e5"],"gridColorDefault":true,"width":"8","height":"14","className":"","interpolation":"step","x":1760,"y":590,"wires":[[]]},{"id":"8a6654beead70801","type":"persist-store","filename":"persist-diesel.json","interval":"900"},{"id":"110556e0baae6953","type":"ui-group","name":"Priser","page":"fdfb3f185ed18988","width":"4","height":"1","order":3,"showTitle":true,"className":"","visible":"true","disabled":"false","groupType":"default"},{"id":"deae7d4f0db6abd8","type":"ui-group","name":"Chart","page":"fdfb3f185ed18988","width":"8","height":"1","order":2,"showTitle":true,"className":"","visible":"true","disabled":"false","groupType":"default"},{"id":"fdfb3f185ed18988","type":"ui-page","name":"Dieselpriser","ui":"44c64ce8a980fc91","path":"/dieselpriser","icon":"home","layout":"grid","theme":"29f0478829dcd961","breakpoints":[{"name":"Default","px":"0","cols":"3"},{"name":"Tablet","px":"576","cols":"6"},{"name":"Small Desktop","px":"768","cols":"9"},{"name":"Desktop","px":"1024","cols":"12"}],"order":6,"className":"","visible":true,"disabled":false},{"id":"44c64ce8a980fc91","type":"ui-base","name":"Vale Cottage","path":"/dashboard","appIcon":"","includeClientData":true,"acceptsClientConfig":["ui-notification","ui-control","ui-iframe"],"showPathInSidebar":false,"headerContent":"page","navigationStyle":"fixed","titleBarStyle":"hidden","showReconnectNotification":true,"notificationDisplayTime":"5","showDisconnectNotification":true},{"id":"29f0478829dcd961","type":"ui-theme","name":"Dark","colors":{"surface":"#241f31","primary":"#3d997d","bgPage":"#241f31","groupBg":"#241f31","groupOutline":"#9a9996"},"sizes":{"density":"compact","pagePadding":"6px","groupGap":"6px","groupBorderRadius":"4px","widgetGap":"6px"}},{"id":"516b853f82e2fd07","type":"group","z":"2447f70b5f1095ba","name":"Vis universalliste drivstoffpriser i egen tab","style":{"label":true,"color":"#000000"},"nodes":["6ffebf4f1340a92e","fc1b2554d6e80f6b","5fd3c4e366a636d6","6bfcbbe7c43dcc84","03dc6f5b94c49e02","4d95ecb3e17e80a4","bf43e528a5851b0d","f193882be2dc7762","d9d0882ba114f2ae","dd937fc64214f72d","13d4a47fe1d5ae74","65cdb903a6486baf","6e102042f9d3270e","92ef0335f61a9718"],"x":644,"y":839,"w":912,"h":292},{"id":"6ffebf4f1340a92e","type":"ui_table","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","group":"0d788a3660f620b1","name":"All stations","order":4,"width":"12","height":"21","columns":[{"field":"name","title":"","width":"26%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"brand","title":"","width":"27%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"location","title":"","width":"31%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"id","title":"id","width":"13%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}}],"outputs":1,"cts":true,"x":1210,"y":920,"wires":[["fc1b2554d6e80f6b"]]},{"id":"fc1b2554d6e80f6b","type":"function","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","name":"add to favs","func":"var favs = flow.get(\"Favs\") || []\nvar pl = msg.payload;\nvar arr = [];\nvar exists = false;\narr = favs;\n\nfor (var i = 0;i < favs.length;i++){\n    if (favs[i].id == pl.id) exists = true;\n}\nif (exists == false) arr.push(pl);\n\nflow.set(\"Favs\", arr);\nreturn msg; ","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":740,"y":960,"wires":[["6bfcbbe7c43dcc84"]]},{"id":"5fd3c4e366a636d6","type":"ui_table","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","group":"0d788a3660f620b1","name":"Selected stations","order":5,"width":"14","height":"22","columns":[{"field":"name","title":"name","width":"30%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"brand","title":"brand","width":"30%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"location","title":"location","width":"30%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"id","title":"id","width":"10%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}}],"outputs":1,"cts":true,"x":1230,"y":960,"wires":[["03dc6f5b94c49e02"]]},{"id":"6bfcbbe7c43dcc84","type":"function","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","name":"List fav stations","func":"var favs = flow.get(\"Favs\") || []\nvar arr = []\nvar msg2 = {}\nfor (var i = 0;i < favs.length;i++){\n    let obj = {}\n    obj.id = favs[i].id;\n    obj.name = favs[i].name;\n    obj.brand = favs[i].brand;\n    obj.location = favs[i].location;\n    arr.push(obj);\n}\nmsg2.payload = arr;\nreturn msg2; ","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":970,"y":960,"wires":[["5fd3c4e366a636d6","f193882be2dc7762"]]},{"id":"03dc6f5b94c49e02","type":"function","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","name":"Remove station from fav","func":"var i,j = 0;\nvar favs = flow.get(\"Favs\") || []\nvar favs2 = []\nvar remove = msg.payload;\nvar arr = []\nvar msg2 = {}\nfor (i = 0;i < favs.length;i++){\n    if (favs[i].id != remove.id){\n        favs2[j] = favs[i];\n        j++;\n    }\n}\nflow.set(\"Favs\", favs2)\nreturn msg; ","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":1180,"y":1030,"wires":[["6bfcbbe7c43dcc84"]]},{"id":"4d95ecb3e17e80a4","type":"ui_table","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","group":"0d788a3660f620b1","name":"Drivstoffpriser","order":6,"width":"14","height":"22","columns":[{"field":"brand","title":"","width":"20%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"name","title":"","width":"25%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"type","title":"","width":"15%","align":"right","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"price","title":"Kr","width":"15%","align":"right","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"age","title":"hrs.","width":"15%","align":"right","formatter":"plaintext","formatterParams":{"target":"_blank"}}],"outputs":1,"cts":true,"x":1220,"y":1090,"wires":[[]]},{"id":"bf43e528a5851b0d","type":"function","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","name":"List priser for favs","func":"var favs = flow.get(\"Favs\") || []\nvar stats = flow.get(\"stationsPrepd\") || []\nvar arr = []\nvar msg2 = {}\nvar now = Number(new Date());\nvar age = 0;\n\nfor (var i = 0;i < stats.length;i++){   //bla gjennom alle stasjoner\n    for (var j = 0;j < favs.length;j++){    // bla gjennom favoritter\n        if (stats[i].id == favs[j].id){ //er gjeldende stasjon i favoritter?\n//                console.log(stats[i].prices);\n//            for (var k = 0; k < stats[i].prices.length; k++){  // bla gjennom drivstofftyper\n            for (var k in stats[i].prices){  // bla gjennom drivstofftyper\n//                console.log(stats[i].id);\n                let obj = {}\n                obj.name = stats[i].name;\n                obj.brand = stats[i].brand;\n                obj.location = stats[i].location;\n                obj.type = stats[i].prices[k].type;\n                obj.price = stats[i].prices[k].price;\n                obj.age = ((now - stats[i].prices[k].lastUpdated) / 3600 / 1000).toFixed(1);// + \"h\"; //age in hours\n                arr.push(obj);\n            }\n        }\n    }\n}\nmsg2.payload = arr;\nreturn msg2;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":980,"y":1090,"wires":[["4d95ecb3e17e80a4"]]},{"id":"f193882be2dc7762","type":"delay","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","name":"","pauseType":"delay","timeout":"500","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":770,"y":1090,"wires":[["bf43e528a5851b0d"]]},{"id":"d9d0882ba114f2ae","type":"ui_text_input","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","name":"","label":"Søk...","tooltip":"","group":"0d788a3660f620b1","order":7,"width":"10","height":"1","passthru":true,"mode":"text","delay":300,"topic":"topic","sendOnBlur":true,"className":"","topicType":"msg","x":720,"y":880,"wires":[["dd937fc64214f72d"]]},{"id":"dd937fc64214f72d","type":"function","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","name":"List selected stations","func":"var stats = flow.get(\"stationsPrepd\") || []\nvar searchText = msg.payload;\nvar arr = [];\nvar msg2 = {}\nfor (var i = 0;i < stats.length;i++){\n    let obj = {}\n    obj.id = stats[i].id;\n    obj.name = stats[i].name || \"-\"\n    obj.brand = stats[i].brand || \"-\"\n    obj.location = stats[i].location || \"-\"\n    // plukk ut bare stasjoner som inneholder søkebegrepet\n    if (obj.name.includes(searchText) || obj.brand.includes(searchText) || obj.location.includes(searchText)){\n        arr.push(obj);\n    }\n}\nmsg2.payload = arr;\nreturn msg2;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":990,"y":880,"wires":[["6ffebf4f1340a92e"]]},{"id":"13d4a47fe1d5ae74","type":"ui_text","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","group":"0d788a3660f620b1","order":1,"width":"12","height":"1","name":"","label":"Alle stasjoner","format":"{{msg.payload}}","layout":"row-spread","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1450,"y":890,"wires":[]},{"id":"65cdb903a6486baf","type":"ui_text","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","group":"0d788a3660f620b1","order":2,"width":"14","height":"1","name":"","label":"Favoritter","format":"{{msg.payload}}","layout":"row-spread","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1430,"y":920,"wires":[]},{"id":"6e102042f9d3270e","type":"ui_text","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","group":"0d788a3660f620b1","order":3,"width":"13","height":"1","name":"","label":"Priser","format":"{{msg.payload}}","layout":"row-spread","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1420,"y":950,"wires":[]},{"id":"92ef0335f61a9718","type":"delay","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","name":"","pauseType":"delay","timeout":"500","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":740,"y":1000,"wires":[["6bfcbbe7c43dcc84"]]},{"id":"0d788a3660f620b1","type":"ui_group","name":"Drivstoffpriser","tab":"1083c01bcc75e66c","order":1,"disp":true,"width":"40","collapse":false,"className":""},{"id":"1083c01bcc75e66c","type":"ui_tab","name":"Drivstoff","icon":"local_gas_station","order":25,"disabled":false,"hidden":false},{"id":"66fed02de14cd5a7","type":"group","z":"2447f70b5f1095ba","name":"Hente \"brands\" fra drivstoffappen","style":{"label":true,"color":"#000000"},"nodes":["372632c4f60d8424","77f438e4db6a6f68","82d67472bd4bb8a0","bd7bfcedba0b2323","0b4991ca32c4cf40"],"x":24,"y":589,"w":232,"h":242},{"id":"372632c4f60d8424","type":"http request","z":"2447f70b5f1095ba","g":"66fed02de14cd5a7","name":"API Request","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://api.drivstoffappen.no/api/v1/brands?stationTypeId=1","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[{"keyType":"other","keyValue":"X-API-KEY","valueType":"msg","valueValue":"md5Hash"},{"keyType":"other","keyValue":"X-CLIENT-ID","valueType":"other","valueValue":"com.raskebiler.drivstoff.appen.ios"}],"x":140,"y":710,"wires":[["77f438e4db6a6f68"]]},{"id":"77f438e4db6a6f68","type":"json","z":"2447f70b5f1095ba","g":"66fed02de14cd5a7","name":"","property":"payload","action":"","pretty":false,"x":120,"y":750,"wires":[["82d67472bd4bb8a0"]]},{"id":"82d67472bd4bb8a0","type":"change","z":"2447f70b5f1095ba","g":"66fed02de14cd5a7","name":"set flow.brands","rules":[{"t":"set","p":"brands","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":150,"y":790,"wires":[[]]},{"id":"bd7bfcedba0b2323","type":"inject","z":"2447f70b5f1095ba","g":"66fed02de14cd5a7","name":"Once a day","props":[{"p":"payload"}],"repeat":"","crontab":"03 12 * * *","once":false,"onceDelay":0.1,"topic":"","payload":"token2","payloadType":"flow","x":140,"y":670,"wires":[[]]},{"id":"0b4991ca32c4cf40","type":"change","z":"2447f70b5f1095ba","g":"66fed02de14cd5a7","name":"set.flow.token2","rules":[{"t":"set","p":"token2","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":150,"y":630,"wires":[["372632c4f60d8424"]]},{"id":"19e9dd7c0992a4db","type":"group","z":"2447f70b5f1095ba","name":"Hente \"stations\" fra drivstoffappen","style":{"label":true,"color":"#000000"},"nodes":["fb25d94b.139e78","9b28d83a.0226d","bc5b206f4b80b029","36db2ee7d9dbc9dc","09f4eac7c81a8f68","029b804564b2042d","ad3a3a41bdece374"],"x":14,"y":199,"w":252,"h":322},{"id":"fb25d94b.139e78","type":"http request","z":"2447f70b5f1095ba","g":"19e9dd7c0992a4db","name":"Get Token","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://api.drivstoffappen.no/api/v1/authorization-sessions","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":110,"y":280,"wires":[["9b28d83a.0226d"]]},{"id":"9b28d83a.0226d","type":"function","z":"2447f70b5f1095ba","g":"19e9dd7c0992a4db","name":"Process Token","func":"//console.log(\"Dieselpriser innhentes\");\nmsg.token = JSON.parse(msg.payload).token;\nmsg.tokenBytes = Buffer.from(msg.token);\nmsg.shiftedBytes = Buffer.concat([msg.tokenBytes.slice(1), msg.tokenBytes.slice(0, 1)]);\nmsg.shiftedToken = msg.shiftedBytes.toString();\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":120,"y":320,"wires":[["bc5b206f4b80b029"]]},{"id":"bc5b206f4b80b029","type":"md5","z":"2447f70b5f1095ba","g":"19e9dd7c0992a4db","name":"MD5","fieldToHash":"shiftedToken","fieldTypeToHash":"msg","hashField":"md5Hash","hashFieldType":"msg","x":90,"y":360,"wires":[["09f4eac7c81a8f68","0b4991ca32c4cf40"]]},{"id":"36db2ee7d9dbc9dc","type":"json","z":"2447f70b5f1095ba","g":"19e9dd7c0992a4db","name":"","property":"payload","action":"","pretty":false,"x":90,"y":440,"wires":[["029b804564b2042d"]]},{"id":"09f4eac7c81a8f68","type":"http request","z":"2447f70b5f1095ba","g":"19e9dd7c0992a4db","name":"API Request","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://api.drivstoffappen.no/api/v1/stations?stationTypeId=1","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[{"keyType":"other","keyValue":"X-API-KEY","valueType":"msg","valueValue":"md5Hash"},{"keyType":"other","keyValue":"X-CLIENT-ID","valueType":"other","valueValue":"com.raskebiler.drivstoff.appen.ios"}],"x":110,"y":400,"wires":[["36db2ee7d9dbc9dc"]]},{"id":"029b804564b2042d","type":"change","z":"2447f70b5f1095ba","g":"19e9dd7c0992a4db","name":"set flow.stationsRaw","rules":[{"t":"set","p":"stationsRaw","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":140,"y":480,"wires":[["c622a1c1b5d187fe"]]},{"id":"ad3a3a41bdece374","type":"delay","z":"2447f70b5f1095ba","g":"19e9dd7c0992a4db","name":"","pauseType":"delay","timeout":"4","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":100,"y":240,"wires":[["fb25d94b.139e78"]]}]

 

Endret av SveinHa
Skrevet (endret)

@SveinHa Takk! Bingo, nå fikk jeg det til! Iallfall delvis. Jeg er ute etter bensinpriser, ikke dieselpriser, for jeg vil vite når jeg må kjøre og fylle kannene til båten. Så jeg trenger egentlig ikke den lagringen, jeg skal sende det videre til Homeassistant i MQTT-meldinger. Jeg har endret en stasjon for å teste, og jeg har fått fram dieselprisen på Uno-X i Mandal 😁 Men hva må jeg endre for å få 95-oktansprisen på samme sted? Jeg skjønner at det er B95, mens du ser på D, jeg fatter bare ikke hvor det filtreres. 

 

Edit: Jeg tror det gjøres i subflowen "Hjernen", men jeg prøvde åkjøre søk erstatt på prices.D til prices.B95, og det ble feil.

 

Edit 2: Og så er det et par stasjoner jeg ikke finner i det jeg får ned av stajoner, selv om de fins i appen min. Hva kan det være?

 

Edit 3: Jeg har forenklet den ved å fjerne alt jeg ikke trenger, så jeg bare tar ut Trend av subflowene,  så skal jeg senere sette det opp til å kjøre MQTT til Homeassistant (jeg bruker alltid Hass som GUI). Da er det bare igjen å få det til bensinprisen og finne de manglende stasjonene.

Endret av Mastiff
Skrevet (endret)
Mastiff skrev (36 minutter siden):

Jeg er ute etter bensinpriser, ikke dieselpriser

Jeg har laget dette spesifikt for diesel så bensin har jeg ikke tatt hensyn til men om du går inn i subDrivstoffPris og endrer "prices.D" til "prices.B95" eller "prices.B98" så burde det virke.

image.png.1f7d4d3356a19797c65eca04f38dee52.png

 

 

Strengt tatt vil du vel klare deg med dette:

image.thumb.png.056febb986c4abd3301c1fb491dd829b.png

og hente ut de aktuelle stasjonene og priser fra flow.stationsPrepd:

image.png.1916c09e583099bc43f7ba868b63347a.png

 

Ganske mye av koden min er jo kun for å gi farger slik at det hele blir mer visuelt...

Endret av SveinHa
Skrevet

Det er nok ikke så enkelt, ser det ut til. Den der endrer ikke noe, det er visst subDrivstoffpris(3) som denne bruker (etter litt kopiering fram og tilbake). Og i den fører det altså til feil hvis jeg endrer til B95. Det ville vært lett hvis jeg kunne bare hentet ut payload 156, for eksempel, men det er jo ikke stasjonsnummerne som kommer tilbake, så jeg antar at den payloaden vil endre seg når de gjør endringer i stasjonene på appen.

 

Stasjonsnavnet ser jeg er fordi jeg bare får opp til 1000 i noden, de jeg leter etter, er nok da høyere oppe i rekka. Men det fikser jeg, tror jeg.

hflatoey skrev (På 25.10.2024 den 8.54):


Node-Red kan takle mange GB så lenge du har nok minne 🙂

 

Debug.output viser ikkje all data men den er der.

Ligg inn denne function noden mellom API request og debug.output

 

[{"id":"f1b6358c9bf2e78e","type":"function","z":"7ce7a7849c9c8b4e","name":"Split Payload","func":"// Function Node: Split Payload into Individual Messages\n\n// Initialize an array to hold the new messages\nlet messages = [];\n\n// Function to send error and stop processing\nfunction sendError(errorMsg) {\n    node.error(errorMsg, msg);\n    return null;\n}\n\ntry {\n    // Step 1: Parse the payload if it's a string\n    let data;\n    if (typeof msg.payload === 'string') {\n        data = JSON.parse(msg.payload);\n    } else if (Buffer.isBuffer(msg.payload)) {\n        // If payload is a Buffer, convert to string and parse\n        data = JSON.parse(msg.payload.toString());\n    } else {\n        // If payload is already an object/array\n        data = msg.payload;\n    }\n\n    // Step 2: Ensure the parsed data is an array\n    if (!Array.isArray(data)) {\n        return sendError(\"Payload is not an array.\");\n    }\n\n    // Step 3: Iterate over each station object in the array\n    data.forEach((station, index) => {\n        // Create a new message for each station\n        let newMsg = {\n            _msgid: `${msg._msgid}-${index}`, // Optional: unique message ID\n            payload: station,\n        };\n        messages.push(newMsg);\n    });\n\n    // Step 4: Return the array of messages\n    return messages;\n\n} catch (error) {\n    // Handle JSON parsing errors or other exceptions\n    return sendError(`Error processing payload: ${error.message}`);\n}","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":800,"y":340,"wires":[["77f3986f.d5f32c"]]}]

 

 

Denne skulle jeg gjerne hatt til å vise de stasjonene jeg trenger. Hvor justerer jeg det? Den viser bare stasjon 1, som er Lierkroa. 

Skrevet

Hvis du har "Drivstoffpriser" bildet oppe og går (Kun i Dash1.0) så finner du alle priser der.

 

Søk i alle felt nederst i første tabell, klikk på stasjonen i venstre tabell så legger den seg i favoritter (midtre tabell) og viser alle priser i høyre tabell. Klikk i favoritt for å fjerne fra favoritt.

 

image.thumb.png.aa3ecc433adee05aa9dff2dd2d2b721d.png

Skrevet

@SveinHa Jeg har ikke fått Dashbordgreiene til å virke. Men det er ikke noe problem siden jeg egentlig bare skal bruke første del av flowen, hvis jeg får løst det med diesel vs. bensin og de tre stasjonene. Kunne du vært så snill å sjekke, hvis du har tid og gidder, hva som er id-en til Valand (Driv), Mandalskrysset (Esso) og Vestnes (Tank - altså Vestnes i Mandal, ikke stedet på Vestlandet)?

Skrevet

Tusen takk! 😃 Da må jeg bare finne ut av det med bensinen. Jeg lurer på om jeg kanskje kan filtrere på id etter den noden som lager liste over stasjoner. Eller ligger det allerede inne på en måte? For hvis jeg kunne få ut et array med de stasjonene jeg ønsker, er det lett å ta bensinen ut fra den andre objektet der.

Skrevet

Det gikk faktisk greit! Split-node for å dele opp payloaden fra spørringen, og så filternode som bare slipper igjennom de stasjonene jeg trenger. Dermed har jeg prisen her:

payload.prices.B95.price

 

Så da kan jeg bare jobbe videre ut fra det. Igjen takk for hjelpen!

Skrevet
Mastiff skrev (51 minutter siden):

Det gikk faktisk greit!

Supert.  Jeg ser der henger igjen noe litt hårete programmering fra gamle dager... Skal fikse litt opp i det om litt...

  • Haha 1
Skrevet (endret)

Gjort en quick and dirty fix... Legg inn denne:

image.png.14f88933b599acfd571040036fd1bdb6.png

i stedet for den opprinnelige:

[{"id":"c622a1c1b5d187fe","type":"function","z":"2447f70b5f1095ba","name":"List all stations & create flow.stations","func":"var brands = flow.get(\"brands\");\nvar statsRaw = flow.get(\"stationsRaw\");\n//flow.set(\"Stations\",msg.payload);\n//node.warn( \"pl.length: \" + statsRaw.length);\nvar arr = [];\nvar arr2 = [];\nvar obj2 = {}\nvar msg2 = {}\nvar i = 0;\nvar j = 0;\nfor (i = 0;i < statsRaw.length;i++){\n    let obj = {}\n    //if (i == 2150)i++;\n    //if (i == 2302)i++;\n    //if (i == 2305)i++;\n    //if (i == 3512)i++;\n    obj.id = statsRaw[i].id;\n    obj.name = statsRaw[i].name || \"-\"\n    // Find brand from brandId\n    for (j = 0;j < brands.length;j++){\n        if (Number(statsRaw[i].brandId) == Number(brands[j].id)){\n             obj.brand = brands[j].name || \"-\"\n             obj.logo = brands[j].pictureUrl || \"-\"\n             //node.warn(i + \" \" + j + \" \" + brands[j].name);\n             break;\n        }\n    }\n    obj.location = statsRaw[i].location || \"-\"\n    // Add prices, some stations miss prices, skip these\n    var obj3 = {}\n    let objFt = []\n    let ftidStr = \"\";\n    if (statsRaw[i].hasOwnProperty(\"prices\")){ // skip no-price stations\n        for (j = 0;j < statsRaw[i].prices.length;j++){\n        var ftid = statsRaw[i].prices[j].fuelTypeId;\n        if (ftid == 1) ftidStr = \"D\";\n        else if (ftid == 2) ftidStr = \"B95\";\n        else if (ftid == 3) ftidStr = \"B98\";\n        else if (ftid == 4) ftidStr = \"FD\";\n        else ftidStr = \"-\";\n        // New pricestructure 02.03.25\n        objFt.push({\"fuelTypeID\":statsRaw[i].prices[j].fuelTypeId,\"type\":ftidStr,\"price\":statsRaw[i].prices[j].price,\"lastUpdated\":statsRaw[i].prices[j].lastUpdated});\n        obj3.new = objFt;\n\n        if (ftid == 1 && statsRaw[i].prices[j].price != 0){ \n            obj3.D = {}\n            obj3.D.price = statsRaw[i].prices[j].price;\n            obj3.D.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n            obj3.D.type = \"D\";\n        }\n        if (ftid == 2 && statsRaw[i].prices[j].price != 0){ \n            obj3.B95 = {}\n            obj3.B95.price = statsRaw[i].prices[j].price;\n            obj3.B95.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n            obj3.B95.type = \"B95\";\n        } \n        if (ftid == 3 && statsRaw[i].prices[j].price != 0){\n            obj3.B98 = {}\n            obj3.B98.price = statsRaw[i].prices[j].price;\n            obj3.B98.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n            obj3.B98.type = \"B98\";\n        }\n        if (ftid == 4 && statsRaw[i].prices[j].price != 0){\n            obj3.FD = {}\n            obj3.FD.price = statsRaw[i].prices[j].price;\n            obj3.FD.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n            obj3.FD.type = \"FD\";\n        }\n    }\n    }//skip to here\n//    console.log(obj3);\n    obj.prices = obj3;\n\n    \n    arr.push(obj);\n}\nmsg2.payload = arr;\nflow.set(\"stationsPrepd\",arr);\nreturn msg2;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":280,"y":560,"wires":[["ee9831abc8e3a182"]]}]

Dette gir noen nye felt i flow.stationsPrepd som du igjen kan hente ut med denne:

image.png.611bec2683e57b6eb7249a41143c07c7.png

[{"id":"eeb0ef3e1e4c1567","type":"inject","z":"2447f70b5f1095ba","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"[2088,25148,2263]","payloadType":"json","x":620,"y":1220,"wires":[["0d4e5a87fd3822c7"]]},{"id":"0d4e5a87fd3822c7","type":"function","z":"2447f70b5f1095ba","name":"List valgte stasjoner","func":"let selected = msg.payload;\nlet stats = flow.get(\"stationsPrepd\");\nlet arr = []\n\nfor (let i in selected){\n    for (let j in stats){\n        if (stats[j].id == selected[i]){\n            for (let k in stats[j].prices.new){\n//                node.warn(stats[j].name);\n//                node.warn(stats[j].prices.new[k].type);\n//                node.warn(stats[j].prices.new[k].price);\n//                let dt = new Date(stats[j].prices.new[k].lastUpdated);\n//                node.warn(dt.toLocaleString(\"nb-NO\"));\n            }\n        arr.push(stats[j]);\n        }\n        \n    }\n}\n\nmsg.payload = arr;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":860,"y":1220,"wires":[["88658fb3f9f8c6ae"]]},{"id":"88658fb3f9f8c6ae","type":"debug","z":"2447f70b5f1095ba","name":"debug 14","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1050,"y":1220,"wires":[]}]

 

...og hvis du fjerner kommentar (//) fra de 5 linjene i "List valgte stasjoner" så kommer resultatet direkte i loggen også...

 

Edit#2: Da skal de være oppegående... Ser Esso Mandalskrysset har en del priser som ikke dukker opp i drivstoffappen, sannsynligvis strøm...

Endret av SveinHa
  • Like 1
Skrevet

Her er den forenklede flowen jeg kom fram til, basert på den @SveinHa laget. Veldig enkel, den henter lista over stasjoner, filtrerer ut de jeg skal ha (hvis noen vil bruke den, kan de endre ID-en i Chosen Stations-switchen til det man trenger) og så skal jeg sende resultatet til Home Assistant som MQTT, til en MQTT-sensor for hver stasjon. Denne skal jeg så sette til å varsle meg i det øyeblikket en av stasjonene går under 19 kroner. Dermed kan jeg fylle de seks kannene til Mad Max når det er grei pris. 😀

 

[{"id":"15c0f11d3fc4b3f7","type":"tab","label":"Bensinpriser","disabled":false,"info":"","env":[]},{"id":"fb3c8172638a8fb7","type":"function","z":"15c0f11d3fc4b3f7","name":"List all stations & create flow.stations","func":"var brands = flow.get(\"brands\");\nvar statsRaw = flow.get(\"stationsRaw\");\n//flow.set(\"Stations\",msg.payload);\n//node.warn( \"pl.length: \" + statsRaw.length);\nvar arr = [];\nvar arr2 = [];\nvar obj2 = {}\nvar msg2 = {}\nvar i = 0;\nvar j = 0;\nfor (i = 0;i < statsRaw.length;i++){\n    let obj = {}\n    //if (i == 2150)i++;\n    //if (i == 2302)i++;\n    //if (i == 2305)i++;\n    //if (i == 3512)i++;\n    obj.id = statsRaw[i].id;\n    obj.name = statsRaw[i].name || \"-\"\n    // Find brand from brandId\n    for (j = 0;j < brands.length;j++){\n        if (Number(statsRaw[i].brandId) == Number(brands[j].id)){\n             obj.brand = brands[j].name || \"-\"\n             obj.logo = brands[j].pictureUrl || \"-\"\n             //node.warn(i + \" \" + j + \" \" + brands[j].name);\n             break;\n        }\n    }\n    obj.location = statsRaw[i].location || \"-\"\n    // Add prices, some stations miss prices, skip these\n    //node.warn(\"Add prices\");\n    var obj3 = {}\n    //console.log(statsRaw[i].prices.length);\n    if (statsRaw[i].hasOwnProperty(\"prices\")){ // skip no-price stations\n        for (j = 0;j < statsRaw[i].prices.length;j++){\n        //node.warn(\"Add prices: \" + i + \" \" + j);\n        var ftid = statsRaw[i].prices[j].fuelTypeId;\n        if (ftid == 1 && statsRaw[i].prices[j].price != 0){ \n            obj3.D = {}\n            obj3.D.price = statsRaw[i].prices[j].price;\n            obj3.D.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n            obj3.D.type = \"D\";\n        }\n        if (ftid == 2 && statsRaw[i].prices[j].price != 0){ \n            obj3.B95 = {}\n            obj3.B95.price = statsRaw[i].prices[j].price;\n            obj3.B95.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n            obj3.B95.type = \"B95\";\n        } \n        if (ftid == 3 && statsRaw[i].prices[j].price != 0){\n            obj3.B98 = {}\n            obj3.B98.price = statsRaw[i].prices[j].price;\n            obj3.B98.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n            obj3.B98.type = \"B98\";\n        }\n        if (ftid == 4 && statsRaw[i].prices[j].price != 0){\n            obj3.FD = {}\n            obj3.FD.price = statsRaw[i].prices[j].price;\n            obj3.FD.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n            obj3.FD.type = \"FD\";\n        }\n    }\n    }//skip to here\n//    console.log(obj3);\n    obj.prices = obj3;\n\n    \n    arr.push(obj);\n}\nmsg2.payload = arr;\nflow.set(\"stationsPrepd\",arr);\nreturn msg2;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":450,"y":60,"wires":[["c2d1e13e56588a8a","c1c5aa4d46a165c5"]]},{"id":"c2d1e13e56588a8a","type":"debug","z":"15c0f11d3fc4b3f7","name":"debug 163","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":730,"y":60,"wires":[]},{"id":"3ca26b9597ee0d04","type":"http request","z":"15c0f11d3fc4b3f7","name":"API Request","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://api.drivstoffappen.no/api/v1/brands?stationTypeId=1","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[{"keyType":"other","keyValue":"X-API-KEY","valueType":"msg","valueValue":"md5Hash"},{"keyType":"other","keyValue":"X-CLIENT-ID","valueType":"other","valueValue":"com.raskebiler.drivstoff.appen.ios"}],"x":170,"y":460,"wires":[["a9261673840aeca8"]]},{"id":"a9261673840aeca8","type":"json","z":"15c0f11d3fc4b3f7","name":"","property":"payload","action":"","pretty":false,"x":170,"y":500,"wires":[["25f7fa92bc718299"]]},{"id":"25f7fa92bc718299","type":"change","z":"15c0f11d3fc4b3f7","name":"set flow.brands","rules":[{"t":"set","p":"brands","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":180,"y":540,"wires":[[]]},{"id":"29b1a398cccaf5a6","type":"change","z":"15c0f11d3fc4b3f7","name":"set.flow.token2","rules":[{"t":"set","p":"token2","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":180,"y":420,"wires":[["3ca26b9597ee0d04"]]},{"id":"095efa33e8e7ca2a","type":"http request","z":"15c0f11d3fc4b3f7","name":"Get Token","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://api.drivstoffappen.no/api/v1/authorization-sessions","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":170,"y":160,"wires":[["94baceb2b3417947"]]},{"id":"94baceb2b3417947","type":"function","z":"15c0f11d3fc4b3f7","name":"Process Token","func":"//console.log(\"Dieselpriser innhentes\");\nmsg.token = JSON.parse(msg.payload).token;\nmsg.tokenBytes = Buffer.from(msg.token);\nmsg.shiftedBytes = Buffer.concat([msg.tokenBytes.slice(1), msg.tokenBytes.slice(0, 1)]);\nmsg.shiftedToken = msg.shiftedBytes.toString();\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":180,"y":200,"wires":[["bd3b870b7b49c6c2"]]},{"id":"fb42916801687aaf","type":"json","z":"15c0f11d3fc4b3f7","name":"","property":"payload","action":"","pretty":false,"x":150,"y":320,"wires":[["03a73177837e15f9"]]},{"id":"3bc1810bb50310ce","type":"http request","z":"15c0f11d3fc4b3f7","name":"API Request","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://api.drivstoffappen.no/api/v1/stations?stationTypeId=1","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[{"keyType":"other","keyValue":"X-API-KEY","valueType":"msg","valueValue":"md5Hash"},{"keyType":"other","keyValue":"X-CLIENT-ID","valueType":"other","valueValue":"com.raskebiler.drivstoff.appen.ios"}],"x":170,"y":280,"wires":[["fb42916801687aaf"]]},{"id":"03a73177837e15f9","type":"change","z":"15c0f11d3fc4b3f7","name":"set flow.stationsRaw","rules":[{"t":"set","p":"stationsRaw","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":200,"y":360,"wires":[["fb3c8172638a8fb7"]]},{"id":"caac60185af71f64","type":"delay","z":"15c0f11d3fc4b3f7","name":"","pauseType":"delay","timeout":"4","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":160,"y":120,"wires":[["095efa33e8e7ca2a"]]},{"id":"c1c5aa4d46a165c5","type":"split","z":"15c0f11d3fc4b3f7","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":370,"y":180,"wires":[["58e35b7807c9b092"]]},{"id":"58e35b7807c9b092","type":"switch","z":"15c0f11d3fc4b3f7","name":"Chosen stations","property":"payload.id","propertyType":"msg","rules":[{"t":"eq","v":"2088","vt":"num"},{"t":"eq","v":"25148","vt":"num"},{"t":"eq","v":"156","vt":"num"},{"t":"eq","v":"167","vt":"num"},{"t":"eq","v":"235","vt":"num"},{"t":"eq","v":"946","vt":"num"},{"t":"eq","v":"815","vt":"num"},{"t":"eq","v":"2263","vt":"num"}],"checkall":"true","repair":false,"outputs":8,"x":540,"y":160,"wires":[["2268b0ed56350566"],["2268b0ed56350566"],["2268b0ed56350566"],["2268b0ed56350566"],["2268b0ed56350566"],["2268b0ed56350566"],["2268b0ed56350566"],["2268b0ed56350566"]]},{"id":"b56273e5ea99c3fc","type":"inject","z":"15c0f11d3fc4b3f7","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"*/10 6-20 * * *","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":150,"y":60,"wires":[["caac60185af71f64"]]},{"id":"c843fa224c3d90f9","type":"debug","z":"15c0f11d3fc4b3f7","name":"debug 170","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":730,"y":360,"wires":[]},{"id":"2268b0ed56350566","type":"function","z":"15c0f11d3fc4b3f7","name":"Convert to message","func":"msg.topic = \"Bensinstasjoner\";\nvar kjede = msg.payload.brand;\nvar navn = msg.payload.name;\nconst diff = new Date().getTime() - msg.payload.prices.B95.lastUpdated;\nvar timer = Math.floor(diff/1000/60/60);\nvar minutter = Math.floor((diff/1000/60/60 - timer )*60);\nmsg.payload['stasjon'] = kjede + ' ' + navn;\nmsg.payload['pris'] = msg.payload.prices.B95.price;\nmsg.payload['timer'] =  timer;\nmsg.payload['minutter'] =  minutter;\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":780,"y":160,"wires":[["ca552240d225b271"]]},{"id":"ca552240d225b271","type":"change","z":"15c0f11d3fc4b3f7","name":"Remove unnecessary fields from array","rules":[{"t":"delete","p":"payload.prices","pt":"msg"},{"t":"delete","p":"payload.id","pt":"msg"},{"t":"delete","p":"payload.logo","pt":"msg"},{"t":"delete","p":"payload.name","pt":"msg"},{"t":"delete","p":"payload.brand","pt":"msg"},{"t":"delete","p":"payload.location","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":550,"y":280,"wires":[["c843fa224c3d90f9"]]},{"id":"bd3b870b7b49c6c2","type":"md5","z":"15c0f11d3fc4b3f7","name":"MD5","fieldToHash":"shiftedToken","fieldTypeToHash":"msg","hashField":"md5Hash","hashFieldType":"msg","x":150,"y":240,"wires":[["3bc1810bb50310ce","29b1a398cccaf5a6"]]},{"id":"7c6ba7685c1bbfb6","type":"comment","z":"15c0f11d3fc4b3f7","name":"Show chosen stations with price and update time","info":"","x":460,"y":20,"wires":[]}]

 

@SveinHa Det stemmer at de har ladere på Esso i Mandalskrysset. Og så er det McDonald's der også, det er sikkert en ren tilfeldighet... 🤣 Ellers ser jeg at det nye oppsettet ditt gir ekstra felter i arrayen, men mente du å duplisere dem, eller skulle du egentlig ta bort de gamle feltene?

 

image.thumb.png.7a320d976bbd2103e885be3845473f77.png

  • Like 2
Skrevet
Mastiff skrev (1 time siden):

men mente du å duplisere dem, eller skulle du egentlig ta bort de gamle feltene?

Vet det ble en duplisering nå men tanken er å ta bort de gamle på litt sikt. Nå har jeg begge deler, både den gamle teite varianten og den nye riktigere...

  • Haha 1
Skrevet

Jeg fant en måte for å hente ut stasjons-ID, det var lett da jeg fattet det. Det blir for mye data for en debug-node, så da må det jo filtreres. Jeg la til en switch-node som slapp igjennom de som hadde et navn der msg.payload.name inneholdt det stasjonen heter. Jeg har også en som søker på adressen, da kan man dekke et større område.  Her er flowen med switchnoden som søker opp stasjoner etter navn og adresse, satt opp med å søke på Mandal som sted og Åseral som navn (der det ligger en Tank-stasjon):

 

[{"id":"15c0f11d3fc4b3f7","type":"tab","label":"Bensinpriser","disabled":false,"info":"","env":[]},{"id":"fb3c8172638a8fb7","type":"function","z":"15c0f11d3fc4b3f7","name":"List all stations & create flow.stations","func":"var brands = flow.get(\"brands\");\nvar statsRaw = flow.get(\"stationsRaw\");\n//flow.set(\"Stations\",msg.payload);\n//node.warn( \"pl.length: \" + statsRaw.length);\nvar arr = [];\nvar arr2 = [];\nvar obj2 = {}\nvar msg2 = {}\nvar i = 0;\nvar j = 0;\nfor (i = 0;i < statsRaw.length;i++){\n    let obj = {}\n    //if (i == 2150)i++;\n    //if (i == 2302)i++;\n    //if (i == 2305)i++;\n    //if (i == 3512)i++;\n    obj.id = statsRaw[i].id;\n    obj.name = statsRaw[i].name || \"-\"\n    // Find brand from brandId\n    for (j = 0;j < brands.length;j++){\n        if (Number(statsRaw[i].brandId) == Number(brands[j].id)){\n             obj.brand = brands[j].name || \"-\"\n             obj.logo = brands[j].pictureUrl || \"-\"\n             //node.warn(i + \" \" + j + \" \" + brands[j].name);\n             break;\n        }\n    }\n    obj.location = statsRaw[i].location || \"-\"\n    // Add prices, some stations miss prices, skip these\n    //node.warn(\"Add prices\");\n    var obj3 = {}\n    //console.log(statsRaw[i].prices.length);\n    if (statsRaw[i].hasOwnProperty(\"prices\")){ // skip no-price stations\n        for (j = 0;j < statsRaw[i].prices.length;j++){\n        //node.warn(\"Add prices: \" + i + \" \" + j);\n        var ftid = statsRaw[i].prices[j].fuelTypeId;\n        if (ftid == 1 && statsRaw[i].prices[j].price != 0){ \n            obj3.D = {}\n            obj3.D.price = statsRaw[i].prices[j].price;\n            obj3.D.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n            obj3.D.type = \"D\";\n        }\n        if (ftid == 2 && statsRaw[i].prices[j].price != 0){ \n            obj3.B95 = {}\n            obj3.B95.price = statsRaw[i].prices[j].price;\n            obj3.B95.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n            obj3.B95.type = \"B95\";\n        } \n        if (ftid == 3 && statsRaw[i].prices[j].price != 0){\n            obj3.B98 = {}\n            obj3.B98.price = statsRaw[i].prices[j].price;\n            obj3.B98.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n            obj3.B98.type = \"B98\";\n        }\n        if (ftid == 4 && statsRaw[i].prices[j].price != 0){\n            obj3.FD = {}\n            obj3.FD.price = statsRaw[i].prices[j].price;\n            obj3.FD.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n            obj3.FD.type = \"FD\";\n        }\n    }\n    }//skip to here\n//    console.log(obj3);\n    obj.prices = obj3;\n\n    \n    arr.push(obj);\n}\nmsg2.payload = arr;\nflow.set(\"stationsPrepd\",arr);\nreturn msg2;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":450,"y":120,"wires":[["c1c5aa4d46a165c5"]]},{"id":"c2d1e13e56588a8a","type":"debug","z":"15c0f11d3fc4b3f7","name":"debug 163","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1070,"y":120,"wires":[]},{"id":"3ca26b9597ee0d04","type":"http request","z":"15c0f11d3fc4b3f7","name":"API Request","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://api.drivstoffappen.no/api/v1/brands?stationTypeId=1","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[{"keyType":"other","keyValue":"X-API-KEY","valueType":"msg","valueValue":"md5Hash"},{"keyType":"other","keyValue":"X-CLIENT-ID","valueType":"other","valueValue":"com.raskebiler.drivstoff.appen.ios"}],"x":130,"y":520,"wires":[["a9261673840aeca8"]]},{"id":"a9261673840aeca8","type":"json","z":"15c0f11d3fc4b3f7","name":"","property":"payload","action":"","pretty":false,"x":130,"y":560,"wires":[["25f7fa92bc718299"]]},{"id":"25f7fa92bc718299","type":"change","z":"15c0f11d3fc4b3f7","name":"set flow.brands","rules":[{"t":"set","p":"brands","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":140,"y":600,"wires":[[]]},{"id":"29b1a398cccaf5a6","type":"change","z":"15c0f11d3fc4b3f7","name":"set.flow.token2","rules":[{"t":"set","p":"token2","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":140,"y":480,"wires":[["3ca26b9597ee0d04"]]},{"id":"095efa33e8e7ca2a","type":"http request","z":"15c0f11d3fc4b3f7","name":"Get Token","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://api.drivstoffappen.no/api/v1/authorization-sessions","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":130,"y":220,"wires":[["94baceb2b3417947"]]},{"id":"94baceb2b3417947","type":"function","z":"15c0f11d3fc4b3f7","name":"Process Token","func":"//console.log(\"Dieselpriser innhentes\");\nmsg.token = JSON.parse(msg.payload).token;\nmsg.tokenBytes = Buffer.from(msg.token);\nmsg.shiftedBytes = Buffer.concat([msg.tokenBytes.slice(1), msg.tokenBytes.slice(0, 1)]);\nmsg.shiftedToken = msg.shiftedBytes.toString();\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":140,"y":260,"wires":[["bd3b870b7b49c6c2"]]},{"id":"fb42916801687aaf","type":"json","z":"15c0f11d3fc4b3f7","name":"","property":"payload","action":"","pretty":false,"x":110,"y":380,"wires":[["03a73177837e15f9"]]},{"id":"3bc1810bb50310ce","type":"http request","z":"15c0f11d3fc4b3f7","name":"API Request","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://api.drivstoffappen.no/api/v1/stations?stationTypeId=1","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[{"keyType":"other","keyValue":"X-API-KEY","valueType":"msg","valueValue":"md5Hash"},{"keyType":"other","keyValue":"X-CLIENT-ID","valueType":"other","valueValue":"com.raskebiler.drivstoff.appen.ios"}],"x":130,"y":340,"wires":[["fb42916801687aaf"]]},{"id":"03a73177837e15f9","type":"change","z":"15c0f11d3fc4b3f7","name":"set flow.stationsRaw","rules":[{"t":"set","p":"stationsRaw","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":160,"y":420,"wires":[["fb3c8172638a8fb7"]]},{"id":"caac60185af71f64","type":"delay","z":"15c0f11d3fc4b3f7","name":"","pauseType":"delay","timeout":"4","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":120,"y":180,"wires":[["095efa33e8e7ca2a"]]},{"id":"c1c5aa4d46a165c5","type":"split","z":"15c0f11d3fc4b3f7","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":630,"y":60,"wires":[["58e35b7807c9b092","dfc5843690a9476d"]]},{"id":"58e35b7807c9b092","type":"switch","z":"15c0f11d3fc4b3f7","name":"Chosen stations","property":"payload.id","propertyType":"msg","rules":[{"t":"eq","v":"2088","vt":"num"},{"t":"eq","v":"25148","vt":"num"},{"t":"eq","v":"156","vt":"num"},{"t":"eq","v":"167","vt":"num"},{"t":"eq","v":"235","vt":"num"},{"t":"eq","v":"946","vt":"num"},{"t":"eq","v":"815","vt":"num"},{"t":"eq","v":"2263","vt":"num"},{"t":"eq","v":"976","vt":"num"},{"t":"eq","v":"980","vt":"num"},{"t":"eq","v":"25185","vt":"num"}],"checkall":"true","repair":false,"outputs":11,"x":540,"y":280,"wires":[["2268b0ed56350566"],["2268b0ed56350566"],["2268b0ed56350566"],["2268b0ed56350566"],["2268b0ed56350566"],["2268b0ed56350566"],["2268b0ed56350566"],["2268b0ed56350566"],["f388aaacde3e75dc"],["f388aaacde3e75dc"],[]]},{"id":"b56273e5ea99c3fc","type":"inject","z":"15c0f11d3fc4b3f7","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"600","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":150,"y":120,"wires":[["caac60185af71f64"]]},{"id":"c843fa224c3d90f9","type":"debug","z":"15c0f11d3fc4b3f7","name":"debug 170","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":750,"y":380,"wires":[]},{"id":"2268b0ed56350566","type":"function","z":"15c0f11d3fc4b3f7","name":"Convert to message","func":"var kjede = msg.payload.brand;\nvar navn = msg.payload.name;\nconst diff = new Date().getTime() - msg.payload.prices.B95.lastUpdated;\nvar timer = Math.floor(diff/1000/60/60);\nvar minutter = Math.floor((diff/1000/60/60 - timer )*60);\nmsg.topic = kjede + ' ' + navn;\nmsg.payload['pris'] = msg.payload.prices.B95.price;\nmsg.payload['timer'] =  timer;\nmsg.payload['minutter'] = minutter;\nmsg.payload['epoch'] = (msg.payload.prices.B95.lastUpdated / 1000);\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":780,"y":280,"wires":[["ca552240d225b271"]]},{"id":"ca552240d225b271","type":"change","z":"15c0f11d3fc4b3f7","name":"Remove unnecessary fields from array","rules":[{"t":"delete","p":"payload.prices","pt":"msg"},{"t":"delete","p":"payload.id","pt":"msg"},{"t":"delete","p":"payload.logo","pt":"msg"},{"t":"delete","p":"payload.name","pt":"msg"},{"t":"delete","p":"payload.brand","pt":"msg"},{"t":"delete","p":"payload.location","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":490,"y":400,"wires":[["c843fa224c3d90f9","f61b2fc090523858"]]},{"id":"bd3b870b7b49c6c2","type":"md5","z":"15c0f11d3fc4b3f7","name":"MD5","fieldToHash":"shiftedToken","fieldTypeToHash":"msg","hashField":"md5Hash","hashFieldType":"msg","x":110,"y":300,"wires":[["3bc1810bb50310ce","29b1a398cccaf5a6"]]},{"id":"7c6ba7685c1bbfb6","type":"comment","z":"15c0f11d3fc4b3f7","name":"Show chosen stations with price and update time","info":"","x":260,"y":20,"wires":[]},{"id":"f61b2fc090523858","type":"mqtt out","z":"15c0f11d3fc4b3f7","name":"Send til Home Assistant","topic":"","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"36159a16.2aa98e","x":790,"y":420,"wires":[]},{"id":"2daf93cf704c36b4","type":"mqtt in","z":"15c0f11d3fc4b3f7","name":"Oppdater bensinpriser ved oppstart av Home Assistant","topic":"Oppdater bensinpriser","qos":"2","datatype":"auto-detect","broker":"36159a16.2aa98e","nl":false,"rap":true,"rh":0,"inputs":0,"x":260,"y":60,"wires":[["caac60185af71f64"]]},{"id":"f388aaacde3e75dc","type":"debug","z":"15c0f11d3fc4b3f7","name":"debug 171","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":770,"y":340,"wires":[]},{"id":"7b6fe343aff9ceaa","type":"switch","z":"15c0f11d3fc4b3f7","name":"Finne stasjoner på navn","property":"payload.name","propertyType":"msg","rules":[{"t":"cont","v":"Åseral","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":830,"y":120,"wires":[["c2d1e13e56588a8a"]]},{"id":"cd85b29ad0d8b086","type":"switch","z":"15c0f11d3fc4b3f7","name":"Finne stasjoner på adresse","property":"payload.location","propertyType":"msg","rules":[{"t":"cont","v":"Mandal","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":840,"y":160,"wires":[["732f30ae5c2bfea3"]]},{"id":"dfc5843690a9476d","type":"switch","z":"15c0f11d3fc4b3f7","name":"Fjerne rene ladestasjoner","property":"payload.prices","propertyType":"msg","rules":[{"t":"nempty"}],"checkall":"true","repair":false,"outputs":1,"x":870,"y":60,"wires":[["7b6fe343aff9ceaa","cd85b29ad0d8b086"]]},{"id":"732f30ae5c2bfea3","type":"debug","z":"15c0f11d3fc4b3f7","name":"debug 172","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1070,"y":160,"wires":[]},{"id":"36159a16.2aa98e","type":"mqtt-broker","name":"Hytte-Pi","broker":"192.168.1.101","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]

 

 

 

 

Og sånn ser det foreløpig ut i Home Assistant hos meg, jeg har gjort så det er den virkelige tiden siden oppdateringen som teller, at ikke tiden bare hopper framover hvert kvarter. I tillegg har jeg endret punktum til komma i kronebeløpet og laget en statistikkgraf. Jeg satte den i gang i dag morges, så det er ikke mye statistikk ennå, og ingen har endret seg.

 

image.thumb.png.cb4dd9fb3fb5d8cbb77a2dd41070948e.png

 

 

Til slutt la jeg inn en automasjon som reagerer når laveste bensinpris kommer under 19 kroner. Da får jeg en E-post til mobilen (som jeg alltid har med meg), og Aeotec Z-Wave-sirena i ganga lager skipsklokkelyd. Da er det på tide å kjøre kannene til stasjonen og fylle dem for båten! 😁

  • Like 1

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.