Exemple #1
0
 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
Exemple #2
0
 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)
Exemple #3
0
 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
Exemple #4
0
 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)
Exemple #5
0
 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)
Exemple #7
0
 def load_cooling_pump_group(self, pump_group_id):
     # type: (int) -> PumpGroupDTO
     return PumpGroupDTO(0)