WittIoT 气象站数据查询服务,支持查询绑定在你账户下的 WittStation 气象站的实时与历史传感器数据,以及通过设备短码查询他人公开气象站的实时数据(无需登录)。
首次使用时需要配置 WittIoT API Key:
witt_sk_xxxx)export WITTIOT_API_KEY=witt_sk_your_key_hereconfig.json短码查询功能(
--action shortcode)无需 API Key,任何人都可以直接使用。
当用户表达了以下意图之一时,使用此 Skill:
根据用户意图判断操作类型:
用户意图操作(--action)是否需要 API Key查询实时天气realtime✅ 需要查询历史数据history✅ 需要列出设备devices✅ 需要通过短码查询公开数据shortcode❌ 不需要
WITTIOT_API_KEY 或本地 config.json 中有 apiKey,直接使用请求 API Key 的回复模板:
text
🔑 查询 WittIoT 气象站数据需要 API Key,请提供你的 Key。
(在 https://wittiot.com/index/apikey 可以免费创建,格式为 witt_sk_xxxx)
bash
export WITTIOT_API_KEY=witt_sk_your_key_here
# 自动选择唯一设备(账户只有1台时)
python3 scripts/wittiot_query.py --action realtime
# 指定设备名称
python3 scripts/wittiot_query.py --action realtime --device-name "Backyard Station"
# 指定设备 ID
python3 scripts/wittiot_query.py --action realtime --device-id 1
bash
# 24小时历史(默认)
python3 scripts/wittiot_query.py --action history --device-name "Backyard Station"
# 7天历史
python3 scripts/wittiot_query.py --action history --device-name "Backyard Station" --range 7d
# 30天历史
python3 scripts/wittiot_query.py --action history --device-id 1 --range 30d
bash
python3 scripts/wittiot_query.py --action devices
bash
python3 scripts/wittiot_query.py --action shortcode --code ABC123
json
{
"devices": [
{
"id": 1,
"name": "Backyard Station",
"model": "WS6900",
"sn": "WS6900-000001",
"online": true,
"visibility": "public"
}
]
}
以友好的方式列出设备,标注在线/离线状态和公开/私有模式。
json
{
"device_id": 1,
"device_name": "Backyard Station",
"online": true,
"sensors": {
"temperature": "23.5 °C",
"humidity": "68.2 %",
"pressure": "1013.2 hPa",
"light": "45.3 Klux",
"wind_speed": "3.2 m/s",
"wind_gust": "5.1 m/s",
"wind_direction": "270° (W)",
"rainfall": "0.0 mm"
},
"_raw": { ... }
}
以自然语言向用户汇报数据,例如:
🌡 你的「Backyard Station」气象站当前数据(在线):温度 23.5°C,湿度 68%,气压 1013.2 hPa,西风 3.2 m/s,无降雨。
当账户有多台设备且用户未指定时,脚本返回:
json
{"choose_device": [{"id": 1, "name": "Backyard Station"}, {"id": 2, "name": "Rooftop Station"}]}
此时应 提示用户选择设备,然后用 --device-name 或 --device-id 重新运行。
提示用户选择设备的回复模板:
text
📡 你有以下气象站,请告诉我查询哪一台:
1. Backyard Station
2. Rooftop Station
json
{
"device_id": 1,
"range": "24h",
"count": 144,
"data": [
{"timestamp": 1743000000, "temperature": 22.1, "humidity": 65.0},
...
]
}
对历史数据进行趋势分析:最高/最低/平均值,并以自然语言描述趋势。
json
{
"shortcode": "ABC123",
"device_name": "Community Weather Station",
"model": "WS6900",
"online": true,
"sensors": {
"temperature": "21.0 °C",
"humidity": "72.0 %"
}
}
当脚本返回错误时,使用以下处理方式:
情况处理error: Missing API key提示用户提供 API Key(见第二步模板)error: HTTP 401提示 API Key 无效,请重新获取error: No devices found提示用户尚未绑定气象站,引导访问 https://wittiot.com/index/dashboarderror: Device 'xxx' not found + available 列表提示可用设备名称,请用户重新选择error: Shortcode not found or device is private提示短码不存在或设备未设为公开choose_device列出设备供用户选择(见第四步)设备 online: false告知用户设备当前离线,数据可能不是最新
401 固定回复文案:
text
🔑 API Key 无效或已过期,请访问 https://wittiot.com/index/apikey 重新生成后提供。
配置文件位于 config.json(参考 config.example.json):
json
{
"apiKey": "witt_sk_your_api_key_here"
}
设置 Key 的方式(优先级从高到低):
--api-key witt_sk_xxxexport WITTIOT_API_KEY=witt_sk_xxxconfig.json 中的 apiKey 字段wittiot_query.py — WittIoT 气象站数据查询脚本(Python 3,无外部依赖)api-spec.md — WittIoT API 端点规范与响应结构说明