示例#1
0
 def check_active(l_light, expected):
     if expected:
         self.assertTrue(l_light.active)
         l_light.send_task(SystemTask(TaskName.GET_SYSTEM_INFO))
         self.assertTrue(
             light.recv_task_resp().value['system_info']['active'])
     else:
         self.assertFalse(l_light.active)
         l_light.send_task(SystemTask(TaskName.GET_SYSTEM_INFO))
         self.assertFalse(
             light.recv_task_resp().value['system_info']['active'])
示例#2
0
    def test_main_7(self):
        # Create System
        self.system = System('MyNewSystem')

        # Put Space on the System
        self.system.put_space(
            dimension=(40, 30, 12),
            resolution=1,
            space_factor_types=[i for i in SpaceFactor.SpaceFactor])

        # Put Entity on the Space
        power_supply = PowerSupply(uuid=uuid.uuid4())
        light_switch1 = Switch(uuid=uuid.uuid4())
        wire_ls1 = PowerWire(power_supply, light_switch1)
        light1 = Light(uuid=uuid.uuid4())
        wire_l1 = PowerWire(light_switch1, light1)

        self.system.put_entity(power_supply, (19, 14, 9))
        self.system.put_entity(light_switch1, (19, 14, 9))
        self.system.put_entity(light1, (9, 14, 9))

        power_supply.send_task(SystemTask(TaskName.ACTIVE))
        light_switch1.send_task(SystemTask(TaskName.ACTIVE))
        light1.send_task(SystemTask(TaskName.ACTIVE))

        light1.send_task(
            SystemTask(TaskName.ACTUATE,
                       value={
                           'space': self.system.space,
                           'location': self.system.entities[2][1],
                           'orientation': self.system.entities[2][1]
                       }))
        res = light1.recv_task_resp()

        luminosity = npx.char.mod(
            'hsl(%d,%d%,%d%)', (res.value[SpaceFactor.SpaceFactor.LUMINOSITY][
                SpaceFactor.Luminosity.HUE],
                                res.value[SpaceFactor.SpaceFactor.LUMINOSITY][
                                    SpaceFactor.Luminosity.SATURATION],
                                res.value[SpaceFactor.SpaceFactor.LUMINOSITY][
                                    SpaceFactor.Luminosity.BRIGHTNESS]))

        Plotter.plot_scatter_3d(
            array3d=luminosity,
            zero_value=-1,
            filename=os.path.join(
                test_settings.actual_path,
                self._testMethodName + '_luminosity_plot.html'),
            auto_open=True,
            opacity=0.6)

        light1.destroy()
示例#3
0
    def test_recv_task_resp(self):
        # ProgramTask
        self.power_supply.send_task(ProgramTask(name=TaskName.END))
        self.assertEqual(
            self.power_supply.recv_task_resp(),
            TaskResponse(status=Status.ERROR,
                         value={'error': 'Not Implemented'}))

        # SystemTask
        self.power_supply.send_task(SystemTask(name=TaskName.ACTIVE))
        self.assertEqual(self.power_supply.recv_task_resp(),
                         TaskResponse(status=Status.OK, value=None))

        # EntityTask
        self.power_supply.send_task(Task(name=TaskName.GET_INFO))
        self.assertEqual(
            self.power_supply.recv_task_resp(),
            TaskResponse(status=Status.OK,
                         value={
                             'info': {
                                 'uuid': str(self.power_supply.uuid),
                                 'identifier':
                                 type(self.power_supply).identifier,
                                 'type': {
                                     'actuator': ['POWER'],
                                     'sensor': [],
                                     'accessor': []
                                 },
                             }
                         }))
示例#4
0
    def test_send_task(self):
        # ProgramTask
        self.power_supply.send_task(ProgramTask(name=TaskName.END))

        # SystemTask
        self.power_supply.send_task(SystemTask(name=TaskName.ACTIVE))

        # EntityTask
        self.power_supply.send_task(Task(name=TaskName.GET_INFO))
示例#5
0
文件: Powered.py 项目: ys-warble/Mesh
 def set_power(self, power=ElectricPower(voltage=0)):
     self.power = power
     if self.parent.has_function(Function.TASKED):
         self.parent.send_task(
             SystemTask(name=TaskName.SET_POWER, value={'power': power}))
     else:
         if self.power in self.parent.get_function(
                 Function.POWERED).input_power_ratings:
             self.parent.active = True
         else:
             self.parent.active = False
