mqtt.lua文件: 实现连接路由器去连接mqtt服务器实现控制
MqttServerIP="192.168.0.105"
MqttServerPort=1883
MqttUserName="admin"
MqttUserPassword="public"
MqttLinkStat = 0
UartReceData = ""
UartReceCnt = 0
UartReceTempCnt = 0
wifi.setmode(wifi.STATION)
local stacfg={
ssid="qqqqq",
pwd="11223344"
}
wifi.sta.config(stacfg)
wifi.sta.autoconnect(1)
Clientid = wifi.sta.getmac()
ClientSubscribeTopic = "AAA"
ClientPublishTopic = "111"
MqttClient=mqtt.Client(Clientid,3,MqttUserName,MqttUserPassword)
MqttClient:lwt(ClientPublishTopic,"offline",1,1)
local function ConnectSuccess(client)
print("MqttServer connect sucess")
client:subscribe(ClientSubscribeTopic,0,function(client)print("subscribe sucess")end)
MqttLinkStat = 1
tmr.stop(3)
end
local function ConnectFaiLED(client, reason)
print("MqttServer connect fail"..reason)
MqttLinkStat = 0
tmr.start(3)
end
tmr.alarm(3, 2000, 1, function()
MqttClient:connect(MqttServerIP, MqttServerPort, 0,ConnectSuccess,ConnectFailed)
end)
MqttClient:on("offline", function(client, topic, data) tmr.start(3) end)
MqttClient:on("message", function(client, topic, data)
if data == "open" then
gpio.write(RELAY_Pin,1)
if gpio.read(RELAY_Pin)==1 then
if MqttClient ~= nil then
MqttClient:publish(ClientPublishTopic,"ON-RELAY",1,1,function(client) end)
end
end
end
if data == "close" then
gpio.write(RELAY_Pin,0)
if gpio.read(RELAY_Pin)==0 then
if MqttClient ~= nil then
MqttClient:publish(ClientPublishTopic,"OFF-RELAY",1,1,function(client) end)
end
end
End
uart.write(0,data)
end)
tmr.alarm(2,10,1,function()
if UartReceCnt ~= 0 then
if UartReceTempCnt == UartReceCnt then
UartReceTempCnt = 0
UartReceCnt = 0
--send to-Mqtt
if MqttClient ~= nil then
MqttClient:publish(ClientPublishTopic,UartReceData,1,1,function(client) end)
end
else
UartReceTempCnt = UartReceCnt
end
end
end)
uart.on("data",0,function(data)
UartReceData = UartReceData..data
UartReceCnt = UartReceCnt + 1
end,0)
printip = 0
wifi.eventmon.register(wifi.eventmon.STA_DISCONNECTED, function(T)
printip = 0
end)
wifi.eventmon.register(wifi.eventmon.STA_GOT_IP, function(T)
if printip == 0 then
print("+IP "..T.IP)
end
printip = 1
end)
mqtt.lua文件结束