Эх сурвалжийг харах

不再提供直接解答的 demo 代码,统一放到 olddemo 目录。并在readme里面约定不再做解答。

qinpeng@openluat.com 5 сар өмнө
parent
commit
703604186d

+ 83 - 0
olddemo/iotcloud/aliyun/示例1 一型一密(免预注册,但需要是企业版实例平台)方式连接云平台/main.lua

@@ -0,0 +1,83 @@
+
+-- LuaTools需要PROJECT和VERSION这两个信息
+PROJECT = "aliyun_yxym_myzc"
+VERSION = "1.0.0"
+
+-- sys库是标配
+_G.sys = require("sys")
+--[[特别注意, 使用mqtt库需要下列语句]]
+_G.sysplus = require("sysplus")
+
+local iotcloud = require("iotcloud")
+
+
+-- 统一联网函数
+sys.taskInit(function()
+    local device_id = mcu.unique_id():toHex()
+    if mobile then
+        device_id = mobile.imei()
+    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)
+
+sys.taskInit(function()
+    -- 等待联网
+    local ret, device_id = sys.waitUntil("net_ready")
+
+    --------    以下接入方式根据自己需要修改,相关参数修改为自己的    ---------
+
+    -- 阿里云  
+    -- 动态注册(免预注册)(一型一密)(仅企业版支持)
+    iotcloudc = iotcloud.new(iotcloud.ALIYUN,{instance_id = "xxx",product_id = "xxx",product_secret = "xxx"}) -- 企业版公共实例
+    -- 动态注册(预注册)(一型一密)
+    -- iotcloudc = iotcloud.new(iotcloud.ALIYUN,{product_id = "xxx",device_name = "xxx",product_secret = "xxx"})                     -- 旧版公共实例
+    -- iotcloudc = iotcloud.new(iotcloud.ALIYUN,{instance_id = "xxx",product_id = "xxx",device_name = "xxx",product_secret = "xxx"}) -- 新版公共实例
+    -- 密钥校验 (预注册)(一机一密)
+    -- iotcloudc = iotcloud.new(iotcloud.ALIYUN,{product_id = "xxx",device_name = "xxx",device_secret = "xxx"})                    -- 旧版公共实例
+    -- iotcloudc = iotcloud.new(iotcloud.ALIYUN,{instance_id = "xxx",product_id = "xxx",device_name = "xxx",device_secret = "xxx"})-- 新版公共实例
+
+    if iotcloudc then
+        iotcloudc:connect()
+    end
+
+end)
+
+sys.subscribe("iotcloud", function(cloudc,event,data,payload)
+    -- 注意,此处不是协程内,复杂操作发消息给协程内进行处理
+    if event == iotcloud.CONNECT then -- 云平台联上了
+        print("iotcloud","CONNECT", "云平台连接成功")
+        iotcloudc:subscribe("/"..iotcloudc.product_id.."/"..iotcloudc.device_name.."/user/get") -- 订阅主题,用于下发消息
+    elseif event == iotcloud.RECEIVE then
+        print("iotcloud","topic", data, "payload", payload)
+        -- 用户处理代码
+    elseif event ==  iotcloud.OTA then
+        if data then
+            rtos.reboot()
+        end
+    elseif event == iotcloud.DISCONNECT then -- 云平台断开了
+        -- 用户处理代码
+    end
+end)
+
+-- 每隔2秒发布一次qos为1的消息到云平台
+sys.taskInit(function()
+    while 1 do
+        sys.wait(2000)
+        if iotcloudc then
+            iotcloudc:publish("/"..iotcloudc.product_id.."/"..iotcloudc.device_name.."/user/update", "hello world", 1) -- 上传数据
+        end
+    end
+end)
+
+-- 用户代码已结束---------------------------------------------
+-- 结尾总是这一句
+sys.run()
+-- sys.run()之后后面不要加任何语句!!!!!

+ 82 - 0
olddemo/iotcloud/aliyun/示例2 一型一密(预注册)方式连接云平台/main.lua

