本文来源电子发烧友社区,作者:大菠萝Alpha, 帖子地址:https://bbs.elecfans.com/jishu_2308832_1_1.html
一、桌面天气预报器架构
(一)手撕HTTP request
桌面天气预报器考虑的比较简单,虽然LWIP能支持,但是HTTP协议栈尚未实现,之前考虑直接在OpenHarmony手写一个HTTP GET request,然后NiobeU4开发板解析几个天气的关键词,实现显示即可,至于HTTPS与HTTP的选择,当然是越简单越好了,找了个HTTP的天气网站(http://www.yytianqi.com/),注册个账号,使用API即可,这个API的格式类似这样:
http://api.yytianqi.com/接口名称?city=城市ID&key=用户key
初步设计就是在NiobeU4开发板端侧构造HTTP GET request消息并发出,然后解析其response,再在LCD侧显示,基本框架如下:
#define SERVER_IP "123.57.54.168"
#define SERVER_PORT 8080
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock < 0) {
printf("Socket errorn");
osDelay(OD_DELAY_100);
continue;
}
memset_s(&(client_addr), sizeof(client_addr), 0, sizeof(client_addr));
client_addr.sin_family = AF_INET;
client_addr.sin_port = htons(SERVER_PORT);
client_addr.sin_addr.s_addr = inet_addr(SERVER_IP);
if (connect(sock, (struct sockaddr *)&client_addr, sizeof(struct sockaddr)) == -1) {
closesocket(sock);
osDelay(OD_DELAY_1000);
continue;
}
//send HTTP GET msg
char cmd[256];
bzero(cmd, 256);
strcpy(cmd,"GET /observe?city=CH210401&key=XXXXXXXXXXXXXXXX HTTP/1.1rn");
strcat(cmd,"Host: 123.57.54.168rnrn");
write(sock, cmd, strlen(cmd));
这个HTTP GET发出去后,服务端认不出,找了个工具模拟了下,发现还是相同的问题,貌似服务器端对rn的解析不是换行,捣鼓了很久还是不行,于是放弃。
(二)曲线救国
既然直接手撕HTTP GET request有问题,那还是换条路吧。
设想是有个server来做网关,用于搭建NiobeU4开发板与天气网站之间的桥梁,负责获取天气信息,并通过TCP链接转发到NiobeU4开发板端侧,具体如下:
二、实现&展示
方案确定下来后具体实现就很简单了,网关处起个任务到www.yytianqi.com获取天气信息,然后发给NiobeU4开发板,NiobeU4开发板端侧收到信息后做天气信息字符串匹配,根据天气内容在LCD上显示相关信息。
直接拷贝至系统,reset板子。
Gateway侧HTTP GET得到的信息如下:
{"code":1,"msg":"Sucess","counts":29,"data":{"cityId":"CH210401","cityName":"u5b81u6ce2","lastUpdate":"2022-10-07 23:16:37","tq":"u9634","numtq":"02","qw":"15","numfl":"0","fl":"u5faeu98ce","fx":"u897fu5357u98ce","numfx":"5","sd":"92"}}
NiobeU4开发板端的显示如下,多云天气:
三、附加电池
刚好手头有块3.7V的锂电池,问了技术直接接上了,注意正负极即可,这块电池年份有点久了,基本上续航在3-5h。细心的可以看到视频中的电源灯是没有亮的。
##感谢阅读##
附上开发板体验视频,详见作者原帖子文章。
-
开鸿智谷
+关注
关注
2文章
127浏览量
1186 -
NiobeU4
+关注
关注
3文章
31浏览量
522
发布评论请先 登录
相关推荐
HarmonyOS NEXT正式发布,拓维信息&amp;amp;开鸿智谷携手伙伴共筑鸿蒙新世界
![HarmonyOS NEXT正式发布,拓维信息&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>开</b><b class='flag-5'>鸿</b>智<b class='flag-5'>谷</b>携手伙伴共筑鸿蒙新世界](https://file.elecfans.com/web2/M00/8E/8D/pYYBAGPcpICAAruWAAAuPj7FFhI697.png)
onsemi LV/MV MOSFET 产品介绍 &amp;amp; 行业应用
![onsemi LV/MV MOSFET 产品介绍 &<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>; 行业应用](https://file.elecfans.com/web2/M00/92/72/poYBAGPzDF2APvYFAAAbxdHf0so719.png)
基于 onsemi NCV78343 &amp;amp; NCV78964的汽车矩阵式大灯方案
![基于 onsemi NCV78343 &<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>; NCV78964的汽车矩阵式大灯方案](https://file1.elecfans.com/web2/M00/07/A9/wKgaombqcfaAZuDMAABtQFV4-_g195.png)
FS201资料(pcb &amp; DEMO &amp; 原理图)
解读北美运营商,AT&amp;amp;T的认证分类与认证内容分享
![解读北美运营商,AT&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;T的认证分类与认证内容分享](https://file1.elecfans.com/web2/M00/EC/D0/wKgaomZgL2aALNI6AAAvUF2aXLM387.png)
正点原子i.MX 93开发板,双核A55+M33+NPU,双路RS485&amp;FDCAN&amp;千兆网,异核/AI/工业开发!
![正点原子i.MX 93<b class='flag-5'>开发板</b>,双核A55+M33+NPU,双路RS485&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;FDCAN&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;千兆网,异核/AI/工业<b class='flag-5'>开发</b>!](https://file1.elecfans.com/web2/M00/E3/06/wKgaomY7IWmAJtCQAAaj38C6lIw713.png)
谷歌推出新模型提升天气预报准确性
AWTK 开源串口屏开发(11) - 天气预报
![AWTK 开源串口屏<b class='flag-5'>开发</b>(11) - <b class='flag-5'>天气预报</b>](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
评论