Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. ESPHome ESP32-S3 mit MQTT verliert Verbindung

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    15
    1
    652

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    632

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.9k

ESPHome ESP32-S3 mit MQTT verliert Verbindung

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
18 Beiträge 3 Kommentatoren 1.3k Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • M MCU

    @wibear Bitte als Code </> senden .
    Ich kann Dir nicht im Detail helfen, wollte mit den Antworten von ChatGPT nur ein Anstoß geben.
    Damit ich es an ChatGPT weitergeben kann bitte als Code schicken.

    W Offline
    W Offline
    wibear
    schrieb am zuletzt editiert von
    #9

    @mcu sagte in ESPHome ESP32-S3 mit MQTT verliert Verbindung:

    Bitte als Code </> senden

    esphome:
      name: displaytft
      friendly_name: DisplayTFT
    
    esp32:
      board: esp32-s3-devkitc-1
      framework:
        type: esp-idf
    
    # Enable logging
    logger:
    
    # Enable Home Assistant API
    api:
      encryption:
        key: "oLqhzrUCfhqRKZXIH6+wajtLeBwaVt03e/YAfM8woSU="
    
    ota:
      - platform: esphome
        password: "0cb05a749c68876ca294cc4b645222ca"
    
    wifi:
      ssid: !secret wifi_ssid
      password: !secret wifi_password
    
    # Enable fallback hotspot (captive portal) in case wifi connection fails
      ap:
        ssid: "Displaytft Fallback Hotspot"
        password: "O4s50tPm0qCc"
    
    captive_portal:
        
    
    # Enable MQTT
    mqtt:
        discovery: true
        broker: 192.168.178.10
        port: 1883
        username: !secret mqtt_username
        password: !secret mqtt_password
        client_id: DisplayTFT
        topic_prefix: esphome
       
    
    # Subscribe data
    sensor:  
     - platform: mqtt
       name: Solar_Einspeisung_Jetzt
       state_topic: esphome/DisplayTFT/Solar/Einspeisung_Jetzt
    
    
    1 Antwort Letzte Antwort
    0
    • M MCU

      @wibear sagte in ESPHome ESP32-S3 mit MQTT verliert Verbindung:

      INFO ESPHome 2025.6.0b1
      letzte LOG

      Dein ESPHome-Log zeigt, dass der MQTT-Client auf deinem ESP32-S3-Board regelmäßig Verbindungsprobleme hat, nachdem MQTT-Subscribe-Textsensoren aktiviert wurden. Hier ist eine Analyse der Ursache und mögliche Lösungen:

      🧠 Problemüberblick
      Der entscheidende Fehler lautet:

      python-repl
      Kopieren
      Bearbeiten
      mqtt_message_receive: received a message with an invalid header=0x39
      ...
      MQTT_EVENT_ERROR
      ...
      Client has not connected
      Das bedeutet:

      Der ESP empfängt fehlerhaft formatierte MQTT-Nachrichten (ungültige Header).

      Danach bricht die Verbindung ab oder wird als instabil markiert.

      Die Verbindung wird ständig neu aufgebaut (Connected, dann wieder Client has not connected usw.)

      🧪 Wahrscheinliche Ursachen
      🔹 1. Fehlende oder falsche Payloads für mqtt_subscribe-Sensoren
      Dein ESP erwartet Textnachrichten auf z. B. folgendem Topic:

      topic: esphome/DisplayTFT/Status/Batterie_SoC
      

      Wenn hier z. B. ein anderer MQTT-Client binäre Daten, JSON, oder nicht-lesbaren Text sendet, kann das zu einem ungültigen MQTT-Header führen.

      ⚠️ Das passiert häufiger mit ioBroker oder Node-RED, wenn z. B. msg.payload nicht als einfacher String gesendet wird.

      🔹 2. Mismatch zwischen Publisher und ESPHome-Abo
      Beispiel: Wenn mqtt_subscribe einen Textsensor erwartet, aber das Topic z. B. retain-Nachrichten mit falschem Format enthält (z. B. boolean statt String), stürzt der MQTT-Parser im ESP ab.

      ✅ Lösungsvorschläge
      ✔️ 1. Überprüfe die Payloads auf den Topics
      Nutze MQTT.fx, MQTT Explorer o. ä., um z. B. das hier zu prüfen:

      esphome/DisplayTFT/Status/Batterie_SoC

      esphome/DisplayTFT/Solar/Einspeisung_Jetzt

      usw.

      Stelle sicher, dass ausschließlich gültige Textwerte (Strings) gesendet werden, z. B.:

      "33.2"
      "An"
      "Aus"
      

      Nicht:

      true      // → falscher Typ
      {...}     // → JSON-Objekt, falsch
      "some\ninvalid\0text" // → ungültige Steuerzeichen
      

      ✔️ 2. Teste das MQTT-Abonnement temporär mit nur einem mqtt_subscribe
      Kommentiere alle text_sensor außer einem:

      text_sensor:
        - platform: mqtt_subscribe
          id: Test_Topic
          topic: esphome/DisplayTFT/Test
      

      Dann sende gezielt gültige Testwerte und schau, ob der ESP stabil bleibt.

      ✔️ 3. MQTT-Log im Broker aktivieren
      In ioBroker (wenn du Mosquitto nutzt), aktiviere Debug-Logs, um zu sehen, was genau an den ESP gesendet wird. Es hilft dir auch, retain-Werte zu analysieren.

      ✔️ 4. ESPHome auf Arduino statt ESP-IDF framework setzen
      Der Fehler tritt in der esp-idf MQTT-Client-Implementierung auf:

      esp32:
        framework:
          type: arduino  # ← statt "espidf"
      

      → Arduino verwendet eine robustere MQTT-Client-Bibliothek für einfache Fälle.

      📌 Fazit
      Dein ESP32-S3 erhält MQTT-Nachrichten mit ungültigen Inhalten oder Format, was zu instabiler Verbindung führt. Am wahrscheinlichsten sind:

      Falsches Datenformat im MQTT-Topic

      Binärdaten oder Nicht-Strings bei mqtt_subscribe

      Fehlerhafte retain-Nachrichten aus früheren Tests

      W Offline
      W Offline
      wibear
      schrieb am zuletzt editiert von
      #10

      @mcu
      In meinem vorherigen Post habe ich die topics überprüft: sie scheinen alle die Daten zu liefern.
      Debug in MQTT habe ich jetzt aktiviert.

      @mcu sagte in ESPHome ESP32-S3 mit MQTT verliert Verbindung:

      Arduino verwendet eine robustere MQTT-Client-Bibliothek für einfache Fälle.

      Da war doch ursprünglich Arduino. Ich habe auf Deinen Vorschlag hin, das mit ESP-IDF versucht: keine Änderung.

      M 1 Antwort Letzte Antwort
      0
      • HomoranH Homoran

        @mcu sagte in ESPHome ESP32-S3 mit MQTT verliert Verbindung:

        Ich kann Dir nicht im Detail helfen

        aber vielleicht mir ;-)

        geht es um ESP Home = offTopic - microcontroller oder um den ESP-Home Adapter?

        Die

        @wibear sagte in ESPHome ESP32-S3 mit MQTT verliert Verbindung:

        Entwickler von ESPHome

        wären ja ganz woanders zu suchen.

        W Offline
        W Offline
        wibear
        schrieb am zuletzt editiert von
        #11

        @homoran sagte in ESPHome ESP32-S3 mit MQTT verliert Verbindung:

        eht es um ESP Home = offTopic - microcontroller oder um den ESP-Home Adapter?

        Klar, es geht um ESP-Home Adapter...

        1 Antwort Letzte Antwort
        0
        • W wibear

          @mcu
          In meinem vorherigen Post habe ich die topics überprüft: sie scheinen alle die Daten zu liefern.
          Debug in MQTT habe ich jetzt aktiviert.

          @mcu sagte in ESPHome ESP32-S3 mit MQTT verliert Verbindung:

          Arduino verwendet eine robustere MQTT-Client-Bibliothek für einfache Fälle.

          Da war doch ursprünglich Arduino. Ich habe auf Deinen Vorschlag hin, das mit ESP-IDF versucht: keine Änderung.

          M Online
          M Online
          MCU
          schrieb am zuletzt editiert von MCU
          #12

          @wibear Es sind Antworten von ChatGPT, da kann man nur probieren.

          Du nutzt in deinem aktuellen ESPHome YAML folgenden Block:

          sensor:  
           - platform: mqtt
             name: Solar_Einspeisung_Jetzt
             state_topic: esphome/DisplayTFT/Solar/Einspeisung_Jetzt
          

          Das sieht fast korrekt aus – aber ein wichtiger Hinweis:

          ⚠️ mqtt als sensor-Plattform wird von ESPHome nicht unterstützt
          ESPHome unterstützt keine direkte Verwendung von:

          platform: mqtt
          

          für einen Sensor. Das ist ein Feature von Home Assistant, nicht ESPHome.

          ✅ Was stattdessen funktioniert in ESPHome
          Du musst den mqtt_subscribe-Ansatz nutzen:

          📌 Beispiel für einen mqtt_subscribe Sensor als text_sensor:

          text_sensor:
            - platform: mqtt_subscribe
              id: solar_einspeisung_jetzt
              name: "Solar Einspeisung Jetzt"
              topic: esphome/DisplayTFT/Solar/Einspeisung_Jetzt
          

          Falls du numerische Werte brauchst, kannst du zusätzlich einen internen Sensor anlegen, der den Text in eine Zahl wandelt (z. B. über einen Lambda-Ausdruck).

          🧠 Alternativen (nur in Sonderfällen nötig)
          Wenn du wirklich aus ESPHome heraus jede beliebige MQTT-Nachricht abfangen und verarbeiten willst, kannst du on_message mit mqtt.on_message verwenden (fortgeschritten):

          mqtt:
            on_message:
              - topic: esphome/DisplayTFT/Solar/Einspeisung_Jetzt
                then:
                  - lambda: |-
                      ESP_LOGD("mqtt", "Nachricht: %s", x.c_str());
          

          Aber: Damit kannst du nicht direkt einen Sensor erzeugen, sondern musst die Werte selbst puffern/verarbeiten.

          ✅ Empfehlung für dich
          Wenn du die Daten wie üblich über MQTT übergibst und im Display zeigen willst:

          Nutze mqtt_subscribe (wie oben)

          Bleibe bei text_sensor, es sei denn, du brauchst einen sensor mit float-Werten (dann: Lambda wandeln)

          Lass framework: esp-idf aktiv, wenn jetzt alles stabil läuft


          Komplettbeispiel von ChatGPT

          esphome:
            name: displaytft
            friendly_name: DisplayTFT
          
          esp32:
            board: esp32-s3-devkitc-1
            framework:
              type: esp-idf
          
          # Enable logging
          logger:
          
          # Enable Home Assistant API
          api:
            encryption:
              key: "oLqhzrUCfhqRKZXIH6+wajtLeBwaVt03e/YAfM8woSU="
          
          ota:
            password: "0cb05a749c68876ca294cc4b645222ca"
          
          wifi:
            ssid: !secret wifi_ssid
            password: !secret wifi_password
            ap:
              ssid: "Displaytft Fallback Hotspot"
              password: "O4s50tPm0qCc"
          
          captive_portal:
          
          mqtt:
            discovery: true
            broker: 192.168.178.10
            port: 1883
            username: !secret mqtt_username
            password: !secret mqtt_password
            client_id: DisplayTFT
            topic_prefix: esphome
          
          # 🔹 Schritt 1: Text-Sensor, empfängt MQTT-String
          text_sensor:
            - platform: mqtt_subscribe
              id: solar_einspeisung_jetzt_text
              topic: esphome/DisplayTFT/Solar/Einspeisung_Jetzt
              internal: true
              on_value:
                then:
                  - lambda: |-
                      // 🔹 Schritt 2: Text in float umwandeln und setzen
                      float val = atof(x.c_str());
                      id(solar_einspeisung_jetzt_sensor).publish_state(val);
          
          # 🔹 Schritt 3: Eigener float-Sensor, der aus Text gespeist wird
          sensor:
            - platform: template
              id: solar_einspeisung_jetzt_sensor
              name: "Solar Einspeisung Jetzt"
              unit_of_measurement: "W"
              accuracy_decimals: 1
          
          

          Vielleicht kann @ticaki oder @Dutchman helfen?

          NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
          Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

          W 2 Antworten Letzte Antwort
          0
          • M MCU

            @wibear Es sind Antworten von ChatGPT, da kann man nur probieren.

            Du nutzt in deinem aktuellen ESPHome YAML folgenden Block:

            sensor:  
             - platform: mqtt
               name: Solar_Einspeisung_Jetzt
               state_topic: esphome/DisplayTFT/Solar/Einspeisung_Jetzt
            

            Das sieht fast korrekt aus – aber ein wichtiger Hinweis:

            ⚠️ mqtt als sensor-Plattform wird von ESPHome nicht unterstützt
            ESPHome unterstützt keine direkte Verwendung von:

            platform: mqtt
            

            für einen Sensor. Das ist ein Feature von Home Assistant, nicht ESPHome.

            ✅ Was stattdessen funktioniert in ESPHome
            Du musst den mqtt_subscribe-Ansatz nutzen:

            📌 Beispiel für einen mqtt_subscribe Sensor als text_sensor:

            text_sensor:
              - platform: mqtt_subscribe
                id: solar_einspeisung_jetzt
                name: "Solar Einspeisung Jetzt"
                topic: esphome/DisplayTFT/Solar/Einspeisung_Jetzt
            

            Falls du numerische Werte brauchst, kannst du zusätzlich einen internen Sensor anlegen, der den Text in eine Zahl wandelt (z. B. über einen Lambda-Ausdruck).

            🧠 Alternativen (nur in Sonderfällen nötig)
            Wenn du wirklich aus ESPHome heraus jede beliebige MQTT-Nachricht abfangen und verarbeiten willst, kannst du on_message mit mqtt.on_message verwenden (fortgeschritten):

            mqtt:
              on_message:
                - topic: esphome/DisplayTFT/Solar/Einspeisung_Jetzt
                  then:
                    - lambda: |-
                        ESP_LOGD("mqtt", "Nachricht: %s", x.c_str());
            

            Aber: Damit kannst du nicht direkt einen Sensor erzeugen, sondern musst die Werte selbst puffern/verarbeiten.

            ✅ Empfehlung für dich
            Wenn du die Daten wie üblich über MQTT übergibst und im Display zeigen willst:

            Nutze mqtt_subscribe (wie oben)

            Bleibe bei text_sensor, es sei denn, du brauchst einen sensor mit float-Werten (dann: Lambda wandeln)

            Lass framework: esp-idf aktiv, wenn jetzt alles stabil läuft


            Komplettbeispiel von ChatGPT

            esphome:
              name: displaytft
              friendly_name: DisplayTFT
            
            esp32:
              board: esp32-s3-devkitc-1
              framework:
                type: esp-idf
            
            # Enable logging
            logger:
            
            # Enable Home Assistant API
            api:
              encryption:
                key: "oLqhzrUCfhqRKZXIH6+wajtLeBwaVt03e/YAfM8woSU="
            
            ota:
              password: "0cb05a749c68876ca294cc4b645222ca"
            
            wifi:
              ssid: !secret wifi_ssid
              password: !secret wifi_password
              ap:
                ssid: "Displaytft Fallback Hotspot"
                password: "O4s50tPm0qCc"
            
            captive_portal:
            
            mqtt:
              discovery: true
              broker: 192.168.178.10
              port: 1883
              username: !secret mqtt_username
              password: !secret mqtt_password
              client_id: DisplayTFT
              topic_prefix: esphome
            
            # 🔹 Schritt 1: Text-Sensor, empfängt MQTT-String
            text_sensor:
              - platform: mqtt_subscribe
                id: solar_einspeisung_jetzt_text
                topic: esphome/DisplayTFT/Solar/Einspeisung_Jetzt
                internal: true
                on_value:
                  then:
                    - lambda: |-
                        // 🔹 Schritt 2: Text in float umwandeln und setzen
                        float val = atof(x.c_str());
                        id(solar_einspeisung_jetzt_sensor).publish_state(val);
            
            # 🔹 Schritt 3: Eigener float-Sensor, der aus Text gespeist wird
            sensor:
              - platform: template
                id: solar_einspeisung_jetzt_sensor
                name: "Solar Einspeisung Jetzt"
                unit_of_measurement: "W"
                accuracy_decimals: 1
            
            

            Vielleicht kann @ticaki oder @Dutchman helfen?

            W Offline
            W Offline
            wibear
            schrieb am zuletzt editiert von
            #13

            @mcu sagte in ESPHome ESP32-S3 mit MQTT verliert Verbindung:

            Lass framework: esp-idf aktiv, wenn jetzt alles stabil läuft

            Das Problem ist, dass es eine kurze Weile läuft und danach nicht mehr mit unzähligen Warnmeldungen:

            retries.jpg

            Ich überlege es mir, eine 2. MQTT Instanz extra dafür zu benutzen?

            Auf jeden Fall vielen Dank für Deine Unterstützung und einen schönen Sonnabend.

            M 1 Antwort Letzte Antwort
            0
            • W wibear

              @mcu sagte in ESPHome ESP32-S3 mit MQTT verliert Verbindung:

              Lass framework: esp-idf aktiv, wenn jetzt alles stabil läuft

              Das Problem ist, dass es eine kurze Weile läuft und danach nicht mehr mit unzähligen Warnmeldungen:

              retries.jpg

              Ich überlege es mir, eine 2. MQTT Instanz extra dafür zu benutzen?

              Auf jeden Fall vielen Dank für Deine Unterstützung und einen schönen Sonnabend.

              M Online
              M Online
              MCU
              schrieb am zuletzt editiert von
              #14

              @wibear sagte in ESPHome ESP32-S3 mit MQTT verliert Verbindung:

              Das Problem ist, dass es eine kurze Weile läuft und danach nicht mehr mit unzähligen Warnmeldungen:

              Danke für den Hinweis – wenn der ESP nach kurzer Laufzeit unzählige Warnungen ausgibt und die MQTT-Verarbeitung stoppt, liegt sehr wahrscheinlich ein Speicher- oder Ressourcenproblem vor, vor allem bei vielen mqtt_subscribe-Topics und gleichzeitiger Verarbeitung über Lambda-Funktionen.

              🧠 Mögliche Ursachen für dein Problem:

              1. Zu viele MQTT-Subscriptions
                ESPHome (besonders auf dem ESP32-S3 mit esp-idf) ist bei vielen mqtt_subscribe-Textsensoren empfindlich, insbesondere wenn:

              Jeder Sensor in kurzer Zeit aktualisiert wird

              Viele Topics gleichzeitig abonniert sind

              Jede Nachricht per lambda ausgewertet wird (wie bei der Float-Umwandlung)

              → Das kann den Task-Speicher oder den MQTT-Handler überlasten.

              1. Fehlende Speicherfreigabe / Buffer-Überlauf
                Der on_value:-Lambda legt ggf. bei jeder MQTT-Nachricht einen Float-Wert an, ohne Pufferung oder Zeitabstand → das kann zu einer Flut von Speicheroperationen führen, besonders bei vielen Topics mit hoher Update-Rate.

              ✅ Lösungsvorschläge (step-by-step)
              ✅ 1. Begrenze Anzahl gleichzeitig aktiver mqtt_subscribe-Sensoren
              Teste probeweise nur mit 2 oder 3 Topics, z. B.:

              text_sensor:
                - platform: mqtt_subscribe
                  id: test_1
                  topic: esphome/DisplayTFT/Test1
                  on_value:
                    then:
                      - lambda: |-
                          id(sensor_test_1).publish_state(atof(x.c_str()));
              

              ✅ 2. Füge Logging bei jedem Empfang hinzu (nur Debugzwecke)

              logger:
                level: DEBUG
              

              Oder in der Lambda:

              cpp

              ESP_LOGD("mqtt", "MQTT-Wert empfangen: %s", x.c_str());
              

              Damit siehst du, ob Nachrichten zu oft oder zu schnell kommen.

              ✅ 3. Füge einen Filter hinzu, um nur Werte zu publizieren, wenn sie sich wirklich ändern

              on_value:
                then:
                  - lambda: |-
                      float val = atof(x.c_str());
                      if (fabs(val - id(sensor_test_1).state) > 0.1) {
                        id(sensor_test_1).publish_state(val);
                      }
              

              Das reduziert die Anzahl der publish_state()-Aufrufe und entlastet die CPU.

              ✅ 4. Nutze dedizierte text_sensor nur für Strings, und fasse Daten ggf. zusammen
              Wenn du z. B. mehrere Werte gleichzeitig senden kannst (z. B. JSON wie {"solar": 82.5, "netz": 71.2}), kannst du:

              einen einzigen mqtt_subscribe verwenden

              und die Werte intern verteilen

              💡 Alternativ (stabilster Weg): on_message: zentral verwenden
              Anstelle von 15× mqtt_subscribe, kannst du mit mqtt.on_message: alle Nachrichten zentral verarbeiten:

              mqtt:
                on_message:
                  - topic: esphome/DisplayTFT/Solar/Einspeisung_Jetzt
                    then:
                      - lambda: |-
                          float val = atof(x.c_str());
                          id(sensor_solar).publish_state(val);
              
              sensor:
                - platform: template
                  id: sensor_solar
                  name: "Solar Einspeisung Jetzt"
              

              → Spart massiv Ressourcen und ist deutlich robuster.

              📌 Fazit
              Wenn du viele MQTT-Werte brauchst und es stabil bleiben soll:

              Verwende lieber mqtt.on_message zentral statt viele mqtt_subscribe.

              Begrenze Aktualisierungsfrequenz und publish_state-Events.

              Optional: aggregiere Daten in JSON-Form.

              NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
              Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

              W 1 Antwort Letzte Antwort
              0
              • M MCU

                @wibear Es sind Antworten von ChatGPT, da kann man nur probieren.

                Du nutzt in deinem aktuellen ESPHome YAML folgenden Block:

                sensor:  
                 - platform: mqtt
                   name: Solar_Einspeisung_Jetzt
                   state_topic: esphome/DisplayTFT/Solar/Einspeisung_Jetzt
                

                Das sieht fast korrekt aus – aber ein wichtiger Hinweis:

                ⚠️ mqtt als sensor-Plattform wird von ESPHome nicht unterstützt
                ESPHome unterstützt keine direkte Verwendung von:

                platform: mqtt
                

                für einen Sensor. Das ist ein Feature von Home Assistant, nicht ESPHome.

                ✅ Was stattdessen funktioniert in ESPHome
                Du musst den mqtt_subscribe-Ansatz nutzen:

                📌 Beispiel für einen mqtt_subscribe Sensor als text_sensor:

                text_sensor:
                  - platform: mqtt_subscribe
                    id: solar_einspeisung_jetzt
                    name: "Solar Einspeisung Jetzt"
                    topic: esphome/DisplayTFT/Solar/Einspeisung_Jetzt
                

                Falls du numerische Werte brauchst, kannst du zusätzlich einen internen Sensor anlegen, der den Text in eine Zahl wandelt (z. B. über einen Lambda-Ausdruck).

                🧠 Alternativen (nur in Sonderfällen nötig)
                Wenn du wirklich aus ESPHome heraus jede beliebige MQTT-Nachricht abfangen und verarbeiten willst, kannst du on_message mit mqtt.on_message verwenden (fortgeschritten):

                mqtt:
                  on_message:
                    - topic: esphome/DisplayTFT/Solar/Einspeisung_Jetzt
                      then:
                        - lambda: |-
                            ESP_LOGD("mqtt", "Nachricht: %s", x.c_str());
                

                Aber: Damit kannst du nicht direkt einen Sensor erzeugen, sondern musst die Werte selbst puffern/verarbeiten.

                ✅ Empfehlung für dich
                Wenn du die Daten wie üblich über MQTT übergibst und im Display zeigen willst:

                Nutze mqtt_subscribe (wie oben)

                Bleibe bei text_sensor, es sei denn, du brauchst einen sensor mit float-Werten (dann: Lambda wandeln)

                Lass framework: esp-idf aktiv, wenn jetzt alles stabil läuft


                Komplettbeispiel von ChatGPT

                esphome:
                  name: displaytft
                  friendly_name: DisplayTFT
                
                esp32:
                  board: esp32-s3-devkitc-1
                  framework:
                    type: esp-idf
                
                # Enable logging
                logger:
                
                # Enable Home Assistant API
                api:
                  encryption:
                    key: "oLqhzrUCfhqRKZXIH6+wajtLeBwaVt03e/YAfM8woSU="
                
                ota:
                  password: "0cb05a749c68876ca294cc4b645222ca"
                
                wifi:
                  ssid: !secret wifi_ssid
                  password: !secret wifi_password
                  ap:
                    ssid: "Displaytft Fallback Hotspot"
                    password: "O4s50tPm0qCc"
                
                captive_portal:
                
                mqtt:
                  discovery: true
                  broker: 192.168.178.10
                  port: 1883
                  username: !secret mqtt_username
                  password: !secret mqtt_password
                  client_id: DisplayTFT
                  topic_prefix: esphome
                
                # 🔹 Schritt 1: Text-Sensor, empfängt MQTT-String
                text_sensor:
                  - platform: mqtt_subscribe
                    id: solar_einspeisung_jetzt_text
                    topic: esphome/DisplayTFT/Solar/Einspeisung_Jetzt
                    internal: true
                    on_value:
                      then:
                        - lambda: |-
                            // 🔹 Schritt 2: Text in float umwandeln und setzen
                            float val = atof(x.c_str());
                            id(solar_einspeisung_jetzt_sensor).publish_state(val);
                
                # 🔹 Schritt 3: Eigener float-Sensor, der aus Text gespeist wird
                sensor:
                  - platform: template
                    id: solar_einspeisung_jetzt_sensor
                    name: "Solar Einspeisung Jetzt"
                    unit_of_measurement: "W"
                    accuracy_decimals: 1
                
                

                Vielleicht kann @ticaki oder @Dutchman helfen?

                W Offline
                W Offline
                wibear
                schrieb am zuletzt editiert von
                #15

                @ticaki @Dutchman ESPHome ESP32-S3 mit MQTT verliert Verbindung:

                Vielleicht kann @ticaki oder @Dutchman helfen?

                Hallo zusammen, könnet Ihr vielleicht Euren Senf dazugeben?
                Danke und Grüße

                1 Antwort Letzte Antwort
                0
                • M MCU

                  @wibear sagte in ESPHome ESP32-S3 mit MQTT verliert Verbindung:

                  Das Problem ist, dass es eine kurze Weile läuft und danach nicht mehr mit unzähligen Warnmeldungen:

                  Danke für den Hinweis – wenn der ESP nach kurzer Laufzeit unzählige Warnungen ausgibt und die MQTT-Verarbeitung stoppt, liegt sehr wahrscheinlich ein Speicher- oder Ressourcenproblem vor, vor allem bei vielen mqtt_subscribe-Topics und gleichzeitiger Verarbeitung über Lambda-Funktionen.

                  🧠 Mögliche Ursachen für dein Problem:

                  1. Zu viele MQTT-Subscriptions
                    ESPHome (besonders auf dem ESP32-S3 mit esp-idf) ist bei vielen mqtt_subscribe-Textsensoren empfindlich, insbesondere wenn:

                  Jeder Sensor in kurzer Zeit aktualisiert wird

                  Viele Topics gleichzeitig abonniert sind

                  Jede Nachricht per lambda ausgewertet wird (wie bei der Float-Umwandlung)

                  → Das kann den Task-Speicher oder den MQTT-Handler überlasten.

                  1. Fehlende Speicherfreigabe / Buffer-Überlauf
                    Der on_value:-Lambda legt ggf. bei jeder MQTT-Nachricht einen Float-Wert an, ohne Pufferung oder Zeitabstand → das kann zu einer Flut von Speicheroperationen führen, besonders bei vielen Topics mit hoher Update-Rate.

                  ✅ Lösungsvorschläge (step-by-step)
                  ✅ 1. Begrenze Anzahl gleichzeitig aktiver mqtt_subscribe-Sensoren
                  Teste probeweise nur mit 2 oder 3 Topics, z. B.:

                  text_sensor:
                    - platform: mqtt_subscribe
                      id: test_1
                      topic: esphome/DisplayTFT/Test1
                      on_value:
                        then:
                          - lambda: |-
                              id(sensor_test_1).publish_state(atof(x.c_str()));
                  

                  ✅ 2. Füge Logging bei jedem Empfang hinzu (nur Debugzwecke)

                  logger:
                    level: DEBUG
                  

                  Oder in der Lambda:

                  cpp

                  ESP_LOGD("mqtt", "MQTT-Wert empfangen: %s", x.c_str());
                  

                  Damit siehst du, ob Nachrichten zu oft oder zu schnell kommen.

                  ✅ 3. Füge einen Filter hinzu, um nur Werte zu publizieren, wenn sie sich wirklich ändern

                  on_value:
                    then:
                      - lambda: |-
                          float val = atof(x.c_str());
                          if (fabs(val - id(sensor_test_1).state) > 0.1) {
                            id(sensor_test_1).publish_state(val);
                          }
                  

                  Das reduziert die Anzahl der publish_state()-Aufrufe und entlastet die CPU.

                  ✅ 4. Nutze dedizierte text_sensor nur für Strings, und fasse Daten ggf. zusammen
                  Wenn du z. B. mehrere Werte gleichzeitig senden kannst (z. B. JSON wie {"solar": 82.5, "netz": 71.2}), kannst du:

                  einen einzigen mqtt_subscribe verwenden

                  und die Werte intern verteilen

                  💡 Alternativ (stabilster Weg): on_message: zentral verwenden
                  Anstelle von 15× mqtt_subscribe, kannst du mit mqtt.on_message: alle Nachrichten zentral verarbeiten:

                  mqtt:
                    on_message:
                      - topic: esphome/DisplayTFT/Solar/Einspeisung_Jetzt
                        then:
                          - lambda: |-
                              float val = atof(x.c_str());
                              id(sensor_solar).publish_state(val);
                  
                  sensor:
                    - platform: template
                      id: sensor_solar
                      name: "Solar Einspeisung Jetzt"
                  

                  → Spart massiv Ressourcen und ist deutlich robuster.

                  📌 Fazit
                  Wenn du viele MQTT-Werte brauchst und es stabil bleiben soll:

                  Verwende lieber mqtt.on_message zentral statt viele mqtt_subscribe.

                  Begrenze Aktualisierungsfrequenz und publish_state-Events.

                  Optional: aggregiere Daten in JSON-Form.

                  W Offline
                  W Offline
                  wibear
                  schrieb am zuletzt editiert von
                  #16

                  @mcu sagte in ESPHome ESP32-S3 mit MQTT verliert Verbindung:

                  Teste probeweise nur mit 2 oder 3 Topics, z. B.:

                  Das habe ich schon auch ausprobiert: immer dasselbe...

                  @mcu sagte in ESPHome ESP32-S3 mit MQTT verliert Verbindung:

                  Zu viele MQTT-Subscriptions

                  Deswegen musste ich extra ESP32-S3 mit PSRAM nehmen.

                  @mcu sagte in ESPHome ESP32-S3 mit MQTT verliert Verbindung:

                  Füge Logging bei jedem Empfang hinzu (nur Debugzwecke)

                  Gute Idee, mache ich.

                  @mcu sagte in ESPHome ESP32-S3 mit MQTT verliert Verbindung:

                  Füge einen Filter hinzu, um nur Werte zu publizieren, wenn sie sich wirklich ändern

                  Sehr gute Sache, mache ich auch.

                  @mcu sagte in ESPHome ESP32-S3 mit MQTT verliert Verbindung:

                  Verwende lieber mqtt.on_message zentral statt viele mqtt_subscribe.

                  Muss ich erstmal rausbekommen, wie das geht...

                  M 1 Antwort Letzte Antwort
                  0
                  • W wibear

                    @mcu sagte in ESPHome ESP32-S3 mit MQTT verliert Verbindung:

                    Teste probeweise nur mit 2 oder 3 Topics, z. B.:

                    Das habe ich schon auch ausprobiert: immer dasselbe...

                    @mcu sagte in ESPHome ESP32-S3 mit MQTT verliert Verbindung:

                    Zu viele MQTT-Subscriptions

                    Deswegen musste ich extra ESP32-S3 mit PSRAM nehmen.

                    @mcu sagte in ESPHome ESP32-S3 mit MQTT verliert Verbindung:

                    Füge Logging bei jedem Empfang hinzu (nur Debugzwecke)

                    Gute Idee, mache ich.

                    @mcu sagte in ESPHome ESP32-S3 mit MQTT verliert Verbindung:

                    Füge einen Filter hinzu, um nur Werte zu publizieren, wenn sie sich wirklich ändern

                    Sehr gute Sache, mache ich auch.

                    @mcu sagte in ESPHome ESP32-S3 mit MQTT verliert Verbindung:

                    Verwende lieber mqtt.on_message zentral statt viele mqtt_subscribe.

                    Muss ich erstmal rausbekommen, wie das geht...

                    M Online
                    M Online
                    MCU
                    schrieb am zuletzt editiert von
                    #17

                    @wibear sagte in ESPHome ESP32-S3 mit MQTT verliert Verbindung:

                    Muss ich erstmal rausbekommen, wie das geht...

                    Super Entscheidung – die zentrale Nutzung von mqtt.on_message: ist deutlich effizienter und stabiler, vor allem bei vielen Topics. Ich zeige dir jetzt, wie du das sauber aufbaust:

                    ✅ Zentrales MQTT-Handling mit mqtt.on_message
                    Statt für jeden Wert einen eigenen mqtt_subscribe zu verwenden, fängst du alle Nachrichten in einem zentralen Block ab – und entscheidest dann per topic, was damit passiert.

                    🔧 Beispiel: Zwei MQTT-Werte zentral empfangen und verarbeiten

                    esphome:
                      name: displaytft
                      friendly_name: DisplayTFT
                    
                    esp32:
                      board: esp32-s3-devkitc-1
                      framework:
                        type: esp-idf
                    
                    logger:
                    
                    api:
                      encryption:
                        key: "DEIN_KEY"
                    
                    ota:
                      password: "DEIN_PASSWORT"
                    
                    wifi:
                      ssid: !secret wifi_ssid
                      password: !secret wifi_password
                      ap:
                        ssid: "Displaytft Fallback Hotspot"
                        password: "O4s50tPm0qCc"
                    
                    captive_portal:
                    
                    mqtt:
                      broker: 192.168.178.10
                      username: !secret mqtt_username
                      password: !secret mqtt_password
                      client_id: DisplayTFT
                      topic_prefix: esphome
                    
                      on_message:
                        - topic: esphome/DisplayTFT/Solar/Einspeisung_Jetzt
                          then:
                            - lambda: |-
                                float val = atof(x.c_str());
                                id(sensor_solar_einspeisung).publish_state(val);
                    
                        - topic: esphome/DisplayTFT/Netz/Verbrauch_Jetzt
                          then:
                            - lambda: |-
                                float val = atof(x.c_str());
                                id(sensor_netz_verbrauch).publish_state(val);
                    
                    sensor:
                      - platform: template
                        id: sensor_solar_einspeisung
                        name: "Solar Einspeisung Jetzt"
                        unit_of_measurement: "W"
                        accuracy_decimals: 1
                    
                      - platform: template
                        id: sensor_netz_verbrauch
                        name: "Netz Verbrauch Jetzt"
                        unit_of_measurement: "W"
                        accuracy_decimals: 1
                    `` 
                    💡 Erklärung
                    Abschnitt	Bedeutung
                    mqtt.on_message:	Fängt MQTT-Nachrichten für bestimmte Topics ab
                    lambda:	Verarbeitet den empfangenen Wert (x)
                    atof(x.c_str())	Wandelt den Text in eine Zahl um
                    template sensor	Hält den aktuellen Float-Wert, damit du ihn anzeigen oder weiterverwenden kannst
                    
                    🔁 Vorteile gegenüber mqtt_subscribe
                    ✅ Kein RAM-Leak bei vielen Topics
                    ✅ Bessere Performance
                    ✅ Saubere zentrale Logik
                    ✅ Keine 20× text_sensor, sondern alles an einem Ort

                    NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
                    Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

                    W 1 Antwort Letzte Antwort
                    0
                    • M MCU

                      @wibear sagte in ESPHome ESP32-S3 mit MQTT verliert Verbindung:

                      Muss ich erstmal rausbekommen, wie das geht...

                      Super Entscheidung – die zentrale Nutzung von mqtt.on_message: ist deutlich effizienter und stabiler, vor allem bei vielen Topics. Ich zeige dir jetzt, wie du das sauber aufbaust:

                      ✅ Zentrales MQTT-Handling mit mqtt.on_message
                      Statt für jeden Wert einen eigenen mqtt_subscribe zu verwenden, fängst du alle Nachrichten in einem zentralen Block ab – und entscheidest dann per topic, was damit passiert.

                      🔧 Beispiel: Zwei MQTT-Werte zentral empfangen und verarbeiten

                      esphome:
                        name: displaytft
                        friendly_name: DisplayTFT
                      
                      esp32:
                        board: esp32-s3-devkitc-1
                        framework:
                          type: esp-idf
                      
                      logger:
                      
                      api:
                        encryption:
                          key: "DEIN_KEY"
                      
                      ota:
                        password: "DEIN_PASSWORT"
                      
                      wifi:
                        ssid: !secret wifi_ssid
                        password: !secret wifi_password
                        ap:
                          ssid: "Displaytft Fallback Hotspot"
                          password: "O4s50tPm0qCc"
                      
                      captive_portal:
                      
                      mqtt:
                        broker: 192.168.178.10
                        username: !secret mqtt_username
                        password: !secret mqtt_password
                        client_id: DisplayTFT
                        topic_prefix: esphome
                      
                        on_message:
                          - topic: esphome/DisplayTFT/Solar/Einspeisung_Jetzt
                            then:
                              - lambda: |-
                                  float val = atof(x.c_str());
                                  id(sensor_solar_einspeisung).publish_state(val);
                      
                          - topic: esphome/DisplayTFT/Netz/Verbrauch_Jetzt
                            then:
                              - lambda: |-
                                  float val = atof(x.c_str());
                                  id(sensor_netz_verbrauch).publish_state(val);
                      
                      sensor:
                        - platform: template
                          id: sensor_solar_einspeisung
                          name: "Solar Einspeisung Jetzt"
                          unit_of_measurement: "W"
                          accuracy_decimals: 1
                      
                        - platform: template
                          id: sensor_netz_verbrauch
                          name: "Netz Verbrauch Jetzt"
                          unit_of_measurement: "W"
                          accuracy_decimals: 1
                      `` 
                      💡 Erklärung
                      Abschnitt	Bedeutung
                      mqtt.on_message:	Fängt MQTT-Nachrichten für bestimmte Topics ab
                      lambda:	Verarbeitet den empfangenen Wert (x)
                      atof(x.c_str())	Wandelt den Text in eine Zahl um
                      template sensor	Hält den aktuellen Float-Wert, damit du ihn anzeigen oder weiterverwenden kannst
                      
                      🔁 Vorteile gegenüber mqtt_subscribe
                      ✅ Kein RAM-Leak bei vielen Topics
                      ✅ Bessere Performance
                      ✅ Saubere zentrale Logik
                      ✅ Keine 20× text_sensor, sondern alles an einem Ort
                      W Offline
                      W Offline
                      wibear
                      schrieb am zuletzt editiert von
                      #18

                      @mcu
                      Danke, danke, werde ich morgen umsetzen…

                      1 Antwort Letzte Antwort
                      0
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

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

                      918

                      Online

                      32.6k

                      Benutzer

                      81.9k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe