首页 > 软件学院 > 物联网 > 乐鑫

通过基于 NodeMCU (ESP8266)与EMQ通信远程控制设备。

钱平海乐鑫 2020-09-01 22:30:34
通过基于 NodeMCU (ESP8266) 固件使用.lua文件连接至 MQTT 云服务
本示例将基于 ESP8266 的 NodeMCU,使用.lua文件链接EMQ服务器。
1,创建init.lua文件,文件代码包含配置网络连接路由器,配置私有EMQ服务器IP或EMQ域名,配置服务器端口号,订阅主题路径。



创建init.lua,
configwifissid = "Xiaomi_TTWL";
configwifipwd="13266866226";
MqttUserString = "wwwpcbwang";
MqttPwdString = "123456"; 
MqttIPString = "106.53.37.36";
MqttPort = 1883;

clientid = wifi.sta.getmac()
SubscribeTopic = "/pub"
PublishTopic = "/sub"


wifi.setmode(wifi.STATIONAP)
apcfg={}
apcfg.ssid=configwifissid
apcfg.pwd=configwifipwd
wifi.sta.config(apcfg)
print("dofile init.lua")

tmr.alarm(0, 3000, 0, function()
   dofile("mqtt.lua");
   print("dofile mqtt.lua")
end)


创建mqtt.lua,配置MQTT端,设置设备服务器和客户端,本操作是IO7实际是乐鑫芯片GPIO13脚,客户端输入1,2进行高低电平输出,控制LED或者开关。
Mymqtt = mqtt.Client(clientid, 120,MqttUserString, MqttPwdString);

tmr.alarm(3, 1000, 1, function()
    Mymqtt:connect(MqttIPString, MqttPort, 0,ConnectSuccess,ConnectFailed)
end)

function ConnectSuccess(client)
     client:subscribe(SubscribeTopic, 0, subscribeSuccess)
     print("connected")
     mqttClient = client;
     tmr.stop(3);
     mqttConnectedFlage = 1;
end
function ConnectFailed(client,reason)
   mqttConnectedFlage = 0;
   print("failed reason: " .. reason)
   tmr.start(3)
end
function subscribeSuccess(client)
    print("subscribe success")

pin = 7
gpio.mode(pin, gpio.OUTPUT)
gpio.write(pin, gpio.LOW)  -- LED Off
end
Mymqtt:on("message", function(client, topic, data) 
    if data == "2" then
       gpio.write(7,gpio.HIGH)
       print("I am off关") 
    elseif data == "1"  then
      gpio.write(7,gpio.LOW)    
      print("I am off开") 
    mqttClient:publish(PublishTopic,10086, 0, 0, function(client)  
    end)   
    end
end)




客户端发送1串口打印信息,GPI0为低电平,LED灯为灭,当输入2为开通时打印信息。
版权声明:

本文内容及配图由入驻作者原创撰写或转载。如有内容图片侵权或者其他问题,请联系本站作侵删。侵权投诉

留言与评论(共有 0 条评论)
   
验证码:

七天PCB网

http://www.pcb.wang/

电子电路 | 电子硬件PCB工程

Powered By 七天PCB网 电子电路技术爱好者

使用手机软件扫描微信二维码

关注我们可获取更多电子知识

感谢各位对七天PCB网的支持