@@ -0,0 +1,82 @@
+
+-- LuaTools需要PROJECT和VERSION这两个信息
+PROJECT = "aliyun_yxym_yzc"
+VERSION = "1.0.0"
+
+-- sys库是标配
+_G.sys = require("sys")
+--[[特别注意, 使用mqtt库需要下列语句]]
+_G.sysplus = require("sysplus")
+
+local iotcloud = require("iotcloud")
+
+-- 统一联网函数
+sys.taskInit(function()
+    local device_id = mcu.unique_id():toHex()
+    if mobile then
+        device_id = mobile.imei()
+    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)
+
+sys.taskInit(function()
+    -- 等待联网
+    local ret, device_id = sys.waitUntil("net_ready")
+
+    --------    以下接入方式根据自己需要修改,相关参数修改为自己的    ---------
+
+    -- 阿里云  
+    -- 动态注册(免预注册)(一型一密)(仅企业版支持)
+    -- iotcloudc = iotcloud.new(iotcloud.ALIYUN,{instance_id = "xxx",product_id = "xxx",product_secret = "xxx"}) -- 企业版公共实例
+    -- 动态注册(预注册)(一型一密)
+    -- iotcloudc = iotcloud.new(iotcloud.ALIYUN,{product_id = "xxx",device_name = "xxx",product_secret = "xxx"})                     -- 旧版公共实例
+    iotcloudc = iotcloud.new(iotcloud.ALIYUN,{instance_id = "xxx",product_id = "xxx",device_name = "xxx",product_secret = "xxx"}) -- 新版公共实例
+    -- 密钥校验 (预注册)(一机一密)
+    -- iotcloudc = iotcloud.new(iotcloud.ALIYUN,{product_id = "xxx",device_name = "xxx",device_secret = "xxx"})                    -- 旧版公共实例
+    -- iotcloudc = iotcloud.new(iotcloud.ALIYUN,{instance_id = "xxx",product_id = "xxx",device_name = "xxx",device_secret = "xxx"})-- 新版公共实例
+
+    if iotcloudc then
+        iotcloudc:connect()
+    end
+
+end)
+
+sys.subscribe("iotcloud", function(cloudc,event,data,payload)
+    -- 注意,此处不是协程内,复杂操作发消息给协程内进行处理
+    if event == iotcloud.CONNECT then -- 云平台联上了
+        print("iotcloud","CONNECT", "云平台连接成功")
+        iotcloudc:subscribe("/"..iotcloudc.product_id.."/"..iotcloudc.device_name.."/user/get") -- 订阅主题,用于下发消息
+    elseif event == iotcloud.RECEIVE then
+        print("iotcloud","topic", data, "payload", payload)
+        -- 用户处理代码
+    elseif event ==  iotcloud.OTA then
+        if data then
+            rtos.reboot()
+        end
+    elseif event == iotcloud.DISCONNECT then -- 云平台断开了
+        -- 用户处理代码
+    end
+end)
+
+-- 每隔2秒发布一次qos为1的消息到云平台
+sys.taskInit(function()
+    while 1 do
+        sys.wait(2000)
+        if iotcloudc then
+            iotcloudc:publish("/"..iotcloudc.product_id.."/"..iotcloudc.device_name.."/user/update", "hello world", 1) -- 上传数据
+        end
+    end
+end)
+
+-- 用户代码已结束---------------------------------------------
+-- 结尾总是这一句
+sys.run()
+-- sys.run()之后后面不要加任何语句!!!!!

+ 82 - 0
olddemo/iotcloud/aliyun/示例3 一机一密方式连接云平台/main.lua

