def to_dict(self): def do(session): system_settings = system.get_current_system_settings(session) return dict(name=self.name(), cool_temp=system_settings.cool_temp, heat_temp=system_settings.heat_temp) return db.sessionize(do)
def get_state(self, current_temp): def do(session): system_settings = system.get_current_system_settings(session) return self._get_state(current_temp, system_settings.cool_temp, system_settings.heat_temp) return db.sessionize(do)
def get_current_temp(): def do(session): temp_agg = 0 temp_cnt = 0 room_models = db.get_rooms(session) LOG.debug(room_models) for room_model in room_models: LOG.debug(room_model) if not room_model.active: continue room_temp = None measurement_agg = 0 measurement_cnt = 0 if room_model.sensors: for sensor_model in room_model.sensors: LOG.debug(sensor_model) measurement = db.get_most_recent_sensor_temperature( session, sensor_id=sensor_model.id, order_desc=True, order_by=models.Measurement.recorded_date) delta_min = CONF.temp.max_measurement_age_threshold_min if measurement and measurement.recorded_date > datetime.utcnow( ) - timedelta(minutes=delta_min): measurement_agg = measurement.data measurement_cnt = measurement_cnt + 1 if measurement_cnt > 0 and measurement_agg > 0: room_temp = measurement_agg / measurement_cnt if room_temp: temp_agg = temp_agg + (room_temp * room_model.weight) temp_cnt = temp_cnt + room_model.weight if not temp_cnt and not temp_agg: LOG.warn( 'No temperature data available. Either no data exists, or the data that exists is too old.' ) return None return temp_agg / temp_cnt return db.sessionize(do)
def get_system_mode(): def do(session): system_settings = system.get_current_system_settings(session) mode = system_settings.system_mode if mode.name == AutoMode.name(): return AutoMode(mode.id, system_settings.current_program) if mode.name == ManualMode.name(): return ManualMode(mode.id) if mode.name != OffMode.name(): LOG.error('System set to unknown mode \'%s\'. Defaulting to Off', mode.name) return OffMode(mode.id) return db.sessionize(do)
def to_dict(self): def do(session): system_settings = system.get_current_system_settings(session) program = system_settings.current_program program_data = None if program: program_data = dict(name=program.name) schedule, next_schedule = utils.get_active_and_next_schedule(program) schedule_data = self._build_schedule_dict(schedule) next_schedule_data = self._build_schedule_dict(next_schedule) program_data['active_schedule'] = schedule_data program_data['next_schedule'] = next_schedule_data return dict(name=self.name(), program=program_data) return db.sessionize(do)
def get_current_temp(): def do(session): temp_agg = 0 temp_cnt = 0 room_models = db.get_rooms(session) LOG.debug(room_models) for room_model in room_models: LOG.debug(room_model) if not room_model.active: continue room_temp = None measurement_agg = 0 measurement_cnt = 0 if room_model.sensors: for sensor_model in room_model.sensors: LOG.debug(sensor_model) measurement = db.get_most_recent_sensor_temperature( session, sensor_id=sensor_model.id, order_desc=True, order_by=models.Measurement.recorded_date ) delta_min = CONF.temp.max_measurement_age_threshold_min if measurement and measurement.recorded_date > datetime.utcnow() - timedelta(minutes=delta_min): measurement_agg = measurement.data measurement_cnt = measurement_cnt + 1 if measurement_cnt > 0 and measurement_agg > 0: room_temp = measurement_agg / measurement_cnt if room_temp: temp_agg = temp_agg + (room_temp * room_model.weight) temp_cnt = temp_cnt + room_model.weight if not temp_cnt and not temp_agg: LOG.warn("No temperature data available. Either no data exists, or the data that exists is too old.") return None return temp_agg / temp_cnt return db.sessionize(do)
def to_dict(self): def do(session): system_settings = system.get_current_system_settings(session) program = system_settings.current_program program_data = None if program: program_data = dict(name=program.name) schedule, next_schedule = utils.get_active_and_next_schedule( program) schedule_data = self._build_schedule_dict(schedule) next_schedule_data = self._build_schedule_dict(next_schedule) program_data['active_schedule'] = schedule_data program_data['next_schedule'] = next_schedule_data return dict(name=self.name(), program=program_data) return db.sessionize(do)
def get_state(self, current_temp): def do(session): system_settings = system.get_current_system_settings(session) program = system_settings.current_program self._set_program_name(program) if not program: LOG.warn('No program set for system.') return states.OFF elif not program.schedules: LOG.warn('No schedules found for program \'%s\'. Setting system to Off', program.name) return states.OFF schedule = utils.get_active_schedule(program) if not schedule: LOG.error('Could not determine the ') return self._get_state(current_temp, schedule.cool_temp, schedule.heat_temp) return db.sessionize(do)
def get_state(self, current_temp): def do(session): system_settings = system.get_current_system_settings(session) program = system_settings.current_program self._set_program_name(program) if not program: LOG.warn('No program set for system.') return states.OFF elif not program.schedules: LOG.warn( 'No schedules found for program \'%s\'. Setting system to Off', program.name) return states.OFF schedule = utils.get_active_schedule(program) if not schedule: LOG.error('Could not determine the ') return self._get_state(current_temp, schedule.cool_temp, schedule.heat_temp) return db.sessionize(do)