updating configuration
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
import appdaemon.plugins.hass.hassapi as hass
|
||||
import globals
|
||||
import datetime
|
||||
from datetime import timedelta
|
||||
#
|
||||
# POwer theory
|
||||
# Power theory tariff switch
|
||||
#
|
||||
# Args:
|
||||
#
|
||||
# None
|
||||
#
|
||||
# Release Notes
|
||||
#
|
||||
# Version 1.0:
|
||||
# Initial Version
|
||||
|
||||
class PowerTheory(hass.Hass):
|
||||
def initialize(self):
|
||||
self.run_daily(self.timer_tick, self.parse_time("07:00:00"))
|
||||
self.run_daily(self.timer_tick, self.parse_time("10:00:00"))
|
||||
self.run_daily(self.timer_tick, self.parse_time("17:00:00"))
|
||||
self.run_daily(self.timer_tick, self.parse_time("21:00:00"))
|
||||
self.run_daily(self.timer_tick, self.parse_time("23:00:00"))
|
||||
self.timer_tick(None)
|
||||
|
||||
def timer_tick(self, kwargs):
|
||||
t1 = self.time_is_between(self.datetime(), '07:00:00', '09:59:59') or self.time_is_between(self.datetime(), '17:00:00', '20:59:59')
|
||||
t2 = self.time_is_between(self.datetime(), '23:00:00', '06:59:00')
|
||||
t3 = self.time_is_between(self.datetime(), '10:00:00', '16:59:59') or self.time_is_between(self.datetime(), '21:00:00', '22:59:59')
|
||||
if t1:
|
||||
self.switch_to_tariff('t1')
|
||||
if t2:
|
||||
self.switch_to_tariff('t2')
|
||||
if t3:
|
||||
self.switch_to_tariff('t3')
|
||||
|
||||
def switch_to_tariff(self, tariff):
|
||||
self.log('switching to power tariff: {}'.format(tariff))
|
||||
self.call_service("select/select_option", entity_id='select.power_theory', option=tariff)
|
||||
|
||||
|
||||
def time_is_between(
|
||||
hass, target_dt: datetime, start_time: str,
|
||||
end_time: str) -> bool:
|
||||
"""Generalization of AppDaemon's now_is_between method."""
|
||||
start_time_dt = hass.parse_time(start_time) # type: datetime
|
||||
end_time_dt = hass.parse_time(end_time) # type: datetime
|
||||
start_dt = target_dt.replace(
|
||||
hour=start_time_dt.hour,
|
||||
minute=start_time_dt.minute,
|
||||
second=start_time_dt.second)
|
||||
end_dt = target_dt.replace(
|
||||
hour=end_time_dt.hour,
|
||||
minute=end_time_dt.minute,
|
||||
second=end_time_dt.second)
|
||||
|
||||
if end_dt < start_dt:
|
||||
# Spans midnight
|
||||
if target_dt < start_dt and target_dt < end_dt:
|
||||
target_dt = target_dt + timedelta(days=1)
|
||||
end_dt = end_dt + timedelta(days=1)
|
||||
return start_dt <= target_dt <= end_dt
|
||||
@@ -0,0 +1,6 @@
|
||||
power_theory:
|
||||
module: power_theory
|
||||
class: PowerTheory
|
||||
global_dependencies:
|
||||
- globals
|
||||
|
||||
Reference in New Issue
Block a user