示例#6
0
    def test_recv_task_resp(self):
        self.assertRaises(
            FunctionUnsupportedError, lambda: self.light.send_task(
                SystemTask(name=TaskName.SET_POWER,
                           value={'power': ElectricPower(110)})))
        self.assertRaises(FunctionUnsupportedError,
                          lambda: self.light.recv_task_resp())

        # SystemTask
        self.assertRaises(
            FunctionUnsupportedError,
            lambda: self.light.send_task(SystemTask(name=TaskName.ACTIVE)))
        self.assertRaises(FunctionUnsupportedError,
                          lambda: self.light.recv_task_resp())

        # EntityTask
        self.assertRaises(
            FunctionUnsupportedError,
            lambda: self.light.send_task(Task(name=TaskName.GET_INFO)))
        self.assertRaises(FunctionUnsupportedError,
                          lambda: self.light.recv_task_resp())
示例#7
0
    def test_recv_task_resp(self):
        self.light.send_task(
            SystemTask(name=TaskName.SET_POWER,
                       value={'power': ElectricPower(110)}))
        self.assertEqual(TaskResponse(Status.OK), self.light.recv_task_resp())

        self.light.send_task(SystemTask(name=TaskName.ACTIVE))
        self.assertEqual(TaskResponse(Status.OK), self.light.recv_task_resp())

        self.light.send_task(Task(name=TaskName.GET_INFO))
        self.assertEqual(
            TaskResponse(status=Status.OK,
                         value={
                             'info': {
                                 'uuid': str(self.light.uuid),
                                 'identifier': type(self.light).identifier,
                                 'type': {
                                     'actuator': ['POWER'],
                                     'sensor': [],
                                     'accessor': []
                                 },
                             }
                         }), self.light.recv_task_resp())
示例#8
0
    def test_send_task(self):
        # SystemTask
        self.assertRaises(
            FunctionUnsupportedError,
            lambda: self.light.send_task(SystemTask(name=TaskName.ACTIVE)))

        # EntityTask
        self.assertRaises(
            FunctionUnsupportedError,
            lambda: self.light.send_task(Task(name=TaskName.GET_INFO)))

        # ProgramTask
        self.assertRaises(
            FunctionUnsupportedError,
            lambda: self.light.send_task(ProgramTask(name=TaskName.END)))
示例#9
0
    def test_input_power_autodeactivate(self):
        def check_active(l_light, expected):
            if expected:
                self.assertTrue(l_light.active)
                l_light.send_task(SystemTask(TaskName.GET_SYSTEM_INFO))
                self.assertTrue(
                    light.recv_task_resp().value['system_info']['active'])
            else:
                self.assertFalse(l_light.active)
                l_light.send_task(SystemTask(TaskName.GET_SYSTEM_INFO))
                self.assertFalse(
                    light.recv_task_resp().value['system_info']['active'])

        light = Light(uuid=uuid.uuid4(),
                      selected_functions=(Function.POWERED, Function.TASKED))
        check_active(light, False)

        light.send_task(SystemTask(TaskName.ACTIVE))
        light.recv_task_resp()
        check_active(light, False)

        light.send_task(
            SystemTask(TaskName.SET_POWER, value={'power':
                                                  ElectricPower(110)}))
        light.send_task(SystemTask(TaskName.ACTIVE))
        light.recv_task_resp()
        check_active(light, True)

        light.send_task(
            SystemTask(TaskName.SET_POWER, value={'power': ElectricPower(0)}))
        check_active(light, False)
        light.send_task(SystemTask(TaskName.ACTIVE))
        light.recv_task_resp()
        check_active(light, False)

        light.send_task(
            SystemTask(TaskName.SET_POWER, value={'power':
                                                  ElectricPower(220)}))
        check_active(light, False)
        light.send_task(SystemTask(TaskName.ACTIVE))
        light.recv_task_resp()
        check_active(light, False)
示例#10
0
    def test_send_task(self):
        # SystemTask
        self.light.send_task(SystemTask(name=TaskName.ACTIVE))

        # EntityTask
        self.light.send_task(Task(name=TaskName.GET_INFO))
