TP-Link Kasa KE100: permanente Temperaturkorrektur −10 °C

Hallo zusammen,

ich habe ein merkwürdiges Verhalten mit TP-Link Kasa KE100 Heizkörperthermostaten, die über einen KH100 Smart Hub in Home Assistant eingebunden sind.
Ich möchte gerne klären, ob ich etwas falsch konfiguriert habe oder ob das Verhalten von den KE100 selbst kommt.

Setup

  • KE100 (mehrere Geräte)

  • Hersteller: TP-Link

  • Anbindung: über KH100 Smart Hub

  • Integration: TP-Link / Kasa (offiziell)

  • Firmware KE100:
    2.10.0 Build 240305 Rel.113521

  • Hardware: 1.0

  • Home Assistant Core: 2026.1.3

  • Die bereitgestellten climate.*-Entitäten werden in Better Thermostat verwendet

Beobachtetes Verhalten

Permanente Temperaturkorrektur auf −10 °C oder andere extreme Werte

Alle KE100 melden wirre Werte wie zum Beispiel:

"temp_offset": -10

also maximale negative Temperaturkorrektur.

Beispiel:

  • Externer Temperatursensor im Raum: 20,3 °C

  • Solltemperatur (z. B. Büro): 23 °C

  • Tatsächliche Raumtemperatur nachts teilweise ~19 °C

Trotzdem steht die Temperaturkorrektur dauerhaft auf −10 °C, über alle KE100 hinweg.

Das wirkt extrem aggressiv und nicht wie eine dynamische Regelung, sondern wie ein permanenter Grenzwert.

climate.tp_link_heizung_thermostat_buro

Offsetverhalten:

Einheitliches Verhalten bei allen KE100

  • Alle KE100 zeigen dieses Verhalten

  • Unterschiedliche Räume, unterschiedliche Temperaturen

  • Kein einzelnes Ausreißergerät

  • Verhalten bleibt auch über längere Zeit konstant

  1. Ist diese permanente −10 °C Temperaturkorrektur normales Verhalten der KE100?

  2. Wird die Korrektur intern vom KE100 berechnet oder vom Hub?

  3. Kann es sein, dass externe Sensoren + KE100 sich hier gegenseitig „hochschaukeln“?

    1. Geht ja eigentlich nicht, gesteuert wird nur über Better Thermostat….
  4. Habe ich eventuell eine falsche Konfiguration (z. B. doppelte Korrektur)?

  5. Ist das ein bekanntes Firmware-Verhalten der KE100?

  • KE100 sind über den Kasa Hub eingebunden

  • Die TP-Link-Integration stellt die Entitäten bereit

  • Better Thermostat nutzt diese Entitäten nur, greift aber nicht direkt in die KE100-Logik ein

Über Hinweise, Erfahrungswerte oder Best-Practices würde ich mich sehr freuen.

Danke euch!

Better Thermostat macht das, soweit ich weiß, über das Offset.

Ja, unter anderem. aber diese permanenten Sprünge von +10 Grad Offset und -10 Grad Offset sind enorm.

Die Matter Integration hat gar keine Offset Steuerung weswegen Better Thermostate da nicht gut mit umgehen kann.

Ich werde mal die Sonoff TVR testen. Die sollten per Zigbee nativ integrierbar sein.

Ich verwende bei mir auch im ganzen Haus KE100 inkl. Tapo T310 Temperatursensoren.

Mein Eindruck ist das die Thermostate oft nicht die Solltemperatur erreichen und immer etwas drunter rumdümpeln. Aber ich rede hier von ~0,5 Grad. Ein Offset von -10 Grad hab ich bei mir nicht.

Im großen und ganzen funktioniert das Setup sehr gut. Ich hab mir einen Blueprint geschrieben in der ich pro Thermostat bis zu fünf Zeitpunkte mit entsprechenden Zieltemperaturen hinterlegen kann. Inklusive einer dreifachen Retry-Logik sowie Fehlerignorierung bei Timeouts einzelner Thermostate. Das funktionierte bisher 100% zuverlässig.

Ich habe bei mir auch alles mit den ke100 - über die tp link Integration.
Matter hat leider keine offset Unterstützung aktuell.

