Heaty will die, Schedy be born!

Well, yes and no :slight_smile:

The complexity is there because of requirmenet to have nice sliders in Lovelace to set every aspect of the planning (the second screenshot). Not to put the values into Schedy config.

It is working exactly as expected for two heating seasons already :wink:

It took me a long time, but your GitHub helped me understand a lot of things, even if I did it a bit differently. Thanks a lot!

I have a Mitsubishi mini-split that is working great with Schedy (thank you!). My unit does not have the auto setting and I have it configured like this:

  module: hass_apps_loader
  class: SchedyApp

  actor_type: thermostat

  expression_environment: |
    def hvac_mode():
      return state("climate.porch")

  schedule_snippets:
    cooling_season:
      - v: 76
        rules:
          - {start: "20:30", end: "07:00", weekdays: 1-5}
          - {start: "20:30", end: "07:30", weekdays: 6-7}
      - v: 72
    heating_season:
      - v: 45
        rules:
          - {start: "21:00", end: "07:00"}
          - {start: "22:00", end: "07:00"}
          - {start: "23:00", end: "07:00"}
          - {start: "01:00", end: "07:00"}
          - {start: "02:00", end: "07:00"}
      - v: 68
    drying:
      - v: 68
        rules:
          - {start: "20:30", end: "07:00"}
      - v: 70

  rooms:

    porch:

      actors:
        climate.porch:
          supports_hvac_modes: false
          max_temp: 95
          min_temp: 45

      rescheduling_delay: 0

      schedule:
        - x: "IncludeSchedule(schedule_snippets['cooling_season']) if hvac_mode() == 'cool' else Next()"
        - x: "IncludeSchedule(schedule_snippets['heating_season']) if hvac_mode() == 'heat' else Next()"
        - x: "IncludeSchedule(schedule_snippets['drying']) if hvac_mode() == 'dry' else Next()"

  watched_entities:
    - climate.porch

My only issue is that when I turn the unit OFF, I get lots of these messages in my log:

ERROR porch_thermostat_schedule: !!! [R:porch] [A:climate.porch] Invalid target temperature, ignoring thermostat.

Is there anything I can do to suppress this message - or do I just have my config messed up?

Thanks again for such a great app!

hi there,
I am new at the home assistant topic…
Now I get 3 “essentials smart home thermostats” and want to implement them in schedy.
My system is running on a Synology 220+ VM and I use the Zigbee Conbee2Stick to connect the thermostats.
I am not sure, if my code is wrong or what I do wrong, but the schedule doesnt works :confused:
Maybe you can help me, because I dont find the problem (watched some youtube videos and tutorials).
For test I reduced the time of the schedule to 1min.

  module: hass_apps_loader
  class: SchedyApp

  actor_type: thermostat

  rooms:

    bad:
      rescheduling_delay: 1
      actors:
        climate.bad_thermostat:
      schedule:
      - v: 21
        rules:
        - weekdays: 1-5
          rules:
          - { start: "05:00", end: "08:30" }
        - weekdays: 6-7
          rules:
          - { start: "07:30", end: "10:30" }
        - weekdays: 1-7
          rules:
          - { start: "18:00", end: "22:00" }

    büro2:
      rescheduling_delay: 1
      actors:
        climate.buero_thermostat:
      schedule:
      - v: 21
        rules:
        - weekdays: 1-5
          rules:
          - { start: "05:00", end: "08:30" }
        - weekdays: 6-7
          rules:
          - { start: "07:30", end: "10:30" }
        - weekdays: 1-7
          rules:
          - { start: "18:00", end: "22:00" }

    schlafzimmer:
      rescheduling_delay: 1
      actors:
        climate.schlafzimmer_thermostat:
      schedule:
      - v: 21
        rules:
        - weekdays: 1-5
          rules:
          - { start: "05:00", end: "08:30" }
        - weekdays: 6-7
          rules:
          - { start: "07:30", end: "10:30" }
        - weekdays: 1-7
          rules:
          - { start: "18:00", end: "22:00" }

I installed AppDaemon and added in /config/appdaemon/apps new .yaml named schedy_heating.yaml.

Is there anything what I have to configure that schedy works?

Hello,

I was migrate my Home Assistant to another HW (Synology NAS). I have installed HA and Appdaemon in docker.

I have problem with this :

