Skip to content

Thermostat Adjustment using Time Trigger

Matthew Scoville edited this page Sep 13, 2020 · 2 revisions

This is the Script that I use to handle adjusting my Z-Wave Thermostat based off the forecast temperature for the next day.

I have this split into two separate script files, day and night, with the day one split into two scripts inside the file, workday and non-workday with the difference being the time trigger.

This checks a binary sensor (Workday) and then gets the forecast temperature by checking Dark Sky (which I'll have to switch off when they go dark). It sets two variables (hightemp/lowtemp) and then calls the Climate set_temperature function to set the high/low temp on my thermostat (which just stays in auto mode all the time).

"""
Thermostat day script
"""
@time_trigger("once(7:30:00)")
def thermostat_work_day():
    """Trigger at 7:30am every"""
    """Only trigger on workday"""
    if binary_sensor.workday == 'on':
        """Set High Temp"""
        if float(sensor.dark_sky_daytime_high_temperature_0d) > 85.0:
            hightemp = 75
        elif float(sensor.dark_sky_daytime_high_temperature_0d) < 85.0:
            hightemp = 85
        """Set Low Temp"""
        if float(sensor.dark_sky_overnight_low_temperature_0d) > 50.0:
            lowtemp = 55
        elif float(sensor.dark_sky_overnight_low_temperature_0d) < 50.0:
            lowtemp = 65
        """Send the actual command to the thermostat"""
        climate.set_temperature(entity_id="climate.radio_thermostat_company_of_america_ct101_thermostat_iris_mode",target_temp_low=lowtemp,target_temp_high=hightemp,hvac_mode="heat_cool")

@time_trigger("once(8:30:00)")
def thermostat_nonwork_day():
    """Trigger at 8:30am every"""
    if binary_sensor.workday != 'on':
        """Set High Temp"""
        if float(sensor.dark_sky_daytime_high_temperature_0d) > 85.0:
            hightemp = 75
        elif float(sensor.dark_sky_daytime_high_temperature_0d) < 85.0:
            hightemp = 85
        """Set Low Temp"""
        if float(sensor.dark_sky_overnight_low_temperature_0d) > 50.0:
            lowtemp = 55
        elif float(sensor.dark_sky_overnight_low_temperature_0d) < 50.0:
            lowtemp = 65
        """Send the actual command to the thermostat"""
        climate.set_temperature(entity_id="climate.radio_thermostat_company_of_america_ct101_thermostat_iris_mode",target_temp_low=lowtemp,target_temp_high=hightemp,hvac_mode="heat_cool")

"""
Thermostat night script
"""
@time_trigger("once(23:00:00)")
def thermostat_night():
    """Trigger at 11pm every night"""
    """Set High Temp"""
    if float(sensor.dark_sky_daytime_high_temperature_0d) > 85.0:
        hightemp = 75
    elif float(sensor.dark_sky_daytime_high_temperature_0d) < 85.0:
        hightemp = 85
    """Set Low Temp"""
    if float(sensor.dark_sky_overnight_low_temperature_0d) > 50.0:
        lowtemp = 55
    elif float(sensor.dark_sky_overnight_low_temperature_0d) < 50.0:
        lowtemp = 65
    """Send the actual command to the thermostat"""
    climate.set_temperature(entity_id="climate.radio_thermostat_company_of_america_ct101_thermostat_iris_mode",target_temp_low=lowtemp,target_temp_high=hightemp,hvac_mode="heat_cool")
Clone this wiki locally