Bei mir sieht es aber so aus:

Das Thermostat im ke100 zeigt immer echt niedrige Werte an:

Blau: Büro ist TEMP
Orange: Heizbetrieb
Gelb: soll Temp

7 Uhr will er also 10 Grad gemessen haben

Da waren draußejm 0,3 Grad und das Fenster war angekippt. Auf keinen Fall waren im Büro 7 Grad:

19,2 Grad waren es auf der Hochebene, lass es unten (wir haben 330cm Deckenhöhe und eine hochebene eingebaut) 15 Grad gewesen sein. Aber keine 7 Grad. Wenn ich dann auf 23 hoch heize, dann ist die Differenz tatsächlich groß aber Permanent bei allen?

Im Kinderzimmer war kein Fenster offen:

Es zieht sich also durch komplett alle Thermostate - Siehe oben.

Wie hast du BT eingerichtet ?

Das heißt kein Better Thermostat?

Nein ich verwende kein Better Thermostat - das BP ist mir viel zu “undurchsichtig”.

Ich verwende meine KE100 mit der offiziellen Integration welche über die Cloud läuft - ist vielleicht nicht ganz zukunftssicher aber für den Moment funktioniert es einwandfrei.

In der KASA App selbst habe ich in der “Temperaturkorrektur” die jeweiligen Temperatursensoren als Messgrundlage gesetzt.

Gesteuert wird jeder Raum mittels eigener Automation und meinem eigenen Blueprint.

Wie gesagt, die IST-Temperatur ist “meistens” nicht genau die SOLL-Temperatur sondern wird immer etwas unterschritten - aber im großen und ganzen funktioniert es ohne Probleme:

Was werden dir den in der KASA App für Werte angezeigt? Hast du da mal rein geschaut?

In der Kasa App sind es die gleichen Werte.

Ich habe jetzt ein SONOFF TRVZB im Büro installiert und eingerichtet. Werde mal schauen wie sich das verhält.

Wenn das besser klappt, dann fliegen die Kasa teile raus - Mir ist halt wichtig, dass es funktioniert und bis jetzt leider nicht so gut mit denen.

Ich kann gerne berichten.

Etwas verwirrend geschrieben, deswegen hänge ich mich mal beim Offset rein. Den Offset stellt man in der Kasa App ein beim jeweiligen Thermostat.

Nach meiner Erfahrung nach ist der Offset am Thermostat unbrauchbar, zBsp laut ist Temp am Thermostat 21° du aber im Raum 20° misst, würde ja verleiten Offset -1 zu setzen so hast du dann auch am Thermostat 20° angezeigt. Du willst aber bis 21° heizen lassen, was das Thermostat aber dann nicht macht, es beachtet dort nicht den Offset und wird schon bei 20° aufhören (21° - 1 Offset).

Wie gesagt unbrauchbar.

Entweder Raumsensoren zBsp. T310 mit Thermostat verbinden oder generell 1 Grad höher fahren und die Temp per Template in HA korrigieren.

Villeicht auch mal eine abgespeckte Integration nutzen, da gibs kein Offset wie diese:

Ja, das macht Better Thermostat aber auch, wenn man das so konfiguriert. Als “Feinjustierung”. So wie es aktuell bei mir ist ist es aber merkwürdig hoch.

Prinzipiell war meine Hoffnung mit Home Assistent eben nicht von einem Ökosystem abhängig zu sein. Ich habe gute Temperatursensoren von Aqara - Unter anderem. Diese werden als Referenz verwendet.

Das SONOFF TRVZB arbeitet genauso, weil es im Better Thermostat so eingestellt ist, dass es damit arbeiten soll.

Die Temperatur im Raum (externer Sensor) schwankt jedoch ganz schön:

Was man generell beim Sonoff sieht: Der offset von ±10 beim Kasa ist zu wenig.

Was ich nicht verstehen kann ist, dass die Integration tausendfach verwendet wird, überall gelobt wird aber ich scheinbar der einzige bin der ein Problem hat oder glaubt eines zu haben. Denn der Offset kommt ja dadurch zustande, dass die Temperatur am Thermostat so ist wie sie ist.

