smhi-weather

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

SMHI Weather

SMHI 天气工具

Hämta aktuell väderprognos och väderinformation från SMHI:s öppna API för svenska platser.
从SMHI的开放API获取瑞典地区的实时天气预报和天气信息。

Quick Start

快速开始

CLI-verktyg (Rekommenderat - Clean Output)

CLI工具(推荐 - 简洁输出)

För enkel och clean output, använd
weather_cli.py
:
bash
undefined
如需简洁清晰的输出,请使用
weather_cli.py
bash
undefined

Aktuellt väder

实时天气

cd scripts && python weather_cli.py current linköping
cd scripts && python weather_cli.py current linköping

Prognos (12 timmar, standard)

天气预报(默认12小时)

cd scripts && python weather_cli.py forecast mjölby
cd scripts && python weather_cli.py forecast mjölby

Prognos med custom antal timmar

自定义时长的天气预报

cd scripts && python weather_cli.py forecast mjölby 24
cd scripts && python weather_cli.py forecast mjölby 24

Vädervarningar

天气预警

cd scripts && python weather_cli.py warnings
undefined
cd scripts && python weather_cli.py warnings
undefined

Python API (För programmatisk användning)

Python API(用于程序化调用)

För grundläggande väderinformation, använd
smhi_api.py
:
python
from scripts.smhi_api import SMHIWeather

client = SMHIWeather()
如需基础天气信息,请使用
smhi_api.py
python
from scripts.smhi_api import SMHIWeather

client = SMHIWeather()

Hämta aktuellt väder för Mjölby (standardplats)

获取Mjölby的实时天气(默认地点)

current = client.get_current_weather()
current = client.get_current_weather()

Hämta aktuellt väder för en specifik plats

获取指定地点的实时天气

current = client.get_current_weather("linköping")
current = client.get_current_weather("linköping")

Hämta sammanfattning (12 timmar framåt)

获取天气摘要(未来12小时)

summary = client.get_weather_summary("norrköping", hours=12)
summary = client.get_weather_summary("norrköping", hours=12)

Hämta fullständig prognos

获取完整天气预报

forecast = client.get_forecast("mjölby")
undefined
forecast = client.get_forecast("mjölby")
undefined

Workflow

工作流程

1. Identifiera Plats

1. 识别地点

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.
默认地点:Mjölby(未指定地点时使用)
可用地点
  • mjölby
  • linköping
  • norrköping
  • motala
  • vadstena
若用户指定其他地点,告知用户本工具仅支持上述城市,并推荐最近的可选地点。

2. Avgör Typ av Väderinformation

2. 确定天气信息类型

Aktuellt väder (nu):
python
client.get_current_weather("mjölby")
Kort sammanfattning (kommande timmar):
python
client.get_weather_summary("mjölby", hours=12)
Fullständig prognos (flera dagar):
python
client.get_forecast("mjölby")
实时天气(当前):
python
client.get_current_weather("mjölby")
简短摘要(未来数小时):
python
client.get_weather_summary("mjölby", hours=12)
完整预报(未来数日):
python
client.get_forecast("mjölby")

3. Presentera Information

3. 展示信息

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
...
将信息以易读的格式展示:
实时天气示例
Mjölby 当前天气:
• 气温:-4.5°C
• 降水:降雪
• 风力:2.5 m/s 东北风
• 湿度:87%
• 云量:阴天(8/8)
天气预报示例
Mjölby 1月25日天气预报:

12:00 - -4.5°C,降雪,风力2.5 m/s
13:00 - -4.5°C,降雪,风力3.1 m/s
14:00 - -4.6°C,降雪,风力2.9 m/s
...

4. Hantera Fel

4. 错误处理

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
若地点不存在:
  • 告知用户可用地点列表
  • 推荐最近的可选地点
若API调用失败:
  • 说明SMHI的API未响应
  • 建议稍后重试

Vanliga Användarfrågor

常见用户问题

"Hur är vädret?"

“天气怎么样?”

→ Använd standardplats (Mjölby), visa aktuellt väder
→ 使用默认地点(Mjölby),展示实时天气

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

“Linköping的天气会如何?”

→ Hämta aktuellt väder + kort prognos för Linköping
→ 获取Linköping的实时天气+简短预报

"Kommer det regna imorgon?"

“明天会下雨吗?”

→ Hämta prognos för nästa 24 timmar, fokusera på nederbörd
→ 获取未来24小时的预报,重点关注降水情况

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

“Norrköping下周的天气”

→ Hämta fullständig prognos, sammanfatta per dag
→ 获取完整预报,按天汇总

