예제 #1
0
 def test_frame_from_raw(self):
     """Test parse FrameGetVersionConfirmation from raw."""
     frame = frame_from_raw(self.EXAMPLE_FRAME)
     self.assertTrue(isinstance(frame, FrameGetVersionConfirmation))
     self.assertEqual(frame.software_version, "1.2.3.4.5.6")
     self.assertEqual(frame.hardware_version, 23)
     self.assertEqual(frame.product, "KLF 200")
예제 #2
0
 def test_frame2_from_raw(self):
     """Test parse EXAMPLE_FRAME2 from raw."""
     slip = bytearray.fromhex(self.EXAMPLE_FRAME2.replace(':', ''))
     raw, _ = get_next_slip(slip)
     frame = frame_from_raw(bytes(raw))
     self.assertTrue(isinstance(frame, FrameGetNodeInformationNotification))
     self.assertEqual(frame.node_id, 4)
     self.assertEqual(frame.order, 4)
     self.assertEqual(frame.placement, 4)
     self.assertEqual(frame.name, 'Fenster Büro')
     self.assertEqual(frame.velocity, Velocity.DEFAULT)
     self.assertEqual(frame.node_type,
                      NodeTypeWithSubtype.WINDOW_OPENER_WITH_RAIN_SENSOR)
     self.assertEqual(frame.product_group, 213)
     self.assertEqual(frame.product_type, 7)
     self.assertEqual(frame.node_variation, NodeVariation.NOT_SET)
     self.assertEqual(frame.power_mode, 1)
     self.assertEqual(frame.build_number, 30)
     self.assertEqual(frame.serial_number, '53:36:27:26:10:2f:00:81')
     self.assertEqual(frame.state, 5)
     self.assertEqual(str(Position(frame.current_position)), '100 %')
     self.assertEqual(str(Position(frame.target)), '100 %')
     self.assertEqual(str(Position(frame.current_position_fp1)), '0 %')
     self.assertEqual(str(Position(frame.current_position_fp2)), 'UNKNOWN')
     self.assertEqual(str(Position(frame.current_position_fp3)), 'UNKNOWN')
     self.assertEqual(str(Position(frame.current_position_fp4)), 'UNKNOWN')
     self.assertEqual(frame.remaining_time, 0)
     self.assertEqual(frame.timestamp, 1326315944)
     test_ts = datetime.fromtimestamp(1326315944).strftime(
         '%Y-%m-%d %H:%M:%S')
     self.assertEqual(frame.timestamp_formatted, test_ts)
     self.assertEqual(str(frame.alias_array), 'd802=6400, d803=ba00')
     # Crosscheck, Serializing:
     self.assertEqual(bytes(frame), raw)
 def test_frame_from_raw(self):
     """Test parse FrameGetNodeInformationNotification from raw."""
     frame = frame_from_raw(self.EXAMPLE_FRAME)
     self.assertTrue(isinstance(frame, FrameGetNodeInformationNotification))
     self.assertEqual(frame.node_id, 23)
     self.assertEqual(frame.order, 1234)
     self.assertEqual(frame.placement, 2)
     self.assertEqual(frame.name, "Fnord23")
     self.assertEqual(frame.velocity, Velocity.SILENT)
     self.assertEqual(frame.node_type,
                      NodeTypeWithSubtype.INTERIOR_VENETIAN_BLIND)
     self.assertEqual(frame.product_group, 23)
     self.assertEqual(frame.product_type, 13)
     self.assertEqual(frame.node_variation, NodeVariation.TOPHUNG)
     self.assertEqual(frame.power_mode, 1)
     self.assertEqual(frame.build_number, 7)
     self.assertEqual(frame.serial_number, '01:02:03:04:05:06:06:08')
     self.assertEqual(frame.state, 1)
     self.assertEqual(Position(frame.current_position).position, 12)
     self.assertEqual(Position(frame.target).position, 123)
     self.assertEqual(Position(frame.current_position_fp1).position, 1234)
     self.assertEqual(Position(frame.current_position_fp2).position, 2345)
     self.assertEqual(Position(frame.current_position_fp3).position, 3456)
     self.assertEqual(Position(frame.current_position_fp4).position, 4567)
     self.assertEqual(frame.remaining_time, 1)
     self.assertEqual(frame.timestamp, 50528771)
     self.assertEqual(
         str(frame.alias_array),
         '3031=3233, 3435=3637, 3839=3031, 3233=3435, 3637=3839')
 def test_str(self):
     """Test string representation of FrameNodeInformationChangedNotification."""
     frame = frame_from_raw(self.EXAMPLE_FRAME)
     self.assertEqual(
         str(frame),
         '<FrameNodeInformationChangedNotification node_id=23 name="Fnord23" '
         'order=1234 placement=2 node_variation="NodeVariation.TOPHUNG"/>')
