Просмотр исходного кода

update: 完善demo/aliyun,在air601下也能跑通一机一密,但一型一密需要修改libs/aliyun了

Wendal Chen 2 лет назад
Родитель
Сommit
4cd65f66f8
1 измененных файлов с 47 добавлено и 0 удалено
  1. 47 0
      demo/aliyun/main.lua

+ 47 - 0
demo/aliyun/main.lua

@@ -16,6 +16,49 @@ tPara = {
  mqtt_isssl = true,                --是否使用ssl加密连接,true为无证书最简单的加密
  }
 
+ -- 统一联网函数
+sys.taskInit(function()
+    local device_id = mcu.unique_id():toHex()
+    -----------------------------
+    -- 统一联网函数, 可自行删减
+    ----------------------------
+    if wlan and wlan.connect then
+        -- wifi 联网, ESP32系列均支持
+        local ssid = "luatos1234"
+        local password = "12341234"
+        log.info("wifi", ssid, password)
+        -- TODO 改成自动配网
+        -- LED = gpio.setup(12, 0, gpio.PULLUP)
+        wlan.init()
+        wlan.setMode(wlan.STATION) -- 默认也是这个模式,不调用也可以
+        device_id = wlan.getMac()
+        wlan.connect(ssid, password, 1)
+    elseif mobile then
+        -- Air780E/Air600E系列
+        --mobile.simid(2) -- 自动切换SIM卡
+        -- LED = gpio.setup(27, 0, gpio.PULLUP)
+        device_id = mobile.imei()
+    elseif w5500 then
+        -- w5500 以太网, 当前仅Air105支持
+        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)
+    elseif socket or mqtt then
+        -- 适配的socket库也OK
+        -- 没有其他操作, 单纯给个注释说明
+    else
+        -- 其他不认识的bsp, 循环提示一下吧
+        while 1 do
+            sys.wait(1000)
+            log.info("bsp", "本bsp可能未适配网络层, 请查证")
+        end
+    end
+    -- 默认都等到联网成功
+    sys.waitUntil("IP_READY")
+    sys.publish("net_ready", device_id)
+end)
+
  --阿里云客户端是否处于连接状态
 local sConnected
 
@@ -98,6 +141,10 @@ aliyun.on("connect",connectCbFnc)
 
 --根据掉电不消失的kv文件区来储存的deviceSecret,clientid,deviceToken来判断是进行正常连接还是掉电重连
 sys.taskInit(function()
+    sys.waitUntil("IP_READY")
+    socket.sntp()
+    sys.wait(500)
+    log.info("已联网", "开始初始化aliyun库")
     fskv.init()
     fskv.set("DeviceName",tPara.DeviceName)
     local name = fskv.get("DeviceName")