Skip to content

[schedy] HVAC mode of Bosch thermostat get set to automatic mode automatically #78

@u20p17

Description

@u20p17

Hi all,
I am using Schedy (https://hass-apps.readthedocs.io/en/stable/apps/schedy/) for my heating schedule and it is working fine except one issue with the setting of the HVAC mode. As thermostats I am using the Bosch ones: https://www.bosch-smarthome.com/de/de/produkte/vorgaengermodelle/heizkoerper-thermostat/

image

As you can see in the image schedy changes the temperature to 17 deg. The HVAC mode get changed to automatic, then back to heat (what I would like to have) and finally back to automatic. Why?

Furthermore it seems that the thermostat are only listening to the values send by Schedy if they are in the Heat HVAC mode. What values the thermostat is using when it is in automatic mode? I haven't defined any schedule in the Bosch app.

The schedy config file looks the following:

schedy:  
  module: hass_apps_loader
  class: SchedyApp

  #debug: false
  #reset_at_startup: false
  #expressions_from_events: false

  expression_environment: | 
     def heating_mode():
        return state("input_select.heating_mode")

  actor_type: thermostat

  actor_templates:
    default:
      #delta: 0.0
      min_temp: 5
      max_temp: 30
      off_temp: "OFF"
      supports_hvac_modes: true
      hvac_mode_on: heat
      hvac_mode_off: 'off'

  schedule_prepend:
    - x: "Mark(OFF, Mark.OVERLAY) if not is_empty(filter_entities('binary_sensor', state='on', window_room=room_name)) else Next()"

  schedule_append:
    - v: "OFF"
    
  schedule_snippets:
    bedroom:
    - { v: 17, start: "07:00", end: "20:00" }
    - { v: 21, start: "20:00", end: "22:00" }
    - { v: 20, start: "22:00", end: "07:00" }
    homeOffice: # Used with rules - x: "IncludeSchedule(schedule_snippets['homeOffice']) if heating_mode() == 'HomeOffice' else Next()"
    - { v: 20, start: "00:00", end: "08:00" }
    - { v: 22, start: "08:00", end: "20:00" }
    - { v: 20, start: "20:00", end: "00:00" }
    holiday: # Used with rules - x: "IncludeSchedule(schedule_snippets['holiday']) if heating_mode() == 'Holiday' else Next()"
    - v: 17
    default: # Used with rules -x: { "IncludeSchedule(schedule_snippets['default']) }
    - v: 19
    livingroom:
    - { v: 18, start: "00:00", end: "06:00" }
    - { v: 22, start: "06:00", end: "08:00" }
    - { v: 18, start: "08:00", end: "16:00" }
    - { v: 22, start: "16:00", end: "00:00" }
    bathroom:
    - { v: 18, start: "00:00", end: "06:00" }
    - { v: 24, start: "06:00", end: "08:00" }
    - { v: 18, start: "08:00", end: "20:00" }
    - { v: 24, start: "20:00", end: "00:00" }

  watched_entities:
  - input_select.heating_mode

  # Configure your rooms here.
  rooms:
    living:
      #friendly_name: ...
      allow_manual_changes: true
      #replicate_changes: true
      rescheduling_delay: 120
      actors:
        climate.room_climate_wohnzimmer:  #Wohnzimmer
      schedule:
      - weekdays: 1-7
        rules:
        - x: "OFF if is_on('binary_sensor.wohnzimmerfenster') else Next()"
        - x: "OFF if is_on('binary_sensor.wohnzimmerbalkontur') else Next()"
        - x: "OFF if is_on('binary_sensor.kuchenfenster') else Next()"
        - x: "OFF if is_on('binary_sensor.heizung_in_wohnkueche_deaktivieren_wegen_klimaanlage') else Next()"
        - x: "IncludeSchedule(schedule_snippets['livingroom']) if heating_mode() == 'Default' else Next()"
        - x: "IncludeSchedule(schedule_snippets['livingroom']) if heating_mode() == 'HomeOffice' else Next()"
        - x: "IncludeSchedule(schedule_snippets['holiday']) if heating_mode() == 'Holiday' else Next()"
      watched_entities:
          - binary_sensor.wohnzimmerfenster
          - binary_sensor.wohnzimmerbalkontur
          - binary_sensor.kuchenfenster
          - binary_sensor.heizung_in_wohnkueche_deaktivieren_wegen_klimaanlage
    bed:
      #friendly_name: ...
      allow_manual_changes: true
      #replicate_changes: true
      rescheduling_delay: 120
      actors:
        climate.room_climate_schlafzimmer:
      schedule:
      - weekdays: 1-7
        rules:
        - x: "OFF if is_on('binary_sensor.schlafzimmerfenster_rechts') else Next()"
        - x: "OFF if is_on('binary_sensor.schlafzimmerfenster_links') else Next()"
        - x: "OFF if is_on('binary_sensor.heizung_in_schlafzimmer_deaktivieren_wegen_klimaanlage') else Next()"
        - x: "IncludeSchedule(schedule_snippets['bedroom']) if heating_mode() == 'Default' else Next()"
        - x: "IncludeSchedule(schedule_snippets['bedroom']) if heating_mode() == 'HomeOffice' else Next()"
        - x: "IncludeSchedule(schedule_snippets['holiday']) if heating_mode() == 'Holiday' else Next()"
      watched_entities:
        - binary_sensor.schlafzimmerfenster_rechts
        - binary_sensor.schlafzimmerfenster_links
        - binary_sensor.heizung_in_schlafzimmer_deaktivieren_wegen_klimaanlage
    guest:
      #friendly_name: ...
      allow_manual_changes: true
      #replicate_changes: true
      rescheduling_delay: 120
      actors:
        climate.room_climate_gastezimmer:
      schedule:
      - weekdays: 1-7
        rules:
        - x: "OFF if is_on('binary_sensor.gastezimmerfenster_links') else Next()"
        - x: "IncludeSchedule(schedule_snippets['default']) if heating_mode() == 'Default' else Next()"
        - x: "IncludeSchedule(schedule_snippets['default']) if heating_mode() == 'HomeOffice' else Next()"
        - x: "IncludeSchedule(schedule_snippets['holiday']) if heating_mode() == 'Holiday' else Next()"
      watched_entities:
        - binary_sensor.gastezimmerfenster_links
    buero:
      #friendly_name: ...
      allow_manual_changes: true
      #replicate_changes: true
      rescheduling_delay: 120
      actors:
        climate.room_climate_buro:
      schedule:
      - weekdays: 1-7
        rules:
        - x: "OFF if is_on('binary_sensor.burobalkontur') else Next()"
        - x: "OFF if is_on('binary_sensor.heizung_in_buero_deaktivieren_wegen_klimaanlage') else Next()"
        - x: "IncludeSchedule(schedule_snippets['default']) if heating_mode() == 'Default' else Next()"
        - x: "IncludeSchedule(schedule_snippets['homeOffice']) if heating_mode() == 'HomeOffice' else Next()"
        - x: "IncludeSchedule(schedule_snippets['holiday']) if heating_mode() == 'Holiday' else Next()"
      watched_entities:
        - binary_sensor.burobalkontur
        - binary_sensor.heizung_in_buero_deaktivieren_wegen_klimaanlage
    badezimmer:
      #friendly_name: ...
      allow_manual_changes: true
      #replicate_changes: true
      rescheduling_delay: 120
      actors:
        climate.room_climate_badezimmer:
      schedule:
      - weekdays: 1-7
        rules:
        - x: "IncludeSchedule(schedule_snippets['bathroom']) if heating_mode() == 'Default' else Next()"
        - x: "IncludeSchedule(schedule_snippets['bathroom']) if heating_mode() == 'HomeOffice' else Next()"
        - x: "IncludeSchedule(schedule_snippets['holiday']) if heating_mode() == 'Holiday' else Next()"
      watched_entities:
    vorzimmer:
      #friendly_name: ...
      allow_manual_changes: true
      #replicate_changes: true
      rescheduling_delay: 120
      actors:
        climate.room_climate_vorzimmer:
      schedule:
      - weekdays: 1-7
        rules:
        - x: "OFF if is_on('binary_sensor.eingangstur') else Next()"
        - x: "IncludeSchedule(schedule_snippets['default']) if heating_mode() == 'Default' else Next()"
        - x: "IncludeSchedule(schedule_snippets['default']) if heating_mode() == 'HomeOffice' else Next()"
        - x: "IncludeSchedule(schedule_snippets['holiday']) if heating_mode() == 'Holiday' else Next()"
      watched_entities:
        - binary_sensor.eingangstur

BR

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions