就在本周,Air780E的LuatOS測試固件已經開源在Gitee上,新的平臺采用LuatOS-SOC接口,API與之前Air10X和ESP32系列完成統一。也就是一套代碼可以4G模組、MCU、Wi-Fi模組上通用,一次開發即可擁有全平臺支持。
今天跟大家分享學習一下使用不到100行代碼接入騰訊云,并通過騰訊連連小程序遠程控制開發板燈的亮滅。一套代碼可以在Air780E(4G)、Air105+W5500(以太網)、ESP32/C3/C2/S3(Wi-Fi)三種平臺無縫切換,一次開發實現三種接入方式。
1
騰訊云準備
1.1 新建項目
我們用到的是騰訊云的物聯網開發平臺:
沒賬號的可自己注冊,每個賬號都有免費額度,足夠我們自己玩玩了。點擊公共實例:
然后新建項目,項目名稱自己起一個,描述寫不寫都行,填完保存:
1.2 新建產品
然后在頁面上就能看到我們新建的項目了,點擊項目名稱,進去新建產品,名稱我這里叫遠程開關(根據自己的項目填寫即可)。然后品類選標準品類,點進去搜索開關,勾選一路開關:
通信方式選2G/3G/4G,其他默認即可,然后點擊確定:
1.3 添加設備
點進我們剛新建的產品,點4設備調試頁面,點擊新建設備。
填寫設備名稱,建議用設備imei等唯一標識,我這里演示方便就寫了Air780E:
點擊我們剛新建的設備,記錄設備名稱、設備密鑰、產品ID這幾個參數,一會兒要用。
2
設備端開發
因為要做多平臺兼容,所以首先根據不同平臺做相應初始化。
手機橫屏/上下滑動查看完整代碼:
Lua if rtos.bsp() == "ESP32C3" then LED = gpio.setup(12, 0, gpio.PULLUP)
wlan.init()
wlan.setMode(wlan.STATION)
wlan.connect(ssid, password, 1)
local result, data = sys.waitUntil("IP_READY")
log.info("wlan", "IP_READY", result, data)elseif rtos.bsp() == "AIR105" then
w5500.init(spi.HSPI_0, 24000000, pin.PC14, pin.PC01, pin.PC00)
w5500.config() --默認是DHCP模式
w5500.bind(socket.ETH0)
LED = gpio.setup(62, 0, gpio.PULLUP)
sys.wait(1000) elseif rtos.bsp() == "EC618" then
mobile.simid(2) LED = gpio.setup(27, 0, gpio.PULLUP)end
2.1 計算連接參數
騰訊云是需要鑒權才允許設備連接,因此,我們要首先計算連接參數,這里使用iotauth庫可以方便的計算阿里云、騰訊云、百度云、涂鴉云、華為云的連接參數。
根據API的說明,結合前面我們在騰訊云注冊的設備,代碼就很簡單了。代碼如下,參數以變量的形式定義好了,改成自己的就行。
Lua
local client_id, user_name, password = iotauth.qcloud(product_key, device_id, device_secret, "sha1", 1700561166)
log.info("參數", client_id, user_name, password)
2.2 連接服務器
獲取參數以后,根據返回值就可以得到連接mqtt服務器的信息,根據mqtt庫的說明,參考mqtt的demo直接抄過來就行。
2.3 處理數據
根據騰訊云的文檔,我們使用的物模型中power_switch是我們需要的開關參數。我們只需要根據文檔對收到的數據解析即可,mqtt部分全部代碼如下:
手機橫屏/上下滑動查看完整代碼:
Lua mqttc = mqtt.create(nil, product_key .. ".iotcloud.tencentdevices.com", 1883)
mqttc:auth(client_id, user_name, password)
mqttc:keepalive(240) -- 默認值240smqttc:autoreconn(true, 3000) -- 自動重連機制mqttc:on(
function(mqtt_client, event, data, payload)
if event == "conack"then
sys.publish("mqtt_conack")
log.info("mqtt", "mqtt已連接")
mqtt_client:subscribe("$thing/down/property/" .. product_key .. "/".. device_id)
elseif event == "recv" then
log.info("mqtt", "收到消息", data, payload)
local json = json.decode(payload)
if json.method == "control" then
if json.params.power_switch == 1 then
LED(1)
elseif json.params.power_switch == 0 then
LED(0)
end
end
elseif event == "sent"then
log.info("mqtt", "sent", "pkgid", data)
end
end)
mqttc:connect()
sys.wait(10000)
sys.waitUntil("mqtt_conack")while true do
local ret, topic, data, qos = sys.waitUntil("mqtt_pub", 30000) if ret then
if topic == "close" then
break
end
mqttc:publish(topic, data, qos) endendmqttc:close()
mqttc = nil
3
遠程開關測試
把完整代碼燒錄進設備,不會燒錄的可以先看教程:
點擊騰訊云設備的二維碼:
使用騰訊連連小程序掃碼添加設備,添加完就能看到我們設備在線了:
點擊總開關,改變開關狀態,就能看到,設備上的燈跟著改變狀態了:
日志也可以看到收到的消息,可用根據消息調試其他功能,比如倒計時開啟。
至此,我們用了不到100行代碼就實現了連接騰訊云,并解析數據遠程控制燈的開關,且代碼可跨平臺使用,無需多次開發。在行業應用中,一小時即可完成產品原型,遙遙領先同行。
歡迎加入技術交流群,探討更多應用!
-
物聯網
+關注
關注
2910文章
44752瀏覽量
374576
發布評論請先 登錄
相關推薦
評論