У меня есть проблемы со следующим кодом Lua на качестве ESP8266 ...MQTT/ESP8266/NodeMCU/Lua код не публикует
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
код успешно вызывается со следующими ...
-- 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
Использование ESPlorer я вижу следующее ...
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()...
Так что в основном входит sendData(...)
и я вижу, выход из линии ...
print("Attempting client connect...")
... но я никогда не видел протоколирование в m:connect(...)
блоке, такие как ...
print("Connected to MQTT")
... кажется, он просто возвращает немедленно.
Брокер MQTT - это малина Pi, работающая на Mosquitto, и я тестировал ее с помощью приложений на своем телефоне и планшете Android. Я получаю успешную публикацию/подписку между телефоном и планшетом в обоих направлениях.
Я новичок в Lua и понимаю только основы MQTT, и я не понимаю, что случилось с блоком m:connect(...)
, если кто-то может помочь в этом.
UPDATE: PROBLEM SOLVED - Извините, что не вернусь к этой теме раньше. Проблема была просто до версии Mosquitto, над которой я работал на моем RPi (который соответствовал MQTT v3.1). Библиотека MQTT NodeMCU поддерживает MQTT v3.1.1 и НЕ обратная совместимость. В сущности, в моем коде не было очень плохо, хотя я внес некоторые изменения - это было просто несовместимо с версиями MQTT.
Я предполагаю, что ваша попытка подключения не срабатывает, поэтому ничего не происходит. Чего вы ожидаете? – Piglet
Вы решили это, закрыл дело? –
@ MarcelStör: Я добавил обновление/комментарий к концу моего оригинального вопроса, объясняющего причину проблемы. Спасибо за попытку помочь. Я изменил свой код на основе ваших предложений, но мне пришлось «очистить» мой RPi, чтобы заставить загрузить более новую версию Mosquitto, чтобы заставить все работать. – Squonk