def get_system_state(): mode = settings.get_mode() if mode == MODE_OFF: return dict(mode=MODE_OFF, time=current_time_s(), sensors=[]) last_update = storage.get_last_update() if not last_update: last_update = dict(sensors=[]) last_update['time'] = current_time_s() last_update['mode'] = settings.get_mode() last_update['state'] = __state(last_update['sensors']) return last_update
def on_new_update(new_update): new_update['time'] = current_time_s() last_update = storage.get_last_update() if settings.get_mode() == MODE_GUARD and last_update: new_update['sensors'] = utils.merge_sensors(new_update['sensors'], last_update['sensors']) storage.save_last_update(new_update) if not last_update: return result, sensors = Comparator().compare(last_update, new_update) if result != Comparator.RESULT_EQUALS: system_state = get_system_state() notifier.notify(result, system_state) saved_rows = storage.add_to_log(system_state) if saved_rows == 0: raise OperationalError else: log.d('No changes since last update')