@@ -0,0 +1,82 @@
+
+-- LuaTools需要PROJECT和VERSION这两个信息
+PROJECT = "aliyun_yjym_yzc"
+VERSION = "1.0.0"
+
+-- sys库是标配
+_G.sys = require("sys")
+--[[特别注意, 使用mqtt库需要下列语句]]
+_G.sysplus = require("sysplus")
+
+local iotcloud = require("iotcloud")
+
+-- 统一联网函数
+sys.taskInit(function()
+    local device_id = mcu.unique_id():toHex()
+    if mobile then
+        device_id = mobile.imei()
+    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)
+
+sys.taskInit(function()
+    -- 等待联网
+    local ret, device_id = sys.waitUntil("net_ready")
+
+    --------    以下接入方式根据自己需要修改,相关参数修改为自己的    ---------
+
+    -- 阿里云  
+    -- 动态注册(免预注册)(一型一密)(仅企业版支持)
+    -- iotcloudc = iotcloud.new(iotcloud.ALIYUN,{instance_id = "xxx",product_id = "xxx",product_secret = "xxx"}) -- 企业版公共实例
+    -- 动态注册(预注册)(一型一密)
+    -- iotcloudc = iotcloud.new(iotcloud.ALIYUN,{product_id = "xxx",device_name = "xxx",product_secret = "xxx"})                     -- 旧版公共实例
+    -- iotcloudc = iotcloud.new(iotcloud.ALIYUN,{instance_id = "xxx",product_id = "xxx",device_name = "xxx",product_secret = "xxx"}) -- 新版公共实例
+    -- 密钥校验 (预注册)(一机一密)
+    -- iotcloudc = iotcloud.new(iotcloud.ALIYUN,{product_id = "xxx",device_name = "xxx",device_secret = "xxx"})                    -- 旧版公共实例
+    iotcloudc = iotcloud.new(iotcloud.ALIYUN,{instance_id = "xxx",product_id = "xxx",device_name = "xxx",device_secret = "xxx"})-- 新版公共实例
+
+    if iotcloudc then
+        iotcloudc:connect()
+    end
+
+end)
+
+sys.subscribe("iotcloud", function(cloudc,event,data,payload)
+    -- 注意,此处不是协程内,复杂操作发消息给协程内进行处理
+    if event == iotcloud.CONNECT then -- 云平台联上了
+        print("iotcloud","CONNECT", "云平台连接成功")
+        iotcloudc:subscribe("/"..iotcloudc.product_id.."/"..iotcloudc.device_name.."/user/get") -- 订阅主题,用于下发消息
+    elseif event == iotcloud.RECEIVE then
+        print("iotcloud","topic", data, "payload", payload)
+        -- 用户处理代码
+    elseif event ==  iotcloud.OTA then
+        if data then
+            rtos.reboot()
+        end
+    elseif event == iotcloud.DISCONNECT then -- 云平台断开了
+        -- 用户处理代码
+    end
+end)
+
+-- 每隔2秒发布一次qos为1的消息到云平台
+sys.taskInit(function()
+    while 1 do
+        sys.wait(2000)
+        if iotcloudc then
+            iotcloudc:publish("/"..iotcloudc.product_id.."/"..iotcloudc.device_name.."/user/update", "hello world", 1) -- 上传数据
+        end
+    end
+end)
+
+-- 用户代码已结束---------------------------------------------
+-- 结尾总是这一句
+sys.run()
+-- sys.run()之后后面不要加任何语句!!!!!

+ 70 - 0
olddemo/iotcloud/baiduiot/main.lua

@@ -0,0 +1,70 @@
+
+-- LuaTools需要PROJECT和VERSION这两个信息
+PROJECT = "iotclouddemo"
+VERSION = "1.0.0"
+
+-- sys库是标配
+_G.sys = require("sys")
+--[[特别注意, 使用mqtt库需要下列语句]]
+_G.sysplus = require("sysplus")
+
+local iotcloud = require("iotcloud")
+
+-- 统一联网函数
+sys.taskInit(function()
+    local device_id = mcu.unique_id():toHex()
+    if mobile then
+        LED = gpio.setup(27, 0, gpio.PULLUP)
+        device_id = mobile.imei()
+    end
+    -- 默认都等到联网成功
+    sys.waitUntil("IP_READY")
+    sys.publish("net_ready", device_id)
+end)
+
+sys.taskInit(function()
+    -- 等待联网
+    local ret, device_id = sys.waitUntil("net_ready")
+
+    -- 百度云
+    -- 密钥认证(手动注册)
+    -- iotcloudc = iotcloud.new(iotcloud.BAIDU,{produt_id = "aakyhyw",device_name = "869329069169988",device_secret = "IzNIWqXdGRPEoUlS"})
+    -- 证书认证(自动注册)
+    iotcloudc = iotcloud.new(iotcloud.BAIDU,{produt_id = "aakyhyw",device_name = "869329069169988"},{tls={server_cert=io.readFile("/luadb/GlobalSign.cer"),client_cert=io.readFile("/luadb/client_cert.txt"),client_key=io.readFile("/luadb/client_private_key.txt")}})
+
+    if iotcloudc then
+        iotcloudc:connect()
+    end
+end)
+
+sys.subscribe("iotcloud", function(cloudc,event,data,payload)
+    -- 注意,此处不是协程内,复杂操作发消息给协程内进行处理
+    if event == iotcloud.CONNECT then -- 云平台联上了
+        print("iotcloud","CONNECT", "云平台连接成功")
+        iotcloudc:subscribe("$iot/869329069169988/user/fortest") -- 可以自由订阅主题等
+
+    elseif event == iotcloud.RECEIVE then
+        print("iotcloud","topic", data, "payload", payload)
+        if payload == "open" then
+            log.info("main", "收到云平台下发的指令")
+            LED(1)
+        elseif payload == "close" then
+            LED(0)
+        end
+        -- 用户处理代码
+    elseif event ==  iotcloud.OTA then
+        if data then
+            rtos.reboot()
+        end
+    elseif event == iotcloud.DISCONNECT then -- 云平台断开了
+        -- 用户处理代码
+        print("iotcloud","DISCONNECT", "云平台连接断开")
+    end
+end)
+
+
+
+-- 用户代码已结束---------------------------------------------
+-- 结尾总是这一句
+sys.run()
+-- sys.run()之后后面不要加任何语句!!!!!

