Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Værmelding som tekst


stigvi

Anbefalte innlegg

Slik blir det

 

  - platform: rest
    resource: https://api.met.no/weatherapi/textforecast/2.0/?forecast=landoverview
    name: textweather
    scan_interval: 21600
    value_template: '{{ (value_json.textforecast.time[0].forecasttype.location|selectattr("@id", "eq", "0611")|first)["#text"] }}'



Koden 0611 må endres til ditt eget område. Se i linken i posten ovenfor. (eller i linken til rest-sensor)

Endret av stigvi
  • Like 2
  • Thanks 2
Lenke til kommentar
Del på andre sider

Har bare standard met-integrasjonen og likte denne godt, men hvordan henter jeg konfigurasjon fra met-integrasjonen?

 

Det var ikke så vanskelig. Bare å legge til weather.dittnavn på alle valg under card configuration..

 

Hvordan justerte du ned tekststørrelsen?

 

Endret av hjemmedude
Lenke til kommentar
Del på andre sider

stigvi skrev (På 20.10.2022 den 6.53):

Slik blir det

 

  - platform: rest
    resource: https://api.met.no/weatherapi/textforecast/2.0/?forecast=landoverview
    name: textweather
    scan_interval: 21600
    value_template: '{{ (value_json.textforecast.time[0].forecasttype.location|selectattr("@id", "eq", "0611")|first)["#text"] }}'



Koden 0611 må endres til ditt eget område. Se i linken i posten ovenfor. (eller i linken til rest-sensor)

 

Får ikke denne til å virke.

image.thumb.png.54a4e68a1ffc3b47523a01ffde8c7aae.png

 

Lagt denne under "sensor"

- platform: rest
  resource: https://api.met.no/weatherapi/textforecast/2.0/?forecast=landoverview
  name: textweather
  scan_interval: 21600
  value_template: '{{ (value_json.textforecast.time[0].forecasttype.location|selectattr("@id", "eq", "0503")|first)["#text"] }}'

 

Hva gjør jeg feil?

 

Lenke til kommentar
Del på andre sider

  • 1 måned senere...

Jeg har lagt til et truncate filter. HA kan ikke ha en tilstandsverdi som er lenger enn 255 tegn. Men attributter kan være lenger. Spørsmålet da er hvordan en henter denne teksten inn i en attributt? Men som en midlertidig fix blir teksten begrenset i lengde

 

  - platform: rest
    resource: https://api.met.no/weatherapi/textforecast/2.0/?forecast=landoverview
    name: textweather
    scan_interval: 3612
    value_template: '{{ (value_json.textforecast.time[0].forecasttype.location|selectattr("@id", "eq", "0611")|first)["#text"]|truncate(254,True) }}'

 

Lenke til kommentar
Del på andre sider

  • 2 uker senere...

Lurer på det samme ift. å få lengre tekst inn. 

 

Et annet tips for Østlandet, er å bruke "match" i stede for "eq"

- platform: rest
  resource: https://api.met.no/weatherapi/textforecast/2.0/?forecast=landoverview
  name: textweather now
  scan_interval: 21600
  value_template: '{{ (value_json.textforecast.time[0].forecasttype.location|selectattr("@id", "match", "0503.*")|first)["#text"] |truncate(254,True)}}'

 

Lenke til kommentar
Del på andre sider

  • 10 måneder senere...
stigvi skrev (På 13.12.2022 den 8.06):

Jeg har lagt til et truncate filter. HA kan ikke ha en tilstandsverdi som er lenger enn 255 tegn. Men attributter kan være lenger. Spørsmålet da er hvordan en henter denne teksten inn i en attributt? Men som en midlertidig fix blir teksten begrenset i lengde

 

  - platform: rest
    resource: https://api.met.no/weatherapi/textforecast/2.0/?forecast=landoverview
    name: textweather
    scan_interval: 3612
    value_template: '{{ (value_json.textforecast.time[0].forecasttype.location|selectattr("@id", "eq", "0611")|first)["#text"]|truncate(254,True) }}'

 

Her er løsningen for å hente ut værmeldingen som en attributt:

 

- platform: rest
  resource: https://api.met.no/weatherapi/textforecast/2.0/?forecast=landoverview
  name: textweather text
  scan_interval: 180
  json_attributes_path: '$.textforecast.time[0].forecasttype.location[?("Øst" in @["\x40name"])]'
  value_template: '1'
  json_attributes:
    - '@id'
    - '@name'
    - '#text'

 

I eksempelet ovenfor blir værmeldingsteksten lagt til attributt sensor.textweather_text.#text.

