nodemcu를 사용하여 사물인터넷 시리즈를 돌려보기(7): notemcu는 mqtt 프로토콜'구독 기능'을 통해 onenet 장치의'스위치'를 실현한다

15458 단어 nodemcu
1. 구독 기능 실현: mqtt:subscribe(topic,qos[,function(client)])2. 트리거 기능 실현: mqtt:on(event,function(client[,topic[,message])) 매개 변수: 이벤트는'connect','suback','unsuback','puback','message','overflow'또는'offline'function(client[,topic[,message]) 리셋 함수이다.첫 번째 매개 변수는 클라이언트입니다.이벤트가'메시지'라면 두 번째와 세 번째 매개 변수 테마와 메시지 (문자열) 를 받습니다.
gpio.mode(2,gpio.OUTPUT)
wifi.setmode(wifi.STATION)
cfg = {}
cfg.ssid = "kyn"
cfg.pwd = "20160118"
wifi.sta.config(cfg)
wifi.sta.connect()

DeviceId = "587667371"
ProductId = "325428"
AuthoInfo = "test"
host = "183.230.40.39"
port = 6002

url = 'http://api.heclouds.com/devices/'..DeviceId..'/datapoints?type=3'
headers = 'api-key:BO6XuBiKw07JRXakBNvn4JKX7MI=\r
'
dht_pin = 5 --led led_pin = 3 gpio.mode(dht_pin,gpio.INPUT) gpio.mode(led_pin,gpio.OUTPUT) timer = tmr.create() function con() if wifi.sta.getip() == nil then print("coneting........") else timer:stop() print("success!~") gpio.write(2,gpio.HIGH) print(wifi.sta.getip()) client_hum = mqtt.Client(DeviceId,120,ProductId,AuthoInfo) client_hum:connect(host,port,0,function(client) print("connect success!") end) function h() status,temp,humi,temp_dec, humi_dec = dht.read11(dht_pin) print("DHT Temperature:"..temp..";".."Humidity:"..humi) -- : client_hum:subscribe("$dp",0, function(client) print("subscribe success") end) -- onenet“ ” on/off client_hum:on("message", function(client,topic,message) print(message) if(message == "1") then gpio.write(led_pin,gpio.HIGH) else gpio.write(led_pin,gpio.LOW) end end) -- http.post(url, headers, '{"DHT Temperature":'..temp..',"Humidity":'..humi..'}', function(code,date) -- if(code < 0) then -- print("HTTP request failed") -- else -- print(code,date) -- end -- end) weather = {} weather.Temperature = temp weather.Humidity = humi state,weather_message = pcall(sjson.encode,weather) --mqtt:publish(topic, payload, qos, retain[, function(client)]) payload = string.char(3,0,string.len(weather_message))..weather_message client_hum:publish("$dp", payload, 0, 0, function(client) print("upload success!~") end) end tmr.create():alarm(1500,tmr.ALARM_AUTO,h) end end timer:alarm(1000,tmr.ALARM_AUTO,con)

좋은 웹페이지 즐겨찾기