当前位置: 首页 > news >正文

ESP32- 项目应用1 智能手表 之更新天气#4

1 天气网站-心知天气(Seniverse)

心知天气(Seniverse)是一个面向开发者的 天气数据服务平台,提供全球范围的实时天气、预报、生活指数、空气质量等气象信息的 API 接口。

官网: https://www.seniverse.com

1.2 🧩 适合场景

智能家居终端(温湿度屏幕显示)

ESP32 物联网设备

室内环境监控

微信小程序、APP 天气插件

城市大屏天气播报

1.3 📌 核心特点

特性 描述
📍 地理范围 全球(包括中国大陆)
⏱ 实时性 提供实时天气数据(分钟级更新)
🗓 数据种类 实况天气、3天天气预报、生活指数、空气质量、天气图片等
📡 接口类型 RESTful API(GET 请求返回 JSON)
📋 支持语言 支持中英文天气描述

1.4 注册账号

在这里插入图片描述

1.5 进入控制后台

如果只是简单测试,选择免费版。学习测试、开发验证,低频天气展示屏(如 ESP32 LCD/LED 项目),每天不超过 1000 次调用的小型物联网项目
在这里插入图片描述

1.6 一个免费版,可以创建3个密钥。

你可以将这个 Key 配置在 多个设备上同时使用,只要所有设备每天的请求总数 ≤ 1000 次即可。如果你把设备部署在公网(如 ESP32 连 WiFi),一定要设置好 请求频率控制,避免无意中超限。如果超出免费额度,API 会返回 429 Too Many Requests。建议增加本地缓存或设定统一更新间隔,比如所有设备整点访问一次。

在这里插入图片描述

1.7 API 的调用方式

每组密钥由“公钥”(参数uid)和“私钥”(参数key)组成,例如:
● 公钥 PKwiV7auWJE3iBJ8d
● 私钥 SMEieQjde1C9eXnbE

心知天气支持两种 API 安全验证方式:

  1. “私钥” 直接请求方式(更简单)
    将 API 密钥中的“私钥”作为 API 请求中的 key 参数值:
    比如 https://api.seniverse.com/v3/weather/now.json?key=your_private_key&location=beijing&language=zh-Hans&unit=c
    将your_private_key更改为私钥即可
    说明:此方式较为方便,但请注意不要泄漏你的“私钥”。

  2. “公钥 + 私钥” 签名验证方式(更安全)
    “公钥 + 私钥” 验证方式更加安全。请求地址中只包含你的“公钥”以及用你的“私钥”制作的签名,因此不会在请求地址中泄露你的私钥。具体使用方式请查看下一章如何使用签名验证方式。

所以我们一般采用私钥访问方式。

1.8 V3天气现象代码说明

每一种天气现象(例如:晴、小雨、多云等)都对应一个天气现象代码,即 API 返回结果中的 code 字段。下表列出了心知天气 API 所有可能返回的天气现象代码。注:部分天气现象提供白天和夜间两种代码。
天气现象图标下载
每一个天气现象代码也对应了一个 PNG 图标,心知天气用户可免费下载使用。
● 亮色主题图标 下载
● 暗色主题图标 下载
天气现象代码对照表(V3)

1. 9 多语言支持说明

心知天气 API 支持 13 种语言,分别为:中文(简体、繁体),英语,日语,德语,法语,俄语,西班牙语,葡萄牙语,泰语,阿拉伯语,印尼语,印地语。多语言支持向心知的所有注册用户开放,无论免费用户还是付费用户,都可以通过接口的language参数改变返回数据的语言。

1.10 V3 API 返回错误代码说明

当 API 请求由于权限不足、服务过期等原因导致错误时,API 会返回如下结构的错误信息。你的程序可以根据 status_code 来进行相应的处理。

2 esp32 获取温度和天气

这里需要用户注意,一定获取好本地正确时间。

2.1 跟网站建立链接

这里需要配置好你的私钥, 选择语言,我这里选择英文。地址选择上海。 这里以后根据精度和维度,获取地址。 单位选择摄氏度。

https://api.seniverse.com/v3/weather/now.json?key=XXXXX&location=shanghai&language=en&unit=c