|2021-02-28 19:35:34|stdout|2021-02-28 20:35:34.008082 WARNING schedy_heating: !!! [R:koupelna dole] [A:climate.koupelna_prizemi] Gave up sending value after 10 retries.|
|---|---|---|
|2021-02-28 19:35:33|stdout|2021-02-28 20:35:33.006551 WARNING schedy_heating: !!! [R:koupelna nahore] [A:climate.koupelna_patro] Gave up sending value after 10 retries.|
|2021-02-28 19:35:32|stdout|2021-02-28 20:35:32.008210 WARNING schedy_heating: !!! [R:obyvak] [A:climate.obyvaci_pokoj] Gave up sending value after 10 retries.|
|2021-02-28 19:35:31|stdout|2021-02-28 20:35:31.008642 WARNING schedy_heating: !!! [R:loznice] [A:climate.loznice] Gave up sending value after 10 retries.|
|2021-02-28 19:35:08|stdout|2021-02-28 20:35:08.006959 WARNING schedy_heating: !!! [R:pokoj_Vitek] [A:climate.pokoj_vitek] Gave up sending value after 10 retries.|
|2021-02-28 19:35:04|stdout|2021-02-28 20:35:04.007371 WARNING schedy_heating: !!! [R:koupelna dole] [A:climate.koupelna_prizemi] Re-sending value due to missing confirmation.|
|2021-02-28 19:35:03|stdout|2021-02-28 20:35:03.006922 WARNING schedy_heating: !!! [R:koupelna nahore] [A:climate.koupelna_patro] Re-sending value due to missing confirmation.|
|2021-02-28 19:35:02|stdout|2021-02-28 20:35:02.006808 WARNING schedy_heating: !!! [R:obyvak] [A:climate.obyvaci_pokoj] Re-sending value due to missing confirmation.|
|2021-02-28 19:35:01|stdout|2021-02-28 20:35:01.006286 WARNING schedy_heating: !!! [R:loznice] [A:climate.loznice] Re-sending value due to missing confirmation.|
|2021-02-28 19:34:38|stdout|2021-02-28 20:34:38.006202 WARNING schedy_heating: !!! [R:pokoj_Vitek] [A:climate.pokoj_vitek] Re-sending value due to missing confirmation.|
|2021-02-28 19:34:34|stdout|2021-02-28 20:34:34.006667 WARNING schedy_heating: !!! [R:koupelna dole] [A:climate.koupelna_prizemi] Re-sending value due to missing confirmation.|
|2021-02-28 19:34:33|stdout|2021-02-28 20:34:33.006692 WARNING schedy_heating: !!! [R:koupelna nahore] [A:climate.koupelna_patro] Re-sending value due to missing confirmation.|
|2021-02-28 19:34:32|stdout|2021-02-28 20:34:32.006173 WARNING schedy_heating: !!! [R:obyvak] [A:climate.obyvaci_pokoj] Re-sending value due to missing confirmation.|
|2021-02-28 19:34:31|stdout|2021-02-28 20:34:31.007544 WARNING schedy_heating: !!! [R:loznice] [A:climate.loznice] Re-sending value due to missing confirmation.|
|2021-02-28 19:34:08|stdout|2021-02-28 20:34:08.006246 WARNING schedy_heating: !!! [R:pokoj_Vitek] [A:climate.pokoj_vitek] Re-sending value due to missing confirmation.|
|2021-02-28 19:34:04|stdout|2021-02-28 20:34:04.006736 WARNING schedy_heating: !!! [R:koupelna dole] [A:climate.koupelna_prizemi] Re-sending value due to missing confirmation.|
|2021-02-28 19:34:03|stdout|2021-02-28 20:34:03.007049 WARNING schedy_heating: !!! [R:koupelna nahore] [A:climate.koupelna_patro] Re-sending value due to missing confirmation.|
|2021-02-28 19:34:02|stdout|2021-02-28 20:34:02.006483 WARNING schedy_heating: !!! [R:obyvak] [A:climate.obyvaci_pokoj] Re-sending value due to missing confirmation.|
|2021-02-28 19:34:01|stdout|2021-02-28 20:34:01.006711 WARNING schedy_heating: !!! [R:loznice] [A:climate.loznice] Re-sending value due to missing confirmation.|
|2021-02-28 19:33:38|stdout|2021-02-28 20:33:38.006933 WARNING schedy_heating: !!! [R:pokoj_Vitek] [A:climate.pokoj_vitek] Re-sending value due to missing confirmation.|
|2021-02-28 19:33:34|stdout|2021-02-28 20:33:34.007293 WARNING schedy_heating: !!! [R:koupelna dole] [A:climate.koupelna_prizemi] Re-sending value due to missing confirmation.|
|2021-02-28 19:33:33|stdout|2021-02-28 20:33:33.006846 WARNING schedy_heating: !!! [R:koupelna nahore] [A:climate.koupelna_patro] Re-sending value due to missing confirmation.|
|2021-02-28 19:33:32|stdout|2021-02-28 20:33:32.007505 WARNING schedy_heating: !!! [R:obyvak] [A:climate.obyvaci_pokoj] Re-sending value due to missing confirmation.|
|2021-02-28 19:33:31|stdout|2021-02-28 20:33:31.008892 WARNING schedy_heating: !!! [R:loznice] [A:climate.loznice] Re-sending value due to missing confirmation.|
|2021-02-28 19:33:08|stdout|2021-02-28 20:33:08.006424 WARNING schedy_heating: !!! [R:pokoj_Vitek] [A:climate.pokoj_vitek] Re-sending value due to missing confirmation.|
|2021-02-28 19:33:04|stdout|2021-02-28 20:33:04.006929 WARNING schedy_heating: !!! [R:koupelna dole] [A:climate.koupelna_prizemi] Re-sending value due to missing confirmation.|
|2021-02-28 19:33:03|stdout|2021-02-28 20:33:03.006675 WARNING schedy_heating: !!! [R:koupelna nahore] [A:climate.koupelna_patro] Re-sending value due to missing confirmation.|
|2021-02-28 19:33:02|stdout|2021-02-28 20:33:02.006520 WARNING schedy_heating: !!! [R:obyvak] [A:climate.obyvaci_pokoj] Re-sending value due to missing confirmation.|
|2021-02-28 19:33:01|stdout|2021-02-28 20:33:01.006790 WARNING schedy_heating: !!! [R:loznice] [A:climate.loznice] Re-sending value due to missing confirmation.|
|2021-02-28 19:32:38|stdout|2021-02-28 20:32:38.007234 WARNING schedy_heating: !!! [R:pokoj_Vitek] [A:climate.pokoj_vitek] Re-sending value due to missing confirmation.|
|2021-02-28 19:32:34|stdout|2021-02-28 20:32:34.007245 WARNING schedy_heating: !!! [R:koupelna dole] [A:climate.koupelna_prizemi] Re-sending value due to missing confirmation.|
|2021-02-28 19:32:33|stdout|2021-02-28 20:32:33.006875 WARNING schedy_heating: !!! [R:koupelna nahore] [A:climate.koupelna_patro] Re-sending value due to missing confirmation.|
|2021-02-28 19:32:32|stdout|2021-02-28 20:32:32.006689 WARNING schedy_heating: !!! [R:obyvak] [A:climate.obyvaci_pokoj] Re-sending value due to missing confirmation.|
|2021-02-28 19:32:31|stdout|2021-02-28 20:32:31.007162 WARNING schedy_heating: !!! [R:loznice] [A:climate.loznice] Re-sending value due to missing confirmation.|
|2021-02-28 19:32:08|stdout|2021-02-28 20:32:08.007571 WARNING schedy_heating: !!! [R:pokoj_Vitek] [A:climate.pokoj_vitek] Re-sending value due to missing confirmation.|
|2021-02-28 19:32:04|stdout|2021-02-28 20:32:04.007139 WARNING schedy_heating: !!! [R:koupelna dole] [A:climate.koupelna_prizemi] Re-sending value due to missing confirmation.|
|2021-02-28 19:32:03|stdout|2021-02-28 20:32:03.007120 WARNING schedy_heating: !!! [R:koupelna nahore] [A:climate.koupelna_patro] Re-sending value due to missing confirmation.|
|2021-02-28 19:32:02|stdout|2021-02-28 20:32:02.006619 WARNING schedy_heating: !!! [R:obyvak] [A:climate.obyvaci_pokoj] Re-sending value due to missing confirmation.|
|2021-02-28 19:32:01|stdout|2021-02-28 20:32:01.009121 WARNING schedy_heating: !!! [R:loznice] [A:climate.loznice] Re-sending value due to missing confirmation.|
|2021-02-28 19:31:38|stdout|2021-02-28 20:31:38.006759 WARNING schedy_heating: !!! [R:pokoj_Vitek] [A:climate.pokoj_vitek] Re-sending value due to missing confirmation.|
|2021-02-28 19:31:34|stdout|2021-02-28 20:31:34.007756 WARNING schedy_heating: !!! [R:koupelna dole] [A:climate.koupelna_prizemi] Re-sending value due to missing confirmation.|
|2021-02-28 19:31:33|stdout|2021-02-28 20:31:33.006731 WARNING schedy_heating: !!! [R:koupelna nahore] [A:climate.koupelna_patro] Re-sending value due to missing confirmation.|
|2021-02-28 19:31:32|stdout|2021-02-28 20:31:32.006643 WARNING schedy_heating: !!! [R:obyvak] [A:climate.obyvaci_pokoj] Re-sending value due to missing confirmation.|
|2021-02-28 19:31:31|stdout|2021-02-28 20:31:31.006843 WARNING schedy_heating: !!! [R:loznice] [A:climate.loznice] Re-sending value due to missing confirmation.|
|2021-02-28 19:31:08|stdout|2021-02-28 20:31:08.007437 WARNING schedy_heating: !!! [R:pokoj_Vitek] [A:climate.pokoj_vitek] Re-sending value due to missing confirmation.|
|2021-02-28 19:31:03|stdout|2021-02-28 20:31:03.411574 WARNING schedy_heating: !!! [R:koupelna dole] [A:climate.koupelna_prizemi] Re-sending value due to missing confirmation.|
|2021-02-28 19:31:03|stdout|2021-02-28 20:31:03.006958 WARNING schedy_heating: !!! [R:koupelna nahore] [A:climate.koupelna_patro] Re-sending value due to missing confirmation.|
|2021-02-28 19:31:02|stdout|2021-02-28 20:31:02.006774 WARNING schedy_heating: !!! [R:obyvak] [A:climate.obyvaci_pokoj] Re-sending value due to missing confirmation.|
|2021-02-28 19:31:01|stdout|2021-02-28 20:31:01.006782 WARNING schedy_heating: !!! [R:loznice] [A:climate.loznice] Re-sending value due to missing confirmation.|
|2021-02-28 19:30:38|stdout|2021-02-28 20:30:38.008124 WARNING schedy_heating: !!! [R:pokoj_Vitek] [A:climate.pokoj_vitek] Re-sending value due to missing confirmation.|
|2021-02-28 19:30:33|stdout|2021-02-28 20:30:33.007210 WARNING schedy_heating: !!! [R:koupelna dole] [A:climate.koupelna_prizemi] Re-sending value due to missing confirmation.|
|2021-02-28 19:30:32|stdout|2021-02-28 20:30:32.392910 WARNING schedy_heating: !!! [R:koupelna nahore] [A:climate.koupelna_patro] Re-sending value due to missing confirmation.|
|2021-02-28 19:30:32|stdout|2021-02-28 20:30:32.009061 WARNING schedy_heating: !!! [R:obyvak] [A:climate.obyvaci_pokoj] Re-sending value due to missing confirmation.|
|2021-02-28 19:30:31|stdout|2021-02-28 20:30:31.007349 WARNING schedy_heating: !!! [R:loznice] [A:climate.loznice] Re-sending value due to missing confirmation.|
|2021-02-28 19:30:08|stdout|2021-02-28 20:30:08.008546 WARNING schedy_heating: !!! [R:pokoj_Vitek] [A:climate.pokoj_vitek] Re-sending value due to missing confirmation.|