+ 88 - 0
olddemo/iotcloud/huaweiiot/main.lua

@@ -0,0 +1,88 @@
+
+-- LuaTools需要PROJECT和VERSION这两个信息
+PROJECT = "iotclouddemo"
+VERSION = "1.0.0"
+
+-- sys库是标配
+_G.sys = require("sys")
+--[[特别注意, 使用mqtt库需要下列语句]]
+_G.sysplus = require("sysplus")
+
+local iotcloud = require("iotcloud")
+
+-- 统一联网函数
+sys.taskInit(function()
+    local device_id = mcu.unique_id():toHex()
+    if mobile then
+        -- LED = gpio.setup(27, 0, gpio.PULLUP)
+        device_id = mobile.imei()
+    end
+    -- 默认都等到联网成功
+    sys.waitUntil("IP_READY")
+    sys.publish("net_ready", device_id)
+end)
+
+sys.taskInit(function()
+    -- 等待联网
+    local ret, device_id = sys.waitUntil("net_ready")
+
+    -- -- 华为云
+    -- -- 动态注册(免预注册)
+    -- iotcloudc = iotcloud.new(iotcloud.HUAWEI,{produt_id = "670c7b2dfc8d5a4ea71c6a79",
+    --                                             project_id = "c086a58ebd714bfcb1a0fea2f0edde36",
+    --                                             endpoint = "9098a2ff3c.st1",
+    --                                             iam_username="hao",
+    --                                             iam_password="Wsh1322764769",
+    --                                             iam_domain="hao15738882476"})
+    -- 密钥校验 (预注册)
+    iotcloudc = iotcloud.new(iotcloud.HUAWEI,{produt_id = "670c7b2dfc8d5a4ea71c6a79",endpoint = "5341624af8.st1",device_name = "869329069169988",device_secret = "XXX"})
+
+    if iotcloudc then
+        iotcloudc:connect()
+    end
+end)
+
+sys.subscribe("iotcloud", function(cloudc,event,data,payload)
+    -- 注意,此处不是协程内,复杂操作发消息给协程内进行处理
+    if event == iotcloud.CONNECT then -- 云平台联上了
+        print("iotcloud","CONNECT", "云平台连接成功")
+        -- iotcloudc:subscribe("/huawei/down/869329069169988") -- 可以自由定阅主题等
+        -- iotcloudc:subscribe("$oc/devices/869329069169988/user/869329069169988")
+    elseif event == iotcloud.RECEIVE then
+        print("iotcloud","topic", data, "payload", payload)
+        -- local test_value = json.decode(payload).content.switch
+        -- print("test value:", test_value)
+
+        -- if test_value == 1 then
+        --     LED(1)
+        -- elseif test_value == 0 then
+        --     LED(0)
+        -- end
+        -- 用户处理代码
+    elseif event ==  iotcloud.OTA then
+        if data then
+            rtos.reboot()
+        end
+    elseif event == iotcloud.DISCONNECT then -- 云平台断开了
+        -- 用户处理代码
+        print("iotcloud","DISCONNECT", "云平台连接断开")
+    end
+end)
+
+-- -- 每隔2秒发布一次qos为1的消息到云平台
+-- sys.taskInit(function()
+--     while 1 do
+--         sys.wait(2000)
+--         if iotcloudc then
+--             iotcloudc:publish("$oc/devices/869329069169988/user/869329069169988", "hello world!", 1) -- 上传数据
+--         end
+--     end
+-- end)
+
+
+
+
+-- 用户代码已结束---------------------------------------------
+-- 结尾总是这一句
+sys.run()
+-- sys.run()之后后面不要加任何语句!!!!!

