コード例 #1
0
    def test_frame_from_raw(self):
        """Test parse FrameGetLimitationStatusConfirmation from raw."""
        frame = frame_from_raw(b'\x00\x06\x03\x13\x00\x01\x01\x16')
        self.assertTrue(isinstance(frame,
                                   FrameGetLimitationStatusConfirmation))
        self.assertEqual(frame.session_id, 1)
        self.assertEqual(frame.data, 1)

        frame = frame_from_raw(b'\x00\x06\x03\x13\x00\x02\x00\x14')
        self.assertTrue(isinstance(frame,
                                   FrameGetLimitationStatusConfirmation))
        self.assertEqual(frame.session_id, 2)
        self.assertEqual(frame.data, 0)
コード例 #2
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")
コード例 #3
0
 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",
     )
コード例 #4
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)
コード例 #5
0
 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"/>',
     )
コード例 #6
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)
コード例 #7
0
 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")
コード例 #8
0
 def test_frame_from_raw(self):
     """Test parsing FramePasswordChangeNotification from raw bytes."""
     frame = frame_from_raw(
         b"\x00#0\x04fnord\x00\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\x00f", )
     self.assertTrue(isinstance(frame, FramePasswordChangeNotification))
     self.assertEqual(frame.newpassword, "fnord")
コード例 #9
0
 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)
コード例 #10
0
 def test_frame_from_raw(self):
     """Test parse FrameCommandSendRequest from raw."""
     frame = frame_from_raw(self.EXAMPLE_FRAME)
     self.assertTrue(isinstance(frame, FrameCommandSendRequest))
     self.assertEqual(frame.node_ids, [1, 2, 3])
     self.assertEqual(Position(frame.parameter).position_percent, 75)
     self.assertEqual(frame.session_id, 1000)
     self.assertEqual(frame.originator, Originator.RAIN)
コード例 #11
0
 def test_frame_from_raw(self):
     """Test parse FrameGetNetworkSetupConfirmation from raw."""
     frame = frame_from_raw(self.TESTFRAME)
     self.assertTrue(isinstance(frame, FrameGetNetworkSetupConfirmation))
     self.assertEqual(frame.ipaddress, '192.168.13.227')
     self.assertEqual(frame.netmask, '255.255.255.0')
     self.assertEqual(frame.gateway, '192.168.13.1')
     self.assertEqual(frame.dhcp, DHCPParameter.DISABLE)
コード例 #12
0
 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)
コード例 #13
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)
コード例 #14
0
 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)
コード例 #15
0
 def test_frame_from_raw(self):
     """Test parse FrameGetSceneListNotification from raw."""
     frame = frame_from_raw(self.EXAMPLE_FRAME1)
     self.assertTrue(isinstance(frame, FrameGetSceneListNotification))
     self.assertEqual(
         frame.scenes,
         [(0, "All Windows Closed"), (1, "Sleeping Wide Open"),
          (2, "Bath Open")],
     )
     self.assertEqual(frame.remaining_scenes, 3)
コード例 #16
0
 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")