Another example:

2021-03-01 06:20:03	stdout	2021-03-01 07:20:03.006655 WARNING schedy_heating: !!! [R:obyvak] [A:climate.obyvaci_pokoj] Gave up sending value after 10 retries.
2021-03-01 06:19:33	stdout	2021-03-01 07:19:33.007225 WARNING schedy_heating: !!! [R:obyvak] [A:climate.obyvaci_pokoj] Re-sending value due to missing confirmation.
2021-03-01 06:19:03	stdout	2021-03-01 07:19:03.007588 WARNING schedy_heating: !!! [R:obyvak] [A:climate.obyvaci_pokoj] Re-sending value due to missing confirmation.
2021-03-01 06:18:33	stdout	2021-03-01 07:18:33.008348 WARNING schedy_heating: !!! [R:obyvak] [A:climate.obyvaci_pokoj] Re-sending value due to missing confirmation.
2021-03-01 06:18:03	stdout	2021-03-01 07:18:03.008137 WARNING schedy_heating: !!! [R:obyvak] [A:climate.obyvaci_pokoj] Re-sending value due to missing confirmation.
2021-03-01 06:17:33	stdout	2021-03-01 07:17:33.007359 WARNING schedy_heating: !!! [R:obyvak] [A:climate.obyvaci_pokoj] Re-sending value due to missing confirmation.
2021-03-01 06:17:03	stdout	2021-03-01 07:17:03.007396 WARNING schedy_heating: !!! [R:obyvak] [A:climate.obyvaci_pokoj] Re-sending value due to missing confirmation.
2021-03-01 06:16:33	stdout	2021-03-01 07:16:33.008136 WARNING schedy_heating: !!! [R:obyvak] [A:climate.obyvaci_pokoj] Re-sending value due to missing confirmation.
2021-03-01 06:16:03	stdout	2021-03-01 07:16:03.007033 WARNING schedy_heating: !!! [R:obyvak] [A:climate.obyvaci_pokoj] Re-sending value due to missing confirmation.
2021-03-01 06:15:33	stdout	2021-03-01 07:15:33.007364 WARNING schedy_heating: !!! [R:obyvak] [A:climate.obyvaci_pokoj] Re-sending value due to missing confirmation.
2021-03-01 06:15:03	stdout	2021-03-01 07:15:03.006663 WARNING schedy_heating: !!! [R:obyvak] [A:climate.obyvaci_pokoj] Re-sending value due to missing confirmation.
2021-03-01 06:14:32	stdout	2021-03-01 07:14:32.617006 INFO schedy_heating: <-- [R:obyvak] Value set to 23.0��.  [manual]
2021-03-01 06:14:32	stdout	2021-03-01 07:14:32.031156 INFO schedy_heating: --- [R:obyvak] Restoring overlaid value 23.0��.
2021-03-01 06:14:31	stdout	2021-03-01 07:14:31.381801 INFO schedy_heating: --> Attribute 'state' of 'binary_sensor.okno_terasa' changed from 'on' to 'off', reevaluating <Room R:obyvak>.
2021-03-01 06:14:28	stdout	2021-03-01 07:14:28.221837 INFO schedy_heating: <-- [R:obyvak] Value set to OFF.  [scheduled]
2021-03-01 06:14:28	stdout	2021-03-01 07:14:28.024529 INFO schedy_heating: --- [R:obyvak] Storing value 23.0�� before overlaying.
2021-03-01 06:14:26	stdout	2021-03-01 07:14:26.923818 INFO schedy_heating: --> Attribute 'state' of 'binary_sensor.okno_terasa' changed from 'off' to 'on', reevaluating <Room R:obyvak>.

Logs from restarting looks good, only values are not.