Wurde so bisher noch in keinem Video thematisiert. Vielleicht habe ich ja auch kein Problem und es ist normal und genau so richtig.

Liebe Grüße

Ich würde das ganze Offset gefriggel mal weglassen

Hier im Forum aber nicht. Ich kenne viele Threads, wo Leute solche Probleme mit Better Thermostat haben.

@Joda hier sind meine beiden Blueprints - 1x für Einzelne Thermostate und 1x für mehrere

blueprint:
  name: Heizplan (Single + Retry + Notification)
  description: >
    Setzt die Temperatur zu 5 Zeitpunkten. 
    Nutzt eine robuste Retry-Logik mit Fehler-Ignorierung (Timeouts), 
    rundet Werte für präzisen Vergleich und bricht bei Erfolg sofort ab.
    Dank 'mode: parallel' blockieren sich kurz aufeinanderfolgende Zeiten nicht.
    + Push-Benachrichtigung bei Fehlern.
  domain: automation

  input:
    climate_entity:
      name: Klima Entity
      selector:
        entity:
          domain: climate
    notify_device:
      name: Benachrichtigungs-Gerät
      description: Das Smartphone für Fehler-Push-Nachrichten.
      selector:
        device:
          filter:
            - integration: mobile_app
    zeitpunkt_1:
      name: 1. Zeitpunkt
      selector:
        time: {}
    temperatur_1:
      name: 1. Temperatur
      selector:
        number:
          min: 5
          max: 30
          step: 0.5
    zeitpunkt_2:
      name: 2. Zeitpunkt
      selector:
        time: {}
    temperatur_2:
      name: 2. Temperatur
      selector:
        number:
          min: 5
          max: 30
          step: 0.5
    zeitpunkt_3:
      name: 3. Zeitpunkt
      selector:
        time: {}
    temperatur_3:
      name: 3. Temperatur
      selector:
        number:
          min: 5
          max: 30
          step: 0.5
    zeitpunkt_4:
      name: 4. Zeitpunkt
      selector:
        time: {}
    temperatur_4:
      name: 4. Temperatur
      selector:
        number:
          min: 5
          max: 30
          step: 0.5
    zeitpunkt_5:
      name: 5. Zeitpunkt
      selector:
        time: {}
    temperatur_5:
      name: 5. Temperatur
      selector:
        number:
          min: 5
          max: 30
          step: 0.5

mode: parallel
max: 10

trigger:
  - platform: time
    at: !input zeitpunkt_1
    id: zeit_1
  - platform: time
    at: !input zeitpunkt_2
    id: zeit_2
  - platform: time
    at: !input zeitpunkt_3
    id: zeit_3
  - platform: time
    at: !input zeitpunkt_4
    id: zeit_4
  - platform: time
    at: !input zeitpunkt_5
    id: zeit_5

