NWS-varningar är viktiga. Men hur de landar i verkligheten är rörigt. Du får en vägg av text, hälften gäller inte din exakta plats, och när du väl har öppnat radarn och kollat ”regnar det faktiskt här”, har du redan tappat tajmingen.
Den här automationen för Telegram-vädervarningar träffar stressade hushåll först, men fastighetsförvaltare och driftansvariga hamnar i samma läge. Du behöver fatta beslut snabbt: ska vi söka skydd, skjuta upp, köra, sms:a teamet, väcka barnen? Det här flödet gör om ett ”stökigt varningsflöde” till en tydlig uppdatering du kan agera på.
Du får se hur arbetsflödet hämtar aktiva varningar från National Weather Service för dina koordinater, lägger till radar och en lokal nederbördssensoravläsning, och sedan använder OpenAI för att sammanfatta allt till ett kort Telegram-meddelande.
Så här fungerar automationen
Se hur detta löser problemet:
n8n Workflow Template: Telegram + OpenAI: vädervarningar att agera på
flowchart LR
subgraph sg0["Analyze Radar Image Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Webhook"]
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get NWS Alerts"]
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Out", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Remove Irrelevant Fields", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter by Severity", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter by Effective", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter by Status", pos: "b", h: 48 }
n7["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Fetch Weather.gov Radar Loop"]
n8@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter by Expired", pos: "b", h: 48 }
n9@{ icon: "mdi:robot", form: "rounded", label: "Analyze Radar Image", pos: "b", h: 48 }
n10@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map JSON Response", pos: "b", h: 48 }
n11["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/homeAssistant.svg' width='40' height='40' /></div><br/>Get Local Weather Precipicat.."]
n12["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Merge JSON with Image"]
n13["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Merge Radar Analysis with NW.."]
n14@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n15["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Code"]
n16@{ icon: "mdi:cog", form: "rounded", label: "Aggregate", pos: "b", h: 48 }
n17@{ icon: "mdi:robot", form: "rounded", label: "Generate a Summary", pos: "b", h: 48 }
n18@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map JSON to Response", pos: "b", h: 48 }
n15 --> n11
n15 --> n7
n15 --> n13
n0 --> n1
n16 --> n15
n2 --> n3
n1 --> n2
n6 --> n4
n8 --> n16
n10 --> n13
n14 -.-> n17
n4 --> n5
n17 --> n18
n9 --> n10
n5 --> n8
n12 --> n9
n3 --> n6
n7 --> n12
n11 --> n12
n13 --> n17
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n9,n17 ai
class n14 aiModel
class n4,n5,n6,n8 decision
class n0,n1,n7 api
class n15 code
classDef customIcon fill:none,stroke:none
class n0,n1,n7,n11,n12,n13,n15 customIcon
Utmaningen: varningar om svåra väderhändelser är för brusiga för att lita på
När en allvarlig varning kommer in gör du oftast samma ”manuella triage”. Läs varningen. Översätt den till begriplig svenska. Öppna radarn. Dubbelkolla din exakta plats. Bestäm sedan vem som behöver veta och hur bråttom det är. Det funkar en gång. Det blir utmattande när varningar staplas, formuleringar ändras och du samtidigt jonglerar jobb, hämtning på skolan eller drift på en anläggning. Ärligt talat är det värsta tvivlet: ”Påverkar det här verkligen oss, eller är det ännu en bred varning som låter värre än den är?”
Det går fort utför. Här är var det faller isär.
- Du lägger ungefär 10 minuter per varning på att öppna radar, läsa detaljer och fatta beslut.
- De flesta varningstexter är skrivna för täckning, inte tydlighet, så du måste ändå skriva om dem innan du delar.
- Radar visar rörelse, men utan sammanhang gissar du fortfarande kring tidpunkt och intensitet.
- Folk slutar bry sig när kanalen blir spamig, vilket är precis när du behöver att de reagerar.
Lösningen: en Telegram-varning som förklarar vad som händer
Det här arbetsflödet startar med ett enkelt webhook-anrop som innehåller din latitud och longitud (så automationen vet vilket område som ska övervakas). Därefter hämtar det varningar från National Weather Service via weather.gov, filtrerar ner till varningar som är aktiva, bekräftar att de gäller just nu och kastar allt som har gått ut. Sedan lägger det till verklighetsnära kontext: det hämtar din lokala nederbördsstatus från Home Assistant (till exempel ”Light Rain” eller ”No Rain”) och laddar ner en radarloop-bild för din plats. OpenAI analyserar den radarsnapshottan och tar fram en tolkning på klarspråk, och ett andra OpenAI-steg komprimerar allt till en kort, lättläst sammanfattning. Det slutliga meddelandet formateras för Telegram, så du får en pålitlig uppdatering i stället för fem flikar och huvudvärk.
Arbetsflödet triggas med koordinater du själv styr. Det samlar in och strukturerar de aktiva varningarna, slår ihop dem med din sensoravläsning och radarloop, och producerar sedan en Telegram-klar sammanfattning som du kan vidarebefordra utan att redigera.
Vad som förändras: före vs. efter
| Detta eliminerar | Effekt du märker |
|---|---|
|
|
Effekt i verkligheten
Säg att du får tre NWS-varningar under en eftermiddag. Manuell hantering kan lätt ta cirka 10 minuter per varning för att läsa, kolla radar och skicka en förklaring, alltså ungefär 30 minuter totalt. Med det här arbetsflödet är webhook-triggern i princip direkt, och AI-analysen plus sammanfattningen är normalt klar på ett par minuter medan du gör något annat. Du är fortfarande uppdaterad, men du är inte längre ”mänsklig mellanprogramvara” som översätter väder till beslut.
Krav
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Telegram för att ta emot varningar i en chatt.
- Home Assistant för lokal kontext från nederbördssensor.
- OpenAI API-nyckel (hämta den i din OpenAI-kontodashboard).
Svårighetsnivå: Medel. Du klistrar in API-uppgifter, justerar en radarbild-URL och testar en webhook-payload.
Behöver du hjälp att implementera detta? Prata med en automationsspecialist (gratis 15-minuters konsultation).
Flödets steg
En webhook tar emot din plats. Du skickar en enkel JSON-payload med latitud och longitud, som blir instruktionen ”övervaka det här området” för resten av arbetsflödet.
Aktiva NWS-varningar hämtas och struktureras. Arbetsflödet anropar National Weather Service-endpointen för varningar, delar upp resultaten, reducerar fält till det som är relevant och filtrerar sedan på status, allvarlighetsgrad, giltighetstid och utgångstid så att bara relevanta varningar blir kvar.
Lokal kontext läggs till med radar och sensorer. Det hämtar ett nederbördsvärde från Home Assistant och laddar ner en radarloop-bild, och slår sedan ihop dem till ett paket som OpenAI kan tolka.
OpenAI ger två lager av tydlighet. Först analyserar det radarsnapshottan och beskriver vad som händer. Sedan kombinerar det den radarbeskrivningen med de filtrerade varningarna och skapar en kort sammanfattning som är formaterad för leverans i Telegram.
Du kan enkelt ändra radarkällan och sammanfattningsstilen så att det matchar hur ditt hushåll eller ditt team fattar beslut. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera webhook-triggern
Det här arbetsflödet startar när en POST-begäran träffar webhook-endpointen och skickar latitud/longitud i payloaden.
- Lägg till noden Incoming Webhook Trigger och ställ in HTTP Method till
POST. - Ställ in Path till
b74e13cd-ad2f-4ef1-8350-ff6b915e5485. - Ställ in Response Data till
All Entriesoch Response Mode tillLast Node. - Säkerställ att er inkommande begäran innehåller
body.latitudeochbody.longitudeså att nedströms uttryck kan tolkas korrekt.
Tips: Använd ett testanrop till webhooken som inkluderar {"latitude": 25.7617, "longitude": -80.1918} för att validera begärans struktur.
Steg 2: anslut varningsflödet från national weather service
Dessa noder hämtar och delar upp varningsflödet baserat på platsen som skickas via webhooken.
- Lägg till Retrieve NWS Alerts och ställ in URL till
https://api.weather.gov/alerts. - Aktivera Send Query och lägg till parametrarna: status =
actualoch point ={{ $json.body.latitude }},{{ $json.body.longitude }}. - Lägg till Split Records och ställ in Field to Split Out till
body.features. - Lägg till Trim Alert Fields för att mappa obligatoriska fält som properties.headline till
{{ $json.properties.headline }}och properties.description till{{ $json.properties.description }}.
Steg 3: filtrera varningar efter status, allvarlighetsgrad och tid
Dessa filter säkerställer att endast aktiva och relevanta varningar aggregeras för analys.
- Konfigurera Validate Alert Status så att endast varningar där properties.status är lika med
Actualsläpps igenom med hjälp av{{ $json.properties.status }}. - Ställ in Check Severity Level så att
Moderate,SevereellerExtremesläpps igenom via{{ $json.properties.severity }}. - I Confirm Effective Time utvärderar ni
{{ new Date($json.properties.effective).getTime() <= new Date().getTime() }}med Loose Type Validation aktiverat. - I Ensure Not Expired utvärderar ni
{{ new Date($json.properties.expires).getTime() >= new Date().getTime() }}med Loose Type Validation aktiverat. - Aggregera återstående objekt med Aggregate Alerts där Aggregate =
aggregateAllItemDataoch Destination Field Name =alerts. - Använd Assemble Alert Text för att generera en formaterad varningssammanfattning i
nws_alertssamt antal inws_alerts_count.
⚠️ Vanlig fallgrop: Om properties.effective eller properties.expires saknas kommer tidsfiltren att misslyckas och blockera varningar. Verifiera att API-svaret innehåller dessa fält.
Steg 4: konfigurera radar- och sensoranalys (parallella grenar)
När varningarna har sammanställts delas arbetsflödet upp i parallella grenar för att hämta nederbörd, ladda ner radarbilder och kombinera varningsdata.
- Notera parallell exekvering: Assemble Alert Text skickar utdata till både Fetch Local Precip Type och Download Radar Loop samt Combine Radar & Alerts parallellt.
- Konfigurera Fetch Local Precip Type med Entity ID =
sensor.local_weather_precipitation_typeoch Resource =state. Credential Required: Anslut era homeAssistantApi-uppgifter. - Ställ in Download Radar Loop URL till
https://radar.weather.gov/ridge/standard/KAMX_loop.gif. - Konfigurera Combine Sensor & Radar med Mode =
combineoch Combine By =combineByPosition. - Ställ in Analyze Radar Snapshot med Resource =
imageoch Operation =analyze, och använd den angivna prompttexten som inkluderar{{ $json.state }}. Credential Required: Anslut era openAiApi-uppgifter. - Mappa AI-utdata i Map Radar Summary till radar_summary med
{{ $json.content }}. - Slå ihop varningstext och radarsammanfattning i Combine Radar & Alerts med Mode =
combineoch Combine By =combineByPosition.
Tips: Om radarbilderna är stora, övervaka minnesanvändningen under Download Radar Loop och Analyze Radar Snapshot för att undvika timeout vid körning.
Steg 5: sammanfatta och förbered utdata
Dessa noder skapar en kort sammanfattning och formar den slutliga payloaden för svaret.
- Konfigurera OpenAI Chat Engine med Model =
gpt-4.1-mini. Credential Required: Anslut era openAiApi-uppgifter. - Konfigurera Create Brief Summary med Operation Mode =
nodeInputBinaryoch prompten som inkluderar{{ $json.nws_alerts_count }},{{ $json.nws_alerts }}och{{ $json.radar_summary }}. - Bekräfta kopplingen till AI-modellen: OpenAI Chat Engine är ansluten som språkmodell för Create Brief Summary — säkerställ att uppgifterna läggs till i OpenAI Chat Engine, inte i sammanfattningsnoden.
- I Prepare Output Payload mappar ni summary till
{{ $json.output.text }}.
Steg 6: testa och aktivera ert arbetsflöde
Kör ett fullständigt test för att säkerställa att varje gren slutförs och att den slutliga sammanfattningen returneras i webhook-svaret.
- Klicka på Execute Workflow och skicka en POST-begäran till Incoming Webhook Trigger med giltiga koordinater.
- Verifiera att Retrieve NWS Alerts returnerar ett JSON-svar och att Split Records ger flera objekt när det finns varningar.
- Bekräfta att den parallella grenen slutförs: Fetch Local Precip Type och Download Radar Loop matar in i Combine Sensor & Radar, och Map Radar Summary ansluter till Combine Radar & Alerts.
- Kontrollera Prepare Output Payload för ett
summary-fält under 255 tecken. - Växla arbetsflödet till Active för att aktivera användning i produktion.
Se upp med
- Telegram-botens inloggningsuppgifter kan vara korrekta men ändå falla om boten inte har lagts till i målchatten. Kontrollera chatt-ID och bekräfta att boten kan posta där.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om noder längre ned fallerar på tomma svar.
- OpenAI:s bildanalys är beroende av att radarloop-URL:en är stabil. Om radarnoden börjar returnera en tom bild eller en 403, uppdatera käll-URL:en och testa nedladdningssteget innan du skyller på promptarna.
Vanliga frågor
Cirka en timme om du redan har Telegram och OpenAI igång.
Ja, men du behöver någon som är bekväm med att testa en webhook och klistra in API-nycklar. Det är dock ingen riktig kodning.
Ja. n8n har ett gratis alternativ för egen hosting och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna in OpenAI API-användning (ofta några dollar i månaden vid lätt personlig användning, mer om du bearbetar många varningar och bilder).
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärd och hanterar n8n bra. Egen hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Börja med att byta radarloop-källan i HTTP Request-noden ”Download Radar Loop” så att den matchar din region och den produkt du föredrar. Om du inte använder Home Assistant, ta bort noden ”Fetch Local Precip Type” och justera merge-steget så att OpenAI bara får radar plus varningar. Vanliga anpassningar är att ändra trösklar för allvarlighetsgrad i filternoderna, skriva om prompten för den slutliga sammanfattningen så att den matchar din ton, och routa Telegram-meddelandet till olika chattar beroende på varningstyp.
Oftast är det chatt-ID:t, inte token. Säkerställ att din bot är tillagd i chatten, skicka ett manuellt testmeddelande och kopiera sedan rätt chattidentifierare in i Telegram-noden. Om det fortfarande fallerar, skapa om bot-token och uppdatera autentiseringsuppgiften i n8n.
I n8n Cloud beror kapaciteten främst på din plans månatliga körningar och hur ofta du triggar webhooken. Om du kör egen hosting finns ingen körningsgräns, men bildnedladdningar och OpenAI-anrop begränsas av din server och API:ets rate limits. I praktiken kan ett hushåll eller ett litet team köra detta för varje varning utan att behöva tänka på det. För övervakning i hög volym över många platser vill du batcha och ha striktare filter så att du inte analyserar radarsnapshots i onödan.
För det här use caset är n8n oftast ett bättre val eftersom det hanterar flerstegsfiltrering, sammanslagning och AI-anrop i ett och samma arbetsflöde utan att kännas trångt. Du har också alternativet med egen hosting, vilket är viktigt om varningar toppar och du vill slippa överraskningar med prissättning per task. Zapier eller Make kan fungera, men bildanalys plus förgreningslogik blir snabbt pilligt. Om du bara vill ”skicka varningstext till Telegram” är de verktygen helt okej. Om du vill ha radarkontext och en tydlig sammanfattning är n8n en smidigare väg. Prata med en automationsspecialist om du vill ha hjälp att välja.
Poängen är inte mer väderdata. Poängen är färre beslut tagna i panik, med bättre kontext, levererat där du faktiskt ser det.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.