コード例 #17
0
 def test_frame_from_raw(self):
     """Test parsing FramePasswordChangeRequest from raw bytes."""
     frame = frame_from_raw(
         b"\x00C0\x02fnord\x00\x00\x00\x00\x00\x00\x00\x00" +
         b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" +
         b"\x00\x00\x00\x00\x00\x00\x00bfeld\x00\x00\x00\x00" +
         b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" +
         b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00i")
     self.assertTrue(isinstance(frame, FramePasswordChangeRequest))
     self.assertEqual(frame.newpassword, "bfeld")
     self.assertEqual(frame.currentpassword, "fnord")
コード例 #18
0
 def test_frame_from_raw(self):
     """Test parse FrameGetLimitationStatusNotification from raw."""
     frame = frame_from_raw(
         b'\x00\r\x03\x14\x00\x01\x01\x00\xba4\xf7\xff\x01\x00\x9d')
     self.assertTrue(isinstance(frame,
                                FrameGetLimitationStatusNotification))
     self.assertEqual(frame.limit_originator, Originator.USER)
     self.assertEqual(frame.node_id, 1)
     self.assertEqual(frame.parameter_id, 0)
     self.assertEqual(frame.session_id, 1)
     self.assertEqual(frame.max_value, b'\xf7')
     self.assertEqual(frame.min_value, b'\xba')
     self.assertEqual(frame.limit_time, 0)
コード例 #19
0
 def test_str(self):
     """Test string representation of FrameNodeStatePositionChangedNotification."""
     frame = frame_from_raw(self.EXAMPLE_FRAME)
     test_ts = datetime.fromtimestamp(1288634368).strftime(
         "%Y-%m-%d %H:%M:%S")
     self.assertEqual(
         str(frame),
         '<FrameNodeStatePositionChangedNotification node_id="5" state="5" '
         'current_position="0xC800" target="0xC800" current_position_fp1="0xF7FF" '
         'current_position_fp2="0xF7FF" current_position_fp3="0xF7FF" '
         'current_position_fp4="0xF7FF" remaining_time="0" time="{}"/>'.
         format(test_ts),
     )
コード例 #20
0
 def test_frame_from_raw(self):
     """Test parse FrameNodeStatePositionChangedNotification from raw."""
     frame = frame_from_raw(self.EXAMPLE_FRAME)
     self.assertTrue(
         isinstance(frame, FrameNodeStatePositionChangedNotification))
     self.assertEqual(frame.node_id, 5)
     self.assertEqual(frame.state, 5)
     self.assertEqual(Position(frame.current_position).position, 51200)
     self.assertEqual(Position(frame.target).position, 51200)
     self.assertEqual(Position(frame.current_position_fp1).position, 63487)
     self.assertEqual(Position(frame.current_position_fp2).position, 63487)
     self.assertEqual(Position(frame.current_position_fp3).position, 63487)
     self.assertEqual(Position(frame.current_position_fp4).position, 63487)
     self.assertEqual(frame.remaining_time, 0)
     self.assertEqual(frame.timestamp, 1288634368)
コード例 #21
0
 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),
     )
コード例 #22
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))
コード例 #23
0
 def test_frame_from_raw(self):
     """Test parse FrameGetStateRequest from raw."""
     frame = frame_from_raw(self.EXAMPLE_FRAME)
     self.assertTrue(isinstance(frame, FrameGetStateRequest))
コード例 #24
0
 def test_frame_from_raw(self):
     """Test parse FrameGatewayRebootConfirmation from raw."""
     frame = frame_from_raw(self.EXAMPLE_FRAME)
     self.assertTrue(isinstance(frame, FrameGatewayRebootConfirmation))
コード例 #25
0
 def test_frame_from_raw_one_scene(self):
     """Test parse FrameGetSceneListNotification from raw with one scene."""
     frame = frame_from_raw(self.EXAMPLE_FRAME2)
     self.assertTrue(isinstance(frame, FrameGetSceneListNotification))
     self.assertEqual(frame.scenes, [(0, "One Scene")])
     self.assertEqual(frame.remaining_scenes, 0)
 def test_frame_from_raw(self):
     """Test parse FrameGetAllNodesInformationFinishedNotification from raw."""
     frame = frame_from_raw(b"\x00\x03\x02\x05\x04")
     self.assertTrue(
         isinstance(frame, FrameGetAllNodesInformationFinishedNotification))
コード例 #27
0
 def test_frame_from_raw(self):
     """Test parse FrameGetSceneListConfirmation from raw."""
     frame = frame_from_raw(b"\x00\x04\x04\r\x0c\x01")
     self.assertTrue(isinstance(frame, FrameGetSceneListConfirmation))
     self.assertEqual(frame.count_scenes, 12)
コード例 #28
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)
コード例 #29
0
 def test_frame_from_raw(self):
     """Test parse FrameDiscoverNodesRequest from raw."""
     frame = frame_from_raw(b"\x00\x04\x01\x03\x06\x00")
     self.assertTrue(isinstance(frame, FrameDiscoverNodesRequest))
     self.assertEqual(frame.node_type, NodeType.LIGHT)
コード例 #30
0
 def test_frame_from_raw(self):
     """Test parse FrameActivationHeader from raw."""
     frame = frame_from_raw(self.EXAMPLE_FRAME)
     self.assertTrue(
         isinstance(frame, FrameGetActivationLogHeaderConfirmation))