最新要闻
- 电磁炉辐射范围多少米_电磁炉对孕妇有辐射吗
- 外卖平台热销榜第一店铺环境简陋:画面斑驳不堪
- 环球今日报丨终极能源!盖茨、贝索斯押注的可控核聚变:中国公司跟进了
- 【独家焦点】丰田要给纯电车装手动挡!我看它是真急了
- 老外上网课最喜欢用的电脑 现在却变成了电子垃圾
- 高温来袭!北方30℃以上范围连成一片|全球焦点
- 今日快看!中国东方教育(00667.HK):5月15日南向资金增持4.35万股
- 焦点观察:作为这家数码潮牌的孵化人,我们真心想推荐一下这个产品
- 惠普打印机弹出用户使用第三方墨盒警告 称对硬件性能造成威胁
- 《霍格沃茨之遗》登顶PS4 Fami通日本实体游戏销量榜现已公布
- 电影《流浪地球2》5月15日结束公映 累计总票房高达40.29亿
- 网传北京软星技术团队解散 宇峻奥汀游戏制作人谢宗辉回应
- 报道显示小龙虾价格一路走低 从此前的20元每斤爆降到10元每斤
- Bing搜索桌面端市场份额下降 谷歌仍占据行业龙头地位
- 《刺客信条》15周年限量手办现已发售 打造专属猫奴的潮玩形象
- 《超级马里奥兄弟大电影》已成功超越小黄人 成为有史以来票房收入第四高动画
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
基于Arduino和ESP8266的JSON数据获取与解压之和风天气-全球快讯
基于Arduino和ESP8266的JSON数据获取与解压之和风天气
摘要
- 简要比较了几个免费天气数据接口;介绍了通过HTTP和HTTPS获取数据,以及Gzip压缩格式数据的获取;解压Gzip格式数据的方法;介绍了获取网络数据时的注意事项,包括数据完整性、数据存储、内存分配、数据有效性检查。推荐了一个获取并解析和风天气数据的第三方库。
背景说明
起因:点灯科技气象数据接口暂停使用,寻找替代方案。
免费天气数据接口比较
(资料图片)
数据来源 网络协议 内容编码 数据格式 接口限制 更新频率 点灯科技 HTTPS None JSON 30次/天 2小时 和风天气 HTTPS Gzip JSON 1000次/天 10分钟 高德天气 HTTPS None JSON 300000/天 多次/时
操作实践
获取数据
通过 HTTP 获取数据
HTTPClient httpclient;WiFiClient wificlient;if(httpclient.begin(wificlient, URL)){ httpCode = httpclient.GET(); if(httpCode == HTTP_CODE_OK) String payload = httpclient.getString(); else Serial.printf("[HTTP] GET... failed, error: %s\n", httpclient.errorToString(httpCode).c_str()); httpclient.end();}
通过 HTTPS 获取数据
HTTPClient httpsclient;BearSSL::WiFiClientSecure wificlient;wificlient.setInsecure();if(httpsclient.begin(wificlient, URL)){ httpCode = httpsclient.GET(); if(httpCode == HTTP_CODE_OK) String payload = httpsclient.getString(); else Serial.printf("[HTTP] GET... failed, error: %s\n", httpsclient.errorToString(httpCode).c_str()); httpsclient.end();}
通过 HTTPS 获取压缩格式数据
HTTPClient httpsclient;BearSSL::WiFiClientSecure wificlient;wificlient.setInsecure();if(httpsclient.begin(wificlient, URL)){ httpCode = httpsclient.GET(); if(httpCode == HTTP_CODE_OK) { content_len = httpsclient.getSize(); // get length of document (is -1 when Server sends no Content-Length header) content_encoding = httpsclient.header("content-encoding"); if((httpsclient.hasHeader("content-encoding")) && (content_encoding.equals("gzip"))) { while((httpsclient.connected()) && ((content_len > 0) || (content_len == -1))) { available_size = wificlient.available(); // !返回值最大只有245. if(available_size) { realsize = (available_size > payload_buffer_size) ? payload_buffer_size : available_size; readBytesSize = wificlient.readBytes(payload_buffer+offset, realsize); offset += readBytesSize; if(content_len > 0) content_len -= readBytesSize; } } *payload_size = offset; } }}
解压数据
采用tignioj/ArduinoZlib库对gzip格式的数据进行解压。
ArduinoZlib
封装了zlib库的解压缩功能。zlib库支持对gzip和Zip格式的数据进行解压和压缩。
注意事项
数据完整性:函数
wificlient.available()
返回的等待读取的数据字节数似乎有限制(245),需要多次读取才能获得完整的数据,因此应增加数据完整性检查。数据存储:在进行 HTTP/HTTPS 访问时使用大数组会导致网络访问出错,使用
malloc()
手动分配堆可以解决这个问题。内存分配:使用
malloc()
分配堆时需要切换内存管理方案为16KB cache + 48KB IRAM and 2nd Heap (shared)
,此时才支持标准的malloc()
API。具体信息可参见调整ICACHE与IRAM的比率。数据检查:返回的天气数据不一定是正确的,可以使用
String.indexOf()
查找返回的字符串数据中是否有指定的关键字。和风天气:返回的数据已强制使用
gzip
压缩,在请求头中添加&gzip=n
的方法已失效。如果仅使用和风天气的数据接口,可使用tignioj/ESP8266_Heweather库提供的接口来获取和风天气提供的天气数据。
参考资料
- String() - Arduino Reference
- Welcome! — ESP8266 Arduino documentation
- ESP8266-Arduino库 开发参考资料 – 太极创客
版权声明:本文为「梦幻之心星」原创,依据 CC BY-NC-SA 4.0 许可证进行授权,转载请附上原文出处链接及本声明。
博客园地址:https://www.cnblogs.com/Sky-seeker
关注微信公众号,获取即时推送;点击左下角阅读原文,享受最佳阅读体验!
关键词:
-
基于Arduino和ESP8266的JSON数据获取与解压之和风天气-全球快讯
简要比较了几个免费天气数据接口;介绍了通过HTTP和HTTPS获取数据,以及Gzip压缩格式数据的获取;解压Gzip
来源: -
Cryptohack wp (GENERAL篇)|世界热消息
本篇是GENERAL篇,以下题目中没提及到的题目均在course的其他篇目中 EncodingChallenge给了三个文件,一个
来源: -
使用策略模式重构 if/elseif/elseif
本文翻译自国外论坛medium,原文地址:https: medium com aia-sg-techblog refactor-if-elseif-elseif-usi
来源: 基于Arduino和ESP8266的JSON数据获取与解压之和风天气-全球快讯
Cryptohack wp (GENERAL篇)|世界热消息
使用策略模式重构 if/elseif/elseif
电磁炉辐射范围多少米_电磁炉对孕妇有辐射吗
外卖平台热销榜第一店铺环境简陋:画面斑驳不堪
环球今日报丨终极能源!盖茨、贝索斯押注的可控核聚变:中国公司跟进了
【独家焦点】丰田要给纯电车装手动挡!我看它是真急了
老外上网课最喜欢用的电脑 现在却变成了电子垃圾
高温来袭!北方30℃以上范围连成一片|全球焦点
今日快看!中国东方教育(00667.HK):5月15日南向资金增持4.35万股
焦点观察:作为这家数码潮牌的孵化人,我们真心想推荐一下这个产品
惠普打印机弹出用户使用第三方墨盒警告 称对硬件性能造成威胁
《霍格沃茨之遗》登顶PS4 Fami通日本实体游戏销量榜现已公布
电影《流浪地球2》5月15日结束公映 累计总票房高达40.29亿
网传北京软星技术团队解散 宇峻奥汀游戏制作人谢宗辉回应
报道显示小龙虾价格一路走低 从此前的20元每斤爆降到10元每斤
Bing搜索桌面端市场份额下降 谷歌仍占据行业龙头地位
《刺客信条》15周年限量手办现已发售 打造专属猫奴的潮玩形象
《超级马里奥兄弟大电影》已成功超越小黄人 成为有史以来票房收入第四高动画
网传苹果将在2023年全球开发者大会公开首款MR头显装置 于9月实现量产
环球观察:频繁放屁说明身体有病?医生:这多半与3个因素有关,别不当回事
2023年中国本科生就业报告发布 IT产业依旧为吸金圣器
花样啃老?回家做“全职儿女”年轻人 40岁裸辞父母每月开4千 专家称别歧视
性能最强曲面屏旗舰!vivo X90S关键参数曝光|世界速递
生产力神器!华为笔记本新品来袭
快看:Docker入门与实战-初识Docker
7个很有特点的HTTP代理服务器
今日最新!Java并发教程_编程入门自学教程_菜鸟教程-免费教程分享
【环球热闻】kafka 磁盘迁移
天天热点评!多彩中亚 丝路新篇丨现代化的设备、丰富的教学资源……师生“点赞”中亚首家鲁班工坊
环球简讯:外观、内饰全面革新!全新别克君越正式上市:17.99万起
焦点快播:TP-Link双旗舰Wi-Fi 7路由开卖:覆盖面积/网速秒杀Wi-Fi 6E
这就是满分水冷了!鑫谷昆仑II 360 ARGB评测:超高颜值还能给主板降温9度_全球热点评
32岁女生相亲角因条件高被男子怼哭:本人是短视频网红 回应称不是剧本
小摩增持长城汽车(02333)约714.44万股 每股作价约9.93港元
3.OS-Virtualization|进程API 天天日报
全球最资讯丨拜登就与共和党人谈妥债务上限表达乐观
“AI歌手”走红网络!谁侵了谁的权?专家解读
比亚迪汉KTV麦克风串频 后车竟然能听到前车人说话
“完全免费”的电视机见过么?专门分出一块屏幕放广告
当事妈妈回应儿子送花被骂:家里困难 深感后悔
川味红烧肚条莴笋的做法?
天天微速讯:Java设计模式-桥接模式
全球快资讯丨Java并发(五)----线程常见方法总结
中银香港完成首批多笔北向互换通交易
前沿热点:货币市场日报:5月15日
央行:有效防范化解优质头部房企风险,改善资产负债状况
李国庆谈京东徐雷退休:早有预料 他跟刘强东有分歧
焦点!又一造车新势力开通法务部官号:零跑汽车晒出起诉通知书索赔50万
【环球新要闻】140元一个!五月天荧光棒官旗回应涨价:新款有云端互动功能
几乎腰斩!NVIDIA、AMD显卡中国大降价:老外羡慕不已
当前滚动:郝劭文晒婚礼现场照 释小龙任伴郎:勾起网友童年回忆
前乔治亚州球员赢得 2022 年 NFL 年度最佳防守新秀的几率-环球观点
2999元起 九号Segway储能电源公测招募:支持2200W大功率输出 当前资讯
“轻功”真的存在:男子一次飞越10个凳子 还会蜻蜓点水 环球热文
《仙剑世界》将引入GPT:中手游宣布与微软达成合作
环球今亮点!《塞尔达传说:王国之泪》锯齿严重 最好用小屏幕玩
阿里达摩院自动驾驶实验室并入菜鸟:约70%员工被裁
苹果的Reality Pro耳机可能会遇到生产障碍_世界观天下
快看:TransE模型(tensorflow框架)
【世界新要闻】记录--css水滴登录界面
原来如此!如何去开发一款直播软件app平台?直播源码技术直播互动篇 环球最新
升鲜宝_生鲜配送供应链系统_杭州生鲜配送系统之升鲜宝-车辆管理系统设计思路与功能展现(一) 每日热讯
热点评!中国玩具批发市场哪里最便宜
环球热头条丨对盈利很重要!法拉第未来任命新财务高管:曾就职福特、蔚来
618主机、显示器、CPU便宜了 微星1元抢好礼:幸运玩家可免单
任意地点、任意空间随处可控!华为全屋智能4.0带来业内首款空间穿越屏
苹果换打法了!iPhone 15/15 Plus影像没挤牙膏 天天新视野
安卓14带来全新Ultra HDR照片格式 细节惊人!骁龙同步首发
胃炎吃什么食物好-全球消息
作业二:读书笔记-简讯
Python工具箱系列(三十二)
Linux-LVM的介绍、创建、删除-世界微动态
世界头条:AI低代码,或将再次颠覆开发行业
axios CancelToken 实现对特定请求的拦截,不要所有请求都进行相同的拦截
环球观察:【新华财经调查】碳酸锂拍卖“试探”市场预期 价格何时回归理性?
今热点:【金融街发布】外汇局:4月银行结汇1869亿美元 售汇1815亿美元
万达信息:公司DIP项目不涉及数字人民币支付
焦点速看:男子和路过小朋友对暗号唱挖呀挖:没想到小朋友齐声对唱
世界热头条丨男子10万块买8套房 鹤壁房子1000元一套?官方回应
焦点要闻:全自动空中列车!数万名人已乘坐比亚迪大王山云巴
《王者荣耀》女装定价超千元 网友:不如去抢-环球今头条
世界播报:18片双环扇叶:先锋电风扇69元起官方大促抄底(170元券)
古润金被警方拘留 古润金_全球快播
【jmeter】win10部署jmeter分布式 全球最资讯
最新快讯!针对基于智能卡进行认证的活动目录攻击
Lua 备忘清单_开发速查表分享
vue 基于原生动画的自动滚动表格
【BSP视频教程】BSP视频教程第26期:CAN/CANFD/CANopen专题,CANFD整个运行机制精讲,图文并茂,配合综合实战演练(2023-05-15)
全球新消息丨上交所将召开沪市金融业专题座谈会 讨论促进金融业估值提升
【世界时快讯】收评:沪指午后逆转涨1.17%收复3300点 新能源赛道股大涨
尚纬股份: 截至3月31日,公司股东总数约为2.4万户-焦点热讯
威联通NAS新品TS-466C发布:影音转码升级 插上HDMI线就能看片
4年前的GTX 1650荣光犹在!Steam硬件占有率第一
安卓亲儿子又翻车 谷歌Pixel 6系列手机耗电bug:续航崩了
RTX 3060 Ti即将停产:疯狂杀价700元!赔本清库存|快看点
“永生”干细胞培养肉问世:有望实现人造肉无限量供应
长江上的“移动垃圾站” 环球聚焦
全球热点评!问鼎CodeXGLUE榜单,华为云UniXcoder-VESO-v1算法取得突破
天天热点评!湖北省智能科教研究会走进璞华,调研璞公英教学平台个性化教学新模式