2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.872822 INFO AppDaemon: App initialization complete
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.869409 INFO schedy_heating: *** Initialization done.
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.793644 INFO schedy_heating: --> [R:koupelna dole] [A:climate.koupelna_prizemi] Received value of OFF.
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.720081 INFO schedy_heating: --> [R:koupelna nahore] [A:climate.koupelna_patro] Received value of OFF.
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.664378 INFO schedy_heating: --> [R:pokoj_hoste] [A:climate.pokoj_pro_hosty] Received value of 23.0��.
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.614559 INFO schedy_heating: --> [R:pokoj_deti] [A:climate.pokoj_deti] Received value of OFF.
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.549136 INFO schedy_heating: --> [R:pokoj_Vitek] [A:climate.pokoj_vitek] Received value of OFF.
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.489681 INFO schedy_heating: --> [R:obyvak] [A:climate.obyvaci_pokoj] Received value of OFF.
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.435909 INFO schedy_heating: --> [R:loznice] [A:climate.loznice] Received value of OFF.
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.425404 INFO schedy_heating: --- Actor type is: 'thermostat'
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.402848 INFO schedy_heating: *** 
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.402043 INFO schedy_heating: *** Thank you very much and enjoy schedy!
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.401242 INFO schedy_heating: ***   DONATE: https://hass-apps.readthedocs.io/en/stable/#donations
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.400434 INFO schedy_heating: *** Then please consider making a donation.
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.399625 INFO schedy_heating: *** it, ensure continuous development and support?
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.398822 INFO schedy_heating: *** You like this app, want to honor the effort put into
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.398016 INFO schedy_heating: *** 
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.397212 INFO schedy_heating: ***   DOCS: https://hass-apps.readthedocs.io/en/stable/
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.396399 INFO schedy_heating: *** This is an app from the hass-apps package.
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.395591 INFO schedy_heating: *** 
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.394751 INFO schedy_heating: *** Welcome to schedy 0.8.3, running on AppDaemon 4.0.3.
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.392294 INFO hello_world: You are now ready to run Apps!
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.391420 INFO hello_world: Hello from AppDaemon
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.245153 INFO AppDaemon: Initializing app schedy_heating using class SchedyApp from module hass_apps_loader
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.244165 INFO AppDaemon: Initializing app hello_world using class HelloWorld from module hello
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.220434 INFO AppDaemon: Loading App Module: /conf/apps/hass_apps_loader.py
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.171532 INFO AppDaemon: Loading App Module: /conf/apps/hello.py
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.169674 INFO AppDaemon: Adding /conf/apps to module import path
2021-03-01 06:34:40	stdout	2021-03-01 07:34:40.049596 INFO AppDaemon: Scheduler running in realtime
2021-03-01 06:34:39	stdout	2021-03-01 07:34:39.046129 INFO AppDaemon: Running on port 5050
2021-03-01 06:34:39	stdout	2021-03-01 07:34:39.045200 INFO AppDaemon: Starting Apps with 2 workers and 2 pins
2021-03-01 06:34:39	stdout	2021-03-01 07:34:39.044827 INFO AppDaemon: Found 2 total apps
2021-03-01 06:34:39	stdout	2021-03-01 07:34:39.043516 INFO AppDaemon: App 'schedy_heating' added
2021-03-01 06:34:39	stdout	2021-03-01 07:34:39.043154 INFO AppDaemon: App 'hello_world' added
2021-03-01 06:34:39	stdout	2021-03-01 07:34:39.022515 INFO AppDaemon: Got initial state from namespace default
2021-03-01 06:34:38	stdout	2021-03-01 07:34:38.955066 INFO HASS: Evaluating startup conditions
2021-03-01 06:34:38	stdout	2021-03-01 07:34:38.921518 INFO HASS: Connected to Home Assistant 2021.2.3
2021-03-01 06:34:38	stdout	2021-03-01 07:34:38.912567 INFO AppDaemon: Starting Dashboards
2021-03-01 06:34:38	stdout	2021-03-01 07:34:38.912271 INFO AppDaemon: Starting Admin Interface
2021-03-01 06:34:38	stdout	2021-03-01 07:34:38.909003 INFO AppDaemon: Starting API
2021-03-01 06:34:38	stdout	2021-03-01 07:34:38.896996 INFO AppDaemon: Using 'ws' for event stream
2021-03-01 06:34:38	stdout	2021-03-01 07:34:38.896711 INFO AppDaemon: Initializing HTTP
2021-03-01 06:34:38	stdout	2021-03-01 07:34:38.896356 INFO HASS: HASS Plugin initialization complete
2021-03-01 06:34:38	stdout	2021-03-01 07:34:38.896173 INFO HASS: HASS Plugin Initializing
2021-03-01 06:34:38	stdout	2021-03-01 07:34:38.722105 INFO AppDaemon: Loading Plugin HASS using class HassPlugin from module hassplugin
2021-03-01 06:34:38	stdout	2021-03-01 07:34:38.672998 INFO AppDaemon: Added log: Diag
2021-03-01 06:34:38	stdout	2021-03-01 07:34:38.672888 INFO AppDaemon: Added log: Access
2021-03-01 06:34:38	stdout	2021-03-01 07:34:38.672778 INFO AppDaemon: Added log: Error
2021-03-01 06:34:38	stdout	2021-03-01 07:34:38.672655 INFO AppDaemon: Added log: AppDaemon
2021-03-01 06:34:38	stdout	2021-03-01 07:34:38.672540 INFO AppDaemon: Configuration read from: /conf/appdaemon.yaml
2021-03-01 06:34:38	stdout	2021-03-01 07:34:38.672428 INFO AppDaemon: Python version is 3.8.2
2021-03-01 06:34:38	stdout	2021-03-01 07:34:38.672252 INFO AppDaemon: AppDaemon Version 4.0.3 starting

similar logs from working instance:

2021-03-01 08:01:17.306089 INFO AppDaemon: AppDaemon Version 4.0.3 starting
2021-03-01 08:01:17.306793 INFO AppDaemon: Python version is 3.8.2
2021-03-01 08:01:17.307630 INFO AppDaemon: Configuration read from: /conf/appdaemon.yaml
2021-03-01 08:01:17.308117 INFO AppDaemon: Added log: AppDaemon
2021-03-01 08:01:17.308696 INFO AppDaemon: Added log: Error
2021-03-01 08:01:17.309117 INFO AppDaemon: Added log: Access
2021-03-01 08:01:17.309639 INFO AppDaemon: Added log: Diag
2021-03-01 08:01:17.397732 INFO AppDaemon: Loading Plugin HASS using class HassPlugin from module hassplugin
2021-03-01 08:01:17.455021 INFO HASS: HASS Plugin Initializing
2021-03-01 08:01:17.455608 INFO HASS: HASS Plugin initialization complete
2021-03-01 08:01:17.456865 INFO AppDaemon: Initializing HTTP
2021-03-01 08:01:17.457817 INFO AppDaemon: Using 'ws' for event stream
2021-03-01 08:01:17.482430 INFO AppDaemon: Starting API
2021-03-01 08:01:17.489649 INFO AppDaemon: Starting Admin Interface
2021-03-01 08:01:17.490649 INFO AppDaemon: Starting Dashboards
/usr/local/lib/python3.8/site-packages/appdaemon/__main__.py:134: DeprecationWarning: Task.all_tasks() is deprecated, use asyncio.all_tasks() instead
  pending = asyncio.Task.all_tasks()