示例#11
0
    def test_active_deactivate(self):
        self.light.send_task(
            SystemTask(name=TaskName.SET_POWER,
                       value={'power': ElectricPower(110)}))
        self.assertEqual(self.light.recv_task_resp(),
                         TaskResponse(status=Status.OK, value=None))

        self.light.send_task(SystemTask(name=TaskName.DEACTIVATE))
        self.assertEqual(self.light.recv_task_resp(),
                         TaskResponse(status=Status.OK, value=None))

        self.light.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertFalse(
            self.light.recv_task_resp().value['system_info']['active'])

        self.light.send_task(SystemTask(name=TaskName.ACTIVE))
        self.assertEqual(self.light.recv_task_resp(),
                         TaskResponse(status=Status.OK, value=None))

        self.light.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertTrue(
            self.light.recv_task_resp().value['system_info']['active'])

        self.light.send_task(SystemTask(name=TaskName.DEACTIVATE))
        self.assertEqual(self.light.recv_task_resp(),
                         TaskResponse(status=Status.OK, value=None))
        self.light.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertFalse(
            self.light.recv_task_resp().value['system_info']['active'])

        self.light.send_task(Task(name=TaskName.GET_INFO))
        self.assertEqual(
            self.light.recv_task_resp(),
            TaskResponse(status=Status.OK,
                         value={
                             'info': {
                                 'uuid': str(self.light.uuid),
                                 'identifier': type(self.light).identifier,
                                 'type': {
                                     'actuator': ['POWER'],
                                     'sensor': [],
                                     'accessor': []
                                 },
                             }
                         }))

        self.light.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertFalse(
            self.light.recv_task_resp().value['system_info']['active'])

        self.light.send_task(SystemTask(name=TaskName.DEACTIVATE))
        self.assertEqual(self.light.recv_task_resp(),
                         TaskResponse(status=Status.OK, value=None))

        self.light.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertFalse(
            self.light.recv_task_resp().value['system_info']['active'])

        self.light.send_task(SystemTask(name=TaskName.ACTIVE))
        self.assertEqual(self.light.recv_task_resp(),
                         TaskResponse(status=Status.OK, value=None))

        self.light.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertTrue(
            self.light.recv_task_resp().value['system_info']['active'])

        self.light.send_task(Task(name=TaskName.GET_INFO))
        self.assertEqual(
            self.light.recv_task_resp(),
            TaskResponse(status=Status.OK,
                         value={
                             'info': {
                                 'uuid': str(self.light.uuid),
                                 'identifier': type(self.light).identifier,
                                 'type': {
                                     'actuator': ['POWER'],
                                     'sensor': [],
                                     'accessor': []
                                 },
                             }
                         }))
