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

Vinnerliste

Populært innhold

Viser innholdet med mest poeng fra 04. mars 2025 i alle områder

  1. 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. 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! 😁
    1 poeng
  2. @29gun Alle frittstående relè vi har er potensialfri. Det vil si at spenningen du kjører inn på releet er spenningen du får ut. På tilkobling A kan du kjøre hvilken spenning du ønsker inn, og det er som nevnt det samme ut. Driften av produktet er 230V.
    1 poeng
Vinnerlisten er satt til Oslo/GMT+02:00
×
×
  • 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.