action:
  - variables:
      climate: !input climate_entity
      temp_1: !input temperatur_1
      temp_2: !input temperatur_2
      temp_3: !input temperatur_3
      temp_4: !input temperatur_4
      temp_5: !input temperatur_5

  - choose:
      # --- Zeitpunkt 1 ---
      - conditions:
          - condition: trigger
            id: zeit_1
        sequence:
          - repeat:
              count: 3
              sequence:
                - service: climate.set_temperature
                  continue_on_error: true
                  target:
                    entity_id: "{{ climate }}"
                  data:
                    temperature: "{{ temp_1 }}"
                - delay: "00:00:30"
                - condition: template
                  value_template: >
                    {{ state_attr(climate, 'temperature') | float(0) | round(1) != temp_1 | float | round(1) }}
          - if:
              - condition: template
                value_template: >
                  {{ state_attr(climate, 'temperature') | float(0) | round(1) != temp_1 | float | round(1) }}
            then:
              - domain: mobile_app
                type: notify
                device_id: !input notify_device
                title: "Heizungs-Fehler"
                message: "{{ state_attr(climate, 'friendly_name') }} konnte nicht auf {{ temp_1 }}°C gestellt werden."

      # --- Zeitpunkt 2 ---
      - conditions:
          - condition: trigger
            id: zeit_2
        sequence:
          - repeat:
              count: 3
              sequence:
                - service: climate.set_temperature
                  continue_on_error: true
                  target:
                    entity_id: "{{ climate }}"
                  data:
                    temperature: "{{ temp_2 }}"
                - delay: "00:00:30"
                - condition: template
                  value_template: >
                    {{ state_attr(climate, 'temperature') | float(0) | round(1) != temp_2 | float | round(1) }}
          - if:
              - condition: template
                value_template: >
                  {{ state_attr(climate, 'temperature') | float(0) | round(1) != temp_2 | float | round(1) }}
            then:
              - domain: mobile_app
                type: notify
                device_id: !input notify_device
                title: "Heizungs-Fehler"
                message: "{{ state_attr(climate, 'friendly_name') }} konnte nicht auf {{ temp_2 }}°C gestellt werden."

      # --- Zeitpunkt 3 ---
      - conditions:
          - condition: trigger
            id: zeit_3
        sequence:
          - repeat:
              count: 3
              sequence:
                - service: climate.set_temperature
                  continue_on_error: true
                  target:
                    entity_id: "{{ climate }}"
                  data:
                    temperature: "{{ temp_3 }}"
                - delay: "00:00:30"
                - condition: template
                  value_template: >
                    {{ state_attr(climate, 'temperature') | float(0) | round(1) != temp_3 | float | round(1) }}
          - if:
              - condition: template
                value_template: >
                  {{ state_attr(climate, 'temperature') | float(0) | round(1) != temp_3 | float | round(1) }}
            then:
              - domain: mobile_app
                type: notify
                device_id: !input notify_device
                title: "Heizungs-Fehler"
                message: "{{ state_attr(climate, 'friendly_name') }} konnte nicht auf {{ temp_3 }}°C gestellt werden."

      # --- Zeitpunkt 4 ---
      - conditions:
          - condition: trigger
            id: zeit_4
        sequence:
          - repeat:
              count: 3
              sequence:
                - service: climate.set_temperature
                  continue_on_error: true
                  target:
                    entity_id: "{{ climate }}"
                  data:
                    temperature: "{{ temp_4 }}"
                - delay: "00:00:30"
                - condition: template
                  value_template: >
                    {{ state_attr(climate, 'temperature') | float(0) | round(1) != temp_4 | float | round(1) }}
          - if:
              - condition: template
                value_template: >
                  {{ state_attr(climate, 'temperature') | float(0) | round(1) != temp_4 | float | round(1) }}
            then:
              - domain: mobile_app
                type: notify
                device_id: !input notify_device
                title: "Heizungs-Fehler"
                message: "{{ state_attr(climate, 'friendly_name') }} konnte nicht auf {{ temp_4 }}°C gestellt werden."

      # --- Zeitpunkt 5 ---
      - conditions:
          - condition: trigger
            id: zeit_5
        sequence:
          - repeat:
              count: 3
              sequence:
                - service: climate.set_temperature
                  continue_on_error: true
                  target:
                    entity_id: "{{ climate }}"
                  data:
                    temperature: "{{ temp_5 }}"
                - delay: "00:00:30"
                - condition: template
                  value_template: >
                    {{ state_attr(climate, 'temperature') | float(0) | round(1) != temp_5 | float | round(1) }}
          - if:
              - condition: template
                value_template: >
                  {{ state_attr(climate, 'temperature') | float(0) | round(1) != temp_5 | float | round(1) }}
            then:
              - domain: mobile_app
                type: notify
                device_id: !input notify_device
                title: "Heizungs-Fehler"
                message: "{{ state_attr(climate, 'friendly_name') }} konnte nicht auf {{ temp_5 }}°C gestellt werden."
