init.lua文件:
RELAY_Pin = 1
gpio.mode(RELAY_Pin, gpio.OUTPUT)
gpio.write(RELAY_Pin,0)
tmr.alarm(0,4000,0,function()
dofile("mqtt.lua")
end)
init.lua文件结束
mqtt.lua文件:
MqttServerIP="video.jztx.com"
MqttServerPort=1883
MqttUserName="admin"
MqttUserPassword="public"
MqttLinkStat = 0
UartReceData = ""
UartReceCnt = 0
UartReceTempCnt = 0
wifi.setmode(wifi.STATION)
local stacfg={
ssid="bobo",
pwd="18688207700"
}
wifi.sta.config(stacfg)
wifi.sta.autoconnect(1)
Clientid = wifi.sta.getmac()
ClientSubscribeTopic = "/bobo/sub"
ClientPublishTopic = "/bobo/pub"
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 == "on") then
-- gpio.write(RELAY_Pin,1)
-- if gpio.read(RELAY_Pin)==1 then
-- if MqttClient ~= nil then
gpio.mode(8,gpio.OUTPUT)
gpio.write(8,gpio.LOW)
MqttClient:publish(ClientPublishTopic,"ON-RELAY",1,1,function(client) end)
-- end
-- end
end
--
if(data == "off") then
-- gpio.write(RELAY_Pin,0)
-- if gpio.read(RELAY_Pin)==0 then
-- if MqttClient ~= nil then
gpio.mode(8,gpio.OUTPUT)
gpio.write(8,gpio.HIGH)
MqttClient:publish(ClientPublishTopic,"OFF-RELAY",1,1,function(client) end)
-- 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)
模块通过串口发送数据
PC客户端发送”open”开继电器
PC客户端发送”close”关继电器