Help me understand. Numeric state trigger is acting like 'above' means 'above or equal to'

I’ve got a Philips Sensi thermostat. I created a simple numeric state trigger to notify me if the target temp is above the measured temp (someone turned up the target temp). When this happens, it’s triggered. So far, so good. But when the measured temp is greater than the target temp, and then drops to the same as the target temp, my trigger fires again.
Why does it fire when target temp == measured temp, even though in the UI I’ve configure it to fire when target temp ‘above’ measured temp? Here’s the trigger in yaml:

platform: numeric_state
entity_id: climate.sensi_214e52_thermostat
attribute: temperature
above: sensor.sensi_214e52_current_temperature

I’ve tried a few different ways and I am unable to recreate what you have described.

Post the debug trace json file from your automation.

Sorry, I’m not sure how to do that. If I click on Traces on my automation, it says “No traces found”. How do I get the info you’re asking for?

If your automation was created in YAML give your automation an id: it will then store traces.

2 Likes
this:
  entity_id: automation.thermioriginal
  state: 'on'
  attributes:
    id: '1697155968305'
    last_triggered: null
    mode: single
    current: 0
    friendly_name: thermiOriginal
  last_changed: '2023-10-13T00:33:41.327894+00:00'
  last_updated: '2023-10-13T00:33:41.327894+00:00'
  context:
    id: 01HCK782YFEZYMXKHBGFAQQA72
    parent_id: null
    user_id: null
trigger:
  id: '0'
  idx: '0'
  alias: null
  platform: numeric_state
  entity_id: climate.sensi_214e52_thermostat
  below: null
  above: sensor.sensi_214e52_current_temperature
  from_state:
    entity_id: climate.sensi_214e52_thermostat
    state: heat
    attributes:
      hvac_modes:
        - 'off'
        - heat
        - cool
        - heat_cool
      min_temp: 45
      max_temp: 100
      current_temperature: 67
      temperature: 59
      target_temp_high: null
      target_temp_low: null
      hvac_action: idle
      icon: mdi:thermostat-box
      friendly_name: Sensi-214E52 Thermostat
      supported_features: 3
    last_changed: '2023-10-13T00:33:42.315645+00:00'
    last_updated: '2023-10-13T00:33:42.315645+00:00'
    context:
      id: 01HCK783XBQVAQH6THRQJ6KJNM
      parent_id: null
      user_id: null
  to_state:
    entity_id: climate.sensi_214e52_thermostat
    state: heat
    attributes:
      hvac_modes:
        - 'off'
        - heat
        - cool
        - heat_cool
      min_temp: 45
      max_temp: 100
      current_temperature: 67
      temperature: 69
      target_temp_high: null
      target_temp_low: null
      hvac_action: heating
      icon: mdi:thermostat-box
      friendly_name: Sensi-214E52 Thermostat
      supported_features: 3
    last_changed: '2023-10-13T00:33:42.315645+00:00'
    last_updated: '2023-10-13T00:34:11.197584+00:00'
    context:
      id: 01HCK7903XPY08J65T9BVJZ36A
      parent_id: null
      user_id: null
  for: null
  description: numeric state of climate.sensi_214e52_thermostat

I’ve figured out my problem. The current temp is, as my trigger asks for, a float. So when I thought the current temp was 68 and the target temp was 68, my trigger was firing because the current temp was 67.999989999999997. I’ve solved it by making my trigger fire only if the (target temp - current temp) > 0.4.