Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Auslesen von Werten mit ESP8266

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    Auslesen von Werten mit ESP8266

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      tomtom61 last edited by tomtom61

      Ich hoffe der Beitrag ist hier richtig.
      Ich möchte MQTT Werte per ESP8266 o. ä. auslesen.
      Das funktioniert, mit

      .....               
        #define RECEIVE_NAME "HomeAussen/Temp"      
             client.subscribe(RECEIVE_NAME);
      ....
           void callback(char* topic, byte* payload, unsigned int length) {
             
                  Str_Temperatur = "";
                  
                  for (int i = 0; i < length; i++) {
                     // Serial.print((char)payload[i]);
                     Str_Temperatur = Str_Temperatur + (char)payload[i];  // Speicher jedes Zeichen in den String Str_Temperatur
                     Serial.println (Str_Temperatur);
                  }
      
      
      

      NUR solange, wie die Daten unter mqtt/0/..... stehen.
      Der gesamte Pfad ist dann "mqtt/0/HomeAussen/Temp"

      Verschiedene Werte wie Solar_Fronius/AktuellerErtrag stehen unter "alias.0."

      Wie bitte komme ich mit meinem Code da hin???

      Versuch : RECEIVE_NAME "alias/0/Solar_Fronius/AktuellerErtrag"
      scheitert.

      Marc Berg 1 Reply Last reply Reply Quote 0
      • Marc Berg
        Marc Berg Most Active @tomtom61 last edited by Marc Berg

        @tomtom61 sagte in Auslesen von Werten mit ESP8266:

        Wie bitte komme ich mit meinem Code da hin???

        Ich nehme an, du nutzt den MQTT Adapter als Broker?

        In diesem Fall musst du die Instanzeinstellungen ändern/erweitern. Damit werden auch die Topics unter alias* published.

        3844a7b3-4139-4041-a520-39ee98ce50a5-grafik.png

        Edit: nachdem du in das Feld "alias.0.*" eingegeben hast, unbedingt <Enter> drücken!

        T 1 Reply Last reply Reply Quote 0
        • T
          tomtom61 @Marc Berg last edited by

          @marc-berg
          Super! Vielen Dank!
          Wieder ein Fall - "Auf die einfachsten Lösungen kommt man nicht".

          Hmmm, mal sehen, wie ich das jetzt mache. Einfach den Prefix ändern oder hinzufügen?
          Oder komplett rausnehmen?
          Ich bin mir sicher, dass dann sämtliche >30 Sensoren mit ca. >100 Datenpunkten sowie unzählige Skripte dann nicht mehr richtig funktionieren. Weil diese natürlich den gesetzten Prefix NICHT senden.
          Ich müsste sämtliche Sensoren (ESP8266) umprogrammieren...
          Meine Überlegung eine zweite mttq Instanz zu machen und diese dann entsprechend ansprechen.

          Zum Glück habe ich den ioBroker im Proxmox laufen. Mache gerade per clone eine "Test" Version und teste das mal.

          Ich berichte.

          Gruß Tom

          1 Reply Last reply Reply Quote 0
          • T
            tomtom61 last edited by

            @marc-berg
            Es funktioniert soweit. Ich habe eine zweite mttq Instanz angelegt.
            Jetzt habe ich das Problem, dass bei Wertänderung im ioBroker der neue Wert nicht übertragen wird. Nur, wenn ich den Wert unter Objekte MANUELL ändere erfolgt eine Übertragung.
            Wer weis Rat?

            Marc Berg 1 Reply Last reply Reply Quote 0
            • Marc Berg
              Marc Berg Most Active @tomtom61 last edited by

              @tomtom61
              Wenn du jetzt noch verrätst, WIE du den Wert änderst, kann dir sicher geholfen werden. Ich vermute, du setzt das Ack Flag, oder setzt im Blockly mit dem falschen Baustein. (Ändere statt Steuere)

              T 1 Reply Last reply Reply Quote 0
              • T
                tomtom61 @Marc Berg last edited by tomtom61

                @marc-berg
                Im ioBroker werden Daten von ESP8266(s) per mqtt gesendet.
                Ich Teste im Moment mit einem sich ständig verändernden Wert - "der Außentemperatur".
                Diese wird im ioBroker an "mqtt.0.HomeAussen.Temp" gesendet.

                Normalerweise lasse ich mir alle Daten nur per VIS anzeigen.

                Jetzt möchte ich allerdings Werte - Genaugenommen Final den Akkuladezustand meiner PV-Anlage - auf einer 7-Segment LED Anzeige anzeigen. Zum Testen wie geschrieben jetzt erst einmal die "Außentemperatur".

                Hierzu verwende ich erst einmal den
                Den [hier]
                (https://github.com/knolleary/pubsubclient/blob/master/examples/mqtt_esp8266/mqtt_esp8266.ino
                als Muster Publizierten Code.
                Mein Code ist durchs Testen chaotisch, deshalb ... Angepasste

                • Parameter:
                  Hinzugefügt:
                  #define RECEIVE_NAME "mqtt.0.HomeAussen.Temp"
                  geändert:
                  .... WIFI Zugangsdaten
                  im Setup
                  client.setServer(mqtt_server, 1883); //1883 für mqtt Instanz 0

                im Loop
                // ... and resubscribe
                client.subscribe(RECEIVE_NAME);

                Mit dieser Einstellung wird jede Änderung (Seriell) angezeigt.

                Ändere ich nun: Auch zum testen einen sich ständig ändernder Wert....
                #define RECEIVE_NAME "alias.0.Solar_Fronius.AktuellerErtrag"
                im Setup:
                client.setServer(mqtt_server, 1893); //1893 für mqtt Instanz 1

                Wird der Wert nur EINMAL geändert. Egal auch nach Reset des ESP8266. Der Wert bleibt gleich.
                Die Einstellungen beider Instanzen sind bis auf den Port und
                Screenshot 2023-11-01 145305.jpg
                gleich.

                `

                1 Reply Last reply Reply Quote 0
                • T
                  tomtom61 last edited by

                  Problem gelöst --------------

                  Es funktioniert mit einer zweiten Instanz - Vermutlich auch mit nur einer (nicht getestet)
                  Wichtig, dass in den mqqt Einstellungen der Haken bei "Sende auch Zustände (ack=true) angehackt ist.
                  Des weitern sollte in der Maske der Pfad stehen, in dem die Werte gelesen werden sollen.
                  In meinem Fall alias.0.*

                  Gruß
                  Tom

                  1 Reply Last reply Reply Quote 0
                  • First post
                    Last post

                  Support us

                  ioBroker
                  Community Adapters
                  Donate
                  FAQ Cloud / IOT
                  HowTo: Node.js-Update
                  HowTo: Backup/Restore
                  Downloads
                  BLOG

                  673
                  Online

                  31.6k
                  Users

                  79.4k
                  Topics

                  1.3m
                  Posts

                  2
                  7
                  411
                  Loading More Posts
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes
                  Reply
                  • Reply as topic
                  Log in to reply
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                  The ioBroker Community 2014-2023
                  logo