Exemple #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)
Exemple #2
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)
Exemple #3
0
	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")
Exemple #4
0
    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
Exemple #5
0
    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
Exemple #6
0
    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
Exemple #7
0
    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, ))))
Exemple #8
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))))