基於RT-Thread的AT device實現ESP8266 通過socket對接OneNET進行POST和GET

前言

基於RT-Thead,讓ESP8266能實現socket,下面只是簡單的應用,做了HTTP的POST和GET,socket接口已經寫好,讀者如果有興趣也可以基於此代碼實現MQTT和EDP等其他協議的應用,代碼放在GitHub,後面有工程代碼鏈接。

一、介紹

1、實現功能

通過esp8266 WiFi模塊對接OneNET,使用OneNET的HTTP協議,基於RT-Thread的AT device軟件包,實現POST數據流到OneNET雲平臺和從OneNET雲平臺GET數據流,使用Finsh/MSH測試命令進行測試。

2、軟硬件平臺

(1)STM32F103RET6、外部12M晶振

(2)ESP8266 WiFi模塊

(3)BH1750光照強度傳感器

(4)OneNET雲平臺

(5)RT-Thread物聯網操作系統

(6)RT-Thread AT device軟件包

二、Finsh/MSH測試命令說明

1、開機初始化

開機打印如下信息,可以看到初始化了socket組件、AT client組件(使用uart3)、ESP8266 WIFI連接熱點。
開機初始化信息

2、連接OneNET

連接的服務器地址和端口爲:183.230.40.3380

在連接之前,可以使用at_ping命令來ping一下這個地址:
ping
ping通說明聯網正常和IP地址無誤,就可以連接OneNET了,可以先輸入esp8266查看命令:
esp8266操作命令
輸入esp8266 connect連接OneNET HTTP服務器:
esp8266 connect

3、POST數據流到OneNET

在連接上OneNET之後,輸入esp8266 post就可以POST數據流到OneNET:
esp8266 post
(1)如果POST成功,在OneNET可以看到如下數據:
OneNET數據顯示
(2)如果POST失敗,例如:
post失敗
那是因爲OneNET HTTP是短連接,在前面connect上之後,如果隔了一段時間沒進行數據交互就會主動端口斷開連接,這時候我們可以先輸入esp8266 close斷開連接,再esp8266 connect,然後重新esp8266 post
重新post

4、從OneNET GET數據流

(1)如果GET數據流成功,會得到數據流名稱和數據大小,例如light的大小是432.5
在這裏插入圖片描述(2)如果GET失敗,原因也是因爲OneNET HTTP是短連接,解決方法和前面類似:
在這裏插入圖片描述

5、斷開socket連接:

在這裏插入圖片描述

三、代碼移植說明

1、代碼在GitHub

https://github.com/sanjaywu/RT-Thread_ESP8266_OneNET

2、AT device的移植說明

http://packages.rt-thread.org/itemDetail.html?package=at_device

3、修改WiFi熱點賬號和名稱

(1)會ENV工具的,請使用ENV工具進行修改。

(2)不會ENV工具,打開rtconfig.h,修改兩個地方:

#define AT_DEVICE_WIFI_SSID "MYWiFi"
#define AT_DEVICE_WIFI_PASSWORD "1234567890"

4、修改設備ID、APIKEY和數據流名稱

打開onenet_sample.c,修改這三個地方:

#define DEVICE_ID	"505619290"	
#define API_KEY		"SlxhH3MCLvuuvXJ0N=a14Yo6EAQ="
#define DATA_STREAM	"light"

5、修改ESP8266連接的UART

(1)會ENV工具的,請使用ENV工具進行修改。

(2)不會ENV工具,打開rtconfig.h,修改這個地方:

#define AT_DEVICE_NAME "uart3"

四、注意事項

打開工程打開這個:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章