예제 #1
0
 async def send(self, response=False):
     """Send payload as telegram to KNX bus."""
     telegram = Telegram()
     telegram.group_address = self.group_address
     telegram.telegramtype = TelegramType.GROUP_RESPONSE \
         if response else TelegramType.GROUP_WRITE
     telegram.payload = self.payload
     await self.xknx.telegrams.put(telegram)
예제 #2
0
 async def send(self, response=False):
     """Send payload as telegram to KNX bus."""
     telegram = Telegram()
     # always use the first group address to send
     telegram.group_address = self.group_address[0]
     telegram.telegramtype = (
         TelegramType.GROUP_RESPONSE if response else TelegramType.GROUP_WRITE
     )
     telegram.payload = self.payload
     # print("telegram", telegram)
     await self.xknx.telegrams.put(telegram)
예제 #3
0
    def test_process_temperature(self):
        """Test reading temperature expose sensor from bus."""
        xknx = XKNX(loop=self.loop)
        expose_sensor = ExposeSensor(xknx,
                                     'TestSensor',
                                     value_type='temperature',
                                     group_address='1/2/3')
        expose_sensor.sensor_value.payload = DPTArray((0x0c, 0x1a))

        telegram = Telegram(GroupAddress('1/2/3'))
        telegram.telegramtype = TelegramType.GROUP_READ
        self.loop.run_until_complete(
            asyncio.Task(expose_sensor.process(telegram)))
        self.assertEqual(xknx.telegrams.qsize(), 1)
        telegram = xknx.telegrams.get_nowait()
        self.assertEqual(
            telegram,
            Telegram(GroupAddress('1/2/3'),
                     TelegramType.GROUP_RESPONSE,
                     payload=DPTArray((0x0c, 0x1a))))
예제 #4
0
파일: cemi_frame.py 프로젝트: vosc/xknx
    def telegram(self):
        """Return telegram."""
        telegram = Telegram()
        telegram.payload = self.payload
        telegram.group_address = self.dst_addr

        def resolve_telegram_type(cmd):
            """Return telegram type from APCI Command."""
            if cmd == APCICommand.GROUP_WRITE:
                return TelegramType.GROUP_WRITE
            if cmd == APCICommand.GROUP_READ:
                return TelegramType.GROUP_READ
            if cmd == APCICommand.GROUP_RESPONSE:
                return TelegramType.GROUP_RESPONSE
            raise ConversionError("Telegram not implemented for {0}".format(self.cmd))

        telegram.telegramtype = resolve_telegram_type(self.cmd)

        # TODO: Set telegram.direction [additional flag within KNXIP]
        return telegram
예제 #5
0
    def test_process_temperature(self):
        """Test reading temperature expose sensor from bus."""
        xknx = XKNX()
        expose_sensor = ExposeSensor(xknx,
                                     "TestSensor",
                                     value_type="temperature",
                                     group_address="1/2/3")
        expose_sensor.sensor_value.payload = DPTArray((0x0C, 0x1A))

        telegram = Telegram(GroupAddress("1/2/3"))
        telegram.telegramtype = TelegramType.GROUP_READ
        self.loop.run_until_complete(expose_sensor.process(telegram))
        self.assertEqual(xknx.telegrams.qsize(), 1)
        telegram = xknx.telegrams.get_nowait()
        self.assertEqual(
            telegram,
            Telegram(
                GroupAddress("1/2/3"),
                TelegramType.GROUP_RESPONSE,
                payload=DPTArray((0x0C, 0x1A)),
            ),
        )