天气的所有状态

这个问题其实没有一个**全球统一"固定数量"**的天气状态标准,不同气象机构(比如中国气象局、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怎么展示"


相关推荐
Vis-Lin20 小时前
BLE 协议栈:ATT 协议详解
网络·物联网·网络协议·iot·ble
TechWayfarer1 天前
攻防对抗:利用IP段归属查询工具快速封禁攻击源——3步联动防火墙(附脚本)
python·网络协议·tcp/ip·安全
科技牛牛1 天前
IP定位误差导致封号_深度解析
网络·网络协议·tcp/ip
思麟呀1 天前
应用层协议HTTP
linux·服务器·网络·c++·网络协议·http
pengyi8710151 天前
共享IP使用基础注意事项,从源头降低关联风险
网络·网络协议·tcp/ip·安全·http
X7x51 天前
网工核心:直连 / 静态 / 动态路由全解,附华为 / 华三 / 思科配置 + 高级应用
运维·网络·网络协议·信息与通信
北京耐用通信1 天前
告别通讯掉线!耐达讯自动化Modbus转Profinet网关:工业现场的“定海神针”
服务器·人工智能·网络协议·自动化·信息与通信
思麟呀1 天前
HTTP的Cookie和Session
linux·网络·c++·网络协议·http
pengyi8710151 天前
共享IP关联风险排查技巧,及时规避封禁隐患
网络·网络协议·tcp/ip
PinTrust SSL证书1 天前
Geotrust企业型OV通配符SSL
网络协议·网络安全·小程序·https·云计算·ssl