[APP][Pro][Bridge] MET ALERT (Meteorologisk Institutt)

MET Varsel: Offisielle farevarsler rett inn i Homey

Hei alle sammen! :waving_hand:

Homey-app for dere som vil bruke vérvarsler aktivt i automasjoner. MET Varsel gir deg offisielle farevarsler fra Meteorologisk institutt (MET) direkte inn i Homey – klare til bruk i Flows.


Hvorfor bruke denne?

Appen overvÄker aktive farevarsler for ditt omrÄde og gjÞr dem tilgjengelig som Flow-triggere og betingelser. Perfekt for Ä la hjemmet reagere automatisk pÄ vÊrhendelser! :wind_face::cloud_with_rain::snowflake:

  • Full kontroll: Velg om du vil trigge pĂ„ Gult, Oransje eller RĂždt nivĂ„.
  • Alt inkludert: Varsler for vind, kraftig nedbĂžr, snĂž/is, flom og skogbrann.
  • Alltid oppdatert: Sjekker MET Alerts 2.0 API-et ca. hvert 15. minutt.

Eksempler pÄ bruk

1. Stormsikring (Vind) :wind_face:

  • NĂ„r: VarselsnivĂ„ endres
  • Og: VarselsnivĂ„ er minst Oransje OG type fare er Vind
  • GjĂžr: Trekk inn markiser og send push-varsel.

2. Den smarte “Snþskuffa” (Snþ/Is) :snowflake:

  • NĂ„r: Nytt farevarsel opprettes
  • Og: Type fare er SnĂž eller Is
  • GjĂžr: Skru pĂ„ varmekabler i oppkjĂžrselen og varsle familien.

3. Automatisk hage-pause (NedbĂžr) :cloud_with_rain:

  • NĂ„r: Farevarsel for nedbĂžr er aktivt
  • Og: VarselsnivĂ„ er minst Gult
  • GjĂžr: Deaktiver hagevanning og send push-varsel.

Tilgjengelige Flow-kort

NÄr


  • Nytt farevarsel opprettes / oppdateres
  • VarselsnivĂ„ endres
  • Et farevarsel avsluttes

Og


  • Et farevarsel er aktivt
  • VarselsnivĂ„ er minst valgt nivĂ„
  • Type fare er X

:backhand_index_pointing_right: Appen finner du her:

3 Likes

Nye widgets tilgjengelig, med bedre layout!

1 Like

Spennende app.

Har forsÞkt meg litt pÄ Ä bygge noen flows, og ser for meg to bruksomrÄder.

  1. NĂ„r nytt farevarsel opprettes sĂ„ kringkastes dette pĂ„ mine Google hĂžyttalere rundt omkring i huset, samt kanskje en push melding pĂ„ telefonen. SpĂžrsmĂ„let mitt blir da hva som ligger i de ulike tagsene fra “NÅR” kortet. Ønsker Ă„ benytte disse i oppbyggingen av teksten, men Ăžnsker at det skal vĂŠre forstĂ„elig, sĂ„ om du har noen tips eller eksempel pĂ„ hvilken tekst som kommer pĂ„ de ulike tagsene hadde det vĂŠrt til god hjelp.
  2. Om morgenen pĂ„ en ukedag sĂ„ sendes det en push melding med informasjon om aktivt varsel i omrĂ„det. Fin informasjon med tanke pĂ„ reise til jobb om det er noen forhĂ„ndsregler som mĂ„ tas. Her fĂ„r jeg ikke til Ă„ hente tags pĂ„ aktive varsler. Noen tips til hvordan jeg kan lĂžse dette? Er det mulig Ă„ legge til tags i “OG” kortet?

Hei det er fullt mulig Ä legge inn bÄde tekst til tale, pÄ tidslinjen og pushvarsler mm.

Tag forklaring er ganske enkelt

Domene: Land eller havomrÄdene

Hendelse: Er feks snĂž, vind, regn osv..

Instruksjon: Her er hele teksten pÄ farevarsel utgitt av MET, denne teksten ser du feks pÄ bilde over i widgets

NivÄ: Gult, Oransje, RÞdt

