arduino-mqtt
arduino-mqtt copied to clipboard
Nothing ever received
I'm using an Arduino nano with an ESP8266 for wifi which I have working for other WiFi projects and I'm trying to subscribe to my mqtt broker on Debian 12 and receive messages.
I never receive anything.
#include <SoftwareSerial.h>
#include <WiFiEsp.h>
#include <MQTT.h> // MQTT by Joel Gaehwiler
// ESP8266 wifi board things.
#define RX 6 // blue
#define TX 7 // black
SoftwareSerial Esp8266(RX, TX);
const char AP[] = "ap";
const char PASS[] = "secret";
WiFiEspClient wifi_client;
// mqtt things.
MQTTClient mqtt_client;
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);
Esp8266.begin(9600);
WiFi.init(&Esp8266);
// Check for the presence of the shield.
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi shield not present");
while (true);
}
mqtt_client.begin("192.168.0.113", wifi_client);
mqtt_client.onMessage(messageReceived);
reconnect();
}
void loop() {
if( !mqtt_client.connected()) { reconnect(); }
mqtt_client.loop();
}
void reconnect() {
while ( WiFi.status() != WL_CONNECTED) {
Serial.print("Attempting to connect to WPA SSID: ");
Serial.println(AP);
WiFi.begin(AP, PASS);
}
Serial.println("WIFI connected.");
while (!mqtt_client.connect("arduino")) {
Serial.print(".");
delay(1000);
}
Serial.println("MQTT connected.");
mqtt_client.subscribe("zigbee2mqtt/Home/BoilerFlow");
}
void messageReceived(String &topic, String &payload) {
Serial.println("mqtt_client.messageReceived: " + topic + " - " + payload);
}
Any ideas?
(PubSubClient doesn't work either and is dead and ArduinoMqttClient won't even connect to the broker; this is my third attempt.)
From a quick glance I can only imagine that the data is published to "/zigbe2mqtt..." and the subscription is on "zigbee2mqtt..." (note the missing slash at the beginning)? In MQTT the slash at the beginning matters on most brokers.
Leading slash makes no difference. Same problem on ESP32: nothing ever received.
When experimenting with MQTT I like to have a Processing program also working with MQTT. Here is a link to something I wrote to do so for a bunch of ESP32 assemblies.
https://github.com/nk25719/PMD___aka-KiCad-esp32-6leds-2switches-1pj-circuit-/tree/main/FactoryTest/FT_MQTT/FT_processingPMD_MQTT
You will have to code in your topic to publish and subscribe.
You look in the console window of the IDE for messsages.
Make the Processing draw window selected and then press digits to send a simple MQTT message.
Hope this helps.