示例#12
0
    def test_main_6(self):
        # Create System
        self.system = System('MyNewSystem')

        # Put Space on the System
        self.system.put_space(
            dimension=(40, 30, 12),
            resolution=1,
            space_factor_types=[i for i in SpaceFactor.SpaceFactor])

        # Put Entity on the Space
        power_supply = PowerSupply(uuid=uuid.uuid4())
        light_switch1 = Switch(uuid=uuid.uuid4())
        wire_ls1 = PowerWire(power_supply, light_switch1)
        light1 = Light(uuid=uuid.uuid4(),
                       selected_functions=(Function.POWERED, ))
        wire_l1 = PowerWire(light_switch1, light1)

        light_switch2 = Switch(uuid=uuid.uuid4())
        wire_ls2 = PowerWire(power_supply, light_switch2)
        light2 = Light(uuid=uuid.uuid4(),
                       selected_functions=(Function.POWERED, ))
        wire_l2 = PowerWire(light_switch2, light2)

        power_supply.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertFalse(
            power_supply.recv_task_resp().value['system_info']['active'])
        light_switch1.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertFalse(
            light_switch1.recv_task_resp().value['system_info']['active'])
        self.assertFalse(light1.active)
        light_switch2.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertFalse(
            light_switch2.recv_task_resp().value['system_info']['active'])
        self.assertFalse(light2.active)

        # Turn On PowerSupply
        power_supply.send_task(SystemTask(name=TaskName.ACTIVE))
        self.assertEqual(TaskResponse(status=Status.OK, value=None),
                         power_supply.recv_task_resp())

        power_supply.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertTrue(
            power_supply.recv_task_resp().value['system_info']['active'])
        light_switch1.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertFalse(
            light_switch1.recv_task_resp().value['system_info']['active'])
        self.assertFalse(light1.active)
        light_switch2.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertFalse(
            light_switch2.recv_task_resp().value['system_info']['active'])
        self.assertFalse(light2.active)

        # Turn On Switch
        light_switch1.send_task(SystemTask(name=TaskName.ACTIVE))
        self.assertEqual(TaskResponse(status=Status.OK, value=None),
                         light_switch1.recv_task_resp())

        power_supply.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertTrue(
            power_supply.recv_task_resp().value['system_info']['active'])
        light_switch1.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertTrue(
            light_switch1.recv_task_resp().value['system_info']['active'])
        self.assertTrue(light1.active)
        light_switch2.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertFalse(
            light_switch2.recv_task_resp().value['system_info']['active'])
        self.assertFalse(light2.active)

        light_switch2.send_task(SystemTask(name=TaskName.ACTIVE))
        self.assertEqual(TaskResponse(status=Status.OK, value=None),
                         light_switch2.recv_task_resp())

        power_supply.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertTrue(
            power_supply.recv_task_resp().value['system_info']['active'])
        light_switch1.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertTrue(
            light_switch1.recv_task_resp().value['system_info']['active'])
        self.assertTrue(light1.active)
        light_switch2.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertTrue(
            light_switch2.recv_task_resp().value['system_info']['active'])
        self.assertTrue(light2.active)

        # Turn Off Switch
        light_switch1.send_task(SystemTask(name=TaskName.DEACTIVATE))
        self.assertEqual(TaskResponse(status=Status.OK, value=None),
                         light_switch1.recv_task_resp())

        power_supply.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertTrue(
            power_supply.recv_task_resp().value['system_info']['active'])
        light_switch1.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertFalse(
            light_switch1.recv_task_resp().value['system_info']['active'])
        self.assertFalse(light1.active)
        light_switch2.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertTrue(
            light_switch2.recv_task_resp().value['system_info']['active'])
        self.assertTrue(light2.active)

        light_switch2.send_task(SystemTask(name=TaskName.DEACTIVATE))
        self.assertEqual(TaskResponse(status=Status.OK, value=None),
                         light_switch2.recv_task_resp())

        power_supply.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertTrue(
            power_supply.recv_task_resp().value['system_info']['active'])
        light_switch1.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertFalse(
            light_switch1.recv_task_resp().value['system_info']['active'])
        self.assertFalse(light1.active)
        light_switch2.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertFalse(
            light_switch2.recv_task_resp().value['system_info']['active'])
        self.assertFalse(light2.active)

        power_supply.destroy()
        light_switch1.destroy()
        light_switch2.destroy()
        light1.destroy()
        light2.destroy()
示例#13
0
文件: main.py 项目: ys-warble/Mesh
                row['selected_functions'] = [Function[s] for s in row['selected_functions']]
            entity = ef.get_entity(**{x: row[x] for x in row if x not in ['location']})
            _system.put_entity(entity, row['location'])

    # channels
    if 'channels' in content:
        cf = ChannelFactory()
        for row in content['channels']:
            kwargs = {x: row[x] for x in row if x not in ['channel']}
            kwargs['_from'] = _system.get_entity(kwargs['_from'])
            kwargs['_to'] = _system.get_entity(kwargs['_to'])
            cf.get_channel(row['channel'], **kwargs)

    return _system


if __name__ == '__main__':
    system = load_system_file('../resources/examples/example_1/system.json')

    print(system)

    system.get_entity(0).send_task(SystemTask(TaskName.ACTIVE))
    system.get_entity(1).send_task(SystemTask(TaskName.ACTIVE))
    system.get_entity(2).send_task(SystemTask(TaskName.ACTIVE))

    system.get_entity(2).send_task(SystemTask(TaskName.GET_SYSTEM_INFO))
    tr = system.get_entity(2).recv_task_resp()
    print(tr)

    system.destroy()