Ankündigung

Einklappen
Keine Ankündigung bisher.

HA und KNX Thermostat verstellt Solltemperatur

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    HA und KNX Thermostat verstellt Solltemperatur

    Hallo zusammen,

    ich benötige mal wieder Hilfe. Ich habe folgende Thermostate verbaut: Berker KNX Thermostat 75441179 (https://hager.com/de/katalog/produkt...-sst-ib-k-1-pw). Ich habe zudem eine Wärmepumpe und wollte die mal kühlen lassen. Dazu muss das Thermostat umgeschaltet werden auf kühlen. Das habe ich soweit auch alles hinbekommen und in HA integriert bekommen.
    Mein Problem ist jetzt, dass das Thermostat nach einer Stunde eine default Temperatur einstellt. Ich weiß nicht wo das herkommt und wie ich es lösen kann. Hier mal meine aktuelle Konfiguration in der ets:
    ets.png
    Da sieht man die Gruppenadressen und die KO im Thermostat. Ich denke alle relevanten sind ersichtlich.
    In HA habe ich die Konfiguration wie folgt eingetragen:
    Code:
    climate:
      - name: Küche
        temperature_address: "5/2/1"
        setpoint_shift_address: "5/6/1"
        setpoint_shift_state_address: "5/7/1"
        setpoint_shift_mode: "DPT9002"
        target_temperature_address: "5/3/1"
        target_temperature_state_address: "5/3/1"
        operation_mode_address: "5/4/1"
        heat_cool_address: "7/0/1"
        heat_cool_state_address: "7/1/1"​
    Ein Problem sehe ich darin, dass die target_temperatur_address und die target_temperature_state_address die gleiche Adresse haben. Wenn ich es umkonfiguriere, ist mein Thermostat in HA nicht mehr verfügbar. Ich bin so langsam am Ende mit meinem Latein. Wäre schön, wenn jemand mehr Ahnung hat als ich.

    Gibt es irgendwo ein mapping, welchen Parameter aus der ETS ich in die HA Konfiguration eintragen soll? Das würde mir helfen. Die Doku habe ich bereits mehrfach gelesen - ohne Erfolg. Und mit KI kommt man auch nicht weiter. Die scheint nicht den besten Einblick in closed source systeme wie KNX zu bekommen - die KI halluziniert und gibt Lösungen die nicht funktionieren. Irgendwann dreht man sich im Kreis und es funktioniert nicht.

    Danke und Grüße

    #2
    Zuerst, wäre ein voller Screenshot hilfreicher. Die Datentypen in der ETS und die Flags wären für die Fehlersuche interessant.
    Außerdem wird KO53 nicht gezeigt.

    Aber:
    Wieso stellst du den "setpoint_shift_mode" auf "DPT9002"?
    Der Regler will aber 1Byte haben "DPT6010":
    grafik.png​
    Hier sieht man auch KO53, was in deinem Screenshot fehlt.

    "target_temperature_address" kannst du entfernen, da die Temperaturänderung über das KO53 (Sollwertverschiebung) passiert.

    Weiterhin hast du in der ETS "5/4/1" an "Basis-Sollwert" und "Zwangsobjekt-Betriebsmodus" angebunden. Also zweimal die gleiche GA.

    Wie hast du "Reglerstatus" -> "7/1/1" konfiguriert? HA erwartet da 1Bit. Eventuell musst du da noch das L-Flag setzten.


    Ich würde es so ändern:
    Code:
    climate:
      - name: Küche
        temperature_address: "5/2/1"
    
        setpoint_shift_address: "5/6/1"
        setpoint_shift_state_address: "5/7/1"
        setpoint_shift_mode: "DPT6010"
        temperature_step: 0.5
    
        target_temperature_state_address: "5/3/1"
    
        operation_mode_address: "5/4/1"
    
        heat_cool_address: "7/0/1"
        heat_cool_state_address: "7/1/1"​
    Da du ja die Doku durchgelesen hast ist dir ja das auch aufgefallen:
    grafik.png​
    Was hast du da parametriert? Ich denke das sollte auf "Ja" stehen.

    Also, deine Config in Ordnung bringen und in HA den Sollwert um 0,5 °C erhöhen. Im Gruppenmonitor muss der Wert von "5/6/1" um 1 steigen, auf "5/7/1" bestätigt werden und "5/3/1" den neuen Sollwert liefern.​

    Kommentar


      #3
      image.png​Hi r4id,

      danke für deine Antwort. Ich versuche mal zu antworten.
      ​Hier ein besserer Ausschnitt mit KO 53. Sorry, passiert nicht nochmal.
      Wenn ich in der HA config die "target_temperature_address" weglasse, ist der Thermostat in HA nicht verfügbar. Also habe ich es mal drin gelassen, damit ich zumindest einen Thermostat habe.
      Beim Reglerstatus (7/1/1) habe ich das Lesen flag gesetzt. Das hat gefehlt.
      Code:
      setpoint_shift_mode: "DPT6010"
      temperature_step: 0.5​
      habe ich jetzt noch geändert.
      Die von Dir angesprochene Einstellung zum Basissollwert habe ich mir angeschaut. Es war wie default eingestellt auf "nein". Ich habs mal auf "ja" gestellt. Die Änderung des Basissollwertes wird jetzt also dauerhaft geändert.
      Wie gesagt es ist aktuell geändert und ich beobachte mal das Verhalten. Ich aktualisiere den Beitrag dann entsprechend.

      Danke

      Edit: Also die Einstellungen greifen erstmal und die Solltemperatur bleibt bestehen. Und dann kommen wir anscheinend gleich zum nächsten Problem. Ich vermute, das Heizungsventil wird jetzt nicht mehr geöffnet, wenn geheizt werden soll. Da es eine Fußbodenheizung ist, sehe ich das erst in geraumer Zeit. Ich warte mal ab.

      Edit2: Ich habe noch ein paar Informationen mehr. Wenn ich die Konfiguration beim Basis-Sollwertverschiebung nicht anpasse, bleibt die Zieltemperatur im HA bestehen und verstellt sich auch nicht. Es scheint egal zu sein ob ich da ja oder nein auswhähle. Die Konfiguration im yaml sieht aktuell wie folgt aus:
      Code:
      climate:
        - name: Kueche
          temperature_address: "5/2/1"
          setpoint_shift_address: "5/6/1"
          setpoint_shift_state_address: "5/7/1"
          setpoint_shift_mode: "DPT6010"
          temperature_step: 0.5
          target_temperature_address: "5/3/1"
          target_temperature_state_address: "5/3/1"
          operation_mode_address: "5/4/1"
          heat_cool_address: "7/0/1"
          heat_cool_state_address: "7/1/1"
      Ich prüfe derzeit, wieso der Aktor nicht entsprechend angesteuert wird und das Heizventil sich nicht öffnet.
      Angehängte Dateien
      Zuletzt geändert von matrixp; 23.09.2026, 08:32.

      Kommentar


        #4
        Zitat von matrixp Beitrag anzeigen
        Wenn ich in der HA config die "target_temperature_address" weglasse, ist der Thermostat in HA nicht verfügbar.
        Hast du das auch aus der Dashboard card raus gelöscht, ansonsten schaut HA auf einen nicht existierende Entität. Und unbedingt die yaml config neu laden in HA.
        Oder wird da gar eine neue Entität erstellt? z.b. climate.kueche_2?

        Zitat von r4id Beitrag anzeigen
        Weiterhin hast du in der ETS "5/4/1" an "Basis-Sollwert" und "Zwangsobjekt-Betriebsmodus" angebunden.
        Das hast du nicht berücksichtigt. Normal sollte KO28 reichen.

        Das KO 36 hat noch immernoch den falschen Datentyp. Siehe hierzu meine Anmerkung:
        Zitat von r4id Beitrag anzeigen
        Wie hast du "Reglerstatus" -> "7/1/1" konfiguriert? HA erwartet da 1Bit
        oder du lässt das so, und benutzt stattdessen
        HTML-Code:
        controller_status_state_address: "7/1/1"​
        Wichtig ist auch, KO50 -> "5/3/1" -> "target_temperature_address" ist keine Sollwertvorgabe, sondern nur der aktuelle Sollwert (lesend)

        Kommentar


          #5
          Hi r4id,

          es wird besser :-).
          HTML-Code:
          - name: Schlafen
              temperature_address: "5/2/6"
              setpoint_shift_address: "5/6/6"
              setpoint_shift_state_address: "5/7/6"
              setpoint_shift_mode: "DPT6010"
              temperature_step: 0.5
              target_temperature_address: "5/3/6"
              target_temperature_state_address: "5/3/6"
              operation_mode_address: "5/4/6"
              operation_mode_state_address: "5/4/6"
              heat_cool_address: "7/0/6"
                #heat_cool_state_address: "7/1/6"
              controller_status_state_address: "7/1/6"​
          Ich habe meine Spielwiese mal ins Schlafzimmer verlegt und im HA die obige configuration genutzt. Das eine ist wie gehabt, wenn ich das "target_temperature_address" weglasse, kann HA die Entität nicht mehr finden. Und ja ich habe die yaml config neu geladen bzw. HA komplett neu gestartet.

          KO32 habe ich getrennt und in der config entsprechend entfernt.

          Das "controller_status_state_address" habe ich eingefügt.

          KO50 ist lesend und nicht schreibend. Sollte so passen.

          Das Gute ist jetzt, dass der Thermostat im Schlafzimmer sich nun so einstellen lässt über HA wie gewünscht. Ich kann zwischen Heizen und Kühlen umschalten und die Presets wählen, sodass auch die Temperaturen entsprechend angepasst werden. Die Temperaturen lassen sich in den entsprechenden Bereichen auch nochmal separat anpassen. Soweit alles gut.

          Was ich jetzt noch beobachte:
          1. Der Thermostat gibt aus, ob aktuell geheizt bzw. gekühlt wird. Das ist auch auf eine Gruppenadresse gelegt. Allerdings finde ich keine Config in HA, wo der Wert genutzt wird. Der Thermostat im Schlafzimmer zeigt immer Heizen an, auch wenn die Ist-Temperatur höher ist als die Soll-Temperatur. Gibt es hier eine Lösung?
          2. Ich habe das Gefühl, dass der Wert wie das Reglerventil angesteuert wird keine Wirkung hat. Auch wenn geheizt werden soll, bleibt die Öffnung bei 0%. Das erscheint mir komisch, wenn die Soll-Temperatur größer ist die Ist-Temperatur.

          Danke für die Mühe, wir sind schon wesentlich weiter! :-)

          Kommentar


            #6
            Zitat von matrixp Beitrag anzeigen
            Ich habe meine Spielwiese mal ins Schlafzimmer verlegt
            Das macht es natürlich nicht gerade einfacher, wenn du deine aktuellen KOs (Sreenshot) als nicht mitsendest. Wir versuchen es trotzdem:
            1. Du musst zwischen der Betriebsart z.B. "Heizen" und dem aktuellen Status z.B. "heizt gerade" unterscheiden.
              Was du siehst, ist wahrscheinlich der hvac_mode (Betriebsart) in HomeAssistant siehe -> https://www.home-assistant.io/integrations/knx/#climate
              Der Status kommt wie aus deinen Screenshots zu sehen aus KO37 (Heizen) KO38 (Kühlen).
              Alternativ kannst du aber auch den "command_value_state_address​" nutzen, der gibt die Stellgröße aus.
              Je nach Betriebsart (Heizen/Kühlen) hast du bei >0% dann die Anforderung

              Für deinen kombinierten Heiz-/Kühlbetrieb musst du bedenkten: KO 37 meldet ausschließlich die Heizanforderung. Beim Kühlen könnte HA deshalb „Leerlauf“ anzeigen, obwohl KO 38 eine Kühlanforderung meldet.

              Du hast zwei Möglichkeiten:
              - Nur command_value_state_address verwenden, sofern KO 46 die gemeinsame Stellgröße für Heizen und Kühlen liefert.
              - KO 37 und KO 38 durch eine ODER-Logik verknüpfen. Das Ergebnis auf eine eigene Gruppenadresse senden und diese als active_state_address eintragen.
            2. Musst du mal im KNX Busmonitor prüfen ob der Berger schon 0% sendet. Bzw. wo siehst du diese 0%?
            ---

            Probier mal so (habe mal Kommentare zugefügt) :
            Code:
            climate:
              - name: Schlafen
            
                # ISTTEMPERATUR​
                # KO 23: Gemessene Raumtemperatur
                # Datentyp: DPT 9.001, Temperatur in °C.​
                temperature_address: "5/2/6"
            
                #------------------------------------
            
                # SOLLWERTVERSTELLUNG​
                # KO 53: Gewünschte Sollwertverschiebung (schreiben)
                setpoint_shift_address: "5/6/6"
            
                # KO 52: Tatsächliche Sollwertverschiebung (lesen)
                setpoint_shift_state_address: "5/7/6"
            
                # Der Berker verwendet einen vorzeichenbehafteten 1-Byte-Zählwert.
                # Ein Schritt entspricht fest 0,5 K:
                # Wert "1" = +0,5 K, Wert "2" = +1,0 K, Wert "-1" = -0,5 K.
                setpoint_shift_mode: "DPT6010"
                temperature_step: 0.5
            
                #------------------------------------
            
                # SOLLTEMPERATUR​
                # KO 50: Aktuell wirksamen Sollwert (lesen)
                # Datentyp: DPT 9.001, Temperatur in °C.
                target_temperature_state_address: "5/3/6"
            
                #------------------------------------
            
                # BETRIEBSMODUS
                # KO 28: Komfort, Standby, Nacht oder Frost-/Hitzeschutz vorgeben.
                # Datentyp: DPT 20.102.
                # Diese Gruppenadresse darf nicht zugleich an KO 32 hängen.
                operation_mode_address: "5/4/6"
            
                #------------------------------------
            
                # HEIZEN / KÜHLEN
                # KO 35: Betriebsart vorgeben.
                # 1 = Heizen, 0 = Kühlen.
                heat_cool_address: "7/0/6"
            
                #------------------------------------
            
                # SAMMELSTATUS
                # KO 36: Tatsächlichen Betriebsmodus und Heizen/Kühlen lesen.
                # In ETS das L-Flag aktivieren, damit HA den Status abfragen kann.
                controller_status_state_address: "7/1/6"
            
            
                #------------------------------------
            
                # STELLGRÖSSE
                # KO 46: Angeforderte Stellgröße in Prozent lesen.
                # Voraussetzung: KO 46 ist tatsächlich mit 5/1/6 verbunden.
                # Datentyp: DPT 5.001, 1 Byte.
                # In ETS das L-Flag für Leseabfragen aktivieren.
                
                # Ohne zusätzliches active_state_address nutzt HA:
                #    0 % = Leerlauf
                #  >0 % = aktiv, je nach Betriebsart Heizen oder Kühlen
                #
                # Dies ist keine Messung der tatsächlichen Ventilöffnung.
                command_value_state_address: "5/1/6"​

            Dazu in ETS sicherstellen:
            • KO 36 bleibt 1-Byte-Sammelstatus; L-Flag einschalten.
            • KO 46 ist tatsächlich mit 5/1/6 verbunden; L-Flag einschalten.
            • 5/4/6 hängt an KO 28, nicht zusätzlich an KO 32; eine bestehende Zwangssteuerung aufheben
            ​

            Kommentar


              #7
              Hi r4id,

              sorry, hier sind die aktuellen KOs:
              image.png​
              1. KO37 und KO38 habe ich nicht vor mit logischen Operatoren zu verknüpfen. Also command_value_state_address mit KO46 verbinden.
              2. Der Berker liefert schon direkt % Werte. Passt also.

              Ich habe es jetzt so konfiguriert:
              Code:
              - name: Schlafen
                temperature_address: "5/2/6"
                setpoint_shift_address: "5/6/6"
                setpoint_shift_state_address: "5/7/6"
                setpoint_shift_mode: "DPT6010"
                temperature_step: 0.5
                target_temperature_address: "5/3/6"
                target_temperature_state_address: "5/3/6"
                operation_mode: "5/4/6"
                operation_mode_state_address: "5/4/6"
                heat_cool_address: "7/0/6"
                controller_status_state_address: "7/1/6"
                command_value_state_address: "5/1/6"​
              Wenn ich target_temperature_address weglasse, ist die Entität nicht mehr da. Ich habe die yaml neu geladen und HA neu gestartet. Ich habe wirklich eine Menge probiert, ich kann den Parameter nicht weglassen .

              Ich habe schon kurz rumprobiert und es sieht sehr gut aus. Ich kann zwischen Heizen und Kühlen umschalten. Wenn das Ventil geöffnet werden soll, tut sich erstmal was. Ich probiere die Tage noch ein bissl rum. Die Ventile stellen sich halt sehr langsam um, Aufgrund der Fußbodenheizungseinstellung.

              Dankesehr
              Angehängte Dateien

              Kommentar

              Lädt...
              X