+ 157 - 0
olddemo/iotcloud/onenet/main.lua

@@ -0,0 +1,157 @@
+-- LuaTools需要PROJECT和VERSION这两个信息
+PROJECT = "oneNET_demo"
+VERSION = "1.0.0"
+
+-- sys库是标配
+_G.sys = require("sys")
+--[[特别注意, 使用mqtt库需要下列语句]]
+_G.sysplus = require("sysplus")
+lbsLoc2 = require("lbsLoc2")
+local iotcloud = require("iotcloud")
+mobile.simid(2, true)
+
+local produt_id = "4qM5N1Sa4T"
+local userid = "226691"
+local userkey = "pk1M3FKXBvvmjF8If/xDfSFFmr96NZCEg00sxlLBMjjh9vOD5hpIs42rmAYnMh5b3m9B1+0rmYdqzUyoQVrxow=="
+local device_name = mobile.imei()
+local send_data_time = 5 * 60 * 1000 -- 定时发送数据的时间,单位ms
+
+-- 统一联网函数
+sys.taskInit(function()
+    local device_id = mcu.unique_id():toHex()
+
+    -- 默认都等到联网成功
+    sys.waitUntil("IP_READY")
+    sys.publish("net_ready", device_id)
+end)
+
+sys.taskInit(function()
+    -- 等待联网
+    local ret, device_id = sys.waitUntil("net_ready")
+
+    --------    以下接入方式根据自己需要修改,相关参数修改为自己的    ---------
+
+    -- ONENET云
+    -- 动态注册
+    iotcloudc = iotcloud.new(iotcloud.ONENET, {
+        device_name = device_name,
+        produt_id = produt_id,
+        userid = userid,
+        userkey = userkey
+    })
+    -- 一型一密
+    -- iotcloudc = iotcloud.new(iotcloud.ONENET,{produt_id = "xxx",product_secret = "xxx"})
+    -- 一机一密
+    -- iotcloudc = iotcloud.new(iotcloud.ONENET,{produt_id = "xxx",device_name = "xxx",device_secret = "xxx"})
+
+    if iotcloudc then
+        iotcloudc:connect()
+    end
+
+end)
+
+-- 发布和订阅的主题
+
+local oneNET_sub = "$sys/" .. produt_id .. "/" .. device_name .. "/thing/property/post/reply"
+
+local oneNET_pub = "$sys/" .. produt_id .. "/" .. device_name .. "/thing/property/post"
+
+local function oneNET_send_data()
+    log.info("oneNET 链接成功,准备开始发送数据")
+    while 1 do
+        -- 没有mobile库就没有基站定位
+        mobile.reqCellInfo(15)
+        -- 由于基站定位需要等待扫描周围基站,推荐扫描时间为15S
+        sys.waitUntil("CELL_INFO_UPDATE", 15000)
+        local lat, lng, t = lbsLoc2.request(5000)
+        log.info("lbsLoc2", lat, lng, (json.encode(t or {})))
+        -- 如果没扫描到基站则给lat和lng赋值为0
+        if lat and lng then
+            log.info("扫描到了,有位置信息")
+        else
+            lat = "0"
+            lng = "0"
+        end
+        -- 读取CPU温度, 单位为0.001摄氏度, 是内部温度, 非环境温度
+        adc.open(adc.CH_CPU)
+        local cpu_temp = adc.get(adc.CH_CPU)
+        adc.close(adc.CH_CPU)
+        local gpio_pin = 6 -- GPIO编号
+        local gpio_state = gpio.get(gpio_pin)
+        local send_data = {
+            id = "123",
+            verson = VERSION,
+            params = {
+                gpio_state = {
+                    value = gpio_state
+                },
+                cpu_temp = {
+                    value = cpu_temp / 1000
+                },
+                lbs_lat = {
+                    value = tonumber(lat)
+                },
+                lbs_lng = {
+                    value = tonumber(lng)
+                    -- value = lng
+                }
+            }
+        }
+        local send_data = json.encode(send_data)
+        log.info("发送的数据为", send_data)
+        -- 正式发布数据
+        iotcloudc:publish(oneNET_pub, send_data)
+        -- 循环发送数据的定时时间
+        sys.wait(send_data_time)
+    end
+
+end
+
+local con = 0
+--oneNET断开后的处理函数,
+local function oneNET_DISCONNECT()
+    log.info("云平台断开了,隔一分钟重连一次,如果10次都没有连上则重启设备")
+    while con < 10 do
+        sys.wait(60*1000)
+        log.info("oneNET reconnection",con)
+        iotcloudc:connect()
+    end
+    pm.reboot()
+end
+sys.subscribe("iotcloud", function(cloudc, event, data, payload)
+    -- 注意,此处不是协程内,复杂操作发消息给协程内进行处理
+    if event == iotcloud.CONNECT then -- 云平台联上了
+        log.info("iotcloud", "CONNECT", "oneNET平台连接成功")
+        iotcloudc:subscribe({
+            [oneNET_sub] = 1
+        }) -- 订阅服务器下发数据的主题
+        -- 链接成功,启动一个task专门用来定时发消息
+        sys.taskInit(oneNET_send_data)
+
+    elseif event == iotcloud.RECEIVE then
+        log.info("收到服务器下发的数据")
+        log.info("iotcloud", "topic", data, "payload", payload)
+
+        -- 用户处理代码
+        if payload then
+            payload = json.decode(payload)
+            if payload["code"] == 200 then
+                log.info("服务器收到了刚刚上传的数据", payload["msg"])
+            else
+                log.info("服务器接收数据有误", "错误码为", payload["code"], "错误信息为",
+                    payload["msg"])
+            end
+        end
+
+    elseif event == iotcloud.SEND then
+        log.info("发送数据成功")
+
+    elseif event == iotcloud.DISCONNECT then -- 云平台断开了
+       sys.taskInit(oneNET_DISCONNECT)
+    end
+end)
+
+-- 用户代码已结束---------------------------------------------
+-- 结尾总是这一句
+sys.run()
+-- sys.run()之后后面不要加任何语句!!!!!

