一、桌面天氣預報器架構(gòu)
1.手撕HTTP request
桌面天氣預報器考慮的比較簡單,雖然LWIP能支持,但是HTTP協(xié)議棧尚未實現(xiàn),之前考慮直接在OpenHarmony手寫一個HTTP GET request,然后NiobeU4開發(fā)板解析幾個天氣的關鍵詞,實現(xiàn)顯示即可,至于HTTPS與HTTP的選擇,當然是越簡單越好了,找了個HTTP的天氣網(wǎng)站(http://www.yytianqi.com/),注冊個賬號,使用API即可,這個API的格式類似這樣:
http://api.yytianqi.com/接口名稱?city=城市ID&key=用戶key
初步設計就是在NiobeU4開發(fā)板端側(cè)構(gòu)造HTTP GET request消息并發(fā)出,然后解析其response,再在LCD側(cè)顯示,基本框架如下:

sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock < 0) {
printf("Socket error
");
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.1
");
strcat(cmd,"Host: 123.57.54.168
");
write(sock, cmd, strlen(cmd));
(左右移動查看全部內(nèi)容)
這個HTTP GET發(fā)出去后,服務端認不出,找了個工具模擬了下,發(fā)現(xiàn)還是相同的問題,貌似服務器端對 的解析不是換行,搗鼓了很久還是不行,于是放棄。

2.曲線救國
既然直接手撕HTTP GET request有問題,那還是換條路吧。
設想是有個server來做網(wǎng)關,用于搭建NiobeU4開發(fā)板與天氣網(wǎng)站之間的橋梁,負責獲取天氣信息,并通過TCP鏈接轉(zhuǎn)發(fā)到NiobeU4開發(fā)板端側(cè),具體如下:

二、實現(xiàn)&展示
方案確定下來后具體實現(xiàn)就很簡單了,網(wǎng)關處起個任務到www.yytianqi.com獲取天氣信息,然后發(fā)給NiobeU4開發(fā)板,NiobeU4開發(fā)板端側(cè)收到信息后做天氣信息字符串匹配,根據(jù)天氣內(nèi)容在LCD上顯示相關信息。

直接拷貝至系統(tǒng),reset板子。
Gateway側(cè)HTTP GET得到的信息如下:
{"code":1,"msg":"Sucess","counts":29,"data":{"cityId":"CH210401","cityName":"u5b81u6ce2","lastUpdate":"2022-10-07 2337","tq":"u9634","numtq":"02","qw":"15","numfl":"0","fl":"u5faeu98ce","fx":"u897fu5357u98ce","numfx":"5","sd":"92"}}
(左右移動查看全部內(nèi)容)
NiobeU4開發(fā)板端的顯示如下,多云天氣:

三、附加電池
剛好手頭有塊3.7V的鋰電池,問了技術直接接上了,注意正負極即可,這塊電池年份有點久了,基本上續(xù)航在3-5h。細心的可以看到視頻中的電源燈是沒有亮的。

-
lcd
+關注
關注
34文章
4498瀏覽量
170635 -
HTTP
+關注
關注
0文章
520瀏覽量
32440 -
開發(fā)板
+關注
關注
25文章
5499瀏覽量
102075 -
LwIP
+關注
關注
2文章
89瀏覽量
28026 -
OpenHarmony
+關注
關注
26文章
3820瀏覽量
18107 -
NiobeU4
+關注
關注
3文章
31瀏覽量
600
原文標題:基于NiobeU4開發(fā)板的簡易桌面天氣預報設計&實現(xiàn)
文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發(fā)燒友開源社區(qū)】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
【開鴻智谷NiobeU4開發(fā)板免費試用體驗】開鴻智谷NiobeU4恢復出廠太空飛人
【開鴻智谷NiobeU4開發(fā)板免費試用體驗】 開發(fā)環(huán)境搭建并初步測試程序;
【開鴻智谷NiobeU4開發(fā)板免費試用體驗】1.Windows物理機上構(gòu)建Linux開發(fā)環(huán)境
【開鴻智谷NiobeU4開發(fā)板免費試用體驗】2.NiobeU4編程基礎--gpio與uart聯(lián)合使用示例
【開鴻智谷NiobeU4開發(fā)板免費試用體驗】簡易桌面天氣預報器的設計&實現(xiàn)
【開鴻智谷NiobeU4開發(fā)板免費試用體驗】Demo例程加載
【Banana PI Leaf S3開發(fā)板試用體驗】基于Banana PI Leaf S3的天氣預報系統(tǒng)
【開鴻智谷NiobeU4開發(fā)板免費試用體驗】Demo例程加載

【開鴻智谷NiobeU4開發(fā)板免費試用體驗】簡易桌面天氣預報器的設計&amp;amp;實現(xiàn)

【開鴻智谷NiobeU4開發(fā)板免費試用體驗】2.NiobeU4編程基礎--gpio與uart聯(lián)合使用示例

【開鴻智谷NiobeU4開發(fā)板免費試用體驗】1.Windows物理機上構(gòu)建Linux開發(fā)環(huán)境

【開鴻智谷NiobeU4開發(fā)板免費試用體驗】基于Ubuntu22.04的NiobeU4開發(fā)環(huán)境搭建

基于ESP32芯片,搭載OpenHarmony操作系統(tǒng),NiobeU4開發(fā)板應用實例

評論