Tittel: Dette er tittelen som MET velger Ä gi ut, Feks: Østlandet venter sterk vind i omrÄdet

UtlÞp og start tid er nÄr aktive varsler pÄgÄr.

SÄ feks sÄ kan du bruke en flow: Aktivt Farevarsel: @nivÄ - @hendelse - @instruksjon vil pÄgÄ frem til @utlÞpsdato

Her kan du bestemme selv hvordan du vil sette opp varsel ut fra hva du Ăžnsker Ă„ ha med.

Dessverre sÄ stÞtter ikke Homey tags pÄ OG (conditions) flowkort pr nÄ. Lag deg eventuelle logikk verdier selv du Þnsker Ä ha med i en flow.

Push varsel fungerer uten Ä velge tidspunkt, her kan du sette opp varsel nÄr ett farevarsel er aktivt. Dette gÄr automatisk nÄr du har fÄtt ett aktivt farevarsel i ditt omrÄde. Appen sjekker hvert 15 min pÄ trigger kort som feks nytt farevarsel blir

HÄper det svarer pÄ spÞrsmÄlene. Gjerne kom med forslag eller endringer om du har Þnsker.

SÄ er det ikke sÄ enkelt Ä fÄ testet flow om du ikke har noen aktive farevarsel pÄ din valgte adresse. SÄ tips, finn deg en plass i Norge som har ett aktivt varsel sÄ fÄr du testet.

Nb! Appen tar kun vĂŠr for Ăžyeblikket og ikke snĂžskred

Takk for tilbakemelding og tips om Ă„ bruke variabler.

Da har jeg bygget en flow som skal fungere ganske bra. Den varsler pÄ telefon og tekst-til-tale pÄ dagtid, i tillegg til at den lagrer informasjon i variabler. SÄ bruker jeg disse variablene til sÄ sende et varsel pÄ morgenen. Disse er da ment for Ä fange opp varsler som oppstÄr pÄ nattestid for Ä unngÄ Ä fÄ unÞdvendige varsler pÄ telefonen mens jeg sover.

Savner muligheten for Ä endre pÄ lokasjonen til enheten jeg har lagt til. NÄ har jeg valgt en tilfeldig lokasjon i landet med pÄgÄende varsel for Ä teste ut, men sÄ vil jeg teste til min nÄvÊrende posisjon uten Ä mÄtte legge til en ny enhet. Er det mulig?

Supert, det er bra du fikk en bra lÞsning. NÄr det gjelder adresser kan jeg fÄ inn dette ved neste oppdatering.

Det er egentlig ikke adresse, men gps punkt som ligger under tilknytning i device. Men jeg kan se pÄ Ä bruke samme funksjon som nÄr du fÞrst koblet til enheten.

Jeg legger det opp pÄ listen til neste realise.

1 Like

Denne var kul, takk! :smiley:

Hvis du har lyst til Ä utvide appen etter hvert, sÄ har jeg lenge savnet de gode gamle tekstvarslene for vÊret. MET har API som lar deg hente dette ( Textforecast ), men da mÄ du nok ogsÄ hente fylke/region pÄ et eller annet vis.

Jeg har vibe-kodet et HomeyScript som henter tekstvarsel for mitt fylke, og sender meg mobilvarsel med dagens/morgendagens tekstvarsel hver morgen/kveld, som fungerer sÄnn passe bra.

Gode tips, jeg kanskje fÄ lagt til det. SpÞrs om det er mer relevant i en vÊr app som yr. Men jeg kan vurdere dette.

Gjerne del vibe koden sÄ jeg kan se hva du tenker.

Her er flowen jeg bruker. KjĂžrer HomeyScriptet nedenfor og oppdaterer tekstvariabler fra dette, og sender dagens/morgendagens varsel som pushmelding til telefonen min.

Her vil jeg tro det er relativt enkelt Ă„ bytte ut “Agder” med relevant fylke/region, hvis noen Ăžnsker Ă„ kopiere.

// --------------------------------------
// HomeyScript: Agder tekstvarsel fra MET
// --------------------------------------

// 1. Endepunkt (versjon 3.0)
const URL = "https://api.met.no/weatherapi/textforecast/3.0/landoverview";