"Finns det vädervarningar?"

“有天气预警吗?”

→ Använd
client.get_warnings_summary()
för formaterad sammanfattning
→ 使用
client.get_warnings_summary()
获取格式化的摘要

"Varningar för Östergötland"

“Östergötland的预警”

→ Använd
client.get_warnings()
för strukturerad data
→ 使用
client.get_warnings()
获取结构化数据

"Är det farligt väder?"

“天气危险吗?”

→ Kolla
highest_level
i warnings-data eller sammanfattningen
→ 查看预警数据或摘要中的
highest_level
字段

Python Script Reference

Python脚本参考

scripts/smhi_api.py

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
核心API客户端,包含以下方法:
get_current_weather(location="mjölby")
  • 返回:包含实时天气信息的字典
  • 字段:location、time、temperature、humidity、precipitation、wind_speed、wind_direction、cloud_cover
get_weather_summary(location="mjölby", hours=12)
  • 返回:格式化的天气摘要字符串
  • 参数:location(地点名称)、hours(未来时长,单位:小时)
get_forecast(location="mjölby")
  • 返回:包含所有细节的完整预报数据
  • 内容:未来24小时的完整预报,包含所有可用参数
get_warnings(county="Östergötland")
  • 返回:包含指定省份所有活跃预警的字典
  • 字段:county、warnings(列表)、highest_level、fetched_at
  • 包含:所有预警类型(天气、火灾、水文)
get_warnings_summary(county="Östergötland")
  • 返回:格式化的预警摘要字符串(中等详细程度)
  • 包含:预警类型、严重程度、有效期、描述、建议

Exempel på Användning

使用示例

python
from scripts.smhi_api import SMHIWeather

client = SMHIWeather()
python
from scripts.smhi_api import SMHIWeather

client = SMHIWeather()

Scenario 1: "Hur är vädret?"

场景1:“天气怎么样?”

weather = client.get_current_weather() print(f"Det är {weather['temperature']}°C i {weather['location']}") print(f"Nederbörd: {weather['precipitation']}")
weather = client.get_current_weather() print(f"{weather['location']} 当前气温:{weather['temperature']}°C") print(f"降水情况:{weather['precipitation']}")

Scenario 2: "Väder nästa 6 timmar"

场景2:“未来6小时的天气”

summary = client.get_weather_summary("linköping", hours=6) print(summary)
summary = client.get_weather_summary("linköping", hours=6) print(summary)

Scenario 3: Detaljerad prognos

场景3:详细预报

forecast = client.get_forecast("norrköping") for entry in forecast['forecast'][:8]: time = entry['valid_time'] temp = entry['temperature'] print(f"{time}: {temp}°C")
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?"

场景4:“有天气预警吗?”

warnings_summary = client.get_warnings_summary() print(warnings_summary)
warnings_summary = client.get_warnings_summary() print(warnings_summary)

Scenario 5: Strukturerad varningsdata

场景5:结构化预警数据

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']}")
undefined
warnings_data = client.get_warnings() if warnings_data['highest_level'] != 'NONE': print(f"最高预警等级:{warnings_data['highest_level']}") for warning in warnings_data['warnings']: print(f"- {warning['severity_sv']} 预警:{warning['title']}")
undefined

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.
存在活跃预警时:
活跃预警 - Östergötland
============================================================

🟠 ⛈️ 橙色预警 - 降雪伴大风
有效期:1月26日 09:00 - 1月27日 08:00
区域:Östergötland省
描述:降雪量10-20厘米,伴随大风...
建议:避免不必要出行,行车时保持额外安全距离...

🟡 🔥 黄色预警 - 草地火灾风险
有效期:1月26日 12:00 - 1月27日 18:00
区域:Östergötland省
描述:天气干燥,火灾风险高...

✅ 无活跃水文预警。
无预警时:
✅ Ö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
  • 缓存:SMHI每天更新预报约4次。建议将数据缓存至少1小时
  • 参考说明:查看
    references/smhi_api_reference.md
    获取详细的参数说明
  • 扩展功能:可通过更新
    smhi_api.py
    中的
    LOCATIONS
    变量添加更多地点

Resources

资源

references/smhi_api_reference.md

references/smhi_api_reference.md

Detaljerad API-dokumentation med:
  • Fullständig parameterlista
  • Väderssymboler och deras betydelse
  • Vindstyrkeinterpretationer
  • Nederbördskategorier
  • API-endpoints och felhantering
详细的API文档,包含:
  • 完整参数列表
  • 天气符号及其含义
  • 风力等级说明
  • 降水分类
  • API端点及错误处理