Thomas Skrevet 21. november 2018 Del 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 Lenke til kommentar Del på andre sider Flere delingsvalg…
berland Skrevet 21. november 2018 Del 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 Lenke til kommentar Del på andre sider Flere delingsvalg…
Thomas Skrevet 22. november 2018 Forfatter Del 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 Lenke til kommentar Del på andre sider Flere delingsvalg…
berland Skrevet 7. desember 2019 Del 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 Lenke til kommentar Del på andre sider Flere delingsvalg…
berland Skrevet 8. desember 2019 Del 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 Lenke til kommentar Del på andre sider Flere delingsvalg…
berland Skrevet 21. januar 2021 Del 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 Lenke til kommentar Del på andre sider Flere delingsvalg…
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.