ESP8266 MQTT

  • Hallo zusammen,


    ich komme nicht so wirklich weiter mit dieser MQTT Einbindung in den ESP.


    Was ich hinbekomme ist, dass ich von einem ESP ein Topic senden kann und im

    MQTT Broker (Mosquitto) auch das Empfangene sehe. ( hier eine 0 oder 1)


    Siehe hier den Sender ESP / Angeschlossen ist ein Endschalter an d1



    Hier noch ein Foto des MQTT Broker, respektive des MQTTfx Tool


    Bild 04.11.19 um 17.10.jpg


    Nun bis dahin alles paletti :thumbup::thumbup:


    ABER jetzt:


    Wie kann ich auf einem anderen ESP diese Daten (0 und 1) empfangen und für den weiteren

    Programmablauf verwenden???


    Hier mal ein kläglicher versuch, aber wo ist den jetzt meine 0 oder 1 ??? :/:rolleyes:



    An diesem ESP hängt ein Relais an d1 und soll schalten je nach topic Input 0 oder 1.


    Ich glaube ich habe das was kpl. nicht mitgeschnitten.


    Kann da evtl wer helfen?? :love:



    Und klein Zusatzfrage, wo liegt den jetzt der Vorteil zum

    HTTP senden/empfangen


    sender.begin("http://192.168.1.148/sensor_state");

    sender.GET();


    Ich raff das nicht so ganz.


    Gruss Thomas

  • Hey Thomas,

    da war aber eine ungeduldig. Dabei hab ich vor 30 Minuten den Artikel über MQTT zu Ende geschrieben. Pascal und ich arbeiten noch etwas am Feintuining, dann wird der Artikel auch online kommen.

    Den Code den du benutzt hast kenne ich :) Gutes Tutorial, auf der Website eigentlich :D

    Folgende Sachen die mir auffallen:

    - Setzt mein Funktionen nicht eigentlich vor die Loop-Schleife? :D
    - Hast du mal getestet, ob die callback-Funktion überhaupt ausgeführt wird? Also alles einmal aus der Schleife rauswerfen und nur ein Serial.println("Test"); rein?
    - gibt dir dein Serial.print((char)payload[i]); auch etwas aus?

    - Wenn Punkt zwei etwas ausgibt, dann versuche mal folgenden Code:

    Code
    1. void callback(char* topic, byte* payload, unsigned int length) {
    2.     String msg;
    3.     for (byte i = 0; i < length; i++) {
    4.         char tmp = char(payload[i]);
    5.         msg += tmp;
    6.     }
    7.     Serial.println(msg);
    8. }


    Ansonsten warte einfach auf meinen Artikel, den Code habe ich getestet :)

    Gruß
    Nick

  • Hey danke, ja Geduld ist nur bedingt meine Tugend. 8o


    Ja der Artikel ist echt gut, nur habe ich trotz allem etwas mühe um es nachvollziehen zu können.

    Aber ist ja bekanntlich noch kein Meister vom Himmel gefallen. :)


    Gruss und ich werde es testen.

    Thomas


    Aha da tut sich was. 8|8|


    So langsam komme ich auf die Schliche. :P


    Bild 04.11.19 um 18.18.jpg


    Gruss Thomas


    OK,


    also in den void loop kommt ja nicht gerade viel.

    Da spielt sich so ziemlich viel vorher ab.


    So schaltet mein Relais perfekto. :thumbup:



    msg = message


    das heisst ja, dass ich auch anstelle von 0 und 1 ON und OFF schreiben kann.


    Code
    1. if (msg == "OFF") {
    2. digitalWrite(d1, LOW);
    3. }
    4. if (msg == "ON") {
    5. digitalWrite(d1, HIGH);
    6. }



    TOOOOLLLLL ich bin sooooo stolz auf dich Thomas. :X Du hast es mehr oder weniger geraffelt. :D


    Gruss Thomas