Generic Thermostat doesn't activate targeted switch

I’ll reference this post, but it seems I’m having some other sort of issue. Perhaps I’ve missed something.

I have a single generic thermostat that never triggers the heater: switch.sanctuary_ne_cooling switch when activated.

As I understand, with these settings, if I manually move the thermostat in Lovelace (Thermostat card) below the currently detected temperature, then the switch should turn on 10 seconds later. Is this not correct?

- platform: generic_thermostat
  name: Sanctuary Northeast
  heater: switch.sanctuary_ne_cooling
  target_sensor: sensor.sn1_temperature
  min_temp: 70
  max_temp: 85
  target_temp: 78
  ac_mode: true
  min_cycle_duration:
    seconds: 10
  cold_tolerance: 1.0
  hot_tolerance: 1.0
  initial_operation_mode: "auto"
  away_temp: 85
  precision: 0.1

Here is the sensor:

- platform: mqtt
  state_topic: "newvalley/sensornode1"
  name: "SN1 Temperature"
  unit_of_measurement: "°F"  
  value_template: '{{ value_json.temperature | round(1) }}'

and here is the switch:

- platform: mqtt
  name: "Sanctuary NE Cooling"
  command_topic: "cmnd/sanctuary_ne_cooling/power"
  state_topic: "stat/sanctuary_ne_cooling/power"
  qos: 1
  payload_on: "ON"
  payload_off: "OFF"
  retain: true

As you can see below, no change to the switch on the right.

Screenshot_4_24_19__10_25_AM

Well, I have only heating bit in my setup, but here is what I see:
the temperature next to Idle is the target temperature, and the temperature below it is current temperature. and the switch will be turned on when current temperature > target temperature + hot tolerance as we are talking not about heater but cooler. so you need to change your target temperature to be ABOVE, not BELOW the current.

The temperature next to Idle is the target temperature: 71 Degrees. This is the value I set on the thermostat.

The temperature below it is what the sensor is reading.

You’re saying that the switch will turn on when the current temperature (75.7) is greater than the target temperature (71) + the tolerance (1) = 72. 75.7 is greater than 72.

I’m lost.

I think that there’s a problem with this part and your thermostat is acting like a ‘cooler’:

If you want to control the heat, set this value to false. You will see a ‘flame’ simbol in thermostat:
image

Upsss, I just realized that you want to control a ‘cooler’.
My fault.

Ya. I have both heating and cooling in the same unit, so I need two generic_thermostats to handle the work, but neither of them do anything. Is the type of switch targeted a factor?

Could you check if away_mode is actually off?
I don’t quite get why it shows 71F on your screenshots…

Another thing is to comment ac_mode to see if it can control the switch at all…
Maybe it’s a good idea to remove all but necessary variables and add them to a working config one by one.

I don’t think so…

The only thing that can differs from mine is how switch is defined.
In my case is something like:

switch:
  - platform: template
    switches:
      osram_01:
        value_template: "{{ is_state('light.upstair', 'on') }}"
        turn_on:
          service: light.turn_on
          data:
            entity_id: light.upstair
        turn_off:
          service: light.turn_off
          data:
            entity_id: light.upstair

in my thermostat is referenced like heater: switch.osram_01.

I’ll have to try a template switch. The switches I have are MQTT switches…but, I think they should still be working.

I don’t think that template/MQTT would be the problem.
I was thinking about how the heater is referenced. In my case switch.osram_01 match with my sitch ID.
In your case I can’t see how it matches. For that reason I wanted to put the focus on how it is referenced, but I do not mean that in your case it is wrong.

Well, for some strange reason it seems to be working with the custom thermostat in the Lovelace interface…