skills/fldc/agent-skills/smhi-weather

smhi-weather

SKILL.md

SMHI Weather

Hämta aktuell väderprognos och väderinformation från SMHI:s öppna API för svenska platser.

Quick Start

CLI-verktyg (Rekommenderat - Clean Output)

För enkel och clean output, använd weather_cli.py:

# Aktuellt väder
cd scripts && python weather_cli.py current linköping

# Prognos (12 timmar, standard)
cd scripts && python weather_cli.py forecast mjölby

# Prognos med custom antal timmar
cd scripts && python weather_cli.py forecast mjölby 24

# Vädervarningar
cd scripts && python weather_cli.py warnings

Python API (För programmatisk användning)

För grundläggande väderinformation, använd smhi_api.py:

from scripts.smhi_api import SMHIWeather

client = SMHIWeather()

# Hämta aktuellt väder för Mjölby (standardplats)
current = client.get_current_weather()

# Hämta aktuellt väder för en specifik plats
current = client.get_current_weather("linköping")

# Hämta sammanfattning (12 timmar framåt)
summary = client.get_weather_summary("norrköping", hours=12)

# Hämta fullständig prognos
forecast = client.get_forecast("mjölby")

Workflow

1. Identifiera Plats

Standardplats: Mjölby (om ingen plats anges)

Tillgängliga platser:

  • mjölby
  • linköping
  • norrköping
  • motala
  • vadstena

Om användaren anger en annan plats, informera om att skillen bara har inbyggt stöd för orterna ovan och föreslå närmaste alternativ.

2. Avgör Typ av Väderinformation

Aktuellt väder (nu):

client.get_current_weather("mjölby")

Kort sammanfattning (kommande timmar):

client.get_weather_summary("mjölby", hours=12)

Fullständig prognos (flera dagar):

client.get_forecast("mjölby")

3. Presentera Information

Format informationen på ett lättläst sätt på svenska:

För aktuellt väder:

Väder i Mjölby just nu:
• Temperatur: -4.5°C
• Nederbörd: Snö
• Vind: 2.5 m/s från nordost
• Luftfuktighet: 87%
• Molnighet: Mulet (8/8)

För prognos:

Väderprognos Mjölby 25 januari:

12:00 - -4.5°C, Snö, Vind 2.5 m/s
13:00 - -4.5°C, Snö, Vind 3.1 m/s
14:00 - -4.6°C, Snö, Vind 2.9 m/s
...

4. Hantera Fel

Om platsen inte finns:

  • Informera användaren om tillgängliga platser
  • Föreslå närmaste alternativ

Om API-anrop misslyckas:

  • Förklara att SMHI:s API inte svarade
  • Föreslå att försöka igen om en stund

Vanliga Användarfrågor

"Hur är vädret?"

→ Använd standardplats (Mjölby), visa aktuellt väder

"Vad blir det för väder i Linköping?"

→ Hämta aktuellt väder + kort prognos för Linköping

"Kommer det regna imorgon?"

→ Hämta prognos för nästa 24 timmar, fokusera på nederbörd

"Väder nästa vecka i Norrköping"

→ Hämta fullständig prognos, sammanfatta per dag

"Finns det vädervarningar?"

→ Använd client.get_warnings_summary() för formaterad sammanfattning

"Varningar för Östergötland"

→ Använd client.get_warnings() för strukturerad data

"Är det farligt väder?"

→ Kolla highest_level i warnings-data eller sammanfattningen

Python Script Reference

scripts/smhi_api.py

Main API client med följande metoder:

get_current_weather(location="mjölby")

  • Returnerar: Dict med aktuellt väder
  • Fält: location, time, temperature, humidity, precipitation, wind_speed, wind_direction, cloud_cover

get_weather_summary(location="mjölby", hours=12)

  • Returnerar: Formaterad sträng med vädersammanfattning
  • Parametrar: location (platsnamn), hours (antal timmar framåt)

get_forecast(location="mjölby")

  • Returnerar: Komplett prognosdata med alla detaljer
  • Innehåller: 24 timmars prognos med alla tillgängliga parametrar

get_warnings(county="Östergötland")

  • Returnerar: Dict med alla aktiva varningar för länet
  • Fält: county, warnings (lista), highest_level, fetched_at
  • Inkluderar: Alla varningstyper (väder, brand, vatten)

get_warnings_summary(county="Östergötland")

  • Returnerar: Formaterad sträng med varningssammanfattning (MEDIUM detaljnivå)
  • Inkluderar: Varningstyp, svårighetsgrad, giltighetstid, beskrivning, råd

Exempel på Användning

from scripts.smhi_api import SMHIWeather

client = SMHIWeather()

# Scenario 1: "Hur är vädret?"
weather = client.get_current_weather()
print(f"Det är {weather['temperature']}°C i {weather['location']}")
print(f"Nederbörd: {weather['precipitation']}")

# Scenario 2: "Väder nästa 6 timmar"
summary = client.get_weather_summary("linköping", hours=6)
print(summary)

# Scenario 3: Detaljerad prognos
forecast = client.get_forecast("norrköping")
for entry in forecast['forecast'][:8]:
    time = entry['valid_time']
    temp = entry['temperature']
    print(f"{time}: {temp}°C")

# Scenario 4: "Finns det vädervarningar?"
warnings_summary = client.get_warnings_summary()
print(warnings_summary)

# Scenario 5: Strukturerad varningsdata
warnings_data = client.get_warnings()
if warnings_data['highest_level'] != 'NONE':
    print(f"Högsta varningsnivå: {warnings_data['highest_level']}")
    for warning in warnings_data['warnings']:
        print(f"- {warning['severity_sv']} varning: {warning['title']}")

Output-exempel (Vädervarningar)

När det finns aktiva varningar:

AKTIVA VARNINGAR - Östergötland
============================================================

🟠 ⛈️ ORANGE VARNING - Snöfall i kombination med vind
Gäller: 26 jan 09:00 - 27 jan 08:00
Områden: Östergötlands län
Beskrivning: Snöfall 10-20 cm i kombination med hård vind...
Råd: Undvik onödiga resor, håll extra avstånd i trafiken...

🟡 🔥 GUL VARNING - Gräsbrandrisk
Gäller: 26 jan 12:00 - 27 jan 18:00
Områden: Östergötlands län
Beskrivning: Hög brandrisk på grund av torrt väder...

✅ Inga vattenvarningar aktiva.

När det inte finns varningar:

✅ Inga aktiva varningar för Östergötland.

Tips

  • Caching: SMHI uppdaterar prognoser ~4 gånger/dag. Cache data i minst 1 timme
  • Tolkningar: Se references/smhi_api_reference.md för detaljerade parameterbeskrivningar
  • Tillägg: Lägg till fler platser genom att uppdatera LOCATIONS i smhi_api.py

Resources

references/smhi_api_reference.md

Detaljerad API-dokumentation med:

  • Fullständig parameterlista
  • Väderssymboler och deras betydelse
  • Vindstyrkeinterpretationer
  • Nederbördskategorier
  • API-endpoints och felhantering
Weekly Installs
9
First Seen
9 days ago
Installed on
opencode9
github-copilot9
codex9
kimi-cli9
gemini-cli9
amp9