2021-03-01 08:01:17.513205 INFO HASS: Connected to Home Assistant 2021.1.5
/usr/local/lib/python3.8/site-packages/aiohttp/connector.py:964: DeprecationWarning: The loop argument is deprecated since Python 3.8, and scheduled for removal in Python 3.10.
  hosts = await asyncio.shield(self._resolve_host(
2021-03-01 08:01:17.686394 INFO HASS: Evaluating startup conditions
2021-03-01 08:01:17.773969 INFO AppDaemon: Got initial state from namespace default
2021-03-01 08:01:17.776064 INFO AppDaemon: App 'hello_world' added
2021-03-01 08:01:17.777280 INFO AppDaemon: App 'schedy_heating' added
2021-03-01 08:01:17.780083 INFO AppDaemon: App 'schedy_water' added
2021-03-01 08:01:17.783699 INFO AppDaemon: Found 3 total apps
2021-03-01 08:01:17.785058 INFO AppDaemon: Starting Apps with 3 workers and 3 pins
2021-03-01 08:01:17.787812 INFO AppDaemon: Running on port 5050
2021-03-01 08:01:18.794885 INFO AppDaemon: Scheduler running in realtime
/usr/local/lib/python3.8/asyncio/events.py:81: DeprecationWarning: The loop argument is deprecated since Python 3.8, and scheduled for removal in Python 3.10.
  self._context.run(self._callback, *self._args)
2021-03-01 08:01:18.810542 INFO AppDaemon: Adding /conf/apps to module import path
2021-03-01 08:01:18.815225 INFO AppDaemon: Loading App Module: /conf/apps/hello.py
2021-03-01 08:01:18.864266 INFO AppDaemon: Loading App Module: /conf/apps/hass_apps_loader.py
2021-03-01 08:01:18.882922 INFO AppDaemon: Initializing app hello_world using class HelloWorld from module hello
2021-03-01 08:01:18.885285 INFO AppDaemon: Initializing app schedy_heating using class SchedyApp from module hass_apps_loader
2021-03-01 08:01:18.995235 INFO AppDaemon: Initializing app schedy_water using class SchedyApp from module hass_apps_loader
2021-03-01 08:01:19.172515 INFO hello_world: Hello from AppDaemon
2021-03-01 08:01:19.174892 INFO hello_world: You are now ready to run Apps!
2021-03-01 08:01:19.182251 INFO schedy_heating: *** Welcome to schedy 0.8.3, running on AppDaemon 4.0.3.
2021-03-01 08:01:19.185116 INFO schedy_heating: *** 
2021-03-01 08:01:19.187659 INFO schedy_heating: *** This is an app from the hass-apps package.
2021-03-01 08:01:19.191028 INFO schedy_heating: ***   DOCS: https://hass-apps.readthedocs.io/en/stable/
2021-03-01 08:01:19.193496 INFO schedy_heating: *** 
2021-03-01 08:01:19.195422 INFO schedy_heating: *** You like this app, want to honor the effort put into
2021-03-01 08:01:19.198353 INFO schedy_heating: *** it, ensure continuous development and support?
2021-03-01 08:01:19.200475 INFO schedy_heating: *** Then please consider making a donation.
2021-03-01 08:01:19.202680 INFO schedy_heating: ***   DONATE: https://hass-apps.readthedocs.io/en/stable/#donations
2021-03-01 08:01:19.204992 INFO schedy_heating: *** Thank you very much and enjoy schedy!
2021-03-01 08:01:19.207258 INFO schedy_heating: *** 
2021-03-01 08:01:19.265291 INFO schedy_heating: --- Actor type is: 'thermostat'
2021-03-01 08:01:19.291548 INFO schedy_heating: --> [R:loznice] [A:climate.loznice] Received value of OFF.
/usr/local/lib/python3.8/asyncio/events.py:81: DeprecationWarning: The loop argument is deprecated since Python 3.8, and scheduled for removal in Python 3.10.
  self._context.run(self._callback, *self._args)
2021-03-01 08:01:19.416310 INFO schedy_heating: --> [R:obyvak] [A:climate.obyvaci_pokoj] Received value of OFF.
2021-03-01 08:01:19.557413 INFO schedy_heating: --> [R:pokoj_Vitek] [A:climate.pokoj_vitek] Received value of OFF.
2021-03-01 08:01:20.154484 INFO schedy_heating: <-- [R:pokoj_Vitek] Value set to 22.0��.  [scheduled]
2021-03-01 08:01:20.198966 INFO schedy_heating: --> [R:pokoj_Vitek] [A:climate.pokoj_vitek] Received value of 15.0��.
2021-03-01 08:01:20.256366 INFO schedy_heating: --> [R:pokoj_deti] [A:climate.pokoj_deti] Received value of OFF.
2021-03-01 08:01:20.272384 INFO schedy_heating: --> [R:pokoj_Vitek] [A:climate.pokoj_vitek] Received value of 22.0��.
2021-03-01 08:01:20.416635 INFO schedy_heating: --- [R:pokoj_deti] Restoring overlaid value OFF.
2021-03-01 08:01:20.464118 INFO schedy_heating: --> [R:pokoj_hoste] [A:climate.pokoj_pro_hosty] Received value of 23.0��.
2021-03-01 08:01:20.597552 INFO schedy_heating: --> [R:koupelna nahore] [A:climate.koupelna_patro] Received value of OFF.
2021-03-01 08:01:21.179528 INFO schedy_heating: <-- [R:koupelna nahore] Value set to 18.0��.  [scheduled]
2021-03-01 08:01:21.219345 INFO schedy_heating: --> [R:koupelna nahore] [A:climate.koupelna_patro] Received value of 23.0��.
2021-03-01 08:01:21.284069 INFO schedy_heating: --> [R:koupelna dole] [A:climate.koupelna_prizemi] Received value of OFF.
2021-03-01 08:01:21.291324 INFO schedy_heating: --> [R:koupelna nahore] [A:climate.koupelna_patro] Received value of 18.0��.
2021-03-01 08:01:21.893054 INFO schedy_heating: <-- [R:koupelna dole] Value set to 18.0��.  [scheduled]
2021-03-01 08:01:21.931177 INFO schedy_heating: --> [R:koupelna dole] [A:climate.koupelna_prizemi] Received value of 23.0��.
2021-03-01 08:01:21.941433 INFO schedy_heating: *** Initialization done.

appdaemon.yaml:

appdaemon:
  latitude: 51.23
  longitude: 16.975
  elevation: 250
  time_zone: Europe/Prague

  plugins:
    HASS:
      type: hass
      ha_url: http://192.168.0.150:8123

      token: iOiJIUzI1NiJ9.eyJpc3MiOiJjY2I2MTQxZWRkMDM0N2I4YjNmNTcwYWJmMDJlN2RmYSIsImlhdCI6MTYxNDU0MTYxNSwiZXhwIjoxOTI5OTAxNjE1fQ.4wn5T1P5glwFtIGxkZrQjc_i_wPucTDE4rNdYeKGBPQ

http:
  url: http://192.168.0.150:5050

admin:
api:
hadashboard:

In previous installation it works with the same (different IP and token)configuration yaml. Differences is only HA version. Any advice for me?

From HA I am not able to set temperature on or turn on a valve. I am able only turn off a valve. I remove container and make new with the same configuration (only different token), but still the same problem. Old instance of HA and Appdaemon is working.

Hello Happy people. I have running shedy for two years now. Yesterday I saw some strange behaviors:

  1. If I open a window, shedy will stop heating/cooling as expected,BUT when I close the window it won’t continue the schedule.
  2. Even if I have set a condition like “if temperature in the room x higher than x , don’t heat” but it seems it is not taken into account as the air conditioning will turn on anyway.

This is my config for shedy. I dunno what is going wrng here but maybe someone has an idea?

shedy_heating:
  module: hass_apps_loader
  class: SchedyApp

  debug: true

  actor_type: thermostat

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

  schedule_prepend:
    - x: "Mark(OFF, Mark.OVERLAY) if not is_empty(filter_entities('binary_sensor', window_room=room_name, state='on')) else Next()"
    - name: global schedule on/off switch
      x: "Abort() if is_off('input_boolean.automated_heating') else Next()"
    - name: per-room schedule on/off switch
      x: "Abort() if is_off('input_boolean.automated_heating_' + room_name) else Next()"

  schedule_append:
    - v: "OFF"

  schedule_snippets:
    # BEDROOM
    bedroom:
      - v: 30
        rules:
          # don't turn on when it's > 19 degrees in the bedroom
          - x: "Break() if float(state('sensor.ac_bedroom_temperature_2') or 0) > 18 else Next()"
          - weekdays: 1-5
            rules:
              - rules:
                  #          - x: "Next() if heating_mode() != 'Normal' else Break()"
                  - { start: "06:30", end: "07:00" }
                  - { start: "23:00", end: "23:30" }

          - weekdays: 6-7
            rules:
              - { start: "07:30", end: "07:50" }
              - { start: "23:00", end: "23:30" }

    # ROOM EVAN
    room_evan:
      - v: 30
        rules:
          # don't turn on when it's > 19 degrees in the bedroom
          - x: "Break() if float(state('sensor.ac_room_evan_temperature_2') or 0) > 18 else Next()"
          - weekdays: 1-5
            rules:
              - rules:
                  #          - x: "Next() if heating_mode() != 'Normal' else Break()"
                  - { start: "07:30", end: "07:50" }
                  - { start: "21:00", end: "21:30" }

          - weekdays: 6-7
            rules:
              - { start: "09:15", end: "09:30" }
              - { start: "21:00", end: "21:30" }

    # ROOM ROSE
    room_rose:
      - v: 30
        rules:
          # don't turn on when it's > 19 degrees in the bedroom
          - x: "Break() if float(state('sensor.ac_room_rose_temperature_2') or 0) > 18 else Next()"
          - weekdays: 1-5
            rules:
              - rules:
                  #          - x: "Next() if heating_mode() != 'Normal' else Break()"
                  - { start: "07:30", end: "07:50" }
                  - { start: "21:00", end: "21:30" }

          - weekdays: 6-7
            rules:
              - { start: "07:30", end: "07:50" }
              - { start: "21:00", end: "21:30" }

  watched_entities:
    - input_boolean.automated_heating_bedroom
    - input_boolean.automated_heating_room_evan
    - input_boolean.automated_heating_room_rose
    - input_select.heating_mode
    - input_boolean.automated_heating
    - sensor.ac_bedroom_temperature_2
    - sensor.ac_room_evan_temperature_2
    - sensor.ac_room_rose_temperature_2

  rooms:
    # BEDROOM
    bedroom:
      rescheduling_delay: 30
      actors:
        climate.air_conditioner_bedroom:
      watched_entities:
        - sensor.ac_bedroom_temperature_2
        - binary_sensor.door_window_sensor_158d00019f308a
        - input_boolean.automated_heating_bedroom
      schedule:
        - x: "IncludeSchedule(schedule_snippets['bedroom'])"
    # ROOM EVAN
    room_evan:
      allow_manual_changes: true
      rescheduling_delay: 30
      actors:
        climate.room_evan_ac_control:
      watched_entities:
        - sensor.ac_room_evan_temperature_2
        - binary_sensor.openclose_16
        - input_boolean.automated_heating_room_evan
      schedule:
        - x: "IncludeSchedule(schedule_snippets['room_evan'])"
    # ROOM ROSE
    room_rose:
      allow_manual_changes: true
      rescheduling_delay: 30
      actors:
        climate.air_conditioner_rose:
      watched_entities:
        - sensor.ac_room_rose_temperature_2
        - binary_sensor.door_window_sensor_158d00019daf13
        - input_boolean.automated_heating_room_rose
      schedule:
        - x: "IncludeSchedule(schedule_snippets['room_rose'])"

  statistics:
    # Pick an arbitrary name for the parameter instance.
    upstairs_temp_delta:
      # The type of parameter as found in the actor'S documentation.
      type: temp_delta
      # More parameter-specific settings:
      rooms:
        bedroom:
        room_evan:
        room_rose:

I am running Appdaemon 4 as Hassio Addon. but this is not related to the issue I guess :slight_smile: Thanks for your help.

is there a way for me to re write this to ignore the

  • x: “45 if is_off(‘input_boolean.occupied’) else Next()”
    on my 4th day of the week ? and make it go to schedule append temp even if house is not occupied?
    Im not usual at this location much but on Thursdays 7am. and its freezing in the house. Unless I remember to manually set house as occupied at 6am.
  watched_entities:
  - input_select.heating_mode
  - input_boolean.nothome
  - input_boolean.occupied
  
  
  schedule_append:
  - v: "65"
    
  rooms:

    living:
      rescheduling_delay: 30
      actors:
        climate.kozy_heat:
 
      schedule:
      - x: "45 if is_off('input_boolean.occupied') else Next()"
      - v: 71
        rules:
        - weekdays: 1-7
          rules:
          
          - rules:
            - x: "Next() if heating_mode() == 'Normal' else Break()"
            - { start: "06:30", end: "07:30" }
            - { start: "18:00", end: "22:30" }
          - rules:
            - x: "Next() if heating_mode() != 'Normal' else Break()"
            - { start: "06:00", end: "23:00" }
        - weekdays: 6-7
          rules:
          - { start: "07:00", end: "23:00" }

I think I figured out how.
but not sure if the days work like this?
can you put days out of order like this?

 - weekdays: 5-3
  schedule_append:
  - v: "65"
    
  rooms:

    living:
      rescheduling_delay: 1
      actors:
        climate.test:
 
      schedule:
      - v: 72
        rules:
        - weekdays: 4
          rules:
          - rules:
            - x: "Next() if heating_mode() == 'Normal' else Break()"
            - { start: "06:30", end: "07:30" }
            - { start: "17:00", end: "22:30" }
          - rules:
            - x: "Next() if heating_mode() != 'Normal' else Break()"
            - { start: "06:00", end: "23:00" }
            
        - weekdays: 5-3
          rules:
             - x: "45 if is_off('input_boolean.occupied') else Next()"
             - x: "Next() if heating_mode() == 'Normal' else Break()"
             - { start: "06:30", end: "07:30" }
             - { start: "17:00", end: "22:30" }
        - rules:
            - x: "Next() if heating_mode() != 'Normal' else Break()"
            - { start: "06:00", end: "23:00" }
          

Hi @Rod_Poplarchick

You can express the weekdays like "1-3,5-7" or "!4", which are both equivalent and include everything except Thursday.

But actually what you want to do can be achieved quite easy by just adding something like this as the first rule in your schedule:

- { x: "Break()", weekdays: "4", start: "06:00", end: "07:00" }

It will then break out of the current sub-schedule (the room-specific schedule) and continue evaluating the next rule after that (which is the schedule_append section) during that hour.

By the way, you could utilize the same behavior to break out of schedule_prepend and continue with the room-specific schedule, should you once need to do so. The three sections are just sub–schedules themselves which are concatenated internally, so the regular sub-schedule semantics apply here as well.

Hope that helps.

1 Like

Btw. Thanks for all you do
And responding to all of us dumb asses
You do great work. :star_struck:

@roschi did you get the tie so see why my ac won’t resume schedule after closing the window again? Als o it seems like the blocking if temp ig hight than x doesn’t work. but more the windo part interests me.

shedy_heating:
  module: hass_apps_loader
  class: SchedyApp

  debug: true

  actor_type: thermostat

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

  schedule_prepend:
    - x: "Mark(OFF, Mark.OVERLAY) if not is_empty(filter_entities('binary_sensor', window_room=room_name, state='on')) else Next()"
    - name: global schedule on/off switch
      x: "Abort() if is_off('input_boolean.automated_heating') else Next()"
    - name: per-room schedule on/off switch
      x: "Abort() if is_off('input_boolean.automated_heating_' + room_name) else Next()"

  schedule_append:
    - v: "OFF"

  schedule_snippets:
    # BEDROOM
    bedroom:
      - v: 30
        rules:
          # don't turn on when it's > 19 degrees in the bedroom
          - x: "Break() if float(state('sensor.ac_bedroom_temperature_2') or 0) > 18 else Next()"
          - weekdays: 1-5
            rules:
              - rules:
                  #          - x: "Next() if heating_mode() != 'Normal' else Break()"
                  - { start: "06:30", end: "07:00" }
                  - { start: "23:00", end: "23:30" }

          - weekdays: 6-7
            rules:
              - { start: "07:30", end: "07:50" }
              - { start: "23:00", end: "23:30" }

    # ROOM EVAN
    room_evan:
      - v: 30
        rules:
          # don't turn on when it's > 19 degrees in the bedroom
          - x: "Break() if float(state('sensor.ac_room_evan_temperature_2') or 0) > 18 else Next()"
          - weekdays: 1-5
            rules:
              - rules:
                  #          - x: "Next() if heating_mode() != 'Normal' else Break()"
                  - { start: "07:30", end: "07:50" }
                  - { start: "21:00", end: "21:30" }

          - weekdays: 6-7
            rules:
              - { start: "09:15", end: "09:30" }
              - { start: "21:00", end: "21:30" }

    # ROOM ROSE
    room_rose:
      - v: 30
        rules:
          # don't turn on when it's > 19 degrees in the bedroom
          - x: "Break() if float(state('sensor.ac_room_rose_temperature_2') or 0) > 18 else Next()"
          - weekdays: 1-5
            rules:
              - rules:
                  #          - x: "Next() if heating_mode() != 'Normal' else Break()"
                  - { start: "07:30", end: "07:50" }
                  - { start: "21:00", end: "21:30" }

          - weekdays: 6-7
            rules:
              - { start: "07:30", end: "07:50" }
              - { start: "21:00", end: "21:30" }

  watched_entities:
    - input_boolean.automated_heating_bedroom
    - input_boolean.automated_heating_room_evan
    - input_boolean.automated_heating_room_rose
    - input_select.heating_mode
    - input_boolean.automated_heating
    - sensor.ac_bedroom_temperature_2
    - sensor.ac_room_evan_temperature_2
    - sensor.ac_room_rose_temperature_2

  rooms:
    # BEDROOM
    bedroom:
      rescheduling_delay: 30
      actors:
        climate.air_conditioner_bedroom:
      watched_entities:
        - sensor.ac_bedroom_temperature_2
        - binary_sensor.door_window_sensor_158d00019f308a
        - input_boolean.automated_heating_bedroom
      schedule:
        - x: "IncludeSchedule(schedule_snippets['bedroom'])"
    # ROOM EVAN
    room_evan:
      allow_manual_changes: true
      rescheduling_delay: 30
      actors:
        climate.room_evan_ac_control:
      watched_entities:
        - sensor.ac_room_evan_temperature_2
        - binary_sensor.openclose_16
        - input_boolean.automated_heating_room_evan
      schedule:
        - x: "IncludeSchedule(schedule_snippets['room_evan'])"
    # ROOM ROSE
    room_rose:
      allow_manual_changes: true
      rescheduling_delay: 30
      actors:
        climate.air_conditioner_rose:
      watched_entities:
        - sensor.ac_room_rose_temperature_2
        - binary_sensor.door_window_sensor_158d00019daf13
        - input_boolean.automated_heating_room_rose
      schedule:
        - x: "IncludeSchedule(schedule_snippets['room_rose'])"

  statistics:
    # Pick an arbitrary name for the parameter instance.
    upstairs_temp_delta:
      # The type of parameter as found in the actor'S documentation.
      type: temp_delta
      # More parameter-specific settings:
      rooms:
        bedroom:
        room_evan:
        room_rose:

thank you it worked like a charm with a test
now my kids can do distance learning without blankets and chill breath no teachers will not think they were vaping LOL

schedy_heating:  # This is our app instance name.
  module: hass_apps_loader
  class: SchedyApp
  actor_type: thermostat
  expression_environment: |
    def heating_mode():
        return state("input_select.heating_mode")
  watched_entities:
  - input_select.heating_mode
  - input_boolean.nothome
  - input_boolean.occupied
  
  
  schedule_append:
  - v: "65"
    
  rooms:

    living:
      rescheduling_delay: 30
      actors:
        climate.kozy_heat:
        
      schedule:
#######################################################################################
#   this line breaks the house not accupied rule for a morning to pre heat house 
#   after not being home for days.
      
      - { x: "Break()", weekdays: "4", start: "06:00", end: "07:45" }
#####################################################################################        
      
      - x: "45 if is_off('input_boolean.occupied') else Next()"
      - v: 71
   
        rules:
        
        - weekdays: 1-5
          rules:
          
          - rules:
            - x: "Next() if heating_mode() == 'Normal' else Break()"
            - { start: "06:30", end: "07:30" }
            - { start: "18:00", end: "22:30" }
          - rules:
            - x: "Next() if heating_mode() != 'Normal' else Break()"
            - { start: "06:00", end: "23:00" }
        - weekdays: 6-7
          rules:
          - { start: "07:00", end: "23:00" }        
          
    #       #
          #

hi there,
is there a way to use “external” sensors for the temperature?
I received yesterday Aqara wsdcgq11lm sensors and just looking for a way to change the temperature of the thermostates (AVM301) with this new sensor datas.

Just change the sensor in the climate integration (I think).

what do you mean?
I have in the schedy file configured

actor_type: thermostat

and in each room I have an actor selected, like

actors:
   climate.avm301_dg_bad:

I just looking for an option to add a seperate temp. sensor :smiley:
Like the watched_entities for the window sensors.

Yes you can do this. I use for instance an outside temperature sensor to decide if I want to turn on the electric floor heating in the bathroom. I believe this is still in one of the examples. You indeed have to add the sensor to the watched entities and it will reevaluate every time the value changes.

Sorry misread. Yes add it to the watched entities or create a boolean sensor (and watch that) so on at certain temp.

Okay, thank you.
Is it enough, that I added this to the /config/appdaemon/apps/schedy_heating.yaml?

schedy_heating:  # This is our app instance name.
  module: hass_apps_loader
  class: SchedyApp

  actor_type: thermostat

  expression_environment: |
    def heating_mode():
        return state("input_select.heating_mode")
            
#    - v: "OFF"
        
        
  watched_entities:
  - input_select.heating_mode
  #?Was macht das?
#  - "input_boolean.heating_mode"

#?Muss ich noch konfigurieren
  #schedule_prepend:
  
  #- x: "Mark(OFF, Mark.OVERLAY) if not is_empty(filter_entities('binary_sensor', state='on', window_room=room_name)) else Next()"
  
  #- name: global schedule on/off switch
    #x: "Abort() if is_off('input_boolean.heating_mode') else Next()"
    
  #- name: per-room schedule on/off switch
    #x: "Abort() if is_off('input_boolean.heating_mode_room_' + room_name) else Next()"
  
  
#  schedule_append:
#  - v: "OFF"
 
  
  rooms:

    Bad:
      rescheduling_delay: 120
      actors:
        climate.avm301_dg_bad:

      #watched_entities:
      #- binary_sensor.office_window_1
      #- "input_boolean.heating_mode_room_office"
      
      schedule:
      
      - v: 24
        rules:
        - x: "Break() if heating_mode() == 'Abwesend' else Next()"
        
        - weekdays: 1-5
          rules:
          - rules:
            - x: "Next() if heating_mode() == 'Zuhause' else Break()"
            - { start: "04:45", end: "07:30" }
          - rules:
            - x: "Next() if heating_mode() == 'HomeOffice' else Break()"
            - { start: "05:30", end: "07:30" }
        - weekdays: 6-7
          rules:
          - { start: "07:30", end: "11:00" }
        - weekdays: 1-7
          rules:
          - { start: "19:00", end: "22:00" }

          
        - v: 19
      
      - v: "OFF"
      
    Buero2:
      rescheduling_delay: 120
      actors:
        climate.avm301_dg_buero2:

      #watched_entities:
      #- binary_sensor.living_window_1
      #- "input_boolean.heating_mode_room_living"
      
      schedule:
      
      - v: 20
        rules:
        - x: "Break() if heating_mode() == 'Abwesend' else Next()"
        
        - weekdays: 1-5
          rules:
          - rules:
            - x: "Next() if heating_mode() == 'Zuhause' else Break()"
            - { start: "17:00", end: "22:00" }
          - rules:
            - x: "Next() if heating_mode() == 'HomeOffice' else Break()"
            - { start: "05:30", end: "16:30" }
        - weekdays: 6-7
          rules:
          - { start: "09:00", end: "22:00" }
        - weekdays: 1-7
          rules:
          - { start: "19:00", end: "22:00" }
          
        - v: 18
      
      - v: "OFF"
      
    Schlafzimmer:
      rescheduling_delay: 120
      actors:
        climate.avm301_dg_schlafzimmer:
      #watched_entities:
      #- binary_sensor.bedroom_window_1
      #- "input_boolean.heating_mode_room_bedroom"
      
      schedule:
      
      - v: 20
        rules:
        - x: "Break() if heating_mode() == 'Abwesend' else Next()"
        
        - weekdays: 1-5
          rules:
          - rules:
            - { start: "04:00", end: "08:30" }
        - weekdays: 6-7
          rules:
          - { start: "06:00", end: "10:00" }
        - weekdays: 1-7
          rules:
            - { start: "19:00", end: "22:30" }

          
        - v: 18
      
      - v: "OFF"

Or I have to add it also to the customize.yaml here?

#Schedy
#Schedy:
#sensor.temp_bad_temperature:
#  window_room: Bad
#sensor.temp_buero2_temperature:
#  window_room: Buero2
#sensor.temp_schlafzimmer_temperature:
#  window_room: Schlafzimmer

Now I added this to the schedy file:

  rooms:

    Bad:
      rescheduling_delay: 120
      actors:
        climate.avm301_dg_bad:

      watched_entities:
      - sensor.temp_bad_temperature

but how I can test it?
In my dashboard the temp of the AVM301 is shown…

Hi @Timsche2210 It will help what you try to realize with this extra temperature sensor. Should the value change based upon this extra sensor?

This is a calculation I use to set the minimum temperature based on the outside temperature

- x: "7.5 if float(state('sensor.openweathermap_temperature') or 0) < 2.5 else 5" # set minimum to 7.5 when close to zero else 5