Thomas Skrevet 21. november 2018 Skrevet 21. november 2018 (endret) Noen som har skills nok til å hente ut snødybde og vannekvivalent (er et mål på aktuell snømengde omgjort til millimeter vann) fra dette kartet ?. Jeg klarer å trykke meg frem til det manuelt og kan velge export av både txt og json. lengdegrad og breddegrad er jo definert i configuration i hass, så burde være mulig å lage en plugin uten å måtte oppgi dette. Anyone ? http://www.senorge.no/index.html?p=senorgeny&st=snow Her er litt om kartet: https://www.nve.no/hydrologi/sno/snokart/ Endret 21. november 2018 av Thomas Siter
berland Skrevet 21. november 2018 Skrevet 21. november 2018 Ikke svaret på spørsmålet ditt, men relatert: Jeg har en supersimpel webscraper gående mot snødybdelista til yr. Det er en one-liner i bash (skallet til Linux) som gjør jobben: snodybde=`curl -s "https://www.yr.no/observasjonar/sn%C3%B8lista.html" | grep -A 4 lfjell | tail -n 1 | cut -f2 -d\> | cut -f1 -d' ' | tr -d '[:space:]'` (så er det et ny curl-kommando som sender variabelen snodybde til OpenHAB via REST-interfacet) Siter
Thomas Skrevet 22. november 2018 Forfatter Skrevet 22. november 2018 (endret) 11 hours ago, berland said: Ikke svaret på spørsmålet ditt, men relatert: Jeg har en supersimpel webscraper gående mot snødybdelista til yr. Det er en one-liner i bash (skallet til Linux) som gjør jobben: snodybde=`curl -s "https://www.yr.no/observasjonar/sn%C3%B8lista.html" | grep -A 4 lfjell | tail -n 1 | cut -f2 -d\> | cut -f1 -d' ' | tr -d '[:space:]'` (så er det et ny curl-kommando som sender variabelen snodybde til OpenHAB via REST-interfacet) Jeg har fått det til (tror jeg). Har ikke kommet snø enda ? Lagde et script jeg kjører i cron en gang i døgnet. URL-ene kan sikkert ryddes litt i thomas@ubuntu:~$ cat snokart.sh yesterday=$(date --date="yesterday" '+%Y%m%dT0000') today=$(date '+%Y%m%dT0000') id="264511;6745296" snodybde=$(curl -s "http://h-web01.nve.no/chartserver/ShowData.aspx?req=getchart&ver=1.0&vfmt=json&time=$yesterday;$today&chs=10x10&lang=no&chlf=desc&chsl=0;+0&chhl=2|0|2&timeo=-06:00&app=3d&chd=ds=hgts,da=29,id=$id;sd,cht=area,mth=inst&nocache=0.08958826222640814" | jq .[0].SeriesPoints[-1].Value) vannekvivalent=$(curl -s "http://h-web01.nve.no/chartserver/ShowData.aspx?req=getchart&ver=1.0&vfmt=json&time=$yesterday;$today&chs=10x10&lang=no&chlf=desc&chsl=0;+0&chhl=2|0|2&timeo=-06:00&app=3d&chd=ds=hgts,da=29,id=$id;swe,cht=line,mth=inst&nocache=0.09229379378894098" | jq .[0].SeriesPoints[-1].Value) echo "{"'"'senorge_snodybde'"':'"'$snodybde'"','"'senorge_vannekvivalent'"':'"'$vannekvivalent'"'"}" > /home/thomas/.homeassistant/senorge.json json fila ser da slik ut thomas@ubuntu:~$ cat .homeassistant/senorge.json | jq { "senorge_snodybde": "0", "senorge_vannekvivalent": "0" } Og så lagde jeg 2 sensorer i HA Sensorer: - platform: file name: Snødybde file_path: /home/thomas/.homeassistant/senorge.json value_template: '{{ value_json.senorge_snodybde }}' unit_of_measurement: 'cm' - platform: file name: Vannekvivalent file_path: /home/thomas/.homeassistant/senorge.json value_template: '{{ value_json.senorge_vannekvivalent }}' unit_of_measurement: 'mm' Endret 22. november 2018 av Thomas 2 Siter
berland Skrevet 7. desember 2019 Skrevet 7. desember 2019 Yr har oppgradert websidene sine, så løsningen min over for snødybde sluttet da selvsagt å funke. Denne gang gjorde jeg det skikkelig, via HTTP-api'et på http://frost.met.no og instruksjonene der. Man må: * Lage seg en API-bruker hos met, slik at man får en client_id som skal brukes uten passord når man bruker HTTP-API'et. * Finne en målestasjon som man vil hente data for, og finne 'id' til denne. Endepunktet https://frost.met.no/sources/v0.jsonld ga meg en lang json hvor jeg kunne lete meg fram til riktig 'id'. * Så bruker man observations-endepunktet med argumentene 'sources' (målestasjonid), referencetime satt til latest, og elements satt til surface_snow_thickness for å si hvilken datatype man vil hente ut (mange andre muligheter finnes). Man får en json hvor man man lete seg fram til tallet man vil ha. I OpenHAB så konfigurerer man en item mot http-bindingen, og min konfigurasjonslinje ble til: Number Snodybde "Snødybde" {http="<[https://frost.met.no/observations/v0.jsonld?sources=SN51800&referencetime=latest&elements=surface_snow_thickness{Authorization=Basic base64encodedauthstring}:3600000:JSONPATH($.data[0].observations[0].value)]"} Her må man legge inn en streng med base64-enkoding av "brukernavn:passord", der brukernavn er client_id som du har fått fra API'et i starten, og passord er en tom streng. Kodingen kan gjøres på base64encode.org eller i en Python-sesjon. I konfigurasjonen over, er denne URL'en satt til å polles hver time (3600000 millisekunder), og utifra json-responsen hentes verdi fra en JSONPATH. 2 Siter
berland Skrevet 8. desember 2019 Skrevet 8. desember 2019 21 timer siden, berland skrev: Yr har oppgradert websidene sine, så løsningen min over for snødybde sluttet da selvsagt å funke. Denne gang gjorde jeg det skikkelig, via HTTP-api'et på http://frost.met.no og instruksjonene der. Det viser seg at værstasjonen på fjellet oppdaterer snødybden omtrent hver time (minst), så dette ble mye artigere enn det var før med webside-scraper som ikke kunne oppdatere seg mer enn en gang i døgnet. 1 Siter
berland Skrevet 21. januar 2021 Skrevet 21. januar 2021 (endret) Liten oppdatering for OpenHAB-interesserte. OH3 støtter ikke lenger http-bindingen fra OH1, så metoden over virker ikke der. For OH3 http binding gjør man slik (dette krevde mye fikling): Thing http:url:yrmjolfjell "MjølfjellYrAPI" [baseURL="https://frost.met.no/observations", refresh="3600", username="", username="edxxxxx8-9xx8-4xxb-8fxxa-xxxxxxxxxx", password=""] { Channels: Type number : snodybde "Snødybde" [stateExtension="v0.jsonld?sources=SN51800&referencetime=latest&elements=surface_snow_thickness", mode="READONLY", stateTransformation="JSONPATH:$.data[0].observations[0].value"] Type number : temperatur "Temperatur" [stateExtension="v0.jsonld?sources=SN51800&referencetime=latest&elements=air_temperature", mode="READONLY", stateTransformation="JSONPATH:$.data[0].observations[0].value"] } og Items som refererer til kanalene: Number SnodybdeMjolfjell "Snødybde Mjølfjell" (gYr, gResetExpire) {channel="http:url:yrmjolfjell:snodybde", expire="48h"} Number TemperaturMjolfjell "Temperatur Mjølfjell" (gYr,gResetExpire) {channel="http:url:yrmjolfjell:temperatur", expire="48h"} Endret 21. januar 2021 av berland refresh satt fornuftigere 1 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.