Hast du versucht, die MQTT-Integration in Gladys neu zu konfigurieren?
Einfach das Passwort ändern und dann auf ‹ Speichern › klicken.
Schau dir dann den Status des Containers an…
OK, danke für die Info
Ich habe einen Freund vorbeigeschickt und er hat festgestellt, dass mosquitto 2x installiert war
Das war die Ursache des Problems!
![]()
Du hast ja schon eins für zigbee2mqtt, also normal ![]()
Du musst ein bisschen mehr dazu sagen.
Ja, zigbee2mqtt, aber auch MQTT (Mosquitto)

Laut meinem Freund hatte ich Mosquitto sogar ein zweites Mal installiert. Das war das Problem.
Nach dem Löschen eines der beiden Mosquitto gab es keine Probleme mehr!
Ist es jetzt funktionell oder nicht? Hast du denn eine Rückmeldung erhalten?
Ja, es funktioniert
Danke an alle
![]()
Hallo zusammen,
ein ich habe es versucht, aber nach mehreren Versuchen habe ich immer noch Folgendes in der seriellen Konsole:
ets Jan 8 2013, rst cause:4, boot mode:(3,6)
12:58:34.798 →
12:58:34.798 → wdt reset
12:58:34.798 → load 0x4010f000, len 3424, room 16
12:58:34.798 → tail 0
12:58:34.798 → chksum 0x2e
12:58:34.798 → load 0x3fff20b8, len 40, room 8
12:58:34.798 → tail 0
12:58:34.798 → chksum 0x2b
12:58:34.798 → csum 0x2b
12:58:34.798 → v000456d0
12:58:34.798 → ~ld
12:58:34.892 → ⸮⸮n⸮r⸮⸮n|⸮l⸮lbbrl⸮nb⸮nl⸮rl⸮l⸮⸮
i habe den Beitrag 84 gesehen, ich habe die Änderung im Code mit dem while (!serial) vorgenommen, aber das hat nichts geändert. Nur das Auskommentieren der Initialisierung der Pins verbindet mich gut mit dem WLAN und MQTT, aber dann wird nichts berechnet, lol
vielen Dank im Voraus
Hallo @Tornes
Welche Karte hast du? Eine D1 mini?
ja genau, ich habe ein Ergebnis erzielt, indem ich den Code wie folgt geändert habe:
nur der zurückgesendete Wert ist immer 100, unabhängig von der Entfernung des Sensors
ich habe die Pins überprüft, sie sind an den richtigen Stellen (D6 und D7)
Ps: Wenn ich den im ersten Beitrag gegebenen Code verwendet hätte, hätte es nicht funktioniert ![]()
Siehst du ein Ergebnis von 100?
Deine serielle Monitoraufnahme zeigt nichts an. Hast du deine Karte richtig geflasht, denn ich habe das Gefühl, dass sie nicht erkannt wird.
das Ergebnis sehe ich in MQTT Explorer.
ich nehme an, dass ja, da der Monitor korrekt WiFi/MQTT OK anzeigt und ich MQTT-Nachrichten im richtigen Topic erhalte
EDIT: Ich habe verschiedene Karten ausprobiert, ohne Erfolg, mit dem Code auf der ersten Seite. Allerdings funktioniert es mit dem von Doudy, ich habe aber immer noch denselben Wert ![]()
Du kannst den gesamten Code mit den code-Tags anzeigen lassen.
Hier ist:
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
/* WIFI */
#define wifi_ssid "XXX" // Ihr WLAN-SSID
#define wifi_password "XXX" // Ihr WLAN-Passwort
/* MQTT */
#define mqtt_server "XXXXX"
#define mqtt_user nullptr // Benutzername
#define mqtt_password nullptr // MQTT-Passwort
#define gladys_topic "gladys/master/device/mqtt:jardin:capteur-ultrason/feature/mqtt: jardin:capteur-ultrason:quantite/state"
#define mqtt_cuve "mqtt:jardin:capteur-ultrason" //Topic Sensor Tank
/* Puffer, der die Dekodierung der empfangenen MQTT-Nachrichten ermöglicht */
char message_buff[100];
long lastMsg = 0; // Zeitstempel der letzten auf MQTT veröffentlichten Nachricht
long lastRecu = 0;
bool debug = false; // Zeigt auf der Konsole an, wenn True
/* Konstanten für die Pins */
const byte TRIGGER_PIN = 7; // TRIGGER-Pin
const byte ECHO_PIN = 6; // ECHO-Pin
/* Konstanten für den Timeout */
const unsigned long MEASURE_TIMEOUT = 25000UL; // 25ms = ~8m bei 340m/s
/* Schallgeschwindigkeit in der Luft in mm/us */
const float SOUND_SPEED = 340.0 / 1000;
//Erstellung der Objekte
WiFiClient espClient;
PubSubClient mqttclient(espClient);
void setup() {
/* Initialisiert den seriellen Port */
Serial.begin(115200); // Optional für Debugging
while (! Serial){
delay(1);
/* Initialisiert die Pins */
pinMode(TRIGGER_PIN, OUTPUT);
digitalWrite(TRIGGER_PIN, LOW); // Der TRIGGER-Pin muss im Ruhezustand auf LOW sein
pinMode(ECHO_PIN, INPUT);
}
setup_wifi(); // Verbindung zum WLAN-Netzwerk herstellen
mqttclient.setServer(mqtt_server, 1883); // Konfiguration der Verbindung zum MQTT-Server
}
void setup_wifi() {
delay(10);
Serial.println("\r\n\r\nxxxxxxxxxxx START xxxxxxxxxxxxxxx");
Serial.print("Verbindung zu ");
Serial.println(wifi_ssid);
//WiFi.disconnect();
//WiFi.mode(WIFI_STA);
WiFi.begin(wifi_ssid, wifi_password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println(".");
Serial.print("WLAN-Verbindung hergestellt ");
Serial.print("=> IP-Adresse: ");
Serial.println(WiFi.localIP());
}
//Wiederverbindung herstellen
void reconnect() {
Serial.print("MQTT-Test: ");
Serial.print("=> IP-Adresse: ");
Serial.println(mqtt_server);
// Schleife bis eine Wiederverbindung hergestellt ist
while (!mqttclient.connected()) {
Serial.print("Verbindung zum MQTT-Server...");
if (mqttclient.connect("ESP8266Client", mqtt_user, mqtt_password)) {
Serial.println("OK");
} else {
Serial.print("FEHLER, Fehler: ");
Serial.print(mqttclient.state());
Serial.println(" Warten Sie 5 Sekunden, bevor Sie es erneut versuchen");
delay(5000);
}
}
}
void loop() {
if (!mqttclient.connected()) {
reconnect();
}
mqttclient.loop();
long now = millis();
/*Senden einer Nachricht pro Minute*/
if (now - lastMsg > 1000 * 60) {
lastMsg = now;
/* 1. Startet eine Entfernungsmessung, indem ein HIGH-Impuls von 10µs auf den TRIGGER-Pin gesendet wird */
digitalWrite(TRIGGER_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER_PIN, LOW);
/* 2. Misst die Zeit zwischen dem Senden des Ultraschallimpulses und seinem Echo (falls vorhanden) */
long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT);
/* 3. Berechnet die Entfernung aus der gemessenen Zeit */
int distance_mm = measure / 2.0 * SOUND_SPEED;
float c = 2600 - distance_mm; // SEHR WICHTIG Ersetzen Sie 2000 durch die Höhe Ihres Tanks
c = c / 2600;
c = c * 100;
//Es ist nicht nötig, weiterzumachen, wenn der Sensor nichts zurückgibt
if ( isnan(c)) {
Serial.println("Lesefehler! Überprüfen Sie Ihren HRC-04-Sensor");
return;
}
if ( debug ) {
Serial.print("Tank: ");
Serial.print(c);
}
mqttclient.publish(gladys_topic, String(c).c_str(), true); // Veröffentlicht den % des Tanks im Topic in gladys
}
}
Das sieht gut aus.
Hast du deinen Ultraschallsensor schon in einem anderen Code getestet, zum Beispiel für eine Messung oder so, um zu sehen, ob er funktioniert?
Nein, das werde ich jetzt machen, um seine Funktionsweise zu überprüfen.
Danke auf jeden Fall für die Codeprüfung, aber wie kann ich erklären, dass ich ihn im Vergleich zu deinem ändern musste?
Das ist in der Tat nicht logisch. Ich sollte es noch einmal auf einer frischen Installation testen, um das zu überprüfen, denn damals hatte ich daran ziemlich herumgebastelt.
Kannst du mir bestätigen, dass du auf dem Seriellen Monitor die Verbindung hergestellt hast, aber dass er dir danach nur noch „cuve: 100“ in einer Endlosschleife alle Minuten anzeigt?
Auf dem Monitor zeigt er mir an, dass die WLAN-Verbindung hergestellt ist, MQTT OK, aber das ist alles. Die 100 sehe ich in den MQTT-Nachrichten, die er sendet.
Danach solltest du « Tank: … » mit dem Wert haben, der von deinem Sensor kommt. Das ist nicht normal.
Ah okay … ist dein Code identisch mit dem im ersten Beitrag geposteten?