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)
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)
def publish(self, group_address, payload): logging.debug("Try to publish payload {0} for group address {1}".format(payload, group_address)) telegram = Telegram(direction=TelegramDirection.OUTGOING) telegram.group_address = group_address telegram.telegramtype = TelegramType.GROUP_WRITE telegram.payload = payload logging.debug(telegram) if self._xknx.started: # loop = asyncio.new_event_loop() # asyncio.set_event_loop(loop) # loop.run_until_complete(self._xknx.telegrams.put(telegram)) asyncio.run(self._xknx.telegrams.put(telegram)) # loop.run_until_complete(self._xknx.telegram_queue.process_telegram_outgoing(telegram)) # asyncio.run(self._xknx.telegram_queue.process_telegram_outgoing(telegram)) logging.info("Sent") else: logging.info("XKNX not started")
def telegram(self): telegram = Telegram() telegram.payload = self.payload telegram.group_address = self.dst_addr def resolve_telegram_type(cmd): if cmd == APCICommand.GROUP_WRITE: return TelegramType.GROUP_WRITE elif cmd == APCICommand.GROUP_READ: return TelegramType.GROUP_READ elif cmd == APCICommand.GROUP_RESPONSE: return TelegramType.GROUP_RESPONSE else: raise ConversionException("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
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
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
def test_process_percent(self): """Test reading percent expose sensor from bus.""" xknx = XKNX(loop=self.loop) expose_sensor = ExposeSensor(xknx, 'TestSensor', value_type='percent', group_address='1/2/3') expose_sensor.sensor_value.payload = DPTArray((0x40, )) 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((0x40, ))))
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))))