blueprint:
  name: Heizplan Kompakt (Parallel + Retry + Notification)
  description: >
    Steuert mehrere Thermostate GLEICHZEITIG. 
    Inklusive 3 Retries und einer Push-Benachrichtigung mit den Namen der 
    fehlerhaften Geräte, falls ein Durchlauf nicht erfolgreich war.
  domain: automation

  input:
    notify_device:
      name: Benachrichtigungs-Gerät
      description: Das Smartphone für Fehler-Push-Nachrichten.
      selector:
        device:
          filter:
            - integration: mobile_app
    zeit_1:
      name: Zeitpunkt 1
      selector:
        time: {}
    temperatur_1:
      name: Temperatur 1
      selector:
        number:
          min: 5
          max: 30
          step: 0.5
    thermostate_1:
      name: Thermostate Gruppe 1
      selector:
        entity:
          domain: climate
          multiple: true
    zeit_2:
      name: Zeitpunkt 2
      selector:
        time: {}
    temperatur_2:
      name: Temperatur 2
      selector:
        number:
          min: 5
          max: 30
          step: 0.5
    thermostate_2:
      name: Thermostate Gruppe 2
      selector:
        entity:
          domain: climate
          multiple: true
    zeit_3:
      name: Zeitpunkt 3
      selector:
        time: {}
    temperatur_3:
      name: Temperatur 3
      selector:
        number:
          min: 5
          max: 30
          step: 0.5
    thermostate_3:
      name: Thermostate Gruppe 3
      selector:
        entity:
          domain: climate
          multiple: true
    zeit_4:
      name: Zeitpunkt 4
      selector:
        time: {}
    temperatur_4:
      name: Temperatur 4
      selector:
        number:
          min: 5
          max: 30
          step: 0.5
    thermostate_4:
      name: Thermostate Gruppe 4
      selector:
        entity:
          domain: climate
          multiple: true

mode: parallel
max: 20

trigger:
  - platform: time
    at: !input zeit_1
    id: t1
  - platform: time
    at: !input zeit_2
    id: t2
  - platform: time
    at: !input zeit_3
    id: t3
  - platform: time
    at: !input zeit_4
    id: t4

