hass-apps icon indicating copy to clipboard operation
hass-apps copied to clipboard

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

Open u20p17 opened this issue 2 years ago • 0 comments

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

u20p17 avatar Nov 04 '22 10:11 u20p17