当前位置: 首页 > 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.xdnf.cn/news/1179703.html

相关文章:

  • Rust与YOLO目标检测实战
  • OpenLayers 综合案例-基础图层控制
  • ddos 放在多个云主机,同时运行
  • vue递归树形结构删除不符合数据 生成一个新数组
  • 点击按钮滚动到底功能vue的v-on:scroll运用
  • 04.建造者模式的终极手册:从快餐定制到航天飞船的组装哲学
  • 期待更好的发展
  • 使用全局变量访问 Qt UI 组件的方法文档
  • 基于markdown封装的前端文档编辑工具,markdown.js的解析与应用
  • 开源Qwen凌晨暴击闭源Claude!刷新AI编程SOTA,支持1M上下文
  • SQL基础⑪ | 约束
  • 基于ABC与BP神经网络分类模型的特征选择方法研究(Python实现)
  • 制造业新突破:AR 培训系统助力复杂操作轻松上手​
  • Linux服务器安全自动化审计实战:一键扫描账户/网络/进程/计划任务风险(附开源脚本)
  • 数据库期中复习
  • 【Guava】1.1.我的报告
  • 进程调度的艺术:从概念本质到 Linux 内核实现
  • Windows 10 远程桌面(RDP)防暴力破解脚本
  • 用python自动标注word试题选项注意事项
  • 安全逆向工程学习路线
  • 4.1.2 XmlInclude 在 C# 中的作用及示例
  • 【Unity开发】数据存储——XML
  • web:js函数的prototype(原型对象)属性
  • Opentrons 模块化平台与AI技术助力智能移液创新,赋能AAW™自动化工作站
  • 电商项目_秒杀_架构升级
  • YOLOv4深度解析:革命性的实时目标检测技术
  • 报告研读——103页数据资产价值实现研究报告( 2023)【附全文阅读】
  • 【ECharts✨】解决Vue 中 v-show 导致组件 ECharts 样式异常问题
  • PAT 甲级题目讲解:1003《Emergency》
  • Apache Commons:Java开发者的瑞士军刀