Home Assistant

Room heat switch for a heat pump or mini-split

A switch sets one room’s climate entity to heat at a comfort setpoint. Switch off, or the room empty, restores the previous mode or turns heat off, and the switch follows the remote.

Difficulty · BeginnerSetup · 20–40 minutesHA · 2024.10 or newer
Get the pack · from $19Have us set it up

Some hardware links on this page are affiliate links. As an Amazon Associate I earn from qualifying purchases. We may earn a commission if you buy through them, at no extra cost to you. See the affiliate disclosure.

A mini-split remote and a wall switch disagree unless something keeps them in step. This blueprint uses one switch per room. On means heat at a comfort setpoint. Off, or nobody in the room for a set number of minutes, puts the climate entity back where it was, or turns it off. If someone changes the mode from the heat pump’s own remote, the switch follows that change and does not overwrite the setpoint a second time.

One automation, one switch, one busy helper, and one snapshot id per room. Copy the helper package and change the names before you add a second room.

A setpoint that moves with the forecast, rather than a switch, is adaptive comfort setpoint. Pausing heat because a window is open is window-open climate pause. A thermostat that already blends a TRV and a room sensor is versatile thermostat. This one is the switch.

What problem it solves

You want a single control that means “heat this room,” that gives the room back when you are done or when it is empty, and that does not fight the remote.

How it works

The switch is an input_boolean or any switch. The climate entity is the heat pump or mini-split. Occupancy is a binary_sensor that stays on while the room is in use. The busy helper is how the automation ignores the state changes it just caused.

  1. Switch on — scene.create snapshots the climate entity under the scene id you set (pack default room_heat_snapshot, which is scene.room_heat_snapshot). Then the HVAC mode is set to heat and the temperature to the comfort setpoint (pack default 21 °C).
  2. Switch off — if When heat should stop is restore, scene.turn_on puts the mode and setpoint back. If it is off, the climate entity is turned off. A restore before the first snapshot is skipped instead of failing the automation.
  3. Empty room — the occupancy sensor off for N minutes (pack default 20) runs the same stop path, and then turns the switch off so the switch matches the room.
  4. Remote or app — a climate state change while the busy helper is off only moves the switch. Heat turns the switch on. Any other mode turns it off. It does not write the comfort setpoint again, so a temperature you set on the remote stays.
  5. Busy — the helper is on for about two seconds around each of those writes. The automation is mode: single, so a state change caused by the run itself is dropped instead of looping.

The scene id must be a slug: letters, numbers, underscores. A second room needs a second id or the two snapshots overwrite each other.

Snippet

The package creates the two helpers the defaults point at. The blueprint inputs are the rest.

input_boolean:
  room_heat:
    name: Room heat
  room_heat_busy:
    name: Room heat busy

Setup outline

  1. Copy helpers/room_heat_switch_sync.yaml into config/packages/ and include that folder from the existing homeassistant: block. Do not add a second homeassistant: key. Restart, and confirm input_boolean.room_heat and input_boolean.room_heat_busy.
  2. Import the blueprint from blueprints/automation/. Reload blueprints.
  3. Create an automation. Pick the climate entity. Pick an occupancy sensor that is on when the room is occupied. If you have no sensor yet, create an input boolean, turn it on, and select that so the empty-room path never fires until you want it.
  4. Leave the snapshot id, the busy helper, and the switch on the pack defaults for the first room. Set the comfort temperature in the unit your climate entity uses.
  5. Turn the switch on. The climate entity should go to heat at that setpoint. Turn it off. The previous mode should return if you left the behavior on restore.
  6. Change the mode from the heat pump app. The switch should follow, and the setpoint should stay where the app put it.

Troubleshooting

  • The switch and the heat pump chase each other. The busy helper is missing, or a second automation also writes this climate entity. This blueprint only drops its own follow-up while room_heat_busy is on.
  • Off does nothing the first time. Restore needs a snapshot from an earlier On. Until then the scene does not exist and the turn-on is ignored. Turn the switch on once, then off.
  • A second room restores the first room’s scene. Both automations use room_heat_snapshot. Duplicate the helpers and set a new snapshot id.
  • Empty never fires. The occupancy sensor is still on, or it never had a clear off for the full delay. A sensor that flaps will keep restarting that timer.
  • Heat turns on but the setpoint does not change. The climate entity rejects climate.set_temperature in the mode it is in, or it expects target_temp_high / target_temp_low instead of temperature. Check the automation trace for that action.
  • The remote turns the switch off and heat comes back. Something else is turning the switch on. This blueprint does not turn the switch on except when the climate state is already heat.

Credits

The idea of a per-room heat switch that stays aligned with the heat pump is discussed around maiertech/homeassistant. This blueprint is original: one snapshot, one busy helper, and an occupancy timeout. It does not replace the heat pump’s integration.

Changelog

v1.0 · Oct 30, 2026: First publish.