創作者:︻彬▅▆▇◤ | 更新日期:2017-02-04 | 在線時長:12天
2入6出 控制
PIN 0 板上帶有led燈,用來做收信指示。正常為閃動 亮燈時間為發送到接受到信號的時間 失聯為常亮并延時后重啟模塊
接口1 1k =開 1g=關
接口2 2k =開 2g=關
.....
接口6 6k =開 6g =關
接口7 cx7 =查詢輸入7電位(1為打開0為關閉) 已短接在接口1
接口8 cx8 =查詢輸入8電位(1為打開0為關閉) 已短接在接口2
代碼為kaiguan.lub修改來的 剛入門,放上來交流交流
--定義變量
DEVICEID = "1370"
APIKEY = "bXXXXXX5"
INPUTID = "1XXXXX6"
host = host or "www.eqytg.org"
port = port or 8181
--存活標記
bLive=0
--初始化GPIO列表
OUTList={1,2,3,4,5,6,0}
for i,v in ipairs(OUTList) do
print("GPIO:"..v)
gpio.mode(tonumber(v),gpio.OUTPUT)
print("GPIO:"..v.."OUTPUT")
end
gpio.mode(7,gpio.INPUT)
gpio.mode(8,gpio.INPUT)
gpio.write(0,gpio.LOW)
gpio.write(1,gpio.LOW)
gpio.write(2,gpio.LOW)
gpio.write(3,gpio.LOW)
gpio.write(4,gpio.LOW)
gpio.write(5,gpio.LOW)
gpio.write(6,gpio.LOW)
gpio.write(7,gpio.LOW)
gpio.write(8,gpio.LOW)
--連接服務器(TCP連接)
cu = net.createConnection(net.TCP)
cu:connect(port, host)
--接收處理
cu:on("receive", function(cu, c)
print(c)
r = cjson.decode(c)
--如果存貨標記為1,置為0
if bLive==1 then
if r.M=="isOL" then
gpio.write(0, gpio.HIGH)
bLive=0
end
end
--如果是say代表命令
if r.M == "say" then
gpio.write(0, gpio.LOW)
ok, stoped = pcall(cjson.encode, {M="say",ID=r.ID,C="Y0 turn off!"})
cu:send( stoped.."\n" )
if r.C == "1k" then
gpio.write(1, gpio.HIGH)
ok, played = pcall(cjson.encode, {M="say",ID=r.ID,C="Y1 turn on!"})
cu:send( played.."\n" )
end
if r.C == "1g" then
gpio.write(1, gpio.LOW)
ok, stoped = pcall(cjson.encode, {M="say",ID=r.ID,C="Y1 turn off!"})
cu:send( stoped.."\n" )
end
if r.C == "2k" then
gpio.write(2, gpio.HIGH)
ok, played = pcall(cjson.encode, {M="say",ID=r.ID,C="Y2 turn on!"})
cu:send( played.."\n" )
end
if r.C == "2g" then
gpio.write(2, gpio.LOW)
ok, stoped = pcall(cjson.encode, {M="say",ID=r.ID,C="Y2 turn off!"})
cu:send( stoped.."\n" )
end
if r.C == "3k" then
gpio.write(3, gpio.HIGH)
ok, played = pcall(cjson.encode, {M="say",ID=r.ID,C="Y3 turn on!"})
cu:send( played.."\n" )
end
if r.C == "3g" then
gpio.write(3, gpio.LOW)
ok, stoped = pcall(cjson.encode, {M="say",ID=r.ID,C="Y3 turn off!"})
cu:send( stoped.."\n" )
end
if r.C == "4k" then
gpio.write(LED4, gpio.HIGH)
ok, played = pcall(cjson.encode, {M="say",ID=r.ID,C="Y4 turn on!"})
cu:send( played.."\n" )
end
if r.C == "4g" then
gpio.write(4, gpio.LOW)
ok, stoped = pcall(cjson.encode, {M="say",ID=r.ID,C="Y4 turn off!"})
cu:send( stoped.."\n" )
end
if r.C == "5k" then
gpio.write(5, gpio.HIGH)
ok, played = pcall(cjson.encode, {M="say",ID=r.ID,C="Y5 turn on!"})
cu:send( played.."\n" )
end
if r.C == "5g" then
gpio.write(5, gpio.LOW)
ok, stoped = pcall(cjson.encode, {M="say",ID=r.ID,C="Y5 turn off!"})
cu:send( stoped.."\n" )
end
if r.C == "6k" then
gpio.write(6, gpio.HIGH)
ok, played = pcall(cjson.encode, {M="say",ID=r.ID,C="Y6 turn on!"})
cu:send( played.."\n" )
end
if r.C == "6g" then
gpio.write(6, gpio.LOW)
ok, stoped = pcall(cjson.encode, {M="say",ID=r.ID,C="Y6 turn off!"})
cu:send( stoped.."\n" )
end
if r.C == "cx7" then
ok, stoped = pcall(cjson.encode, {M="say",ID=r.ID,C=gpio.read(7)})
cu:send( stoped.."\n" )
end
if r.C == "cx8" then
ok, stoped = pcall(cjson.encode, {M="say",ID=r.ID,C=gpio.read(8)})
cu:send( stoped.."\n" )
end
end
--收到連接正常,發送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
--定時心跳,防止掉線
tmr.alarm(1, 10000, 1, function()
--如果標記為1,表示未收到上次的心跳返回,重啟
if bLive==1 then
node.restart()
end
ok, ticket = pcall(cjson.encode, {M="isOL",ID="D"..DEVICEID})
gpio.write(0, gpio.LOW)
print(ticket)
cu:send(ticket.."\n" )
--發送后將標記置為1
bLive=1
end)
end
end)