天天看點

nodeMCU-esp8266 連接配接阿裡雲物聯網

折磨了三天了,終于将裝置連接配接上阿裡雲平台了

1 刷固件庫

基本上上一篇部落格有講到的,但是官方還是不定期的會更新固件庫,導緻很多API接口會發生變化,導緻程式也需要更新,是以就将目前的固件庫上傳上來了esp8266wifi,iic,mqqt,adc固件庫

2 連接配接阿裡雲

這邊主要參考的是 【NodeMCU_LUA系列】NodeMCU連接配接阿裡雲這篇文章

需要修改的地方如下

nodeMCU-esp8266 連接配接阿裡雲物聯網
nodeMCU-esp8266 連接配接阿裡雲物聯網
wifitab={}
wifitab.ssid = "2.4G-603"      -- 自己的wifi名
wifitab.pwd = "CX071500"    --wifi密碼
wifi.setmode(wifi.STATION)
wifi.sta.config(wifitab)
wifi.sta.connect()

timer1 = tmr.create()
timer2 = tmr.create()


ProductKey = "a1ti9YS1tqQ"        --阿裡雲三件值
DeviceName = "esp8266"
DeviceSecret = "kXlF1pZHdAUn1K2ixotJQXBsoy5l5h3y"
RegionId = "cn-shanghai"
ESP8266ClientId = 20200510

SubTopic="/a1ti9YS1tqQ/esp8266/user/get"             --需要下發和訂閱的
Pubtopic="/sys/a1ti9YS1tqQ/esp8266/thing/event/property/post"

BrokerAddress = ProductKey..".iot-as-mqtt."..RegionId..".aliyuncs.com"
BrokerPort = 1883

HmacData = "clientId"..ESP8266ClientId.."deviceName"..DeviceName.."productKey"..ProductKey
MQTTClientId = ESP8266ClientId.."|securemode=3,signmethod=hmacsha1|"
MQTTUserName = DeviceName.."&"..ProductKey
MQTTPassword = crypto.toHex(crypto.hmac("sha1",HmacData,DeviceSecret))


function ConnectWifi()
    if wifi.sta.getip() == nil then
        print("Connecting...")
    else
        timer1:stop()
        print("Connect AP success")
        print(wifi.sta.getip())
        MQTTClient = mqtt.Client(MQTTClientId, 120, MQTTUserName, MQTTPassword, false)
        MQTTClient:connect(BrokerAddress, BrokerPort, 0, function(client)
        
            timer1:stop()
            print("MQTT connect success")

            MQTTClient:subscribe(SubTopic,0,function(conm)
                 print("MQTT subscribe success")
                 MQTTOn()
            end)

        end,

        function(client,reason)
            print("MQTT connect fail:"..reason)
        end)
    end
end

function MQTTOn()
    print("MQTT listen...")
    MQTTClient:on("message",function(client,topic,data)
        print("\n")
        print(topic..":")
        print(data)
        if data == "1" then
            MQTTPublish()
        end
    end)
end

function MQTTPublish()
    data = {}
    data.temp = 88.8
    data.humi = 88.8
    ok,json = pcall(sjson.encode, {params=data})
    MQTTClient:publish(Pubtopic, json, 0, 0, function(client)
        print("Publish weather success")
    end)
end

timer1:alarm(500, tmr.ALARM_AUTO, ConnectWifi)


           

繼續閱讀