Schedules
About Schedules
You can set different device schedules, enable or disable them and change their associated parameters.
Enabling/Disabling Schedule
To disable the schedule, set schedule_{schedule_name}_switch parameter parameter to off, to enable it set the parameter to on.
The following example illustrates how you can turn heating schedule on or off.
# Turn on the heating schedule.
await ecomax.set("schedule_heating_switch", "on")
# Turn off the heating schedule.
await ecomax.set("schedule_heating_switch", "off")
Changing Schedule Parameter
To change associated parameter value, change schedule_{schedule_name}_parameter property.
Use following example to lower night time heating temperature by 10 degrees Celsius.
# Lower heating temperature by 10 C at night time.
await ecomax.set("schedule_heating_parameter", 10)
Setting Schedule
To set the schedule, you can use set_state(state)
, set_on()
or
set_off()
methods and call commit()
to send changes to the
device.
This example sets nighttime mode for Monday from 00:00 to 07:00 and switches back to daytime mode from 07:00 to 00:00.
schedules = await ecomax.get("schedules")
heating_schedule = schedules["heating"]
heating_schedule.monday.set_off(start="00:00", end="07:00")
heating_schedule.monday.set_on(start="07:00", end="00:00")
await heating_schedule.commit()
For clarity sake, you might want to use STATE_NIGHT
and
STATE_DAY
constants from pyplumio.helpers.schedule
module.
from pyplumio.helpers.schedule import STATE_NIGHT
heating_schedule.monday.set_state(STATE_NIGHT, "00:00", "07:00")
You may also omit one of the boundaries. The other boundary is then set to the end or start of the day.
heating_schedule.monday.set_on(start="07:00")
# is equivalent to
heating_schedule.monday.set_on(start="07:00", end="00:00")
heating_schedule.monday.set_off(end="07:00")
# is equivalent to
heating_schedule.monday.set_off(start="00:00", end="07:00")
This can be used to set state for a whole day with
heating_schedule.monday.set_on()
.
To set schedule for all days you can iterate through the Schedule object:
schedules = await ecomax.get("schedules")
heating_schedule = schedules["heating"]
for weekday in heating_schedule:
# Set a nighttime mode from 00:00 to 07:00
weekday.set_on("00:00", "07:00")
# Set a daytime mode from 07:00 to 00:00
weekday.set_off("07:00", "00:00")
# Commit changes to the device.
await heating_schedule.commit()
Schedule Examples
import pyplumio
from pyplumio.helpers.schedule import STATE_DAY, STATE_NIGHT
async def main():
"""Set a device schedule."""
async with pyplumio.open_tcp_connection("localhost", 8899) as connection:
ecomax = await connection.get("ecomax")
schedules = await ecomax.get("schedules")
heating_schedule = schedules["heating"]
# Turn the heating schedule on.
await ecomax.set("schedule_heating_switch", "on")
# Drop the heating temperature by 10 degrees in the nighttime mode.
await ecomax.set("schedule_heating_parameter", 10)
for weekday in heating_schedule:
weekday.set_state(STATE_DAY, "00:00", "00:30")
weekday.set_state(STATE_NIGHT, "00:30", "09:00")
weekday.set_state(STATE_DAY, "09:00", "00:00")
# There will be no nighttime mode on sunday.
heating_schedule.sunday.set_state(STATE_DAY)
await heating_schedule.commit()
asyncio.run(main())