+ 79 - 0
olddemo/iotcloud/tencentiot/main.lua

@@ -0,0 +1,79 @@
+
+-- LuaTools需要PROJECT和VERSION这两个信息
+PROJECT = "iotclouddemo"
+VERSION = "1.0.0"
+
+-- sys库是标配
+_G.sys = require("sys")
+--[[特别注意, 使用mqtt库需要下列语句]]
+_G.sysplus = require("sysplus")
+
+local iotcloud = require("iotcloud")
+
+-- 统一联网函数
+sys.taskInit(function()
+    local device_id = mcu.unique_id():toHex()
+    if mobile then
+        LED = gpio.setup(27, 0, gpio.PULLUP)
+        device_id = mobile.imei()
+    end
+    -- 默认都等到联网成功
+    sys.waitUntil("IP_READY")
+    sys.publish("net_ready", device_id)
+end)
+
+sys.taskInit(function()
+    -- 等待联网
+    local ret, device_id = sys.waitUntil("net_ready")
+
+    -- -- 腾讯云
+    -- -- 动态注册
+    -- iotcloudc = iotcloud.new(iotcloud.TENCENT,{produt_id = "ZAJCHA24SH" ,product_secret = "vGGwnSkyM4eD5ddbNrQoGJox"})
+    -- -- 密钥校验
+    iotcloudc = iotcloud.new(iotcloud.TENCENT,{produt_id = "ZAJCHA24SH",device_name = "869329069169988",device_secret = "xNWcxDX0qzSM74oFteehvw=="})
+
+    if iotcloudc then
+        iotcloudc:connect()
+    end
+end)
+
+sys.subscribe("iotcloud", function(cloudc,event,data,payload)
+    -- 注意,此处不是协程内,复杂操作发消息给协程内进行处理
+    if event == iotcloud.CONNECT then -- 云平台联上了
+        print("iotcloud","CONNECT", "云平台连接成功")
+        iotcloudc:subscribe("$thing/down/property/ZAJCHA24SH/869329069169988") -- 可以自由定阅主题等
+    elseif event == iotcloud.RECEIVE then
+        print("iotcloud","topic", data, "payload", payload)
+        local test_value = json.decode(payload).params.switch
+        print("test value:", test_value)
+
+        if test_value == 1 then
+            LED(1)
+        elseif test_value == 0 then
+            LED(0)
+        end
+        -- 用户处理代码
+    elseif event ==  iotcloud.OTA then
+        if data then
+            rtos.reboot()
+        end
+    elseif event == iotcloud.DISCONNECT then -- 云平台断开了
+        -- 用户处理代码
+        print("iotcloud","DISCONNECT", "云平台连接断开")
+    end
+end)
+
+-- 每隔2秒发布一次qos为1的消息到云平台
+sys.taskInit(function()
+    while 1 do
+        sys.wait(2000)
+        if iotcloudc then
+            iotcloudc:publish("$thing/up/property/ZAJCHA24SH/869329069169988", "hello world!", 1) -- 上传数据
+        end
+    end
+end)
+
+-- 用户代码已结束---------------------------------------------
+-- 结尾总是这一句
+sys.run()
+-- sys.run()之后后面不要加任何语句!!!!!

