Ich habe ein Problem mit dem folgenden Lua Code auf einem Esp8266 ...MQTT/Esp8266/NodeMCU/Lua Code nicht veröffentlichen
function sendData(humidity,temperature)
-- Setup MQTT client and events
print("sendData() entered")
print("Setting up mqtt.Client...")
m = mqtt.Client(mqtt_client_id, 120, username, password)
print("Attempting client connect...")
m:connect(mqtt_broker_ip , mqtt_broker_port, 0, function(conn)
print("Connected to MQTT")
print(" IP: " .. mqtt_broker_ip)
print(" Port: " .. mqtt_broker_port)
print(" Client ID: " .. mqtt_client_id)
print(" Username: " .. mqtt_username)
payload = "Temp: " .. temperature .. " Hmdy: " .. humidity
m:publish("pt/env",payload, 0, 0, function(conn)
print("Going to deep sleep for " .. (DSLEEPTIME/1000) .. " seconds")
node.dsleep(DSLEEPTIME*1000,4)
end)
end)
end
Der Code erfolgreich mit dem folgenden ...
aufgerufen wird-- Connect to network
wifi.setmode(wifi.STATION)
wifi.setphymode(wifi_signal_mode)
wifi.sta.config(wifi_SSID, wifi_password)
wifi.sta.connect()
print("Attempting to connect...")
ip = wifi.sta.getip()
if ip ~= nil then
print("Got IP: " .. ip)
print("About to call sendData()...")
sendData(humidity, temperature)
print("Returned from sendData()...")
end
Mit esplorer ich sehe die folgenden ...
Attempting to connect...
Attempting to connect...
Attempting to connect...
Attempting to connect...
Attempting to connect...
Attempting to connect...
Got IP: 192.168.0.39
About to call sendData()...
sendData() entered
Setting up mqtt.Client...
Attempting client connect...
Returned from sendData()...
Also im Grunde geht es sendData(...)
und ich sehe, die Ausgabe von der Linie ...
print("Attempting client connect...")
... aber ich habe nie die Protokollierung im m:connect(...)
Block sehen wie ...
print("Connected to MQTT")
... es scheint, es einfach sofort zurück.
Der MQTT-Broker ist ein Raspberry Pi mit Mosquitto und ich habe es mit Apps auf meinem Android-Handy und Tablet getestet. Ich erhalte ein erfolgreiches Publishing/Abonnement zwischen Telefon und Tablet in beiden Richtungen.
Ich bin ein Lua Novize und verstehe nur die Grundlagen von MQTT und ich bin ratlos, was mit dem m:connect(...)
Block falsch ist, wenn jemand helfen kann, würde es geschätzt werden.
UPDATE: PROBLEM gelöst - Entschuldigung dafür, nicht früher zu diesem Thread zurück zu kommen. Das Problem war einfach auf die Version von Mosquitto zurückzuführen, die ich auf meinem RPi ausgeführt hatte (was MQTT v3.1 entsprach). Die NodeMCU MQTT-Bibliothek unterstützt MQTT v3.1.1 und ist NICHT abwärtskompatibel. Im Wesentlichen war mein Code nicht sehr falsch, obwohl ich einige Änderungen vorgenommen habe - es war einfach auf MQTT-Versionen inkompatibel.
Ich denke, Ihr Verbindungsversuch schlägt fehl, so dass nichts passiert. Was erwartest du zu passieren? – Piglet
Haben Sie es gelöst, Fall geschlossen? –
@ MarcelStör: Ich habe ein Update/Kommentar am Ende meiner ursprünglichen Frage hinzugefügt, die die Ursache des Problems erklärt. Danke, dass Sie versucht haben zu helfen - ich habe meinen Code basierend auf Ihren Vorschlägen geändert, aber ich musste meinen RPi 'säubern', um den Download einer neueren Version von Mosquitto zu erzwingen, damit die Dinge funktionieren. – Squonk