Exemple #1
0
    def test_add(self):
        accessories = Accessories()
        accessory = Mock()

        self.assertEqual(accessories.accessory_count, 1)
        accessories.add(accessory)
        self.assertEqual(accessory.accessory_id, 2)
        self.assertEqual(accessories.accessories[2], accessory)
        self.assertEqual(accessories.accessory_count, 2)
Exemple #2
0
def main():
    logging.basicConfig(level=logging.INFO)

    lightbulb1 = Accessory(name='Acme LED Light Bulb',
                           model='LEDBulb1,1',
                           manufacturer='Acme')

    lightbulb1_lightbulb = LightbulbService()
    lightbulb1_lightbulb.add_characteristic(On(True, bulb_on))
    lightbulb1_lightbulb.add_characteristic(Brightness(50, bulb_brightness))
    lightbulb1.add_service(lightbulb1_lightbulb)

    accessories = Accessories()
    accessories.add(lightbulb1)

    config = JsonConfig(IP_ADDRESS)
    start(config, accessories)
Exemple #3
0
    def test_write_characteristic(self):
        accessory = Accessory(name='PyHAP',
                              model='PyHAP1,1',
                              manufacturer='PyHAP',
                              hardware_revision='0')
        service = LightbulbService()

        bool_characteristic = On(False)
        int_characteristic = Brightness(8)
        float_characteristic = Hue(5.0)

        service.add_characteristic(bool_characteristic)
        service.add_characteristic(int_characteristic)
        service.add_characteristic(float_characteristic)

        accessories = Accessories()
        accessory.add_service(service)
        accessories.add(accessory)

        # bool characteristic
        callback = AsyncMock()
        bool_characteristic.callback = callback

        self.assertEqual(bool_characteristic.value, False)
        result = asyncio.get_event_loop().run_until_complete(
            accessories.write_characteristic([{
                'aid': 2,
                'iid': 10,
                'value': True
            }]))
        callback.assert_called_once_with(True)
        self.assertEqual(result, [])
        self.assertEqual(bool_characteristic.value, True)

        # int characteristic write
        callback = AsyncMock()
        int_characteristic.callback = callback

        self.assertEqual(int_characteristic.value, 8)
        result = asyncio.get_event_loop().run_until_complete(
            accessories.write_characteristic([{
                'aid': 2,
                'iid': 11,
                'value': 12
            }]))
        callback.assert_called_once_with(12)
        self.assertEqual(result, [])
        self.assertEqual(int_characteristic.value, 12)

        # float characteristic write
        callback = AsyncMock()
        float_characteristic.callback = callback

        self.assertEqual(float_characteristic.value, 5.0)
        result = asyncio.get_event_loop().run_until_complete(
            accessories.write_characteristic([{
                'aid': 2,
                'iid': 12,
                'value': 7.0
            }]))
        callback.assert_called_once_with(7.0)
        self.assertEqual(result, [])
        self.assertEqual(float_characteristic.value, 7.0)

        # None value during write, leave previous value
        previous_value = bool_characteristic.value
        result = asyncio.get_event_loop().run_until_complete(
            accessories.write_characteristic([{
                'aid': 2,
                'iid': 10
            }]))
        self.assertEqual(result, [])
        self.assertEqual(bool_characteristic.value, previous_value)
        bool_characteristic.value = previous_value

        # None callback
        bool_characteristic.callback = None
        result = asyncio.get_event_loop().run_until_complete(
            accessories.write_characteristic([{
                'aid': 2,
                'iid': 10,
                'value': True
            }]))
        self.assertEqual(result, [])

        # Exception in callback
        bool_characteristic.callback = exception_callback
        result = asyncio.get_event_loop().run_until_complete(
            accessories.write_characteristic([{
                'aid': 2,
                'iid': 10,
                'value': True
            }]))
        self.assertEqual(result, [{
            'aid': 2,
            'iid': 10,
            'status': -70402,
        }])