Removed an obsolete sensor
This commit is contained in:
1 parent
0e64711c4f
commit
486956cd1f
2 files changed
+31
-32
No files matched your search
+30
-31
@@ -37,9 +37,8 @@ class AlarmClock(SmartObject):
|
|||||||
self.switch_alarmclock_secondary = self.args['switch_alarmclock_secondary']
|
self.switch_alarmclock_secondary = self.args['switch_alarmclock_secondary']
|
||||||
self.inputdate_alarmclock_main = self.args['inputdate_alarmclock_main']
|
self.inputdate_alarmclock_main = self.args['inputdate_alarmclock_main']
|
||||||
self.inputdate_alarmclock_secondary = self.args['inputdate_alarmclock_secondary']
|
self.inputdate_alarmclock_secondary = self.args['inputdate_alarmclock_secondary']
|
||||||
self.input_text_wakeup_time = self.args['input_text_wakeup_time']
|
|
||||||
self.output_workday_sensor = self.args['output_workday_sensor']
|
self.output_workday_sensor = self.args['output_workday_sensor']
|
||||||
#self.sensor_wakeup_datetime = self.args['sensor_wakeup_datetime']
|
self.sensor_wakeup_datetime_sensor = self.args['sensor_wakeup_datetime']
|
||||||
self.sleeping_condition = SmartCondition.Evaluator(self, self.args['sleeping_condition'], condition_name="sleeping_condition", constants=self.constants, templates_library=self.templates_library)
|
self.sleeping_condition = SmartCondition.Evaluator(self, self.args['sleeping_condition'], condition_name="sleeping_condition", constants=self.constants, templates_library=self.templates_library)
|
||||||
|
|
||||||
self.lock = Lock()
|
self.lock = Lock()
|
||||||
@@ -54,11 +53,8 @@ class AlarmClock(SmartObject):
|
|||||||
|
|
||||||
self.run_hourly(self.on_refresh_cal,datetime.time(0, 0, 0))
|
self.run_hourly(self.on_refresh_cal,datetime.time(0, 0, 0))
|
||||||
|
|
||||||
self.sensor_wakeup_datetime_entity = self.create_entity("sensor.wakeup_datetime", icon="mdi:alarm")
|
self.sensor_wakeup_datetime_entity = self.create_entity(self.sensor_wakeup_datetime_sensor, icon="mdi:alarm")
|
||||||
self.workday_entity = self.create_entity(self.output_workday_sensor, icon="mdi:briefcase-check")
|
self.workday_entity = self.create_entity(self.output_workday_sensor, icon="mdi:briefcase-check")
|
||||||
#sensor_wakeup_datetime_entity = self.get_entity(self.sensor_wakeup_datetime)
|
|
||||||
#if not sensor_wakeup_datetime_entity.exists():
|
|
||||||
# sensor_wakeup_datetime_entity.add()
|
|
||||||
|
|
||||||
self.calendar = list()
|
self.calendar = list()
|
||||||
self.refresh_cal()
|
self.refresh_cal()
|
||||||
@@ -67,12 +63,13 @@ class AlarmClock(SmartObject):
|
|||||||
self.update_wakeup_time()
|
self.update_wakeup_time()
|
||||||
|
|
||||||
def refresh_cal(self):
|
def refresh_cal(self):
|
||||||
|
with self.log_group("refresh_cal"):
|
||||||
new_cal = list()
|
new_cal = list()
|
||||||
#if self.load_cal_from_google_calendar(new_cal):
|
#if self.load_cal_from_google_calendar(new_cal):
|
||||||
if self.load_cal_from_ics(new_cal):
|
if self.load_cal_from_ics(new_cal):
|
||||||
if not self.are_cal_identical(self.calendar,new_cal):
|
if not self.are_cal_identical(self.calendar,new_cal):
|
||||||
self.calendar = new_cal
|
self.calendar = new_cal
|
||||||
self.log("Calendar has been updated!")
|
self.log_info("Calendar has been updated!")
|
||||||
self.print_cal(self.calendar)
|
self.print_cal(self.calendar)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@@ -89,20 +86,20 @@ class AlarmClock(SmartObject):
|
|||||||
|
|
||||||
def print_cal(self,calendar):
|
def print_cal(self,calendar):
|
||||||
for event in calendar:
|
for event in calendar:
|
||||||
self.log(f"{event}")
|
self.log_info(f"{event}")
|
||||||
|
|
||||||
def load_cal_from_ics(self,calendar):
|
def load_cal_from_ics(self,calendar):
|
||||||
calendar.clear()
|
calendar.clear()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.log(f"Retrieving calengar from outlook.office365.com")
|
self.log_info(f"Retrieving calengar from outlook.office365.com")
|
||||||
r = get("https://outlook.office365.com/owa/calendar/0c64359c70eb41cd9713fe92c470d3df@ubisoft.com/5edb3fb5150f4203b66d9cf8db3184be11626033572842691749/calendar.ics", timeout=10)#, headers=headers, verify=False)
|
r = get("https://outlook.office365.com/owa/calendar/0c64359c70eb41cd9713fe92c470d3df@ubisoft.com/5edb3fb5150f4203b66d9cf8db3184be11626033572842691749/calendar.ics", timeout=10)#, headers=headers, verify=False)
|
||||||
#self.log(f"Processing Calendar")
|
#self.log_info(f"Processing Calendar")
|
||||||
|
|
||||||
today = datetime.datetime.combine(datetime.date.today(), datetime.time(0,0, 0))
|
today = datetime.datetime.combine(datetime.date.today(), datetime.time(0,0, 0))
|
||||||
start_load_date = today - datetime.timedelta(days=1)
|
start_load_date = today - datetime.timedelta(days=1)
|
||||||
end_load_date = today + datetime.timedelta(days=2)
|
end_load_date = today + datetime.timedelta(days=2)
|
||||||
#self.log("[" + str(start_load_date) + "]-[" + str(end_load_date) + "]")
|
#self.log_info("[" + str(start_load_date) + "]-[" + str(end_load_date) + "]")
|
||||||
|
|
||||||
calendar_ubi = icalendar.Calendar.from_ical(r.text)
|
calendar_ubi = icalendar.Calendar.from_ical(r.text)
|
||||||
for component in calendar_ubi.walk():
|
for component in calendar_ubi.walk():
|
||||||
@@ -111,7 +108,7 @@ class AlarmClock(SmartObject):
|
|||||||
if event_summary == "Away" or event_summary == "Absent(e)": event_type = EventType.Vacation
|
if event_summary == "Away" or event_summary == "Absent(e)": event_type = EventType.Vacation
|
||||||
elif event_summary == "Busy" or event_summary == "Occupé(e)": event_type = EventType.Busy
|
elif event_summary == "Busy" or event_summary == "Occupé(e)": event_type = EventType.Busy
|
||||||
elif event_summary == "Tentative" or event_summary == "Provisoire": event_type = EventType.Tentative
|
elif event_summary == "Tentative" or event_summary == "Provisoire": event_type = EventType.Tentative
|
||||||
elif event_summary == "Working elsewhere" or event_summary == "Free": event_type = EventType.Flex
|
elif event_summary == "Working elsewhere" or event_summary == "Free" or event_summary == "Disponible": event_type = EventType.Flex
|
||||||
else: event_type = None
|
else: event_type = None
|
||||||
|
|
||||||
start_datetime = component.get('dtstart').dt
|
start_datetime = component.get('dtstart').dt
|
||||||
@@ -138,16 +135,16 @@ class AlarmClock(SmartObject):
|
|||||||
if not outside_of_loading_period:
|
if not outside_of_loading_period:
|
||||||
if event_type:
|
if event_type:
|
||||||
calendar.append(CalendarEvent(start_datetime,end_datetime,event_type))
|
calendar.append(CalendarEvent(start_datetime,end_datetime,event_type))
|
||||||
else: self.log(f"[Unknow event : {event_summary}]Start at {start_datetime},Finish at {end_datetime}",level = "WARNING")
|
else: self.log_warning(f"[Unknow event : {event_summary}]Start at {start_datetime},Finish at {end_datetime}")
|
||||||
|
|
||||||
except ValueError:
|
except ValueError:
|
||||||
self.log_error("Couldn't load calendar")
|
self.log_error("Couldn't load calendar")
|
||||||
return False
|
return False
|
||||||
except (requests.exceptions.ConnectionError,requests.exceptions.ReadTimeout):
|
except (requests.exceptions.ConnectionError,requests.exceptions.ReadTimeout):
|
||||||
self.log("Couldn't load calendar, request Timeout",level = "WARNING")
|
self.log_warning("Couldn't load calendar, request Timeout")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
#self.log(f"Calendar loaded")
|
#self.log_info(f"Calendar loaded")
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def on_alarm_clock_set(self, entity, attribute, old, new, kwargs):
|
def on_alarm_clock_set(self, entity, attribute, old, new, kwargs):
|
||||||
@@ -160,6 +157,7 @@ class AlarmClock(SmartObject):
|
|||||||
self.update_wakeup_time()
|
self.update_wakeup_time()
|
||||||
|
|
||||||
def update_workday_status(self):
|
def update_workday_status(self):
|
||||||
|
with self.log_group("update_workday_status"):
|
||||||
is_workday = self.is_wakeup_time_on_a_working_day(datetime.datetime.now())
|
is_workday = self.is_wakeup_time_on_a_working_day(datetime.datetime.now())
|
||||||
new_state = "on" if is_workday else "off"
|
new_state = "on" if is_workday else "off"
|
||||||
if self.workday_entity.get_state() != new_state:
|
if self.workday_entity.get_state() != new_state:
|
||||||
@@ -172,12 +170,12 @@ class AlarmClock(SmartObject):
|
|||||||
|
|
||||||
#le reveil principal se reactive chaque matin
|
#le reveil principal se reactive chaque matin
|
||||||
if self.get_state(self.switch_alarmclock_main) == 'off':
|
if self.get_state(self.switch_alarmclock_main) == 'off':
|
||||||
self.log("Turning on main alarm clock")
|
self.log_info("Turning on main alarm clock")
|
||||||
no_switch_changed = False
|
no_switch_changed = False
|
||||||
self.turn_on(self.switch_alarmclock_main)
|
self.turn_on(self.switch_alarmclock_main)
|
||||||
#le reveil secondaire ne sonne qu'une fois, il est donc desactivé chaque matin
|
#le reveil secondaire ne sonne qu'une fois, il est donc desactivé chaque matin
|
||||||
if self.get_state(self.switch_alarmclock_secondary) == 'on':
|
if self.get_state(self.switch_alarmclock_secondary) == 'on':
|
||||||
self.log("Turning off secondary alarm clock")
|
self.log_info("Turning off secondary alarm clock")
|
||||||
no_switch_changed = False
|
no_switch_changed = False
|
||||||
self.turn_off(self.switch_alarmclock_secondary)
|
self.turn_off(self.switch_alarmclock_secondary)
|
||||||
|
|
||||||
@@ -196,7 +194,7 @@ class AlarmClock(SmartObject):
|
|||||||
|
|
||||||
wakeup_message = "On se reveil dans " + str(wakeup_in) + " minutes"
|
wakeup_message = "On se reveil dans " + str(wakeup_in) + " minutes"
|
||||||
|
|
||||||
self.log(wakeup_message)
|
self.log_info(wakeup_message)
|
||||||
if self.sleeping_condition.evaluate() == SmartCondition.Result.Succeeded: self.fire_event("WAKEUP_IN", wakeup_in = wakeup_in)
|
if self.sleeping_condition.evaluate() == SmartCondition.Result.Succeeded: self.fire_event("WAKEUP_IN", wakeup_in = wakeup_in)
|
||||||
#self.call_service("notify/ios_iphone_de_pierre", title = "Reveil", message = wakeup_message)
|
#self.call_service("notify/ios_iphone_de_pierre", title = "Reveil", message = wakeup_message)
|
||||||
|
|
||||||
@@ -205,7 +203,7 @@ class AlarmClock(SmartObject):
|
|||||||
|
|
||||||
wakeup_message = "WAKE UP!!!! It's " + self.wakeup_time_str
|
wakeup_message = "WAKE UP!!!! It's " + self.wakeup_time_str
|
||||||
|
|
||||||
self.log(wakeup_message)
|
self.log_info(wakeup_message)
|
||||||
if self.sleeping_condition.evaluate() == SmartCondition.Result.Succeeded: self.fire_event("WAKEUP")
|
if self.sleeping_condition.evaluate() == SmartCondition.Result.Succeeded: self.fire_event("WAKEUP")
|
||||||
#self.call_service("notify/ios_iphone_de_pierre", title = "Reveil", message = wakeup_message)
|
#self.call_service("notify/ios_iphone_de_pierre", title = "Reveil", message = wakeup_message)
|
||||||
|
|
||||||
@@ -248,11 +246,11 @@ class AlarmClock(SmartObject):
|
|||||||
wake_up_datetime = busy_event.start_time - datetime.timedelta(minutes=30)
|
wake_up_datetime = busy_event.start_time - datetime.timedelta(minutes=30)
|
||||||
new_wake_up_time = wake_up_datetime.strftime("%H:%M")
|
new_wake_up_time = wake_up_datetime.strftime("%H:%M")
|
||||||
|
|
||||||
self.log(f"A meeting have been found at {busy_event.start_time}, we'll wake up at {new_wake_up_time}")
|
self.log_info(f"A meeting have been found at {busy_event.start_time}, we'll wake up at {new_wake_up_time}")
|
||||||
return new_wake_up_time
|
return new_wake_up_time
|
||||||
|
|
||||||
new_wake_up_time = wakeup_datetime.strftime("%H:%M")
|
new_wake_up_time = wakeup_datetime.strftime("%H:%M")
|
||||||
#self.log(f"No meeting have been found before {wake_up_time}, we'll wake up at {wake_up_time}")
|
#self.log_info(f"No meeting have been found before {wake_up_time}, we'll wake up at {wake_up_time}")
|
||||||
return new_wake_up_time
|
return new_wake_up_time
|
||||||
|
|
||||||
def calculate_wakeup_time(self):
|
def calculate_wakeup_time(self):
|
||||||
@@ -266,10 +264,10 @@ class AlarmClock(SmartObject):
|
|||||||
new_wakeup_time = self.get_state(self.inputdate_alarmclock_main)[0:5]
|
new_wakeup_time = self.get_state(self.inputdate_alarmclock_main)[0:5]
|
||||||
new_wakeup_datetime = self.generate_wakeup_datetime_from_string(new_wakeup_time)
|
new_wakeup_datetime = self.generate_wakeup_datetime_from_string(new_wakeup_time)
|
||||||
if not self.is_wakeup_time_on_a_working_day(new_wakeup_datetime):
|
if not self.is_wakeup_time_on_a_working_day(new_wakeup_datetime):
|
||||||
self.log(f"Primary Wake up time ({new_wakeup_datetime}) is not on a working day")
|
self.log_info(f"Primary Wake up time ({new_wakeup_datetime}) is not on a working day")
|
||||||
new_wakeup_time = "--:--"
|
new_wakeup_time = "--:--"
|
||||||
elif self.is_wakeup_time_on_a_flex_day(max_flex_wakeup_datetime):
|
elif self.is_wakeup_time_on_a_flex_day(max_flex_wakeup_datetime):
|
||||||
self.log(f"Flex Wake up time ({max_flex_wakeup_datetime}) is on a flex office day")
|
self.log_info(f"Flex Wake up time ({max_flex_wakeup_datetime}) is on a flex office day")
|
||||||
new_wakeup_time = self.offset_wakeup_time_for_meeting(max_flex_wakeup_datetime)
|
new_wakeup_time = self.offset_wakeup_time_for_meeting(max_flex_wakeup_datetime)
|
||||||
else:
|
else:
|
||||||
new_wakeup_time = self.offset_wakeup_time_for_meeting(new_wakeup_datetime)
|
new_wakeup_time = self.offset_wakeup_time_for_meeting(new_wakeup_datetime)
|
||||||
@@ -290,15 +288,15 @@ class AlarmClock(SmartObject):
|
|||||||
with self.lock:
|
with self.lock:
|
||||||
#first, cancel all previous callbacks
|
#first, cancel all previous callbacks
|
||||||
if self.handle_program_next_wakueup_cb:
|
if self.handle_program_next_wakueup_cb:
|
||||||
self.log("Canceling previous program next wakeup cb")
|
self.log_info("Canceling previous program next wakeup cb")
|
||||||
self.cancel_timer(self.handle_program_next_wakueup_cb)
|
self.cancel_timer(self.handle_program_next_wakueup_cb)
|
||||||
self.handle_program_next_wakueup_cb = None
|
self.handle_program_next_wakueup_cb = None
|
||||||
if self.handle_prewakueup_cb:
|
if self.handle_prewakueup_cb:
|
||||||
self.log("Canceling previous pre wakeup cb")
|
self.log_info("Canceling previous pre wakeup cb")
|
||||||
self.cancel_timer(self.handle_prewakueup_cb)
|
self.cancel_timer(self.handle_prewakueup_cb)
|
||||||
self.handle_prewakueup_cb = None
|
self.handle_prewakueup_cb = None
|
||||||
if self.handle_wakueup_cb:
|
if self.handle_wakueup_cb:
|
||||||
self.log("Canceling previous wakeup cb")
|
self.log_info("Canceling previous wakeup cb")
|
||||||
self.cancel_timer(self.handle_wakueup_cb)
|
self.cancel_timer(self.handle_wakueup_cb)
|
||||||
self.handle_wakueup_cb = None
|
self.handle_wakueup_cb = None
|
||||||
|
|
||||||
@@ -311,7 +309,7 @@ class AlarmClock(SmartObject):
|
|||||||
if datetime.datetime.now().hour >= 4:
|
if datetime.datetime.now().hour >= 4:
|
||||||
program_next_wakeup_time = program_next_wakeup_time + datetime.timedelta(days=1)
|
program_next_wakeup_time = program_next_wakeup_time + datetime.timedelta(days=1)
|
||||||
|
|
||||||
self.log("program next wakeup cb registered for " + str(program_next_wakeup_time))
|
self.log_info("program next wakeup cb registered for " + str(program_next_wakeup_time))
|
||||||
self.handle_program_next_wakueup_cb = self.run_at(self.on_program_next_wakeup, program_next_wakeup_time)
|
self.handle_program_next_wakueup_cb = self.run_at(self.on_program_next_wakeup, program_next_wakeup_time)
|
||||||
self.sensor_wakeup_datetime_entity.set_state(state = 'unavailable')
|
self.sensor_wakeup_datetime_entity.set_state(state = 'unavailable')
|
||||||
else:
|
else:
|
||||||
@@ -326,17 +324,18 @@ class AlarmClock(SmartObject):
|
|||||||
prewakeup_datetime = wakeup_datetime - datetime.timedelta(minutes=prewakeup_offset)
|
prewakeup_datetime = wakeup_datetime - datetime.timedelta(minutes=prewakeup_offset)
|
||||||
|
|
||||||
self.handle_prewakueup_cb = self.run_at(self.on_pre_wakeup, prewakeup_datetime,wakeup_in = prewakeup_offset)
|
self.handle_prewakueup_cb = self.run_at(self.on_pre_wakeup, prewakeup_datetime,wakeup_in = prewakeup_offset)
|
||||||
self.log("prewakup cb registered for " + str(prewakeup_datetime))
|
self.log_info("prewakup cb registered for " + str(prewakeup_datetime))
|
||||||
|
|
||||||
self.handle_wakueup_cb = self.run_at(self.on_wakeup, wakeup_datetime)
|
self.handle_wakueup_cb = self.run_at(self.on_wakeup, wakeup_datetime)
|
||||||
self.log("wakeup cb registered for " + str(wakeup_datetime))
|
self.log_info("wakeup cb registered for " + str(wakeup_datetime))
|
||||||
|
|
||||||
self.handle_program_next_wakueup_cb = self.run_at(self.on_program_next_wakeup, program_next_wakeup_datetime)
|
self.handle_program_next_wakueup_cb = self.run_at(self.on_program_next_wakeup, program_next_wakeup_datetime)
|
||||||
self.log("program next wakeup cb registered for " + str(program_next_wakeup_datetime))
|
self.log_info("program next wakeup cb registered for " + str(program_next_wakeup_datetime))
|
||||||
|
|
||||||
self.wakeup_time_str = wakeup_time_str
|
self.wakeup_time_str = wakeup_time_str
|
||||||
self.call_service("input_text/set_value", entity_id = self.input_text_wakeup_time, value = self.wakeup_time_str)
|
#self.call_service("input_text/set_value", entity_id = self.input_text_wakeup_time, value = self.wakeup_time_str)
|
||||||
|
|
||||||
|
|
||||||
def update_wakeup_time(self):
|
def update_wakeup_time(self):
|
||||||
|
with self.log_group("update_wakeup_time"):
|
||||||
self.register_callbacks(self.calculate_wakeup_time())
|
self.register_callbacks(self.calculate_wakeup_time())
|
||||||
@@ -181,7 +181,7 @@ alarm_clock:
|
|||||||
switch_alarmclock_secondary: input_boolean.secondary_alarmclock
|
switch_alarmclock_secondary: input_boolean.secondary_alarmclock
|
||||||
inputdate_alarmclock_main: input_datetime.main_alarmclock
|
inputdate_alarmclock_main: input_datetime.main_alarmclock
|
||||||
inputdate_alarmclock_secondary: input_datetime.secondary_alarmclock
|
inputdate_alarmclock_secondary: input_datetime.secondary_alarmclock
|
||||||
input_text_wakeup_time: input_text.wakeup_time
|
sensor_wakeup_datetime: sensor.wakeup_datetime
|
||||||
output_workday_sensor: binary_sensor.pierre_workday
|
output_workday_sensor: binary_sensor.pierre_workday
|
||||||
|
|
||||||
sleeping_condition: binary_sensor.is_bedroom_sleeping
|
sleeping_condition: binary_sensor.is_bedroom_sleeping
|
||||||
Reference in new issue
Block a user