+ 132 - 0
olddemo/iotcloud/tlink/main.lua

@@ -0,0 +1,132 @@
+-- LuaTools需要PROJECT和VERSION这两个信息
+PROJECT = "IOTCLOUD_TLINK"
+VERSION = "1.0.0"
+
+-- sys库是标配
+_G.sys = require("sys")
+--[[特别注意, 使用mqtt库需要下列语句]]
+_G.sysplus = require("sysplus")
+
+local iotcloud = require("iotcloud")
+
+-- TLINK平台设备序列号
+local serialNumber = "XXXXXXXXXXXXXX"
+-- TLINK平台登录账号
+local username = "XXXXXXXXXXXXXX"
+-- TLINK平台登录密码
+local password = "XXXXXXXXXXXXXX"
+
+-- TLINK平台添加的传感器ID
+local sensorsId = "XXXXXXXXXXXXXX"
+
+-- TLINK平台添加的传感器对应的TOPIC,iotcloud库会自动为设备订阅通配主题,用户只需判断报文是否来自该传感器的TOPIC即可
+local tlinkSubTopic = serialNumber .. "/" .. sensorsId
+
+-- 是否使用自动重连
+local autoReconnect = false
+local connectConfig = {
+    keepalive = 60 -- mqtt心跳设置为60秒
+}
+
+-- 手动重连定时器ID
+local reconnectTimerId
+
+if autoReconnect then
+    connectConfig.autoreconn = 3000 -- 云平台断开3秒后自动重连
+end
+
+-- TLINK平台switch类型传感器回传报文
+local function switchSensorPub(cloudc, switch)
+    local tmp = {
+        sensorDatas = {{
+            sensorsId = sensorsId,
+            switcher = switch
+        }}
+    }
+    local payload = json.encode(tmp)
+    log.info("回传的报文", payload)
+    cloudc:publish(serialNumber, payload)
+end
+
+-- 将gpio27设置为输出模式,低电平,gpio27在开发板上控制的是蓝灯
+local ledCtrl = gpio.setup(27, 0)
+
+-- 订阅来自iotcloud库发布的消息主题
+sys.subscribe("iotcloud", function(cloudc, event, data, payload)
+    -- 注意,此处不是协程内,复杂操作发消息给协程内进行处理
+    if event == iotcloud.CONNECT then -- 云平台连上了
+        if not autoReconnect then
+            if reconnectTimerId and sys.timerIsActive(reconnectTimerId) then
+                sys.timerStop(reconnectTimerId)
+            end
+        end
+        log.info("TLINK 云平台连接成功")
+        -- cloudc:subscribe("test") -- 可以自由订阅主题,详情可参考TLINK开发文档
+    elseif event == iotcloud.RECEIVE then
+        log.info("TLINK 发布消息", "topic", data, "payload", payload)
+        -- 判断主题是否来自sensorsId的报文
+        if data == tlinkSubTopic then
+            -- json解析
+            local userPayload, result, err = json.decode(payload)
+            -- 防止异常的措施,防止json解析失败代码运行异常
+            if result == 1 and userPayload and type(userPayload) == "table" then
+                if userPayload.sensorDatas and userPayload.sensorDatas[1] then
+                    local switch = userPayload.sensorDatas[1].switcher
+                    -- 如果开关状态等于1,则打开蓝灯,否则关闭蓝灯
+                    if switch == 1 then
+                        ledCtrl(1)
+                    else
+                        ledCtrl(0)
+                    end
+                    -- 回传报文
+                    switchSensorPub(cloudc, switch)
+                end
+            end
+        end
+    elseif event == iotcloud.OTA then
+        -- 用户处理代码
+        -- TLINK 不会有这条消息上报,可忽略
+    elseif event == iotcloud.DISCONNECT then -- 云平台断开了
+        -- 用户处理代码
+        log.info("云平台连接断开")
+        if not autoReconnect then
+            if reconnectTimerId and sys.timerIsActive(reconnectTimerId) then
+                sys.timerStop(reconnectTimerId)
+            end
+            reconnectTimerId = sys.timerStart(function()
+                cloudc:connect()
+            end, 3000)
+        end
+    end
+end)
+
+sys.taskInit(function()
+    -- 等待联网
+    local result
+    while true do
+        log.info("等待联网")
+        result = sys.waitUntil("IP_READY", 30000)
+        if result then
+            break
+        end
+    end
+    log.info("联网成功")
+
+    -- 创建TLINK云平台实例,在iotcloud TLINK平台中,device_name对应mqtt三元组的clientId,product_id对应mqtt三元组的username,product_secret对应mqtt三元组的password
+    iotcloudc = iotcloud.new(iotcloud.TLINK, {
+        device_name = serialNumber,
+        produt_id = username,
+        product_secret = password
+    }, connectConfig)
+    -- 创建成功,则连接,创建失败,就结束程序
+    if iotcloudc then
+        iotcloudc:connect()
+    else
+        log.error("iotcloud", "创建失败, 请检查参数")
+    end
+end)
+
+-- 用户代码已结束---------------------------------------------
+-- 结尾总是这一句
+sys.run()
+-- sys.run()之后后面不要加任何语句!!!!!

