国内综合精彩aⅤ无码不卡_日本少妇做爰全过程_欧美性爱在线播放免费_午夜?V日韩一区二区_免费a级毛片无码免费播放_成在人线av无码喷水_亚洲精品网站色视频_国产婷婷精品成人_老师撩起裙子让我桶的视频_秋霞影院国产

NodeMCU斷線檢測(cè)

作者:z494627 | 更新時(shí)間:2016-05-20 | 瀏覽量:3769

代碼源自例子代碼中的遠(yuǎn)程開(kāi)關(guān)代碼,可以處理多個(gè)gpio,并且檢測(cè)兩次心跳無(wú)返回會(huì)重啟設(shè)備

--定義變量
DEVICEID = "ID"
APIKEY = "Key"
INPUTID = "255"
host = host or "m.placeboworld.cn"
port = port or 8181
--存活標(biāo)記
bLive=0

--初始化GPIO列表
LED=4
LEDList={1,2,3,4,5,6,7,8,9}
for i,v in ipairs(LEDList) do
	print("GPIO:"..v)
	gpio.mode(tonumber(v),gpio.OUTPUT)
	print("GPIO:"..v.."OUTPUT")	 
end

--連接服務(wù)器(TCP連接)
cu = net.createConnection(net.TCP)
cu:connect(port, host)
--接收處理
cu:on("receive", function(cu, c)
  print(c)  
  r = cjson.decode(c)
  --如果存貨標(biāo)記為1,置為0
  if bLive==1 then
	if r.M=="isOL" then
		bLive=0	
	end
  end
  --如果是say代表命令
  if r.M == "say" then
	if (string.sub(r.C,1,3)=="LED") then
		--找到需要打開(kāi)的LED號(hào)碼
		pos=string.sub(r.C,4,4)		 
		--獲取對(duì)應(yīng)的GPIO號(hào)(見(jiàn)nodemcu對(duì)照)
		LED=(LEDList[tonumber(pos)])		 
		--ON--發(fā)送高電平
		if (string.sub(r.C,5,6)=="ON") then
			gpio.write(LED, gpio.HIGH)
			ok, played = pcall(cjson.encode, {M="say",ID=r.ID,C=string.sub(r.C,1,4).." turn on!"})
		else
			--OFF 發(fā)送低電平
			gpio.write(LED, gpio.LOW)
			ok, played = pcall(cjson.encode, {M="say",ID=r.ID,C=string.sub(r.C,1,4).." turn off!"})
		end
		--反饋
		print(played);
		cu:send( played.."\n")
	end
 end
 --收到連接正常,發(fā)送checkin
 if r.M == "WELCOME TO BIGIOT" then
	ok, s = pcall(cjson.encode, {M="checkin",ID=DEVICEID,K=APIKEY})
	if ok then
	  print(s)
	else
	  print("failed to encode!")
	end
	cu:send( s.."\n" )
	bLive=0
	--定時(shí)心跳,防止掉線
	tmr.alarm(1, 40000, 1, function()
		--如果標(biāo)記為1,表示未收到上次的心跳返回,重啟
		if bLive==1 then
			node.restart()
		end
		ok, ticket = pcall(cjson.encode, {M="isOL",ID="D"..DEVICEID})
		print(ticket)
		cu:send(ticket.."\n" )
		--發(fā)送后將標(biāo)記置為1
		bLive=1		 
	end)
 end
end)



評(píng)論:共2條

TR28 評(píng)論于:2019-12-01 13:24:50
寫(xiě)得很好!
njzc0232 評(píng)論于:2021-07-06 14:47:58
驅(qū)動(dòng)不了繼電器
返回頂部