天气的所有状态

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


相关推荐
网络小江2 小时前
组网第十课:编码、速率与排障——从比特到信号的最后一公里
网络协议
网络小江2 小时前
上网第四十三课:路由原理——数据包是怎么找到路的
网络协议
91刘仁德6 小时前
IP协议详解:从IP协议头到网段划分、路由与NAT
linux·服务器·网络·网络协议·tcp/ip
硅基手札7 小时前
【Linux内核专栏 14】网络协议栈
linux·运维·网络协议
网络小江11 小时前
上网第四十二课:第六周复盘——协议篇快问快答
网络协议
青春不朽51212 小时前
requests 超时、重试、SSL 报错?9 个高频问题与一整张排错对照表
网络·网络协议·ssl
天天进步201514 小时前
Caddy 实战:5 分钟给域名开启 HTTPS,自动申请 SSL 证书并反向代理
网络协议·https·ssl
xixingzhe217 小时前
正确认知HTTPS:并非万能加密,通信安全需要多层防护
网络协议·安全·https
网络小江17 小时前
组网第九课:光纤与光接口——一根玻璃丝,把千里外的机房“连“起来
网络协议
XiaoMaqqqq1 天前
市面上正规的IP驱动产业新场景新工具哪家强
运维·python·网络协议·tcp/ip