参考代码:

  esp_http_client_config_t config = {.url = "https://api.seniverse.com/v3/weather/now.json?key=SYc8bI8YXSx_Hd8u1&location=shanghai&language=en&unit=c",.skip_cert_common_name_check = true,.event_handler = client_event_handler,};  esp_http_client_handle_t client = esp_http_client_init(&config);	//初始化http连接

skip_cert_common_name_check指的是跳过服务器证书,这是为了避免HTTP Client提示不安全的HTTPS链接出现异常的情况,特别是我们开发系统接口调用的时候,经常是HTTPS的接口,而又是不安全的,此时使用HTTP Client就无法正确调用,因此要写绕过SSL验证。 需要注意的是,ESP32作为客户端进行HTTPS请求时,如果不需要验证服务器证书也就是想跳过证书验证,只设置esp_http_client_config_t结构体中skip_cert_common_name_check成员为true是没有效果的。它只会跳过检查证书的CN而不是CA,不会跳过整个证书验证。所以如果想跳过证书则需要在menuconfig里面修改ESP-TLS选项,改为默认跳过服务器证书如下图:

qq

2.2 链接回调函数

event_handler为ESP HTTP 客户端的回调函数,发生相关事件时会触发相应的事件处理程序。在 ESP32 使用 esp_http_client 发起 HTTP(S) 请求时,HTTP_EVENT_ON_DATA 和 HTTP_EVENT_ON_FINISH 的处理尤为关键,特别是在服务器采用 chunked 传输编码 的场景下。服务器不会告诉你总内容长度(Content-Length 不存在),数据通过多个 分块(chunk) 传输,每个块会触发一次 ,HTTP_EVENT_ON_DATA,当所有数据传输完成,才会触发 HTTP_EVENT_ON_FINISH。
这种方式的优点是,服务器可以边产生数据边发送,不需要等待所有数据都产生完毕。客户端也可以边接收数据边处理,不需要等待所有数据都接收完毕。这样就可以减少服务器的负担,提高数据传输的效率,改善用户体验。

esp_err_t client_event_handler(esp_http_client_event_t *evt
http://www.dtcms.com/a/296341.html

相关文章:

  • FANUC 机器人控制末端位置的示例程序
  • Windows 主机侧日志排查
  • 【YOLOv8改进 - 特征融合】FCM:特征互补映射模块 ,通过融合丰富语义信息与精确空间位置信息,增强深度网络中小目标特征匹配能力
  • 二、计算机网络技术——第5章:传输层
  • AWS S3 生命周期管理最佳实践:IoT Core 日志的智能存储优化
  • 康养休闲旅游服务虚拟仿真实训室:赋能人才培养的创新路径
  • Java:跨越时代的编程语言,持续引领技术潮流
  • [Office]数学公式插件
  • cri-docker部署高版本k8s
  • Windows 11 24H2 中文版安装教程(2025年4月更新版/官方ISO/详细步骤)
  • 实验-OSPF
  • 完成多项问题修复,MaxKB开源企业级智能体平台v1.10.9 LTS版本发布
  • 华为OpenStack架构学习9篇 连载—— 01 OpenStack架构介绍【附全文阅读】
  • 学习游戏制作记录(技能系统)7.24
  • Selenium基础教程
  • day46.通道注意力
  • Vue2——5
  • set集合(HashSet、LinkedHashSet、TreeSet)
  • MySQL数据库迁移至国产数据库测试案例
  • 二、计算机网络技术——第6章:应用层
  • 深入理解 ThreadLocal:从原理到最佳实践
  • Vue实现地图图片动态轨迹组件,支持放大缩小重置,兼容触摸等
  • Uniapp中使用vue3语法
  • vue3升级了哪些重要功能
  • vite+vue3 工程-SVG图标配置使用指南——vite-plugin-svg-icons 插件
  • pytest中使用skip跳过某个函数
  • 4.1.2 XmlInclude 在 C# 中的作用及示例
  • 【软件与环境】--SSH连接远程服务器工具:FinalShell
  • C语言:详解文件操作
  • 【Java工程师面试全攻略】Day12:系统安全与高可用设计