예제 #5
0
 def test_frame_from_raw(self):
     """Test parse FrameGetStateConfirmation from raw."""
     frame = frame_from_raw(self.EXAMPLE_FRAME)
     self.assertTrue(isinstance(frame, FrameGetStateConfirmation))
     self.assertEqual(frame.gateway_state,
                      GatewayState.BEACON_MODE_NOT_CONFIGURED)
     self.assertEqual(frame.gateway_sub_state,
                      GatewaySubState.PERFORMING_TASK_COMMAND)
 def test_frame_from_raw(self):
     """Test parse FrameActivateSceneConfirmation from raw."""
     frame = frame_from_raw(b'\x00\x06\x04\x13\x02\x03\xe8\xf8')
     self.assertTrue(isinstance(frame, FrameActivateSceneConfirmation))
     self.assertEqual(
         frame.status,
         ActivateSceneConfirmationStatus.ERROR_REQUEST_REJECTED)
     self.assertEqual(frame.session_id, 1000)
 def test_frame_from_raw(self):
     """Test parsing FramePasswordEnterRequest from raw bytes."""
     frame = frame_from_raw(
         b'\x00#0\x00fnord\x00\x00\x00\x00\x00' +
         b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' +
         b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00b')
     self.assertTrue(isinstance(frame, FramePasswordEnterRequest))
     self.assertEqual(frame.password, 'fnord')
 def test_frame_from_raw(self):
     """Test parse FrameCommandRemainingTimeNotification from raw."""
     frame = frame_from_raw(b'\x00\t\x03\x03\x03\xe8\x17*\x059\xe3')
     self.assertTrue(
         isinstance(frame, FrameCommandRemainingTimeNotification))
     self.assertEqual(frame.session_id, 1000)
     self.assertEqual(frame.index_id, 23)
     self.assertEqual(frame.node_parameter, 42)
     self.assertEqual(frame.seconds, 1337)
 def test_frame_from_raw(self):
     """Test parse FrameCommandRunStatusNotification from raw."""
     frame = frame_from_raw(self.EXAMPLE_FRAME)
     self.assertTrue(isinstance(frame, FrameCommandRunStatusNotification))
     self.assertEqual(frame.session_id, 1000)
     self.assertEqual(frame.status_id, 7)
     self.assertEqual(frame.index_id, 23)
     self.assertEqual(frame.node_parameter, 42)
     self.assertEqual(frame.parameter_value, 1337)
예제 #10
0
 def test_frame_from_raw(self):
     """Test parse FrameActivateSceneRequest from raw."""
     frame = frame_from_raw(self.EXAMPLE_FRAME)
     self.assertTrue(isinstance(frame, FrameActivateSceneRequest))
     self.assertEqual(frame.scene_id, 4)
     self.assertEqual(frame.session_id, 1000)
     self.assertEqual(frame.originator, Originator.RAIN)
     self.assertEqual(frame.priority, Priority.USER_LEVEL_2)
     self.assertEqual(frame.velocity, Velocity.SILENT)
 def test_frame_from_raw(self):
     """Test parse FrameNodeInformationChangedNotification from raw."""
     frame = frame_from_raw(self.EXAMPLE_FRAME)
     self.assertTrue(
         isinstance(frame, FrameNodeInformationChangedNotification))
     self.assertEqual(frame.node_id, 23)
     self.assertEqual(frame.order, 1234)
     self.assertEqual(frame.placement, 2)
     self.assertEqual(frame.node_variation, NodeVariation.TOPHUNG)
     self.assertEqual(frame.name, "Fnord23")
예제 #12
0
 def test_frame_from_raw(self):
     """Test parse FrameDiscoverNodesNotification from raw."""
     frame = frame_from_raw(
         b'\x00\x86\x01\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
         + b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
         + b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
         + b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
         + b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
         + b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
         + b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
         + b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
         + b'\x00\x00\x00\x00\x00\x00\x00\x82')
     self.assertTrue(isinstance(frame, FrameDiscoverNodesNotification))
 def test_str(self):
     """Test string representation of FrameGetNodeInformationNotification."""
     frame = frame_from_raw(self.EXAMPLE_FRAME)
     test_ts = datetime.fromtimestamp(50528771).strftime(
         '%Y-%m-%d %H:%M:%S')
     self.assertEqual(
         str(frame),
         '<FrameGetNodeInformationNotification node_id=23 order=1234 placement=2 '
         'name=\'Fnord23\' velocity=Velocity.SILENT node_type=\'NodeTypeWithSubtype.INTERIOR_VENETIAN_BLIND\' '
         'product_group=23 product_type=13 node_variation=NodeVariation.TOPHUNG '
         'power_mode=1 build_number=7 serial_number=\'01:02:03:04:05:06:06:08\' state=1 '
         'current_position=\'0x000C\' target=\'0x007B\' current_position_fp1=\'0x04D2\' '
         'current_position_fp2=\'0x0929\' current_position_fp3=\'0x0D80\' current_position_fp4=\'0x11D7\' '
         'remaining_time=1 time=\'{}\' '
         'alias_array=\'3031=3233, 3435=3637, 3839=3031, 3233=3435, 3637=3839\'/>'
         .format(test_ts))
 def test_frame_from_raw(self):
     """Test parse FrameGetProtocolVersionRequest from raw."""
     frame = frame_from_raw(self.EXAMPLE_FRAME)
     self.assertTrue(isinstance(frame, FrameGetProtocolVersionRequest))
예제 #15
0
 def test_frame_from_raw(self):
     """Test parse FrameActivationLogUpdatedNotification from raw."""
     frame = frame_from_raw(self.EXAMPLE_FRAME)
     self.assertTrue(
         isinstance(frame, FrameActivationLogUpdatedNotification))
예제 #16
0
 def test_frame_from_raw(self):
     """Test parse FrameCommandSendConfirmation from raw."""
     frame = frame_from_raw(b'\x00\x06\x03\x01\x03\xe8\x00\xef')
     self.assertTrue(isinstance(frame, FrameCommandSendConfirmation))
     self.assertEqual(frame.status, CommandSendConfirmationStatus.REJECTED)
     self.assertEqual(frame.session_id, 1000)
예제 #17
0
 def test_frame_from_raw(self):
     """Test parse FrameErrorNotification from raw."""
     frame = frame_from_raw(b'\x00\x04\x00\x00\x02\x06')
     self.assertTrue(isinstance(frame, FrameErrorNotification))
     self.assertEqual(frame.error_type, ErrorType.ErrorOnFrameStructure)
예제 #18
0
 def test_frame_from_raw(self):
     """Test parse FrameSetNodeNameConfirmation from raw."""
     frame = frame_from_raw(self.EXAMPLE_FRAME)
     self.assertTrue(isinstance(frame, FrameSetNodeNameConfirmation))
     self.assertEqual(frame.status, SetNodeNameConfirmationStatus.OK)
     self.assertEqual(frame.node_id, 23)
예제 #19
0
 def test_frame_from_raw(self):
     """Test parse FrameGetAllNodesInformationConfirmation from raw."""
     frame = frame_from_raw(b'\x00\x05\x02\x03\x00\x17\x13')
     self.assertTrue(
         isinstance(frame, FrameGetAllNodesInformationConfirmation))
     self.assertEqual(frame.number_of_nodes, 23)
 def test_frame_from_raw(self):
     """Test parse FrameSessionFinishedNotification from raw."""
     frame = frame_from_raw(b'\x00\x05\x03\x04\x03\xe8\xe9')
     self.assertTrue(isinstance(frame, FrameSessionFinishedNotification))
     self.assertEqual(frame.session_id, 1000)
 def test_frame_from_raw(self):
     """Test parse FrameHouseStatusMonitorDisableRequest from raw."""
     frame = frame_from_raw(self.EXAMPLE_FRAME)
     self.assertTrue(
         isinstance(frame, FrameHouseStatusMonitorDisableRequest))
예제 #22
0
 def test_frame_from_raw(self):
     """Test parse FrameSetUTCConfirmation from raw."""
     frame = frame_from_raw(self.EXAMPLE_FRAME)
     self.assertTrue(isinstance(frame, FrameSetUTCConfirmation))
 def test_frame_from_raw(self):
     """Test parse FrameDiscoverNodesConfirmation from raw."""
     frame = frame_from_raw(b'\x00\x03\x01\x04\x06')
     self.assertTrue(isinstance(frame, FrameDiscoverNodesConfirmation))
예제 #24
0
 def test_frame_from_raw(self):
     """Test parse FrameSetUTCRequest from raw."""
     frame = frame_from_raw(self.EXAMPLE_FRAME)
     self.assertTrue(isinstance(frame, FrameSetUTCRequest))
     self.assertEqual(frame.timestamp, self.EXAMPLE_TS)
예제 #25
0
 def test_frame_from_raw(self):
     """Test parse FrameGetNodeInformationConfirmation from raw."""
     frame = frame_from_raw(b'\x00\x05\x02\x01\x00\x17\x11')
     self.assertTrue(isinstance(frame, FrameGetNodeInformationConfirmation))
     self.assertEqual(frame.node_id, 23)
 def test_frame_from_raw(self):
     """Test parse FrameGetAllNodesInformationRequest from raw."""
     frame = frame_from_raw(b'\x00\x03\x02\x02\x03')
     self.assertTrue(isinstance(frame, FrameGetAllNodesInformationRequest))
예제 #27
0
 def test_frame_from_raw(self):
     """Test parse FramePasswordEnterConfirmation from raw."""
     frame = frame_from_raw(b'\x00\x040\x01\x014')
     self.assertTrue(isinstance(frame, FramePasswordEnterConfirmation))
     self.assertEqual(frame.status, PasswordEnterConfirmationStatus.FAILED)
예제 #28
0
 def test_frame_from_raw(self):
     """Test parse FrameHouseStatusMonitorEnableConfirmation from raw."""
     frame = frame_from_raw(self.EXAMPLE_FRAME)
     self.assertTrue(
         isinstance(frame, FrameHouseStatusMonitorEnableConfirmation))
 def test_frame_from_raw(self):
     """Test parse FrameGetSceneListRequest from raw."""
     frame = frame_from_raw(b'\x00\x03\x04\x0c\x0b')
     self.assertTrue(isinstance(frame, FrameGetSceneListRequest))
예제 #30
0
 def test_frame_from_raw(self):
     """Test parse FrameSetNodeNameRequest from raw."""
     frame = frame_from_raw(self.EXAMPLE_FRAME)
     self.assertTrue(isinstance(frame, FrameSetNodeNameRequest))
     self.assertEqual(frame.node_id, 4)
     self.assertEqual(frame.name, "Fnord")