NEWS
ESP8266 keine Verbindung zum MQTT mit Arduino Programm
-
Hallo zusammen,
bin neu hier im Forum, ich heiße Marco und komme aus der Nähe von Köln.
Bin gerade seid einem Monat mit dem ioBroker dran, und wollte mir mit mehreren ESP8266´s die Temperatur und Luftfeuchtigkeit von den verschiedenen Räumen messen und über die VIS anzeigen lassen.Bin schon seid fast 2 Wochen am probieren mir die Daten vom ESP zum MQTT zu senden, aber irgendwie klappt das nicht. Da ich die ESP´s mit einer 18650 Batterie jeweils laufen lassen will und diese dann nach der Messeung für 10 min in den DeppSleep sollen, kann ich hier nicht mit Tasmota probieren.
Bekomme immer die Ausgabe über den Seriellen-Monitor:
Attempting MQTT connection...failed, rc=-2 try again in 5 secondsIch hab schon einige Codes aus dem Netz probiert, aber immer die selbe Fehlermeldung. Denke mal das das am ioBroker-Adapter mqtt.0 liegen müsste. Kann mir hierbei jemand helfen
Hier mein Arduino-Code:
#include <ESP8266WiFi.h> #include <PubSubClient.h> #include <DHT.h> #define wifi_ssid "xxxxxxx" #define wifi_password "xxxxxxxx" #define mqtt_server "192.168.178.37" #define mqtt_user "" #define mqtt_password "" #define humidity_topic "TempBad/Humidity" #define temperature_topic "TempBad/Temperature" #define DHTTYPE DHT11 #define DHTPIN 4 #define TIMEFRAME 60000 DHT dht(DHTPIN, DHTTYPE); WiFiClient espClient; PubSubClient client(espClient); float temp = 0.0; float hum = 0.0; bool status; void setup() { Serial.begin(9600); dht.begin(); //DHT11 Sensor starten setup_wifi(); client.setServer(mqtt_server, 1883); if (!client.connected()) { reconnect(); } client.loop(); delay(3000); temp=dht.readTemperature(); hum=dht.readHumidity(); Serial.println(temp); client.publish(temperature_topic, String(temp).c_str(), true); Serial.println(hum); client.publish(humidity_topic, String(hum).c_str(), true); Serial.println("Going into deep sleep"); //ESP.deepSleep(TIMEFRAME); } void loop() { } void setup_wifi() { delay(10); Serial.println(); Serial.print("Connecting to "); Serial.println(wifi_ssid); WiFi.begin(wifi_ssid, wifi_password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); WiFi.hostname("TempBad ESP8266"); } void reconnect() { while (!client.connected()) { Serial.print("Attempting MQTT connection..."); if (client.connect("nodemcu")) { Serial.println("connected"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); delay(5000); } } }
Mod-Edit: Thema von "off Topic" nach "ioBroker Allgemein" verschoben!
-
@Marco71 sagte in ESP8266 keine Verbindung zum MQTT mit Arduino Programm:
192.168.178.37
Ich hoffe mal das ist deine IP-Adresse des ioBrokers?
Hast du da den mqtt-Adapter oder den mqtt-client-Adapter installiert.
welchen Port?
ggf. etwas was den selben Port nutzt? -
Hi,
Ja die Adresse des ioBrokers ist richtig, ich habe den MQTT Broker/Client installiert, als Typ Client/subscriber und auf dem Port 1883 ohne Name und Passwort. den selben Port hat nur der Sonoff-Adapter
-
@Marco71 sagte in ESP8266 keine Verbindung zum MQTT mit Arduino Programm:
den selben Port hat nur der Sonoff-Adapter
Das reicht. Dann geht beides nicht mehr
-
Aber wenn ich dem MQTT nen anderen Port gebe wird er nicht mehr grün angezeigt, ich dachte das wäre richtig so...
Also müsse ich beim Sonoff und MQTT verschiedene ports haben, ich dachte die würden zusammenarbeiten -
Aber die Sonoff´s haben trotzdem noch funktioniert
-
@Marco71 said in ESP8266 keine Verbindung zum MQTT mit Arduino Programm:
Da ich die ESP´s mit einer 18650 Batterie jeweils laufen lassen will und diese dann nach der Messeung für 10 min in den DeppSleep sollen, kann ich hier nicht mit Tasmota probieren.
Das funktioniert aber mit Tasmota (glaube seit 7.x) auch problemlos!!
-
Die Funktion hab ich dort nicht gefunden.
-
@Marco71 sagte in ESP8266 keine Verbindung zum MQTT mit Arduino Programm:
wird er nicht mehr grün angezeigt,
Der wird erst grün, wenn sich ein Gerät verbindet.
Das kann auch ein sonoff sein -
@Marco71 said in ESP8266 keine Verbindung zum MQTT mit Arduino Programm:
Die Funktion hab ich dort nicht gefunden.
Schau mal da: https://github.com/arendst/Tasmota/wiki/DeepSleep
-
Ah ok,
hab jetzt mal im Code den Port auf 1884 sowie im Adapter von MQTT geändert, bekomme immer noch die selbe Fehlermeldung -
@Marco71
Dann bleiben noch die MQTT Credentials als Möglichkeit
sind die korrekt?sowie die WLAN Zugangsdaten.
ist der ESP am Router im WLAN zu sehen? -
@Einstein67
so wie ich das jetzt gelesen habe muss man den Build neu kompilieren und noch eine Programmzeile hinzufügen für den DeepSleep....
Hast du da irgend eine Adresse wo das genau beschrieben wird -
@Homoran
Was meinst du mit MQTT Credentials.
Laut Serial-Monitor ist der ESP Verbunden. Er gibt mir auch die IP-Adresse aus -
@Marco71 sagte in ESP8266 keine Verbindung zum MQTT mit Arduino Programm:
Was meinst du mit MQTT Credentials.
@Marco71 sagte in ESP8266 keine Verbindung zum MQTT mit Arduino Programm:
#define mqtt_user ""
#define mqtt_password ""@Marco71 sagte in ESP8266 keine Verbindung zum MQTT mit Arduino Programm:
Laut Serial-Monitor ist der ESP Verbunden.
mit dem richtigen Netz???
-
Ich hab jetzt nochmal deb ESP neu beschrieben, habe die Eingaben neu gemacht (ssid & passwort...).
Werde jetzt mal den Raspberry neu starten und die Fritzbox, melde mich dann später oder Morgen, da ich jetzt noch Besuch bekomme. Danke schon mal bis jetzt für die Hilfe... -
@Marco71
Da ich auch ESP's einsetzen möchte bin ich auf diesen Beitrag gestossen. In dem Script habe ich in der reconnect-Routine die Zeile "if (client.connect("nodemcu")) " durch den Eintrag "if (client.connect("ESP8266Client", mqtt_user, mqtt_password)" ersetzt. Danach wurde die Verbindung sofort aufgebaut.
Mich würde noch interessieren wie der Tiefschlafmodus funktioniert. Falls möglich stelle mal ein Schaltbild rein. -
@Richome said in ESP8266 keine Verbindung zum MQTT mit Arduino Programm:
@Marco71
Da ich auch ESP's einsetzen möchte bin ich auf diesen Beitrag gestossen. In dem Script habe ich in der reconnect-Routine die Zeile "if (client.connect("nodemcu")) " durch den Eintrag "if (client.connect("ESP8266Client", mqtt_user, mqtt_password)" ersetzt. Danach wurde die Verbindung sofort aufgebaut.
Mich würde noch interessieren wie der Tiefschlafmodus funktioniert. Falls möglich stelle mal ein Schaltbild rein.Und wenn du kein Passwort verwendest, sollte es "if (client.connect("ESP8266Client", 0, 0))" heissen... (und nicht leer, wie in deinem #define-Block...
-
@Marco71 sagte in ESP8266 keine Verbindung zum MQTT mit Arduino Programm:
Hi,
Ja die Adresse des ioBrokers ist richtig, ich habe den MQTT Broker/Client installiert, als Typ Client/subscriber und auf dem Port 1883 ohne Name und Passwort. den selben Port hat nur der Sonoff-Adapter
Mal abgesehen von dem Port-Konflikt, der ESP braucht einen MQTT-Server zum verbinden - keinen Client!
Gruß
Christian