乐鑫技术交流
直播中

李丹

7年用户 1344经验值
私信 关注
[问答]

Nodemcu在使用MQTT和dsleep时卡住了的原因?

先生们您好,
我做错了什么?请参阅以下 lua 代码。它有效,但只有几分钟。我测试了各种固件版本和各个分支,但结果大致相同。几分钟后 Nodemcu 挂起。它应该可以用作外部温度计,但由于稳定性而无法使用。   
文件:main.lua
代码:全选wifi.setmode(wifi.STAtiON)
wifi.setphymode(wifi.PHYMODE_N)
wifi.sta.config(\'WIFI_SSID\', \'wifi_passwd\')
wifi.sta.connect()
wifi.sta.setip({ip=\'192.168.2.254\',netmask=\'255.255.255.0\',gateway=\'192.168.2.1\'})
function loop()
if wifi.sta.status() == 5 then
  m = mqtt.Client(\'nodemcu\',120,\'mqtt_user\',\'mqtt_password\')
  m:connect(\'192.168.2.2\', 1883, 0, 1, function(conn)
   tmr.stop(0)
   local status, temp, humi, temp_dec, humi_dec = dht.read(4)
   local temperature = string.format(\"%d.%03d\", math.floor(temp), temp_dec)
   local humidity = string.format(\"%d.%03d\", math.floor(humi), humi_dec)
   local a = {}
   a[\"temperature\"] = temperature;
   a[\"humidity\"] = humidity;
   m:publish(\"/nodemcu/dht22\", cjson.encode(a) ,0,0, function(conn)
    m:close()
    wifi.sta.disconnect()
    node.dsleep(60000000)
   end)
  end)
end
end
tmr.alarm(0, 500, 1, function() loop() end)

更多回帖

发帖
×
20
完善资料,
赚取积分