def update(self): self.data = self.controller.data['devices']['cameras'][self.element_id] if self.data['is_streaming']: self.setDriver('ST', 1) else: self.setDriver('ST', 0) if self.data['is_online']: self.setDriver('GV0', 1) else: self.setDriver('GV0', 0) if 'last_event' in self.data: ts_start = zulu_2_ts(self.data['last_event']['start_time']) ts_now = datetime.datetime.utcnow() ts_delta = ts_now - ts_start minutes = round(ts_delta.total_seconds() / 60) self.setDriver('GV4', minutes) if 'end_time' in self.data['last_event']: ts_end = zulu_2_ts(self.data['last_event']['end_time']) if ts_start > ts_end or minutes < 2: ''' In the middle of a new event or within a minute ''' self._setEventDetails() else: ''' Event is over ''' self._clearEventDetails() else: ''' No end_time means it's a first event and it's on going, set the drivers ''' self._setEventDetails() else: self.setDriver('GV4', 0) self._clearEventDetails()
def _checkRushHour(self): if 'rhr_enrollment' in self.data: if self.data['rhr_enrollment']: if 'peak_period_start_time' in self.data and 'peak_period_end_time' in self.data: ts_end = zulu_2_ts(self.data['peak_period_end_time']) ts_start = zulu_2_ts(self.data['peak_period_start_time']) ts_now = datetime.datetime.utcnow() if ts_start <= ts_now <= ts_end: return True return False
def update(self): self.data = self.controller.data['devices']['smoke_co_alarms'][ self.element_id] self.setDriver('GV1', cosmost2num(self.data['smoke_alarm_state'])) self.setDriver('GV2', cosmost2num(self.data['co_alarm_state'])) if self.data['battery_health'] == 'ok': self.setDriver('GV0', 13) else: self.setDriver('GV0', 11) if self.data['ui_color_state'] == 'gray': self.setDriver('ST', 1) elif self.data['ui_color_state'] == 'green': self.setDriver('ST', 2) elif self.data['ui_color_state'] == 'yellow': self.setDriver('ST', 3) elif self.data['ui_color_state'] == 'red': self.setDriver('ST', 4) else: LOGGER.error('{} unknown UI Color state!'.format(self.name)) if self.data['is_manual_test_active']: self.setDriver('GV3', 1) else: self.setDriver('GV3', 0) if 'last_manual_test_time' in self.data: ts_mtest = zulu_2_ts(self.data['last_manual_test_time']) ts_now = datetime.datetime.utcnow() ts_delta = ts_now - ts_mtest self.setDriver('GV4', ts_delta.days) else: self.setDriver('GV4', -1)