天气的所有状态

这个问题其实没有一个**全球统一"固定数量"**的天气状态标准,不同气象机构(比如中国气象局、WMO、METAR航空天气)分类都不一样。

但在嵌入式/APP开发里,一般会用一个**"工程上够用 + 覆盖常见情况"**的分类,大概 20~40种状态比较合理。

我给你一套非常实用、工程可落地的完整天气枚举(约30种),适合你ESP32 + LVGL项目直接用 👇


✅ 常见天气状态分类(工程版)

☀️ 晴天类

  • 少云
  • 多云

🌧️ 雨类

  • 小雨
  • 中雨
  • 大雨
  • 暴雨
  • 雷阵雨
  • 雷阵雨伴有冰雹

❄️ 雪类

  • 小雪
  • 中雪
  • 大雪
  • 暴雪
  • 雨夹雪

🌫️ 能见度类

  • 浓雾
  • 霾(PM2.5)
  • 浮尘
  • 扬沙
  • 沙尘暴

🌬️ 风类

  • 微风
  • 大风
  • 烈风
  • 台风

🌡️ 特殊天气

  • 冰雹
  • 冻雨
  • 高温
  • 低温
  • 龙卷风

✅ C语言枚举定义(推荐直接用)

c 复制代码
typedef enum
{
    WEATHER_UNKNOWN = 0,

    // ☀️ 晴天类
    WEATHER_CLEAR,          // 晴
    WEATHER_PARTLY_CLOUDY,  // 少云
    WEATHER_CLOUDY,         // 多云
    WEATHER_OVERCAST,       // 阴

    // 🌧️ 雨类
    WEATHER_LIGHT_RAIN,     // 小雨
    WEATHER_MODERATE_RAIN,  // 中雨
    WEATHER_HEAVY_RAIN,     // 大雨
    WEATHER_STORM_RAIN,     // 暴雨
    WEATHER_THUNDER_SHOWER, // 雷阵雨
    WEATHER_HAIL_THUNDER,   // 雷阵雨伴冰雹

    // ❄️ 雪类
    WEATHER_LIGHT_SNOW,     // 小雪
    WEATHER_MODERATE_SNOW,  // 中雪
    WEATHER_HEAVY_SNOW,     // 大雪
    WEATHER_BLIZZARD,       // 暴雪
    WEATHER_SLEET,          // 雨夹雪

    // 🌫️ 能见度
    WEATHER_FOG,            // 雾
    WEATHER_HEAVY_FOG,      // 浓雾
    WEATHER_HAZE,           // 霾
    WEATHER_DUST,           // 浮尘
    WEATHER_SAND,           // 扬沙
    WEATHER_SANDSTORM,      // 沙尘暴

    // 🌬️ 风
    WEATHER_BREEZE,         // 微风
    WEATHER_STRONG_WIND,    // 大风
    WEATHER_GALE,           // 烈风
    WEATHER_TYPHOON,        // 台风

    // 🌡️ 特殊
    WEATHER_HAIL,           // 冰雹
    WEATHER_FREEZING_RAIN,  // 冻雨
    WEATHER_FROST,          // 霜
    WEATHER_HEAT,           // 高温
    WEATHER_COLD,           // 低温
    WEATHER_TORNADO,        // 龙卷风

    WEATHER_MAX
} weather_type_t;

✅ 实战建议(非常关键)

你这个是做 ESP32天气显示 + LVGL UI,建议这样设计:

1️⃣ 枚举 + 字符串映射

c 复制代码
const char *weather_str[] = {
    "未知",
    "晴",
    "少云",
    "多云",
    "阴",
    ...
};

2️⃣ 图标映射(LVGL)

c 复制代码
const lv_img_dsc_t *weather_icon[] = {
    &img_unknown,
    &img_sunny,
    &img_cloudy,
    ...
};

3️⃣ API适配层(重点)

天气API(比如和风天气)返回的是字符串:

json 复制代码
"weather": "小雨"

你需要写转换函数:

c 复制代码
weather_type_t weather_parse(const char *str)
{
    if (strcmp(str, "晴") == 0) return WEATHER_CLEAR;
    if (strcmp(str, "小雨") == 0) return WEATHER_LIGHT_RAIN;
    ...
}

🚀 如果你想做"高级一点"(建议)

可以扩展成:

c 复制代码
typedef struct {
    weather_type_t type;
    int temperature;
    int humidity;
    int wind_level;
} weather_info_t;

这样你以后可以做:

  • 动态UI动画 🌧️🌩️❄️
  • 温湿度图形化(你之前说要做艺术风)
  • 天气趋势曲线

👍 总结一句话

👉 没有统一标准,但工程上30种左右最实用

👉 关键不是"有多少种",而是"API怎么映射 + UI怎么展示"


相关推荐
2401_8734794035 分钟前
如何识别代理IP和伪装流量?用IP情报工具三步穿透住宅代理伪装
网络·数据库·网络协议·tcp/ip·ip
STDD39 分钟前
Traefik 中间件深度配置:限流、认证、IP 白名单与错误页面定制
网络协议·tcp/ip·中间件
曾令胜2 小时前
HTTP协议基础总结
网络·网络协议·http
sdghterhd12 小时前
WebSocket 快速入门教程(附示例源码)
网络·websocket·网络协议
IpdataCloud18 小时前
AI生成的Avalon恶意框架怎么防?用IP离线库识别模块化C2通信
运维·人工智能·网络协议·tcp/ip·ip
一口一口吃成大V20 小时前
lattice mipi ip开启DESKEW_EN属性(“ENABLED“),输出异常
网络·网络协议·tcp/ip
奇牙coding1231 天前
OpenAI Realtime API WebSocket 断连 4008/1006 怎么解决?不是 Key 失效,是实时多模态独有的会话超时规则
python·websocket·网络协议·ai
Helen_cai1 天前
OpenHarmony http 网络请求封装与全局拦截实战(API Version23 + 适配版)
网络·网络协议·http·华为·harmonyos
刘马想放假1 天前
生成树协议 STP、RSTP、MSTP 分析:二层环网如何既冗余又不环路
运维·网络协议
发光小北1 天前
SSF-BOX-200 PLC 数据采集网关如何应用?
网络协议