hjemmedude Skrevet 19. april 2023 Skrevet 19. april 2023 Hei - noen som har fått inn drivstoffpriser fra drivstoffappen i HA? Jeg prøver med denne; Home Assistant - Hente billigste bensin · GitHub Via facebook ser jeg diverse løsninger i Node Red, prøver å unngå node red siden jeg ikke bruker det. Per nå trøbler det litt for prisen for 98 og 95 vises og ikke prisen for diesel. Fant alle bensinstasjoner her; https://api.drivstoffappen.no/api/stations?stationType=0&countryCode=NO 1 Siter
VikingOy Skrevet 19. april 2023 Skrevet 19. april 2023 Har du en link til Facebook som du viser til ? Siter
hjemmedude Skrevet 19. april 2023 Forfatter Skrevet 19. april 2023 VikingOy skrev (23 minutter siden): Har du en link til Facebook som du viser til ? Home Assistant Norge | Facebook Innlegg 12. april , klarte ikke finne direktelink Siter
MrE Skrevet 19. april 2023 Skrevet 19. april 2023 (endret) Det er enkelt å få til uten node-red. Jeg har ferdig konfigurasjon til dette, men utilgjengelig grunnet systemkrasj. Du henter priser via REST, lager template sensor for hvert drivstoff pr stasjon. Endret 19. april 2023 av MrE Siter
Hillmar Skrevet 19. april 2023 Skrevet 19. april 2023 17 minutes ago, MrE said: Det er enkelt å få til uten node-red. Jeg har ferdig konfigurasjon til dette, men utilgjengelig grunnet systemkrasj. Du henter priser via REST, lager template sensor for hvert drivstoff pr stasjon. Alt er enkelt når man kan det 🙂 Legg gjerne ut noen hint til oss andre når systemet ditt er oppe å går igjen. Siter
VikingOy Skrevet 19. april 2023 Skrevet 19. april 2023 Jeg la inn NodeRed Flow'en som lå på FaceBook, og det fungerte helt greit. Siter
hjemmedude Skrevet 20. april 2023 Forfatter Skrevet 20. april 2023 MrE skrev (16 timer siden): Det er enkelt å få til uten node-red. Jeg har ferdig konfigurasjon til dette, men utilgjengelig grunnet systemkrasj. Du henter priser via REST, lager template sensor for hvert drivstoff pr stasjon. Når du er tilbake fra kræsj ser jeg gjerne løsningen din også 😊 Koden over henter via curl oppdatering hver time og jeg merker på HA at alt blir tregt under Development tools og states siden den skal laste inn alle stasjoner i Norge. For min og sikkert de fleste er det kun 4-6 stasjoner i nærheten som er aktuelle. I tillegg sliter jeg med 98 bensin pris og ikke diesel selv om jeg ser i koden at det bes om price_diesel Siter
VikingOy Skrevet 20. april 2023 Skrevet 20. april 2023 Etter å ha juster litt på utvalget, endte jeg opp med dette i HA: Jeg opplever ingen forsinkelser eller påvirkning av andre funksjoner hverken i HA eller på annen programmvare som kjører. Siter
SveinHa Skrevet 20. april 2023 Skrevet 20. april 2023 VikingOy skrev (13 timer siden): Jeg la inn NodeRed Flow'en som lå på FaceBook, Kan du dele til flowen til oss som ikke er på Fakebook? Siter
VikingOy Skrevet 20. april 2023 Skrevet 20. april 2023 (endret) Slettet. Endret 20. april 2023 av VikingOy Siter
SveinHa Skrevet 20. april 2023 Skrevet 20. april 2023 Takker og bukker @VikingOy Mye bedre å dele NodeRed flows som compact JSON tagget som "Kode" slik som dette: [{"id":"9103052baf82e5d0","type":"inject","z":"2447f70b5f1095ba","name":"Hvert 10 min","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"600","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":360,"y":130,"wires":[["687284b792794184"]]},{"id":"687284b792794184","type":"http request","z":"2447f70b5f1095ba","name":"","method":"GET","ret":"obj","paytoqs":"ignore","url":"https://api.drivstoffappen.no/api/stations?stationType=0&countryCode=NO","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[{"keyType":"other","keyValue":"Content-Type","valueType":"other","valueValue":"application/json"},{"keyType":"other","keyValue":"X-API-KEY","valueType":"other","valueValue":"2CD114509703F6E0A976C32FCB79C4F62966EEC6"},{"keyType":"other","keyValue":"User-Agent","valueType":"other","valueValue":"Drivstoffappen/1.3.8 (com.raskebiler.drivstoff.appen; build:130; iOS 15.2.1) Alamofire/5.4.4"}],"x":550,"y":130,"wires":[["18ec6499f1fefde8","e7e0a907d77667f2","283d51c6efeddbb7","85dd9827b7d9a90c"]]},{"id":"18ec6499f1fefde8","type":"function","z":"2447f70b5f1095ba","name":"Esso Avaldsnes","func":"msg.payload = msg.payload.filter((/** @type {{ discountInfo: string; }} */ e) => e.discountInfo == 'Esso Avaldsnes');\nmsg.payload[0].stationDetails = msg.payload[0].stationDetails.filter(e => e.type == '95' || e.type == 'D' )\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":770,"y":130,"wires":[["0e5b02362818c9c1"]]},{"id":"e7e0a907d77667f2","type":"function","z":"2447f70b5f1095ba","name":"Uno-X Avaldsnes","func":"msg.payload = msg.payload.filter(e => e.discountInfo == 'Uno-X Avaldsnes');\nmsg.payload[0].stationDetails = msg.payload[0].stationDetails.filter(e => e.type == '95' || e.type == 'D' )\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":780,"y":190,"wires":[["0e5b02362818c9c1"]]},{"id":"283d51c6efeddbb7","type":"function","z":"2447f70b5f1095ba","name":"YX 7-Eleven Norheim","func":"msg.payload = msg.payload.filter(e => e.discountInfo == 'YX 7-Eleven Norheim');\nmsg.payload[0].stationDetails = msg.payload[0].stationDetails.filter(e => e.type == '95' || e.type == 'D' )\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":790,"y":250,"wires":[["0e5b02362818c9c1"]]},{"id":"85dd9827b7d9a90c","type":"function","z":"2447f70b5f1095ba","name":"Tanken Helganes - Flyplassvegen","func":"msg.payload = msg.payload.filter(e => e.discountInfo == 'Tanken Helganes - Flyplassvegen');\nmsg.payload[0].stationDetails = msg.payload[0].stationDetails.filter(e => e.type == '95' || e.type == 'D' )\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":830,"y":310,"wires":[["0e5b02362818c9c1"]]},{"id":"0e5b02362818c9c1","type":"debug","z":"2447f70b5f1095ba","name":"debug 88","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1090,"y":130,"wires":[]}] Siter
VikingOy Skrevet 20. april 2023 Skrevet 20. april 2023 Ja, selvsagt - det gikk litt fort i den svingen 🙄 Siter
Moskus Skrevet 20. april 2023 Skrevet 20. april 2023 hjemmedude skrev (På 19.4.2023 den 9.04): Fant alle bensinstasjoner her; https://api.drivstoffappen.no/api/stations?stationType=0&countryCode=NO Supert! Takk! 🙂 Siter
SveinHa Skrevet 20. april 2023 Skrevet 20. april 2023 Er dette et åpent API til fri avbenyttelse, abonnementstjeneste eller annet? Fant ikke info på drivstoffappen.no Siter
VikingOy Skrevet 20. april 2023 Skrevet 20. april 2023 Min forståelse er at dette API'et ikke er åpent og fritt tilgjengelig. Det er nok en eller annen IT-dyktig luring som har funnet det og gjort en eksperimentell reverse engineering. Det kan bety at API'et når som helt kan forandres og slutte å virke. Det er en del av gamet. Men, så er det gjerne slik at selskapet bak ofte velger å se gjennom fingrene med at det alltid vil være noen som "finner" frem til slike API'er fordi de som bruker slike for det første ofte er i veldig fåtall (nerdene som oss), og dernest så er all markedsføring, god markedsføring. Vi er med å sprer info om eksistensen til Drivstoffappen.no. Og sist, men ikke minst - vi bidrar nok også med en del verdifull tilbakemelding dersom Drivstoffappen.no gidder å ta seg bryet med følge litt med på forumene våre. Kall oss gjerne gratis betatestere. 3 Siter
hjemmedude Skrevet 21. april 2023 Forfatter Skrevet 21. april 2023 Appen er og en del data er gratis å bruke i appen, med betaltjenestene i app unlockes en del ekstra. Var nok ikke deres intensjon at datane kunne brukes av oss, men enn så lenge er det åpent. Siter
MrE Skrevet 21. april 2023 Skrevet 21. april 2023 (endret) Hei, Her er slik jeg har gjort det, uten bruk av Node-Red etc. Jeg bruker Auto-Entities kortet i HA, og sorterer på pris lavest - høyest. Ett kort for bensin, og ett for diesel. Jeg hadde en del planer for hvordan jeg skulle ha dette, blant annet med bilde som ikon, kart som viste de forskjellige stasjonene, legge inn når den ble sist oppdatert etc.. Tiden strekker dessverre ikke til, så det har blitt lagt på is inntil videre. Anyways, her er det jeg har så langt: I configuration.yaml har jeg lagt inn restsensor som henter stasjoner fra json filen som ble linket til lenger oppe. Tipset for å få den lett leselig er å legge den inn i en JSON formatter, da blir filen mye renere å lese. Edit: Noen ganger når man går inn på JSON filen uten å bruka api-key, får man authorization denied. Da må man bruke Postman API explorer og X-API-KEY for å hente JSON filen. JSON filen ligger vedlagt. Jeg bruker Notepad++ og brukte søkefunksjon for å finne stasjonene jeg vil ha inn i oppsettet. For å legge til stasjonen du ønsker gjør du følgende: 1. Finner stasjonen i JSON filen 2. Kopierer DiscountInfo navnet som du finner i JSON filen 3. endrer 3 ting under rest-sensor i configuration.yaml - Name - Valgfritt navn, men legg merke til at navnet har bensin i seg. Det er fordi value_template henter bensin-prisen - json attributes path discount info må endres til stasjonsnavnet slik den står i JSON filen. - og value_template må endres til samme navnet som du valgte på øverste linje. Under template sensor må du endre navn på sensor (valgfritt), men state_attr må henvise til sensor som du har laget under rest-sensor. Shell bryne diesel henter altså dieselprisen fra sensoren som heter shell bryne bensin... Nedenfor er YAMLkoden for REST og for template sensor. Begge skal i configuration.yaml (ihvertfall hos meg 🙂🙂 ) I RESTsensoren er det name: som sier hva sensoren skal hette, og value_template er verdien til sensoren som blir opprettet. Sensorene som ligger i restsensoren blir da bensinprisen (på grunn av [0] i value template). Hvis det ønskes diesel her så må du sjekke hva som står i JSON fila. [0] er øverste avsnitt, [1] blir neste osv.. Se utklipp nedenfor, kanskje det ga mer mening. configuration.yaml rest: - scan_interval: 600 method: GET headers: Content-Type: application/json X-API-KEY: 2CD114509703F6E0A976C32FCB79C4F62966EEC6 User-Agent: Drivstoffappen/1.3.8 (com.raskebiler.drivstoff.appen; build:130; iOS 15.2.1) Alamofire/5.4.4 Accept-Language: nb-NO;q=1.0, en-GB;q=0.9 Accept-Encoding: br;q=1.0, gzip;q=0.9, deflate;q=0.8 Connection: keep-alive resource: https://api.drivstoffappen.no/api/stations?stationType=0&countryCode=NO sensor: - name: "Shell Bryne Bensin" json_attributes_path: "$..[?(@.discountInfo=='Shell Bryne')]" value_template: "{{ state_attr('sensor.shell_bryne_bensin', 'stationDetails')[0].price }}" force_update: true json_attributes: - "id" - "location" - "latitude" - "longitude" - "pictureUrl" - "discountInfo" - "lastUpdated" - "stationDetails" - name: "Circle K Lagårdsveien Bensin" json_attributes_path: "$..[?(@.discountInfo=='Circle K Lagårdsveien')]" force_update: true value_template: "{{ state_attr('sensor.circle_k_lagardsveien_bensin', 'stationDetails')[0].price }}" json_attributes: - "id" - "location" - "latitude" - "longitude" - "pictureUrl" - "discountInfo" - "lastUpdated" - "stationDetails" - name: "Uno-X Bryne Bensin" json_attributes_path: "$..[?(@.discountInfo=='Uno-X Bryne')]" force_update: true value_template: "{{ state_attr('sensor.uno_x_bryne_bensin', 'stationDetails')[0].price }}" json_attributes: - "id" - "location" - "latitude" - "longitude" - "pictureUrl" - "discountInfo" - "lastUpdated" - "stationDetails" - name: "Esso Bryne Bensin" json_attributes_path: "$..[?(@.discountInfo=='Esso Bryne')]" force_update: true value_template: "{{ state_attr('sensor.esso_bryne_bensin', 'stationDetails')[0].price }}" json_attributes: - "id" - "location" - "latitude" - "longitude" - "pictureUrl" - "discountInfo" - "lastUpdated" - "stationDetails" - name: "Circle K Klepp Bensin" json_attributes_path: "$..[?(@.discountInfo=='Circle K Klepp')]" force_update: true value_template: "{{ state_attr('sensor.circle_k_klepp_bensin', 'stationDetails')[0].price }}" json_attributes: - "id" - "location" - "latitude" - "longitude" - "pictureUrl" - "discountInfo" - "lastUpdated" - "stationDetails" For å lage diesel sensorene er det hentet samme sensor, men brukt neste avsnitt i JSON fila ( [1] ). Noen ganger har stasjonene avgiftsfri diesel eller 98 bensin på 2. avsnitt, så da må det brukes [2] eller [3] alt etter hvordan JSON ser ut på aktuell stasjon. Merk at sensorene henter attribut fra sensor.shell_bryne_bensin. Det er fordi i restsensoren henter vi bensinprisen, og hele stasjonen som vi henter inn i HA blir da kalt for shell bryne bensin. For å hente dieselpris bruker vi altså attribute under bensinsensoren, hvis det ga mening. Her er for å hente diesel på de samme stasjonene: template: - sensor: ########## DIESELPRISER ############################ - name: Shell Bryne Diesel state: "{{ state_attr('sensor.shell_bryne_bensin', 'stationDetails')[1].price }}" device_class: monetary unit_of_measurement: NOK - name: Circle K Lagårdsveien Diesel state: "{{ state_attr('sensor.circle_k_lagardsveien_bensin', 'stationDetails')[1].price }}" device_class: monetary unit_of_measurement: NOK - name: Uno-X Bryne Diesel state: "{{ state_attr('sensor.uno_x_bryne_bensin', 'stationDetails')[1].price }}" device_class: monetary unit_of_measurement: NOK - name: Esso Bryne Diesel state: "{{ state_attr('sensor.esso_bryne_bensin', 'stationDetails')[1].price }}" device_class: monetary unit_of_measurement: NOK - name: Circle K Klepp Diesel state: "{{ state_attr('sensor.circle_k_klepp_bensin', 'stationDetails')[1].price }}" device_class: monetary unit_of_measurement: NOK Blir altså mye manuelt arbeid, men er forholdsvis enkelt. Knotet en del med dette før jeg fikk det til. Håper det fungerer for dere også 🙂 Slik ser kortet ut i HA: Hvor konfigurasjonen til auto-entities kortet for diesel ser slik ut: type: custom:auto-entities card: type: entities title: Diesel - sortert på pris filter: include: - name: '*Diesel*' exclude: [] sort: method: state numeric: true DS appen.json Endret 24. april 2023 av MrE 2 1 Siter
stigvi Skrevet 21. april 2023 Skrevet 21. april 2023 (endret) MrE skrev (23 minutter siden): Hei, Her er slik jeg har gjort det, uten bruk av Node-Red etc. Jeg bruker Auto-Entities kortet i HA, og sorterer på pris lavest - høyest. Ett kort for bensin, og ett for diesel. Jeg hadde en del planer for hvordan jeg skulle ha dette, blant annet med bilde som ikon, kart som viste de forskjellige stasjonene, legge inn når den ble sist oppdatert etc.. Tiden strekker dessverre ikke til, så det har blitt lagt på is inntil videre. Anyways, her er det jeg har så langt: FYI: Har en ukvalifisert oppfatning av at Uno-X på Orstad / Øksnevad ville sortert høyt opp på listen din. Det er kanskje interessant siden den ligger i det samme området som de andre du har. Endret 21. april 2023 av stigvi 1 Siter
hjemmedude Skrevet 21. april 2023 Forfatter Skrevet 21. april 2023 (endret) For øyeblikket ingen data, noen som opplever det samme? "You are not authorized" 😛 Endret 21. april 2023 av hjemmedude Siter
MrE Skrevet 22. april 2023 Skrevet 22. april 2023 (endret) hjemmedude skrev (20 timer siden): For øyeblikket ingen data, noen som opplever det samme? "You are not authorized" 😛 Da antar jeg du må endre X-api-key. Du finner ny ved hjelp av Postman API explorer 2CD114509703F6E0A976C32FCB79C4F62966EEC6 Edit: X-API-KEY fungerer hos meg, så da tenker jeg den skal fungere hos deg også. Edit2: hjemmedude skrev (20 timer siden): For øyeblikket ingen data, noen som opplever det samme? "You are not authorized" 😛 hvor får du den feilmeldingen? Endret 22. april 2023 av MrE 1 Siter
hjemmedude Skrevet 24. april 2023 Forfatter Skrevet 24. april 2023 (endret) Takk skal prøve med postman api explorer, har ikke brukt det før men har konto nå. Når jeg trykker på linken til drivstoppappen.no/api så får jeg det som tilbakemelding, you are not authorized. 🙂 edit: Ok, la inn data i postman og da returneres informasjon som ønsket, så da er det kanskje bare hos meg det klusser. La koden din rett i configuration.yaml og da spiller det fint, så er noe jeg klusser til, tydeligvis 🙂 Det blir opprettet flere _bensin sensorer ettervhert som tiden går, er oppe i 7 stk på Bryne per nå. Skjer dette hos deg? Endret 24. april 2023 av hjemmedude Siter
Moskus Skrevet 24. april 2023 Skrevet 24. april 2023 Jeg får en følelse at noen leser her på forumet. 😉 Fair det. Men mer praktisk om de delte. 🙂 Siter
MrE Skrevet 24. april 2023 Skrevet 24. april 2023 Jeg har redigert mitt innlegg noe, og har inkludert JSON filen. @hjemmedude Nei du skal ikke få mange flere av samme sensor plutselig. REST sensor oppretter 1 sensor for 1 stasjon. Template sensor henter dieselpris fra samme stasjon. Har du utklipp av hvordan det ser ut hos deg? Vedrørende not authorized har dette skjedd fra tid til annen, uten at jeg vet hvorfor. Jeg bruker Postman med api key, da kommer json fila med en gang 🙂 Siter
hjemmedude Skrevet 24. april 2023 Forfatter Skrevet 24. april 2023 @MrEdet var kanskje i en testperiode at det ble generert nye sensorer for hver yaml restart, nå er det 2-3 sensorer (development tools -> states ) for hver stasjon, det er nok riktig 🙂 Takk for god hjelp! Nå kan jeg spore prisen og virkelig handle fuel på rett tid og sted 🙂 Siter
VikingOy Skrevet 24. april 2023 Skrevet 24. april 2023 (endret) Det virker litt "overkill" å lage en sensor for hver eneste besinstasjon. Jeg har isteden gjort alt ferdig i NodeRed med bruk av JavaScript og ender opp med kun en enkel sensor som jeg så sender til Home Assistant. Enkelt, rent og ryddig. Først trekkes alle de ønskede stasjonene ut og samles i en felles array (eksempelet her har kun 3 stasjoner): var stasjoner = []; var temp = msg.payload.filter(e => e.discountInfo == 'Shell Marienlyst'); temp[0].stationDetails = temp[0].stationDetails.filter(e => e.type == 'D'); temp[0].stationDetails = temp[0].stationDetails[0]; stasjoner[0] = temp[0]; var temp = msg.payload.filter(e => e.discountInfo == 'Shell Frogner'); temp[0].stationDetails = temp[0].stationDetails.filter(e => e.type == 'D'); temp[0].stationDetails = temp[0].stationDetails[0]; stasjoner[1] = temp[0]; var temp = msg.payload.filter(e => e.discountInfo == 'Shell Vinderen'); temp[0].stationDetails = temp[0].stationDetails.filter(e => e.type == 'D'); temp[0].stationDetails = temp[0].stationDetails[0]; stasjoner[2] = temp[0]; msg.payload = stasjoner; return msg; Deretter sorteres tabellen og den billigste trekkes ut: var billigst = msg.payload[0]; msg.payload.forEach(FinnBilligst); function FinnBilligst(stasjon){ if(stasjon.stationDetails.price < billigst.stationDetails.price) { billigst = stasjon; } } msg.payload = billigst; return msg; Resultatet sendes til HA som én sensor: Og presenteres i Lovelace: Endret 25. april 2023 av VikingOy Siter
Anbefalte innlegg
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.