well. I think is not. Any alternative?
I’ve not looked. I sorted my problem and the schedules are working as expected. I shouldn’t need to fiddle with the again now.
Unfortunately I’m facing some issue. Basically schedy doesn’t change anymore based on the input_select that I used for the last 4 years.
I run
- Core 2024.1.5
- Supervisor 2023.12.1
- Operating System 11.4
- Frontend 20240104.0
Appdaemon version is 0.16.3
Below my config file called schedy_heating.yaml:
schedy_heating: # This is our app instance name.
module: hass_apps_loader
class: SchedyApp
reset_at_startup: true
actor_type: thermostat
expression_environment: |
def heating_mode():
return state("input_select.heating_mode")
watched_entities:
- input_select.heating_mode
schedule_prepend:
- name: global schedule on/off switch
x: "Abort() if heating_mode() == 'Estate' else Next()"
- 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"
rooms:
soggiorno:
rescheduling_delay: 180
actors:
climate.002018a99d1262:
watched_entities:
- binary_sensor.001558a99d47fc_state
schedule:
- v: 20
rules:
- x: "Next() if heating_mode() == 'Acceso' else Break()"
- { start: "07:30", end: "23:30" }
- v: 30
months: 5-9
studio:
rescheduling_delay: 180
actors:
climate.002018a99d17fb:
watched_entities:
- binary_sensor.001558a99d4529_state
schedule:
- v: 21
rules:
- x: "Next() if heating_mode() == 'Acceso' else Break()"
- { start: "08:00", end: "23:30" }
- v: 30
months: 5-9
cucina:
rescheduling_delay: 120
actors:
climate.002018a99d23c2:
watched_entities:
- binary_sensor.portacucina_template
- binary_sensor.finestra_cucina_contact
schedule:
- v: 20
rules:
- x: "Next() if heating_mode() == 'Acceso' else Break()"
- { start: "05:30", end: "22:30" }
- v: 30
months: 5-9
cameradaletto:
rescheduling_delay: 240
actors:
climate.002018a99d1c41:
watched_entities:
- binary_sensor.001558a99d4a8d_state
schedule:
- v: 20
rules:
- weekdays: 1-5
rules:
- rules:
- x: "Next() if heating_mode() == 'Acceso' else Break()"
- { start: "05:30", end: "09:00" }
- { start: "09:00", end: "23:30" } #twins
# - { start: "18:00", end: "23:30" }
- weekdays: 6-7
rules:
- rules:
- x: "Next() if heating_mode() == 'Acceso' else Break()"
- { start: "07:00", end: "11:00" }
- { start: "11:00", end: "23:30" } #twins
# - { start: "20:00", end: "23:30" }
- v: 30
months: 5-9
cameradiadele:
rescheduling_delay: 240
actors:
climate.002018a99ec24d:
watched_entities:
- binary_sensor.001558a99ef4be_state
- binary_sensor.porta_finestra_camera_di_adele_contact
schedule:
- v: 22
rules:
- weekdays: 1-5
rules:
- rules:
- x: "Next() if heating_mode() == 'Acceso' else Break()"
- { start: "05:30", end: "09:00" }
- { start: "16:00", end: "23:30" }
- weekdays: 6-7
rules:
- rules:
- x: "Next() if heating_mode() == 'Acceso' else Break()"
- { start: "05:30", end: "23:30" }
- v: 30
months: 5-9
bagnoprincipale:
actors:
climate.002018a99d2442:
watched_entities:
- binary_sensor.001558a99d4e50_state
schedule:
- v: 20
rules:
- weekdays: 1-5
rules:
- rules:
- x: "Next() if heating_mode() == 'Acceso' else Break()"
- { start: "05:30", end: "23:30" }
- weekdays: 6-7
rules:
- rules:
- x: "Next() if heating_mode() == 'Acceso' else Break()"
- { start: "07:00", end: "23:30" }
- v: 30
months: 5-9
bagnosecondario:
actors:
climate.002018a99ebe4e:
watched_entities:
- binary_sensor.001558a99ef07a_state
schedule:
- v: 21
rules:
- weekdays: 1-5
rules:
- rules:
- x: "Next() if heating_mode() == 'Acceso' else Break()"
- { start: "05:30", end: "23:30" }
- weekdays: 6-7
rules:
- rules:
- x: "Next() if heating_mode() == 'Acceso' else Break()"
- { start: "07:00", end: "23:30" }
- v: 30
months: 5-9
below my appdaemon.yaml file
## appdaemon.yaml
secrets: /homeassistant/secrets.yaml ##secrets: /config/secrets.yaml
appdaemon:
app_dir: /homeassistant/appdaemon/apps
time_zone: Europe/Rome
production_mode: true #
# utility_delay: 5 #
# utility_skew: 4 #
latitude: 45.0722548
longitude: 7.6606463
elevation: 239
plugins:
HASS:
type: hass
http:
url: http://127.0.0.1:5050
hadashboard:
admin:
api:
the only thing changed “recently” is the app_dir position:
> app_dir: /homeassistant/appdaemon/apps
can someone please point me to the correct direction to restore functionality?
It’s been a year since the last post here. I know Schedy isnt being developed any more, but it still works brilliantly, so are people using it as is or moved on to other set ups?
My heating is a generic thermostat, with target_sensor: sensor.upstairs_average
. I have temp/humidity sensors all around the house, but central heating actuator with simple on/off control. But Schedy just controls the set point on the Gen Therm.
What I’d like to do is assume a different target sensor at different points during the day.
e.g. when no one else is home, during work from home hours, then target_sensor: sensor.home_office
. During the evening sensor.Living_room, etc.
But I cant decide whether the switching part should be entirely within Schedy, whether I should have 3/4 different Generic Thermostats, or whether the target_sensor could be populated with an input_select and-or a template sensor.
Any pointers on how best to set it up this way? Anyone still here ?
I would create artificial target_sensor in HA which will be somehow computed from those two ones you are interested in. Probably some template sensor?
That way you do not need to touch neither Schedy nor Gen Therm.
I used Schedy for years with huge evaluation conditions inside etc. But as it is long time unmaintained I decided to switch and turn of the AppDaemon. Since autumn I am not longer using it and switched to Versatile Thermostat + Scheduler Component
I have managed to get what I want with an input select and a template sensor. And then the Generic Thermostat uses that sensor. I haven’t automated it yet, just switching manually while I decide if it has the desired effect.
Thanks, I’ll also take a look at Versatile Thermostat. Though I really like the way Schedy works by constantly checking if rules are met, rather than specifically triggering on a schedule. I dont think the schedule component works that way, though I may be wrong?
The Scheduler is less interactive, let’s say. Sometimes the reevaluation takes minutes, occasionally it does not occur.
I set some automations once I am changing some outer conditions (override schedule, temperature change, …) - disabling and reenabling the schedule will trigger the reevaluation immediately.
I do it all in Schedy.
It probably won’t make a great deal of sense, but here’s the script I use.
We have generic thermostats in multiple rooms, each with a tempt sensor and a “heat demand” boolean. There is then a “we need heat” boolean that is a logical OR of the room booleans. That “we need heat” boolean drives the boiler.
Separately, there are node-red flows that control thermostatic valves in each room.
schedy_house: # This is our app instance name.
module: hass_apps_loader
class: SchedyApp
debug: false
reset_at_startup: true
actor_type: thermostat
expression_environment: |
def house_mode():
return state("input_select.house_mode")
def house_vacant():
return state("input_boolean.house_vacant")
def season():
return state('input_select.season')
def gareth_location():
return (state('person.gareth_2'))
def varina_location():
return (state('person.varina_2'))
def ch_extended():
return (state('input_boolean.ch_extended'))
def ch_manual():
return (state('input_boolean.central_heating_manual'))
def house_vacant():
return (state('input_boolean.house_vacant'))
def setback_disable():
return (state('input_boolean.setback_disable'))
def shack_occupied():
return (state('input_boolean.shack_occupied'))
def livingroom_occupied():
return (state('input_boolean.livingroom_occupied'))
def bedroom_2_occupied():
return (state('input_boolean.bedroom_2_occupied'))
def simulate_bedtime():
return (state('input_boolean.simulate_bedtime'))
schedule_snippets:
watched_entities:
- input_boolean.bedroom_2_occupied
- input_boolean.central_heating_manual
- input_boolean.ch_extended
- input_boolean.house_vacant
- input_boolean.livingroom_occupied
- input_boolean.setback_disable
- input_boolean.shack_occupied
- input_boolean.simulate_bedtime
- input_select.house_mode
- input_select.season
- person.gareth_2
- person.varina_2
schedule_prepend:
# Heating on very low if we are away or it is summer season
- name: We are away
x: "10 if house_mode() == 'Away' or season() == 'Summer' else Next()"
# Do nothing if CH is on manual
- name: We are in manual mode
x: "Abort() if ch_manual() == 'on' else Next()"
# default rule to apply if no other matches
schedule_append:
- v: 15
rooms:
bedroom_1:
rescheduling_delay: 0
actors:
climate.bedroom_1_thermostat:
schedule:
# Nothing needed in Spring season
- x: "10 if season() == 'Spring' else Next()"
# Knock back the target temps if we are both out of the house
- x: "15 if house_vacant() == 'on' and setback_disable() == 'off' else Next()"
# Warm in mornings and evenings
- v: 19.0
rules:
- { start: "07:00", end: "09:00" }
- { start: "19:00", end: "22:30" }
# Otherwise, low level overnight
- v: 18.0
rules:
- { start: "22:30", end: "07:00+1d" }
bedroom_2:
rescheduling_delay: 0
actors:
climate.bedroom_2_thermostat:
schedule:
# Nothing needed in Spring
- x: "10 if season() == 'Spring' else Next()"
# Low if Varina is not home
- x: "15 if varina_location() == 'not_home' else Next()"
# Low if we have gone to bed early
- x: "15 if simulate_bedtime() == 'on' else Next()"
# Winter
# Ignore occupancy first thing to get room warm
- v: 20
rules:
- { start: "07:00", end: "10:00" }
# Low at night
- v: 15
rules:
- { start: "23:00", end: "07:00" }
# Otherwise, drop back if room is unoccupied
- v: 20
rules:
- x: "17.0 if bedroom_2_occupied() == 'off' else Next() "
- { start: "09:00", end: "22:30" }
bedroom_3:
rescheduling_delay: 0
actors:
climate.bedroom_3_thermostat:
schedule:
# Nothing needed in Spring season
- x: "10 if season() == 'Spring' else Next()"
# Override if we've gone to bed early
- x: "18 if simulate_bedtime() == 'on' else Next()"
# Knock back the target temps if we are both out of the house
- x: "15 if house_vacant() == 'on' and setback_disable() == 'off' else Next()"
# Warm in morning
- v: 20.0
rules:
- { start: "07:00", end: "10:00" }
# Warm up in evening
- v: 20
rules:
- { start: "19:00", end: "21:00" }
- v: 20
rules:
- { start: "21:00", end: "23:00" }
# Otherwise, low level overnight
- v: 18.0
rules:
- { start: "23:00", end: "07:00+1d" }
livingroom:
rescheduling_delay: 60
replicate_changes: true
actors:
climate.livingroom_thermostat:
schedule:
# Override if we've gone to bed early
- x: "15 if simulate_bedtime() == 'on' else Next()"
# Stay on if CH extended
- x: " 20 if ch_extended() == 'on' else Next() "
# Low overnight
- v: 15
rules:
- { start: "23:00", end: "07:00" }
# Otherwise
# Only heat in the evening during Spring season
- v: 20
rules:
- x: "Next() if season() == 'Spring' else Break()"
# Knock back the target temps if we are both out of the house
- x: "15 if gareth_location() == 'not_home' and varina_location() == 'not_home' and setback_disable() == 'off' else Next()"
# Medium if the room is unoccupied
- x: "17 if livingroom_occupied() == 'off' else Next() "
- { start: "18:00", end: "22:30" }
# Heat all day in Winter season
# Ignore occupancy in the early morning, just get the room warm
# Knock back the target temps if we are both out of the house
- x: "15 if gareth_location() == 'not_home' and varina_location() == 'not_home' and setback_disable() == 'off' else Next()"
- v: 20
rules:
- { start: "07:00", end: "09:00" }
# Thereafter, drop back if the room is unoccupied
- v: 20
rules:
- x: "17 if livingroom_occupied() == 'off' else Next() "
- { start: "09:00", end: "18:00" }
- v: 20
rules:
- x: "17 if livingroom_occupied() == 'off' else Next() "
- { start: "18:00", end: "22:30" }
failed to work with new hassio-addons/addon version: 0.17.2 update is failing to start because of a path-related issue:
It has been fixed in Appdaemon
but @frenck needs to update the add-on.
Update:
Fixed this morning with the release of 0.17.3. Thanks
Anyone know how to roll back an addon to a previous version?
Updated today and works
If you backed up before update then .Go to backps and restore
Was already looking for an alternative did not expect this would be fixed @frenck you rock!
Ever since 0.17.6 it looks like Schedy is not making changes. If I restart Schedy it sets the thermostat properly. Rolling back to 17.4 fixes the issue. Sadly, there is nothing in the logs at the time of a thermostat change. My friend who runs Schedy is seeing the same issue, can any one else confirm?
Edit:
I opened up this issue, if anyone cares to chime it:
Seems to be working for me. I have quite a different configuration (I don’t use snippets).
Do you have debug: true
in the schedy yaml?
Yep I enabled debug, nothing is shown at the time of a temperature change. If I restart App Daemon it sets the temperature correctly, its very odd. I tried the latest 17.7 today, no luck
I have just run into the same issue. I am on 17.7 and all looks good at startup but nothing else happens throughout the day and no logs. Very strange if I change entity values the log shows the change and schedy triggers a revaluation but no changes based on time are occuring/being triggered. Time to create some basic automations so I can have a hot shower in the morning
Sadly, I gave up and moved to the “schedule card/custom component”. Its quite good, and I you could program it on your phone if you wanted to. I tried to use this about 6 months ago, but for me the feature parity was not there, but now it has everything I need.
Yes, I’m seeing it as well. I have three schedules for different parts of the house, and I’m seeing it with one of them. I’m still trying to get to the bottom of it.