+ 70 - 0
olddemo/iotcloud/tuyaiot/示例1 一机一密/main.lua

@@ -0,0 +1,70 @@
+
+-- LuaTools需要PROJECT和VERSION这两个信息
+PROJECT = "iotclouddemo"
+VERSION = "1.0.0"
+
+-- sys库是标配
+_G.sys = require("sys")
+--[[特别注意, 使用mqtt库需要下列语句]]
+_G.sysplus = require("sysplus")
+
+local iotcloud = require("iotcloud")
+
+-- 统一联网函数
+sys.taskInit(function()
+    local device_id = mcu.unique_id():toHex()
+    -----------------------------
+    if mobile then
+        device_id = mobile.imei()
+    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)
+
+sys.taskInit(function()
+    -- 等待联网
+    local ret, device_id = sys.waitUntil("net_ready")
+
+    --------    以下接入方式根据自己需要修改,相关参数修改为自己的    ---------
+
+    -- -- 涂鸦云 
+    iotcloudc = iotcloud.new(iotcloud.TUYA,{device_name = "xxx",device_secret = "xxx"})
+
+    if iotcloudc then
+        iotcloudc:connect()
+    else
+        log.error("iotcloud", "创建失败, 请检查参数")
+    end
+    
+end)
+
+sys.subscribe("iotcloud", function(cloudc,event,data,payload)
+    -- 注意,此处不是协程内,复杂操作发消息给协程内进行处理
+    if event == iotcloud.CONNECT then -- 云平台联上了
+        print("iotcloud","CONNECT", "云平台连接成功")
+        iotcloudc : subscribe("tylink/${deviceId}/thing/property/set") -- 订阅信息
+        iotcloudc : publish("tylink/${deviceId}/thing/property/report" , '{"data":{"device_status":"999"}}' , 1) -- 上报信息
+    elseif event == iotcloud.RECEIVE then
+        print("iotcloud","topic", data, "payload", payload)
+        -- 用户处理代码
+    elseif event ==  iotcloud.OTA then
+        if data then
+            rtos.reboot()
+        end
+    elseif event == iotcloud.DISCONNECT then -- 云平台断开了
+        -- 用户处理代码
+    end
+end)
+
+
+-- 用户代码已结束---------------------------------------------
+-- 结尾总是这一句
+sys.run()
+-- sys.run()之后后面不要加任何语句!!!!!