def deserialize(api_data): # type: (Dict) -> PumpGroupDTO pump_group_dto = PumpGroupDTO(id=0) SerializerToolbox.deserialize( dto=pump_group_dto, # Referenced api_data=api_data, mapping={ 'output': ('pump_output_id', PumpGroupSerializer.BYTE_MAX), 'rooom': ('room_id', PumpGroupSerializer.BYTE_MAX) }) if 'outputs' in api_data: pump_group_dto.valve_output_ids = [ int(output_id) for output_id in api_data['outputs'].split(',') ] return pump_group_dto
def orm_to_dto(orm_object): # type: (EepromModel) -> PumpGroupDTO data = orm_object.serialize() kwargs = {'pump_output_id': Toolbox.nonify(data['output'], PumpGroupMapper.BYTE_MAX), 'valve_output_ids': ([int(output_id) for output_id in data['outputs'].split(',')] if data['outputs'] != '' else []), 'room_id': Toolbox.nonify(data['room'], PumpGroupMapper.BYTE_MAX)} return PumpGroupDTO(id=data['id'], **kwargs)
def deserialize( api_data): # type: (Dict) -> Tuple[PumpGroupDTO, List[str]] loaded_fields = [] pump_group_dto = PumpGroupDTO(id=0) loaded_fields += SerializerToolbox.deserialize( dto=pump_group_dto, # Referenced api_data=api_data, mapping={ 'output': ('pump_output_id', PumpGroupSerializer.BYTE_MAX), 'rooom': ('room_id', PumpGroupSerializer.BYTE_MAX) }) if 'outputs' in api_data: loaded_fields.append('valve_output_ids') pump_group_dto.valve_output_ids = [ int(output_id) for output_id in api_data['outputs'].split(',') ] return pump_group_dto, loaded_fields
def load_cooling_pump_group(self, pump_group_id): # type: (int) -> PumpGroupDTO pump = Pump.get(number=pump_group_id) return PumpGroupDTO(id=pump_group_id, pump_output_id=pump.output.number, valve_output_ids=[ valve.output.number for valve in pump.cooling_valves ], room_id=None)
def load_cooling_pump_groups(self): # type: () -> List[PumpGroupDTO] pump_groups = [] for pump in Pump.select(): pump_groups.append( PumpGroupDTO(id=pump.id, pump_output_id=pump.output.number, valve_output_ids=[ valve.output.number for valve in pump.cooling_valves ], room_id=None)) return pump_groups
def test_save_pumpgroups(self): thermostat = Thermostat.create(number=1, name='thermostat 1', sensor=Sensor.create(number=10), pid_heating_p=200, pid_heating_i=100, pid_heating_d=50, pid_cooling_p=200, pid_cooling_i=100, pid_cooling_d=50, automatic=True, room=None, start=0, valve_config='equal', thermostat_group=self._thermostat_group) valve_1_output = Output.create(number=1) valve_1 = Valve.create(number=1, name='valve 1', output=valve_1_output) valve_2_output = Output.create(number=2) valve_2 = Valve.create(number=2, name='valve 2', output=valve_2_output) valve_3_output = Output.create(number=3) valve_3 = Valve.create(number=3, name='valve 3', output=valve_3_output) ValveToThermostat.create(thermostat=thermostat, valve=valve_1, mode=ThermostatGroup.Modes.HEATING, priority=0) ValveToThermostat.create(thermostat=thermostat, valve=valve_2, mode=ThermostatGroup.Modes.COOLING, priority=0) ValveToThermostat.create(thermostat=thermostat, valve=valve_3, mode=ThermostatGroup.Modes.HEATING, priority=0) Preset.create(type=Preset.Types.SCHEDULE, heating_setpoint=20.0, cooling_setpoint=25.0, active=True, thermostat=thermostat) pump_output = Output.create(number=4) pump = Pump.create(name='pump 1', output=pump_output) heating_pump_groups = self._thermostat_controller.load_heating_pump_groups() self.assertEqual([PumpGroupDTO(id=pump.id, pump_output_id=pump_output.id, valve_output_ids=[], room_id=None)], heating_pump_groups) PumpToValve.create(pump=pump, valve=valve_1) PumpToValve.create(pump=pump, valve=valve_2) pump_groups = self._thermostat_controller.load_heating_pump_groups() self.assertEqual([PumpGroupDTO(id=pump.id, pump_output_id=pump_output.id, valve_output_ids=[valve_1_output.id], room_id=None)], pump_groups) pump_groups = self._thermostat_controller.load_cooling_pump_groups() self.assertEqual([PumpGroupDTO(id=pump.id, pump_output_id=pump_output.id, valve_output_ids=[valve_2_output.id], room_id=None)], pump_groups) self._thermostat_controller._save_pump_groups(ThermostatGroup.Modes.HEATING, [(PumpGroupDTO(id=pump.id, pump_output_id=pump_output.id, valve_output_ids=[valve_1_output.id, valve_3_output.id]), ['pump_output_id', 'valve_output_ids'])]) pump_groups = self._thermostat_controller.load_heating_pump_groups() self.assertEqual([PumpGroupDTO(id=pump.id, pump_output_id=pump_output.id, valve_output_ids=[valve_1_output.id, valve_3_output.id], room_id=None)], pump_groups) pump_groups = self._thermostat_controller.load_cooling_pump_groups() self.assertEqual([PumpGroupDTO(id=pump.id, pump_output_id=pump_output.id, valve_output_ids=[valve_2_output.id], room_id=None)], pump_groups)
def load_cooling_pump_group(self, pump_group_id): # type: (int) -> PumpGroupDTO return PumpGroupDTO(0)