Bläddra i källkod

Merge branch 'master' of https://gitee.com/openLuat/LuatOS

alienwalker 3 år sedan
förälder
incheckning
4a2ad3450e

+ 1 - 1
components/network/libftp/luat_ftp_client.c

@@ -706,7 +706,7 @@ FTP命令
     print(ftp.command("CWD /QWER").wait())
     print(ftp.command("CDUP").wait())
     print(ftp.command("RMD QWER").wait())
-	rint(ftp.command("DELE /1/12222.txt").wait())
+	print(ftp.command("DELE /1/12222.txt").wait())
 */
 static int l_ftp_command(lua_State *L) {
 	if (!ftp_ctrl){

+ 55 - 7
script/turnkey/air780eg_gnss_qcloud/main.lua

@@ -32,14 +32,30 @@ local qcloud_port = 1883
 -- libgnss库初始化
 libgnss.clear() -- 清空数据,兼初始化
 
+-- 初始化存储
+fskv.init()
+
 -- LED和ADC初始化
 LED_GNSS = 24
 LED_VBAT = 26
+SWITCH_1 = 1
+SWITCH_2 = 22
 gpio.setup(LED_GNSS, 0) -- GNSS定位成功灯
 gpio.setup(LED_VBAT, 0) -- 低电压警告灯
 adc.open(adc.CH_VBAT)
 -- adc.open(adc.CH_CPU)
 
+-- 判断一下初始化配置
+if fskv.get("SWITCH_1") == nil then
+    fskv.set("SWITCH_1", 0)
+end
+if fskv.get("SWITCH_2") == nil then
+    fskv.set("SWITCH_2", 0)
+end
+
+gpio.setup(SWITCH_1, fskv.get("SWITCH_1"), gpio.PULLUP)
+gpio.setup(SWITCH_2, fskv.get("SWITCH_2"))
+
 -- 串口初始化
 uart.setup(gps_uart_id, 115200)
 
@@ -88,30 +104,61 @@ function exec_agnss()
     end
 end
 
-function upload_stat()
+function upload_stat(is_first)
     -- if mqttc == nil or not mqttc:ready() then return end
     local cell = mobile.getCellInfo()
     local rmc = libgnss.getRmc(2)
-    local params = {
-        networkType = 5
-    }
+    local params = {}
     if libgnss.isFix() then
         params["GPS_Info"]  = {
             longitude = rmc.lng,
             latitude = rmc.lat
         }
     end
+    if is_first then
+        params["switch_1"] = fskv.get("SWITCH_1")
+        params["switch_2"] = fskv.get("SWITCH_2")
+        params.networkType = 5
+    end
     if mqttc and mqttc:ready() then
         local topic = "$thing/up/property/" .. qcloud_pid .. "/" .. qcloud_dev
         local payload = json.encode({
             method = "report",
-            clientToken = "123",
+            clientToken = "0",
             params = params
         })
         mqttc:publish(topic, payload, 1)
     end
 end
 
+function on_downlink(topic, payload) 
+    local jdata = json.decode(payload)
+    if not jdata then
+        return
+    end
+    if jdata.method == "control" and jdata.params then
+        local changed = false
+        if jdata.params.switch_1 then
+            gpio.set(SWITCH_1, jdata.params.switch_1)
+            fskv.set("SWITCH_1", jdata.params.switch_1)
+            changed = true
+        end
+        if jdata.params.switch_2 then
+            gpio.set(SWITCH_2, jdata.params.switch_2)
+            fskv.set("SWITCH_2", jdata.params.switch_2)
+            changed = true
+        end
+
+        -- 回报结果
+        local topic = "$thing/up/property/" .. qcloud_pid .. "/" .. qcloud_dev
+        local payload = json.encode({
+            method = "report",
+            clientToken = jdata.clientToken,
+            params = jdata.params
+        })
+        mqttc:publish(topic, payload, 1)
+    end
+end
 
 sys.taskInit(function()
     -- Air780EG默认波特率是115200
@@ -177,9 +224,10 @@ sys.taskInit(function()
             mqtt_client:subscribe("$rrpc/rxd/" .. qcloud_pid .. "/" .. qcloud_dev .. "/+")
             -- 广播消息下行
             mqtt_client:subscribe("$broadcast/rxd/" .. qcloud_pid .. "/" .. qcloud_dev .. "/+")
-            upload_stat()
+            upload_stat(true)
         elseif event == "recv" then -- 服务器下发的数据
             log.info("mqtt", "downlink", "topic", data, "payload", payload)
+            on_downlink(data, payload)
         elseif event == "sent" then -- publish成功后的事件
             log.info("mqtt", "sent", "pkgid", data)
         end
@@ -211,7 +259,7 @@ end)
 sys.taskInit(function()
     while 1 do
         local vbat = adc.get(adc.CH_VBAT)
-        log.info("vbat", vbat)
+        -- log.info("vbat", vbat)
         if vbat < 3400 then
             gpio.set(LED_VBAT, 1)
             sys.wait(100)