def test_extract_release(self): packet = PickleTools.unpickle_packet(PACKET_RELEASE) device = _MockDevice() extracted = EnoceanTools.extract_packet_props(packet, device._eep) action = RockerAction(press=RockerPress.RELEASE) expected = RockerSwitchTools.create_props(action) self.assertEqual(extracted, expected)
def process_enocean_message(self, message: EnoceanMessage): packet = message.payload # type: RadioPacket if packet.packet_type != PACKET.RADIO: self._logger.debug("skipped packet with packet_type=%s", EnoceanTools.packet_type_to_string(packet.rorg)) return if packet.rorg != self._eep.rorg: self._logger.debug("skipped packet with rorg=%s", hex(packet.rorg)) return data = EnoceanTools.extract_packet_props(packet, self._eep) self._logger.debug("proceed_enocean - got: %s", data) notification = self.extract_notification(data) if notification.channel != self._actor_channel: self._logger.debug("skip channel (%s, awaiting=%s)", notification.channel, self._actor_channel) return if notification.switch_state == SwitchStatus.ERROR and self._logger.isEnabledFor( logging.DEBUG): # write ascii representation to reproduce in tests self._logger.debug( "process_enocean_message - pickled error packet:\n%s", PickleTools.pickle_packet(packet)) message = self._create_json_message(notification.switch_state, None) self._publish_mqtt(message)
def process_enocean_message(self, message: EnoceanMessage): packet = message.payload # type: RadioPacket if packet.packet_type != PACKET.RADIO: self._logger.debug("skipped packet with packet_type=%s", EnoceanTools.packet_type_to_string(packet.rorg)) return if packet.rorg != self._eep.rorg: self._logger.debug("skipped packet with rorg=%s", hex(packet.rorg)) return self._reset_offline_refresh_timer() data = EnoceanTools.extract_packet_props(packet, self._eep) self._logger.debug("proceed_enocean - got: %s", data) try: value = self.extract_handle_state(data.get("WIN")) except DeviceException as ex: self._logger.exception(ex) value = HandleValue.ERROR if value == HandleValue.ERROR and self._logger.isEnabledFor( logging.DEBUG): # write ascii representation to reproduce in tests self._logger.debug("proceed_enocean - pickled error packet:\n%s", PickleTools.pickle_packet(packet)) since = self._determine_and_store_since(value) message = self._create_message(value, since) self._publish_mqtt(message)
def test_extract_1_off(self): packet = PickleTools.unpickle_packet(_PACKET_1_OFF) device = _MockDevice() data = EnoceanTools.extract_packet_props(packet, _MockDevice.DEFAULT_EEP) notification = device.extract_notification(data) self.assertEqual(notification.channel, 1) self.assertEqual(notification.switch_state, SwitchStatus.OFF)
def test_extract_press(self): loop_data = [ (PACKET_0_PRESS, RockerButton.ROCK0), (PACKET_1_PRESS, RockerButton.ROCK1), (PACKET_2_PRESS, RockerButton.ROCK2), (PACKET_3_PRESS, RockerButton.ROCK3), ] for i in range(0, 3): packet = PickleTools.unpickle_packet(loop_data[i][0]) device = _MockDevice() extracted = EnoceanTools.extract_packet_props(packet, device._eep) action = RockerAction(press=RockerPress.PRESS_SHORT, button=loop_data[i][1]) expected = RockerSwitchTools.create_props(action) self.assertEqual(extracted, expected)
def test_open(self): packet = PickleTools.unpickle(PACKET_WIN_OPEN) comp = {'WIN': 2, 'T21': 1, 'NU': 0} data = EnoceanTools.extract_packet_props(packet, self.eep) self.assertEqual(data, comp)