action:
  - variables:
      temp_1: !input temperatur_1
      temp_2: !input temperatur_2
      temp_3: !input temperatur_3
      temp_4: !input temperatur_4
      thermo_1: !input thermostate_1
      thermo_2: !input thermostate_2
      thermo_3: !input thermostate_3
      thermo_4: !input thermostate_4

  - choose:
      # --- Zeitpunkt 1 ---
      - conditions:
          - condition: trigger
            id: t1
        sequence:
          - repeat:
              count: 3
              sequence:
                - service: climate.set_temperature
                  continue_on_error: true
                  target:
                    entity_id: "{{ thermo_1 }}"
                  data:
                    temperature: "{{ temp_1 }}"
                - delay: "00:00:30"
                - condition: template
                  value_template: >
                    {% set ns = namespace(fail=false) %}
                    {% for t in thermo_1 %}
                      {% if state_attr(t, 'temperature') | float(0) | round(1) != temp_1 | float | round(1) %}
                        {% set ns.fail = true %}
                      {% endif %}
                    {% endfor %}
                    {{ ns.fail }}
          - if:
              - condition: template
                value_template: >
                  {% set ns = namespace(fail=false) %}
                  {% for t in thermo_1 %}
                    {% if state_attr(t, 'temperature') | float(0) | round(1) != temp_1 | float | round(1) %}
                      {% set ns.fail = true %}
                    {% endif %}
                  {% endfor %}
                  {{ ns.fail }}
            then:
              - domain: mobile_app
                type: notify
                device_id: !input notify_device
                title: "Heizungs-Fehler (T1)"
                message: >
                  Folgende Geräte konnten nicht auf {{ temp_1 }}°C gestellt werden:
                  {% for t in thermo_1 %}
                    {% if state_attr(t, 'temperature') | float(0) | round(1) != temp_1 | float | round(1) %}
                      - {{ state_attr(t, 'friendly_name') }}
                    {% endif %}
                  {% endfor %}

      # --- Zeitpunkt 2 ---
      - conditions:
          - condition: trigger
            id: t2
        sequence:
          - repeat:
              count: 3
              sequence:
                - service: climate.set_temperature
                  continue_on_error: true
                  target:
                    entity_id: "{{ thermo_2 }}"
                  data:
                    temperature: "{{ temp_2 }}"
                - delay: "00:00:30"
                - condition: template
                  value_template: >
                    {% set ns = namespace(fail=false) %}
                    {% for t in thermo_2 %}
                      {% if state_attr(t, 'temperature') | float(0) | round(1) != temp_2 | float | round(1) %}
                        {% set ns.fail = true %}
                      {% endif %}
                    {% endfor %}
                    {{ ns.fail }}
          - if:
              - condition: template
                value_template: >
                  {% set ns = namespace(fail=false) %}
                  {% for t in thermo_2 %}
                    {% if state_attr(t, 'temperature') | float(0) | round(1) != temp_2 | float | round(1) %}
                      {% set ns.fail = true %}
                    {% endif %}
                  {% endfor %}
                  {{ ns.fail }}
            then:
              - domain: mobile_app
                type: notify
                device_id: !input notify_device
                title: "Heizungs-Fehler (T2)"
                message: >
                  Folgende Geräte konnten nicht auf {{ temp_2 }}°C gestellt werden:
                  {% for t in thermo_2 %}
                    {% if state_attr(t, 'temperature') | float(0) | round(1) != temp_2 | float | round(1) %}
                      - {{ state_attr(t, 'friendly_name') }}
                    {% endif %}
                  {% endfor %}

      # --- Zeitpunkt 3 ---
      - conditions:
          - condition: trigger
            id: t3
        sequence:
          - repeat:
              count: 3
              sequence:
                - service: climate.set_temperature
                  continue_on_error: true
                  target:
                    entity_id: "{{ thermo_3 }}"
                  data:
                    temperature: "{{ temp_3 }}"
                - delay: "00:00:30"
                - condition: template
                  value_template: >
                    {% set ns = namespace(fail=false) %}
                    {% for t in thermo_3 %}
                      {% if state_attr(t, 'temperature') | float(0) | round(1) != temp_3 | float | round(1) %}
                        {% set ns.fail = true %}
                      {% endif %}
                    {% endfor %}
                    {{ ns.fail }}
          - if:
              - condition: template
                value_template: >
                  {% set ns = namespace(fail=false) %}
                  {% for t in thermo_3 %}
                    {% if state_attr(t, 'temperature') | float(0) | round(1) != temp_3 | float | round(1) %}
                      {% set ns.fail = true %}
                    {% endif %}
                  {% endfor %}
                  {{ ns.fail }}
            then:
              - domain: mobile_app
                type: notify
                device_id: !input notify_device
                title: "Heizungs-Fehler (T3)"
                message: >
                  Folgende Geräte konnten nicht auf {{ temp_3 }}°C gestellt werden:
                  {% for t in thermo_3 %}
                    {% if state_attr(t, 'temperature') | float(0) | round(1) != temp_3 | float | round(1) %}
                      - {{ state_attr(t, 'friendly_name') }}
                    {% endif %}
                  {% endfor %}

      # --- Zeitpunkt 4 ---
      - conditions:
          - condition: trigger
            id: t4
        sequence:
          - repeat:
              count: 3
              sequence:
                - service: climate.set_temperature
                  continue_on_error: true
                  target:
                    entity_id: "{{ thermo_4 }}"
                  data:
                    temperature: "{{ temp_4 }}"
                - delay: "00:00:30"
                - condition: template
                  value_template: >
                    {% set ns = namespace(fail=false) %}
                    {% for t in thermo_4 %}
                      {% if state_attr(t, 'temperature') | float(0) | round(1) != temp_4 | float | round(1) %}
                        {% set ns.fail = true %}
                      {% endif %}
                    {% endfor %}
                    {{ ns.fail }}
          - if:
              - condition: template
                value_template: >
                  {% set ns = namespace(fail=false) %}
                  {% for t in thermo_4 %}
                    {% if state_attr(t, 'temperature') | float(0) | round(1) != temp_4 | float | round(1) %}
                      {% set ns.fail = true %}
                    {% endif %}
                  {% endfor %}
                  {{ ns.fail }}
            then:
              - domain: mobile_app
                type: notify
                device_id: !input notify_device
                title: "Heizungs-Fehler (T4)"
                message: >
                  Folgende Geräte konnten nicht auf {{ temp_4 }}°C gestellt werden:
                  {% for t in thermo_4 %}
                    {% if state_attr(t, 'temperature') | float(0) | round(1) != temp_4 | float | round(1) %}
                      - {{ state_attr(t, 'friendly_name') }}
                    {% endif %}
                  {% endfor %}
