Netzwerk von ESP8266-Modulen

  • Noch mal zu meiner zweiten Frage: der zweite ESP fühlt sich ja für alle unter home/data ankommenden Werte zuständig, er hat ja den Oberpunkt abbonniert und nicht irgendeinen der unter .../data/... angelegten Werte.

    Was sagt den die log-Datei des Brokers? Was ist dort anders, wenn beide laufen? Kommt es da zu Fehlern?

    PS: ob der zweite den ersten wirklich nicht stört, dafür hätte ich gerne mal die Logs

  • Ich hab das zweite prog gerade auf den topic "/home/data/9" geändert.

    Wenn nur der DS18b20-ESP- läuft kommt mit:

    Code
    pi@raspberrypi:~ $ mosquitto_sub -v -t /home/data/#

    folgender text:

    Code
    /home/data/1 20.687500
    /home/data/2 20.812500
    /home/data/3 20.562500
    /home/data/4 20.312500
    /home/data/1 20.687500
    /home/data/2 20.812500
    /home/data/3 20.562500
    /home/data/4 20.312500

    Alle 5 Sekunden wird gleichmäßig ausgelesen.

    Wenn ich den zweiten ESP an den Strom lege kommt:

    Code
    /home/data/1 20.750000
    /home/data/2 21.062500
    /home/data/3 20.750000
    /home/data/4 20.312500
    /home/data/1 20.750000
    /home/data/4 20.312500
    /home/data/1 20.750000
    /home/data/4 20.312500

    Die ersten 1-4 sind noch von vor dem Einschalten des zweiten ESP.

    Schonmal auch /data/2, fast nie /data/3.

    Wenn ich unter diesen Voraussetzungen auf einem weiteren Terminal:

    Code
    pi@raspberrypi:~ $ mosquitto_pub -d -t /home/data/9 -m "0"

    oder

    Code
    pi@raspberrypi:~ $ mosquitto_pub -d -t /home/data/9 -m "1"

    eingebe kommt:

    Code
    /home/data/4 20.312500
    /home/data/1 20.750000
    /home/data/4 20.312500
    /home/data/9 0
    /home/data/1 20.750000
    /home/data/2 21.000000
    /home/data/9 1
    /home/data/3 20.687500
    /home/data/4 20.312500

    Analog zu /home/data/0 bzw. /1 schaltet die LED auf dem ESP wie gewünscht.

  • Das hab ich unter: /var/log/mosquitto gefunden.

    Ich vermute ich muss vorher ein paar Sachen aktivieren, oder?

    Einmal editiert, zuletzt von hunter_spike (2. Februar 2021 um 20:43)

  • Ich war gestern leider nicht mehr online, wollte nur mal eben ein Kabel an einem Sensor löten und dann fiel mir ein Projekt in die Hände, das ich schon zum Löten abgestellt hatte und bei meinen feinmotorischen Defiziten hat es leider etwas länger gedauert.

    In meiner Log-Datei werden irgendwie mehr Angaben angezeigt, ich weiß aber auch nicht mehr, ob ich da noch irgendwelche ptionen aktiviert habe, muss ich noch mal nachlesen.

    Hast Du den für beide übernommen oder nur für einen?

  • Hallo Matsch,

    die Hände sind bei mir noch ruhig, aber die Augen machen Probleme.... liegt an unserem Alter und wird auf Dauer schlechter werden. ;(

    Jetzt hab ich es endlich am laufen!

    Code
    void reconnect() {
        while (!client.connected()) {
            Serial.println("Reconnecting MQTT...");
            if (!client.connect("ESP8266Client")) { //<<<<<<<<<<<<<<<<
                Serial.print("failed, rc=");
                Serial.print(client.state());
                Serial.println(" retrying in 5 seconds");
                delay(5000);
            }

    In der markierten Zeile habe das "ESP8266Client" in "ESP8266Client2" geändert.

    Dort gebe ich dem ESP wohl seinen Namen. Und das zwei nicht den gleichen haben sollten leuchtet mir ein.

    Die anderen Programme, die ich versucht habe, werden dann wohl auch laufen.

    Die Befehlzeile verstehe ich allerdings nicht ganz:

    WENN (NICHT >Klasse Client, Befehl connect< (übergebene Variable "ESP8266Client")) {dann mache den Rest}

    so würde ich mir das ins Hochdeutsche übersetzen.

    Ich verstehe nicht ganz wo und wie ich den Namen zuweise.

    Das ist der einzige Punkt im Prog wo "ESP8266Client" vorkommt.

  • Ah ja, hatte ich nicht gesehen, dass beides Mal der gleiche Name drinstand.

    In meinem Log tauchen die Anmeldenamen auf, solche Fehler aufzuspüren hatte ich von dem Log-File erhofft. Scheint aber wohl kein Standard zu sein.

    Die connect-Funktion hat als Rückgabewert einen Boolean-Wert für Verbunden oder nicht Verbunden. Solange nicht verbunden ist, wird 5 Sekunden gewartet und dann sorgt die while-Schleife für einen erneuten Aufruf und es gibt einen erneuten Verbindungsversuch. "ESP8266Client" ist die ClientID.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!