Wie finde ich heraus, wer eine Entity überschreibt

Hallo zusammen,

in einer Automation setze ich einen externen Temperatursensor des Thermostates (Danfoss Ally über zigbee2mqtt) auf den Wert des externen Sensors:

alias: theresa externer temperatursensor
description: ""
triggers:
  - trigger: time_pattern
    minutes: /10
conditions: []
actions:
  - target:
      entity_id: number.thermostat_theresa_external_measured_room_sensor
    data:
      value: "{{ states('sensor.theresa_temp') | float () * 1.0}}"
    action: number.set_value
mode: single

das funktioniert auch soweit, nur wird instantan der Wert überschrieben:

das führt zu folgendem Werteverlauf:

Wie kann ich herausfinden, wer den Wert setzt und warum?

Vielen Dank.

Herzliche Grüße

Ralf.

Ist diese Entity von Dir erstellt oder kommt die vom Gerät?

die kommt vom Gerät.

External measured room sensor (numeric)

Meine unbewiesene These (da ich das Gerät nicht verwende)

  • Mit set.number schreibst Du den Wert in HA
  • Das Thermostat oder Z2M mag diese Änderung nicht und schickt sofort wieder den Originalwert zurück

Ich tippe darauf, daß Z2M den Wert gar nicht an das Gerät sendet sondern aufgrund der Überschreibung sich den Originalwert vom Thermostat holt.

To write (/set ) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"external_measured_room_sensor": NEW_VALUE}

Ich hab es nie gemacht aber würde über Entwicklerwerkzeuge probieren

action: mqtt.publish
data: {}

Viel Glück und zeige bitte am Ende Deine Lösung.

action: mqtt.publish
data:
  evaluate_payload: false
  qos: "1"
  retain: false
  payload: >-
    payload {"number.thermostat_theresa_external_measured_room_sensor":
    states('sensor.theresa_temp') | float () * 1.0}
  topic: thermostat_theresa

irgendwas mache ich noch falsch. Die Aktion liefert einen grünen Haken, aber der Wert ist nicht überschrieben.

Japp :wink:

Ich würde es mal so versuchen (ungetestet)

action: mqtt.publish
data:
  topic: zigbee2mqtt/thermostat_theresa/set
  payload: |-
    {
      "external_measured_room_sensor": "{{states('sensor.theresa_temp') | float () * 1.0}}"
    }


tut noch nicht. das Topic ist wohl case sensitive. Ich habe nun erfolgreich ein log bekommen:

Aber unmittelbar danach kommt noch ein /set befehl:

[2026-01-16 16:19:10] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/Thermostat-Theresa', payload '{"adaptation_run_control":"none","adaptation_run_settings":true,"adaptation_run_status":"found","algorithm_scale_factor":5,"battery":95,"day_of_week":"thursday",

"external_measured_room_sensor":"22.71",

"heat_available":true,"heat_required":true,"keypad_lockout":"unlock","linkquality":255,"load_balancing_enable":true,"load_estimate":2686,"load_room_mean":-8000,"local_temperature":23.71,"mounted_mode_active":false,"mounted_mode_control":true,"occupied_heating_setpoint":23,"occupied_heating_setpoint_scheduled":23,"pi_heating_demand":99,"preheat_status":false,"programming_operation_mode":"setpoint","radiator_covered":true,"regulation_setpoint_offset":0,"running_state":"heat","setpoint_change_source":"schedule","system_mode":"heat","thermostat_vertical_orientation":null,"trigger_time":660,"update":{"installed_version":32,"latest_version":32,"state":"idle"},"viewing_direction":null,"window_open_external":false,"window_open_feature":true,"window_open_internal":"closed"}'
[2026-01-16 16:19:10] info: 	z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/Thermostat-Theresa', payload '{"adaptation_run_control":"none","adaptation_run_settings":true,"adaptation_run_status":"found","algorithm_scale_factor":5,"battery":95,"day_of_week":"thursday",

"external_measured_room_sensor":22,

"heat_available":true,"heat_required":true,"keypad_lockout":"unlock","linkquality":255,"load_balancing_enable":true,"load_estimate":2686,"load_room_mean":-8000,"local_temperature":23.71,"mounted_mode_active":false,"mounted_mode_control":true,"occupied_heating_setpoint":23,"occupied_heating_setpoint_scheduled":23,"pi_heating_demand":99,"preheat_status":false,"programming_operation_mode":"setpoint","radiator_covered":true,"regulation_setpoint_offset":0,"running_state":"heat","setpoint_change_source":"schedule","system_mode":"heat","thermostat_vertical_orientation":null,"trigger_time":660,"update":{"installed_version":32,"latest_version":32,"state":"idle"},"viewing_direction":null,"window_open_external":false,"window_open_feature":true,"window_open_internal":"closed"}'

Aber wer schickt den ab?

Ich lese in der Doku

The unit of this value is 0.01 °C (so e.g. 21°C would be represented as 2100)..

und in Deinem Log

external_measured_room_sensor":"22.71",
...
"external_measured_room_sensor":22,

Vielleicht mußt Du mit 100 multiplizieren

"{{states('sensor.theresa_temp') | float() * 100}}"

ok, dieser Wert bleibt stabil. Jetzt veruche ich mal damit, den Thermostat zu steuern.

Der Thermostat hält im Mittel nun diese Temperatur, allerdings oszilliert die Temperatur nun mit einer Amplitude von +/- 0.5 Grad um den Wert. Wenn ich die externe Temperatur ausschalte, hält er die Tempertur viel stabiler. Ich glaube, ich arbeite lieber mit einem Offet …