1 „Gefällt mir“

Ich rate dringend von der Verwendung von KE100 ab!

Bei mir sind aktuell 10 Stück mit dem Kasa-Hub im Einsatz (ohne Better Thermostat!) und ich kann folgendes an allen Geräten beobachten:

  1. Weder in der Kasa-App noch im HA-Verlauf wird der Heizbetrieb angezeigt, im Gegenteil, die hvac-action steht auf “idle” - dennoch sind die Heizkörper deutlich warm, teilweise heiß. Selbst Stunden zurück im Verlauf gibt es kein “heating”. Die Ventile werden offensichtlich nicht richtig geschlossen und die Thermostate bleiben vermutlich einfach stehen.

  2. Kalibriert man die Thermostate neu, lässt sich an einigen der unter 1. genannte Fehler für 1-2 Tage nicht mehr feststellen (er kommt aber wieder), bei anderen bleibt der Fehler bestehen. “Kalibrieren” heißt in meinem Fall nicht in der Kasa-App auf Kalibrieren drücken sondern Thermostat zurücksetzen - Deinstallation - Sommermodus “vollständig geöffnet” - Neuinstallation - kalibrieren - Sommermodus aus.

  3. Benutzt man die Temperaturkorrektur in der App, führt das jedoch zum Fehlverhalten.

    Zur Verdeutlichung:

    Das Thermostat misst 20°C. Im Raum sind jedoch nur 17°C. Eingestellt wird eine Temperaturkorrektur von -3°. In der App wird folgerichtig eine aktuelle Temperatur (mithin die korrekte Raumtemperatur) von 17°C angezeigt, bei einer gleichzeitigen Zieltemperatur von 20°C.

    Eigentlich sollte das TRV nun das Ventil öffnen, da die Raumtemperatur unter der Zieltemperatur liegt. Macht es jedoch nicht.

    Erhöht man nun die Zieltemperatur schrittweise um 1°C, wird erst nach 3 Schritten das Ventil geöffnet.

    Das bedeutet, die Temperaturkorrektur führt zwar zu einer korrigierten Temperaturanzeige in der App, das tatsächliche Verhalten des TRV ignoriert jedoch die Temperaturkorrektur.

    Die ist bei ALLEN 10 KE100-Thermostaten der Fall und reproduzierbar.

Der TP-Link-Support bekam vollständige Beschreibungen und Screenshots und hat mir nach 2 Wochen mitgeteilt, dass es ihnen leid tut und mich darauf hingewiesen, dass man eine interne Überprüfung der mitgeteilten Sachverhalte abteilungsübergreifend durchführt. Meinen Hinweis auf meinen Gewährleistungsanspruch ignoriert man.

Allerdings hat man mich auch darauf hingewiesen, dass die Verwendung der Thermostate in Home Assistant nicht unterstützt wird. Meine Frage, wie ich es dann verstehen muss, dass es eine offizielle Integration in Home Assistant gibt, wurde, ihr ahnt es schon, ignoriert.

Ich habe jetzt seit 3 Tagen ein Sonoff TRVZB über Z2M in Verwendung. Es scheint zu funktionieren, aber für Jubel ist es wohl noch etwas zu früh.

Ich habe auch ein Sonoff TRVZB zu Testzwecken im Einsatz und 2 weitere kommen.

Das TRVZB arbeitet auch mit Offset aber deutlich stabiler.

Ich rate bei Neukauf auch von den Ke100 ab. Insgesamt funktioniert es aktuell bei mir aber zufrieden bin ich nicht. Das Problem ist, dass es sie du sagst immer Mal wieder aus unerfindlichen Gründen nicht geht.

Da ich alle bei Amazon gekauft habe konnte ich für alle auch außerhalb der Rückgabe eine Rückgabe einleiten mit Schilderung des Problems.

Alles im allen ziemlich ärgerlich