Example #1
0
    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()
Example #2
0
 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
Example #3
0
    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)