-
Innlegg
1 286 -
Ble med
-
Besøkte siden sist
-
Dager vunnet
26
Innholdstype
Profiler
Forum
Blogger
Nedlastninger
Artikler
Regler
Hendelser
Galleri
Store
Alt skrevet av Mastiff
-
Jeg har til sammen sju sånne i huset og på hytta, og jeg kan ikke klage på kvaliteten, for siden jeg kjøpte dem omtrent da de kom for 8 år siden, har bare en eneste sviktet. Den begynte plutselig å vise helt ville temperaturer og ble byttet ut med en lik en kjøpt rimelig på Finn. Det eneste jeg ikke liker med dem, er at de ikke viser strømforbruket. Jeg vet at de senere versjonene gjør det, og at det egentlig skulle implementeres i den første generasjonen også, men det ble ikke gjort ordentlig. Jeg vet også at det går an å oppgradere firmware i dem med en spesialkabel, så er det noen som har gjort det? Og har de da fått strømmåling eller noe annet morsomt tillegg fra den?
-
Jeg har fått tak i fire sånne dimmere på Finn til 1000 kroner pluss frakt og Fiks ferdig-gebyr, men jeg trenger noen stykker til. Så hvis noen har noen sånne liggende, kan vi kanskje komme fram til noe. 😁
-
Da er fire Heatit av første generasjon sikret og bud lagt inn på en femte, så nå deaktiverer jeg denne annonsen og lager en ny. For jeg vil ikke ha forskjellige utseende dimmere i den samme leiligheten.
-
Jeg fikk tak i fire Heatit vridimmere av første generasjon på Finn i dag for 1000 kroner pluss frakt og Fiks ferdig-gebyr, og jeg har lagt inn bud på en femte, så da er det visst dem jeg skal standardisere på i den store leiligheten i huset. I den lille, som er leid ut, har jeg Namrons Z-Wave-dimmere, som ser ut til å være utgående nå. Men jeg har dekket hele leiligheten der.
-
@Brors94 Det har jeg, men jeg håpet helst å finne noe brukt. Økonomien er litt trang for tiden, så jeg har mer tid enn penger. De dimmerne som sitter der nå, fungerer helt greit som "dumme dimmere", og det er mest for å få et helhetlig smarthus når jeg selger det at jeg vil ha inn Z-Wave-dimmere, siden nesten alt annet i huset er styrt av systemet. Det begynner jo faktisk å bli et argument nå, i motsetning til for åtte år siden,da jeg solgte mitt forrige hus og den nye eieren plukket ned stort sett alt som var av smarte greier. Men da var det jo også bare 433 mHz, og mindre avansert.
- 4 svar
-
- 1
-
-
Sjefen i huset krever vridrimmere, og siden jeg ble lurt på en bunke sånn (de skulle være Z-Wave, men var BLE, av et system jeg ikke får til å funke), trenger jeg noen andre. Så jeg vil gjerne kjøpe et parti med like dimmere. I den andre leiligheten i huset har jeg Elektroimportørens Namron Z-Wave-dimmere, og de funker greit, så gjerne noe sånt. De ser ut til å være på vei ut i butikken, det er bare noen få igjen i Norge nå, spredd på noen butikker. Men jeg er ikke avhengig av akkurat den, hva som helst av vridimmere på Z-Wave er greit nok.
-
Jeg kan iallfall si at låsen min med folie på tålte sommeren greit, så jeg satser på at det gjelder i tre år til, til når jeg skal pensjonere meg og vi skal selge huset. 😁
-
@Brors94 Ja, jeg ville aldri kjøpt noe med proprietær teknologi selv, og jeg mente jo heller ikke å kjøpe disse. Hvis det gikk an på noen enkel måte å få BLE-dimmerne til å funke med en Pi i Home Assistant, ville de kanskje vært brukbare, men det ser etter et lite søk ut til å være ganske vrient å få til. @OlavT Takk, men konefaktoren krever vridimmere.
- 4 svar
-
- 1
-
-
Jeg kjøpte fem Q-Light (et nå konkurs Kristiansandsfirma) Zerodim fra en bruker på Finn i vår, for jeg visste jeg skulle over til smartsystem i resten av huset (en del vi har leid ut fram til nå). Men da jeg fikk montert dem, oppdaget jeg at det var BLE, og ikke Z-Wave, som selgeren påsto! 🤬 Jeg burde sjekket dem med en gnag jeg fikk dem, og han svarer selvsagt ikke på meldinger nå. Så elektrikeren min har altså montert fem dimmere som jeg ikke kan styre på noen annen måte enn ved å vri hjulet fysisk, og det var jo ikke det jeg ville ha. Jeg har funnet en AcTec-app på Play Store, som skal drive dem, men den krasjer rett ut igjen når jeg prøver å åpne den. Jeg ser heller ikke støtte for AcTec-systemet i Home Assistant, og det står ikke noe som jeg kan finne på AcTecs nettside i Kina. Er det noen som har disse dimmerne, og som har fått dem til å fungere med et eller annet av automatisering? Ellers blir det å selge dem på Finn igjen (sikkert med tap) som dumme dimmere og finne noen andre Z-Wave-dimmere.
-
@c0d3x Jeg tror ingen har prøvd å reparere det, og jeg kan ikke se hvordan det skal være mulig, for sprekkene går dypt. Jeg ville heller kontaktet ID Lock og prøvd å få ny derfra. De har helt klart en svakhet der. Og aceton ødelegger plast, så det må du iallfall ikke bruke.
-
Holder denne fremdeles? Jeg ser at det har dukket opp to små sprekker/riper på mitt nye tastatur. Det er nok det samme som begynner igjen...
-
Takk, jeg tror jeg forstår hva du mener. 😁 Jeg er mer usikker på om jeg klarer å gjøre det, men jeg skal begynne med å installere Dynamic Energy Cost, takk! @christbj Hvordan lager man formelen i Nordpool-integrasjonen for å legge til effektleddet i nettleien? I Mandal er det Glitre Energi, der er den 53 øre fra 06-22 og 41 øre fra 22-06. Om jeg må nøye meg med et gjennomsnitt på 47 øre, så klarer jeg nok å svelge det også.
-
Jeg får ikke inn brukerkodene i Z-Wave JS UI. Jeg er helt sikker på at det var mulig før, jeg tror det var 60 og opp som var kodene som var lagt inn manuelt i låsen. Men i Z-Wave JS UI går det bare opp til 59, og jeg ser ingen koder på noe tidligere. Er det noen som har noen anelse om hva som har skjedd der? Jeg mailet ID Lock, og de sa at det ikke var fjernet noen funksjonalitet fra dem om det der.
-
Vi har flere hyttenaboer som bruker laderen på hyttefeltet, som er koblet til min strømmåler. Hver er satt opp med en RFID-brikke, de er ikke såkalt integrerte, så det er brikken som skiller mellom hvem som lader. Så i laderapporten fra Easee-appen er det lett å se hvem som har ladet hva, men hos Tibber står alt som lading på meg selv. Tibber har ikke koblet seg til Easees API, av en eller annen merkelig grunn. Og enda verre, det fins ikke mulighet i Tibber (så vidt jeg har sett) for å vise hver enkelt ladeøkt på en dag, ladeprisen vises bare for hele dagen. Fins det en løsning for Node-RED eller Home assistant for å få ut ladeøkter fra Easee og så beregne prisen på dem ut fra strømprisene? Edit: Oi, det blir mer avansert... For Easee rapporterer når bilen blir koblet til og fra, ikke når den faktisk lader. Så hvis den var ferdig med å lade 02, men ble koblet fra laderen 09, så viser den ladeøkt fram til 09. Så da må jeg i tillegg se på totalforbruket på hytta for å se når den lader (6 kw ekstra syns jo ganske tydelig et sted der maksimalt forbruk ellers er på 4-5 når kokeplater brukes). Edit 2: Hass til unnsetning, som Lucky Luke: Det fins selvsagt en mulighet til å se i langtidsstatistikken hvor mye strøm som er brukt av laderen når, under Effekt. Det er også en Energi per time, men merkelig nok ligger ikke den i langtidsstatistikken. Lurer på om jeg kan få den inn der.
-
@mk1 black limited Jeg står overfor akkurat det samme nå. Jeg skal nullstille Z-Wave-nettverket i huset etter sju år, det er litt ustabilt her og der. Planen er å ekskludere enhet etter enhet fra det nåværende nettet, og legge dem til i det nye nettet med de samme navnene, for å unngå å måtte sette opp alt av automasjoner og sånt på nytt. Jeg regner jo med at min sju år gamle Aeotec Z-Stick ikke akkurat er "the shit", som du uttrykker det, så det ville vært veldig greit å høre hva du endte opp med, og om du er fornøyd med valget. Edit: Jeg kjører også Home Assistant, bare så det er sagt. Og i Docker-container, både Z-Wave JS UI og Hass. Jeg lurer på om HomeSeer G8 800 Z-Wave Stick kan funke.
-
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! 😁
- 164 svar
-
- 2
-
-
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?
- 164 svar
-
- 2
-
-
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!
-
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.
-
@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)?
-
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. Denne skulle jeg gjerne hatt til å vise de stasjonene jeg trenger. Hvor justerer jeg det? Den viser bare stasjon 1, som er Lierkroa.
-
@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.
-
Takk for hjelpen så langt! Da har jeg fått det til å starte, men med flowen som du har der oppe, får jeg bare "TypeError: Cannot read properties of undefined (reading 'filter')" i loggen, og det gir meg jo ikke så mye. Er du sikker på at flowen er den samme som den du har i bildet der? For jeg får dette bildet, som ikke er helt likt (legg merke til de feilkonfigurerte greiene). Lurer på om det kan mangle et eller annet som ligger i en annen flow? Edit: Feilen kommer fra rekka med sub.Drivstoffpris.
-
Takk! Det skal jeg prøve!