// 2. Hent data fra MET
const res = await fetch(URL, {
  headers: { "User-Agent": "HomeyFlow/1.0 EPOST@ADRESSE.NO" }
});
if (!res.ok) {
  const body = await res.text().catch(() => "(ingen body)");
  throw new Error(`HTTP-feil ${res.status}: ${body}`);
}

// 3. Parse JSON og finn “Agder”-postene
const data     = await res.json();
const features = Array.isArray(data.features) ? data.features : [];
const agder    = features.filter(f => f.properties?.area === "Agder");
if (!agder.length) {
  const areas = features.map(f => f.properties?.area)
                        .filter(Boolean)
                        .join(", ");
  throw new Error(`Fant ingen 'Agder'. Tilgjengelige: ${areas}`);
}

// 4. Forbered dato- og tidsformattere
const fmtDate = new Intl.DateTimeFormat("nb-NO", {
  weekday: "long",
  day:     "numeric",
  month:   "short"
});
const fmtTime = new Intl.DateTimeFormat("nb-NO", {
  hour:   "2-digit",
  minute: "2-digit",
  hour12: false
});

// Hjelpefunksjon: fjerner '.00' hvis det er hel time
function formatTime(date) {
  const raw = fmtTime.format(date).replace(":", ".");
  return raw.endsWith(".00") ? raw.slice(0, -3) : raw;
}

// 5. Sorter etter starttid og bygg tekstblokker med menneskelig format
agder.sort((a, b) =>
  new Date(a.when.interval[0]) - new Date(b.when.interval[0])
);

const oneDayMs = 24 * 60 * 60 * 1000;

const blocks = agder.map(forecast => {
  const [startStr, endStr] = forecast.when.interval;
  const start = new Date(startStr);
  const end   = new Date(endStr);

  const dateStart = fmtDate.format(start);
  const dateEnd   = fmtDate.format(end);
  const timeStart = formatTime(start);  // f.eks. "00"
  const timeEnd   = formatTime(end);    // f.eks. "00"

  let header;

  // 1) Hele dþgn fra 00–00 neste dag
  if (
    timeStart === "00" &&
    timeEnd   === "00" &&
    end.getTime() - start.getTime() === oneDayMs
  ) {
    header = `🕒 ${dateStart}`;

  // 2) Samme dag, men ikke hele dĂžgn
  } else if (start.toDateString() === end.toDateString()) {
    header = `🕒 ${dateStart} kl ${timeStart}–${timeEnd}`;

  // 3) Ulike dager som ikke er «hele dÞgn»
  } else {
    header = `🕒 ${dateStart} kl ${timeStart} – ${dateEnd} kl ${timeEnd}`;
  }

  return `${header}\n${forecast.properties.text.trim()}`;
});

// 6. Lag fulltekst + tre daglige biter
const fullText = blocks.join("\n\n");
const dag1     = blocks[0] || "";
const dag2     = blocks[1] || "";
const dag3     = blocks[2] || "";

// 7. Opprett tags – disse kan du hente i Flow
await tag("AgderVĂŠrTekst",  fullText);
await tag("AgderVĂŠrDag1", dag1);
await tag("AgderVĂŠrDag2", dag2);
await tag("AgderVĂŠrDag3", dag3);

// 8. Returner fulltekst for debug
return fullText;

User-Agent pÄ linje 10 mÄ inneholde en identifikator, kan vÊre epost eller link til github f.eks.

@Stian_Berg det gÄr Ä implementere dette, jeg kan bruke samme driver og fÄ det inn pÄ samme device. Da vil det bli lagt til flere flowkort. Da vil du kunne bruke flowkort mot tekst vÊrvarsel.

Men er litt skeptisk til om det kanskje det blir noe forvirring Ă„ skille vĂŠr og farevarsel fra hverandre.

Alternativt
Kan jeg lage en ny driver som man legger til som har egne flowkort. Da har man kunnet hatt ganske mange flere muligheter og mer oversikt. Pluss at man kunne laget tokens som kan bruke i variabler.

Men har ikke appen VĂŠrvarsel laget av BjĂžrnar Almli dette tilgjengelig i flows?