Attributten @name angir området og @id id-nummeret. Jeg har valgt å søke på områdenavnet og bruker "Øst" og "\x40name" i json_attributes_path, da dekkes både Østlandet og Østafjells avhengig av hva meteorologen velger å angi. Dersom det er ønskelig å søke på id-nummer i stedet byttes "Øst" ut med id-nummer og "\x40name" med "\x40id".

VM.png.33552e514b14ab0682ba96957692de90.png

 

Deretter legger jeg værmeldingsteksten ut i flere sensorer, en for hver linje:

- platform: template
  sensors:
    weather_summary1:
      value_template: >-
        {% set t= (state_attr('sensor.textweather_text','#text') | wordwrap(42, true,"§")).split("§")[0] %}
        {{t}}

    weather_summary2:
      value_template: >-
        {% set t= (state_attr('sensor.textweather_text','#text') | wordwrap(42, true,"§")).split("§")[1] %}
        {{t}}

osv..

 

I eksempelet over er lengden på tekstlinjen angitt i "wordwrap(42, true,"§")" hvor 42 angir antall tegn/lengde på tekstlinjen. 

 

 

Endret av Tander
  • Like 2
Lenke til kommentar
Del på andre sider

Tander skrev (1 time siden):

Her er løsningen for å hente ut værmeldingen som en attributt:

 

- platform: rest
  resource: https://api.met.no/weatherapi/textforecast/2.0/?forecast=landoverview
  name: textweather text
  scan_interval: 180
  json_attributes_path: '$.textforecast.time[0].forecasttype.location[?("Øst" in @["\x40name"])]'
  value_template: '1'
  json_attributes:
    - '@id'
    - '@name'
    - '#text'

 

I eksempelet ovenfor blir værmeldingsteksten lagt til attributt sensor.textweather_text.#text.

Attributten @name angir området og @id id-nummeret. Jeg har valgt å søke på områdenavnet og bruker "Øst" og "\x40name" i json_attributes_path, da dekkes både Østlandet og Østafjells avhengig av hva meteorologen velger å angi. Dersom det er ønskelig å søke på id-nummer i stedet byttes "Øst" ut med id-nummer og "\x40name" med "\x40id".

VM.png.33552e514b14ab0682ba96957692de90.png

 

Deretter legger jeg værmeldingsteksten ut i flere sensorer, en for hver linje:

- platform: template
  sensors:
    weather_summary1:
      value_template: >-
        {% set t= (state_attr('sensor.textweather_text','#text') | wordwrap(42, true,"§")).split("§")[0] %}
        {{t}}

    weather_summary2:
      value_template: >-
        {% set t= (state_attr('sensor.textweather_text','#text') | wordwrap(42, true,"§")).split("§")[1] %}
        {{t}}

osv..

 

I eksempelet over er lengden på tekstlinjen angitt i "wordwrap(42, true,"§")" hvor 42 angir antall tegn/lengde på tekstlinjen. 

 

 



Takk. Den som venter på noe godt, osv .....

  • Like 2
Lenke til kommentar
Del på andre sider

  • 3 måneder senere...

Jeg har de siste dagene ikke fått inn noen værmelding i HA. Slo på debugging på rest sensor og så at jeg fikk 403 (ikke tilgang, feil)

Jeg løste det med å legge til 

 

headers:
      User-Agent: Home Assistant REST sensor


Mulig de er blitt mer strikse og vil ha dette før de gir fra seg data.......

Lenke til kommentar
Del på andre sider

Det stemmer. De har i dokumentasjonen angitt at brukere må identifisere seg, slik du har gjort. Kanskje greit å ikke bruke samme User-Agent navn ("Home Assistant", etc.).

 

Det som er rart er at jeg får 403 dersom User-Agent ikke er angitt under header fra Home Assistant, men det går helt greit å hente ut informasjonen fra nettleseren. Nå vet ikke jeg om nettleseren identifiserer seg, mulig det.

  • Like 1
Lenke til kommentar
Del på andre sider

Tander skrev (14 minutter siden):

Det stemmer. De har i dokumentasjonen angitt at brukere må identifisere seg, slik du har gjort. Kanskje greit å ikke bruke samme User-Agent navn ("Home Assistant", etc.).

 

Det som er rart er at jeg får 403 dersom User-Agent ikke er angitt under header fra Home Assistant, men det går helt greit å hente ut informasjonen fra nettleseren. Nå vet ikke jeg om nettleseren identifiserer seg, mulig det.

Takk. Jeg har lagt til min epost adresse på min user-agent streng.

Lenke til kommentar
Del på andre sider

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.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • 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.