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

nodemcu例程,傳感器類

作者:shuxiansheng | 更新時間:2020-03-01 | 瀏覽量:1723

 
-[[
--NodeMCU連接貝殼物聯(lián)程序,作者Why,整理時間2017.09.07
--作品說明:NodeMCU連接到貝殼,并可以接受其控制(主要是開關(guān)預(yù)警功能)。
--打開預(yù)警功能后,如果有人體進入熱釋電紅外傳感器的探測范圍會自動向平臺發(fā)送預(yù)警信息。
--關(guān)閉預(yù)警后則不會觸發(fā)。
--為了方便解釋和查看,整理時添加了很多注釋和空行等,使用時建議刪除
--]]
--設(shè)定與貝殼物聯(lián)相關(guān)的信息,設(shè)備ID、APIKEY、INPUTID、貝殼服務(wù)器信息(ip、port)
DEVICEID =     設(shè)備id
APIKEY =      API秘鑰
INPUTID =     U+用戶ID在個人信息 
host = "121.42.180.30"     貝殼物聯(lián)連接IP
port = 8181                    貝殼物聯(lián)連接端口
--設(shè)定相關(guān)設(shè)備對應(yīng)IO口
Alert = 0--蜂鳴器和強光燈以及NodeMCU板載指示燈
Pir = 1--熱釋電紅外傳感器
LED = 4--NodeMCU板載Wifi指示燈,此處作為預(yù)警功能是否開啟的指示燈
--設(shè)置相關(guān)IO口模式和初始電平
gpio.mode(Alert, gpio.OUTPUT)
gpio.write(Alert, gpio.HIGH)
gpio.mode(Pir, gpio.OUTPUT)
gpio.write(Pir, gpio.LOW)
gpio.mode(LED, gpio.OUTPUT)
gpio.write(LED, gpio.HIGH)
--創(chuàng)建一個TCP連接
cu = net.createConnection(net.TCP)
--按IP和端口連接到貝殼
cu:connect(port, host)
--構(gòu)造認證消息并發(fā)送
ok, s = pcall(cjson.encode, {M="checkin",ID=DEVICEID,K=APIKEY})
cu:send(s.."\n")
--使用鬧鐘函數(shù)每30秒鐘發(fā)送一次認證消息保持設(shè)備在線
tmr.alarm(1, 30000, 1, function()
    cu:send(s.."\n")
end)
--TCP連接接收到消息的回調(diào)函數(shù)及處理
cu:on("receive", function(cu, c)--參數(shù)為發(fā)送者連接和發(fā)送內(nèi)容,課直接利用此連接回復(fù)消息
    r = cjson.decode(c)--解析收到的消息,消息結(jié)構(gòu)和內(nèi)容由貝殼統(tǒng)一構(gòu)造
    if r.M == "say" then--判斷消息類型
        --判斷消息內(nèi)容
        if r.C == "play" then--打開預(yù)警功能
            gpio.write(LED, gpio.LOW)--點亮預(yù)警指示燈
            ok, played = pcall(cjson.encode, {M="say",ID="U000",C="turn on"})--構(gòu)造回復(fù)信息
            cu:send( played.."\n" )--發(fā)送回復(fù)信息
            gpio.mode(Pir,gpio.INT)--設(shè)置熱釋電紅外傳感器連接的IO口為中斷模式
            gpio.trig(Pir, "both", function(level)--為中斷設(shè)置回調(diào)函數(shù)
                if level == gpio.HIGH then--觸發(fā)報警
                    gpio.write(Alert, gpio.LOW)--啟動本地聲光報警
                    ok, warning = pcall (cjson.encode, { M = "say", ID = "D0000", C = "warning" })--構(gòu)造預(yù)警信息
                    cu:send (warning .. "\n")----發(fā)送預(yù)警信息
                elseif level == gpio.LOW then--沒有報警信息
                    gpio.write (Alert, gpio.HIGH)--關(guān)閉本地聲光報警
                end
            end)       
        elseif r.C == "stop" then--關(guān)閉預(yù)警功能
            gpio.write (LED, gpio.HIGH)--熄滅預(yù)警指示燈
            gpio.write (Alert, gpio.HIGH)--關(guān)閉本地聲光報警
            gpio.mode (Pir, gpio.OUTPUT)--設(shè)置熱釋電紅外傳感器連接的IO口為輸出模式,即關(guān)閉其中斷功能
            ok, stoped = pcall (cjson.encode, { M = "say", ID = "U000", C = "turn off" })--構(gòu)造回復(fù)信息
            cu:send (stoped .. "\n")--發(fā)送回復(fù)信息
        end
    end
end)
--TCP連接被斷開的回調(diào)函數(shù)及處理
cu:on('disconnection',function()
    --Do something here what you want to do
end)

評論:共2條

aaronwang 評論于:2020-03-06 18:06:49
謝謝大佬
wkl1940 評論于:2020-03-10 16:31:24
謝謝shuxiansheng,我仿制你的作品,有效.想請教:1.報警,如何通過emaill傳到我手機,2.你的例程中"ID=U000","ID=D000",應(yīng)該如何填寫?煩請你在百忙中指教一下.
返回頂部