ディアーズ、 に応答していません。 ADC、enduser_setup、ファイル、GPIO、HTTP、MQTT、ネット、ノード、OW、PWM、TMR、UART、無線LANキープアライブタイマーは、私がnodemcu上esp8266ビルドにMQTTを使用しようとしています
バージョン:によって供給私は現在、カスタムビルドを使用(https://nodemcu-build.com/index.php)
モジュールを使用していますLuaははWH、)だから私は(connect_to_mqtt_brokerを呼び出しています、プログラムの初期化時にSDK 1.5.1(e67da894)
function connect_to_mqtt_broker()
print("Connecting to broker...")
m:connect(BROKER, PORT, 0, 1, function(client)
print("connected")
print("["..tmr.time().."(s)] - Client connected to broker: "..BROKER)
m:subscribe(SUB_TOPIC,0, function(conn)
print("Subscribed to "..SUB_TOPIC.." topic")
led(0,204,0,150)
end)
m:publish(PUB_TOPIC,"Hello from: "..node.chipid()..RESTART_REASON,0,0, function(conn)
print("sent")
end)
end,
function(client, reason)
print("failed reason: "..reason)
end)
end
---MQTT client---
print("--------------> Create mqtt clinet")
--set up MQTT client
-- init mqtt client with keepalive timer 120sec
m = mqtt.Client("ESP"..node.chipid(), KEEP_ALIVE_TMR, USER, PASSWORD)
m:lwt(PUB_TOPIC, "offline", 0, 0)
m:on("offline", function(conn)
print("["..tmr.time().."(s)] - Mqtt client gone offline")
end)
m:on("message", function(conn, topic, data)
--receive_data(data, topic)
print("Data received: "..data)
led(200,50,50,30)
receive_data(data, topic)
led(0,204,0,150)
end)
に5.1.4私は完璧に働いており、私は購読してトピックに公開することができます。
問題は、キープアライブタイマーが正しくないということです。例をあげて説明しましょう。私はKEEP_ALIVE_TMR = 120sを設定し、esp8266がmqttブローカに正常に接続された後、私はルータ上のwifiを無効にして秒数をカウントし始めます。 KEEP_ALIVE_TMRによるとオフラインイベント:
m:on("offline", function(conn)
print("["..tmr.time().."(s)] - Mqtt client gone offline")
end)
は私が無効のWiFiを持った瞬間から、正確に120秒を発射する必要がありますが、いくつかの未知の理由のために、これは発生しません。通常、イベントは約10〜15分後に発生します。 私はこの遅れの理由を理解するのに苦労しています。 この奇妙なことが起こる理由はありますか?
は、以下の答えをしようとしましたか? – cagdas