Example #1
0
 def __init__(self):
     """Init Frame."""
     super().__init__(Command.GW_STATUS_REQUEST_NTF)
     self.session_id = 0
     self.status_id = 0
     self.node_id = 0
     self.run_status = RunStatus.EXECUTION_COMPLETED
     self.status_reply = StatusReply.UNKNOWN_STATUS_REPLY
     self.status_type = StatusType.REQUEST_TARGET_POSITION
     self.status_count = 0
     self.parameter_data = {}
     self.target_position = Parameter()
     self.current_position = Parameter()
     self.remaining_time = 0
     self.last_master_execution_address = 0
     self.last_command_originator = 0
Example #2
0
 def __init__(self,
              node_ids=None,
              parameter=Parameter(),
              active_parameter=0,
              session_id=None,
              originator=Originator.USER,
              **functional_parameter):
     """Init Frame."""
     super().__init__(Command.GW_COMMAND_SEND_REQ)
     self.node_ids = node_ids
     self.parameter = parameter
     self.active_parameter = active_parameter
     self.fpi1 = 0
     self.fpi2 = 0
     self.functional_parameter = {}
     self.session_id = session_id
     self.originator = originator
     self.priority = Priority.USER_LEVEL_2
     """Set the functional parameter indicator bytes in order to show which functional
     parameters are included in the frame. Functional parameter dictionary will be checked
     for keys 'fp1' to 'fp16' to set the appropriate indicator and the corresponding
     self.functional_parameter."""
     for i in range(1, 17):
         key = "fp%s" % (i)
         if key in functional_parameter:
             self.functional_parameter[key] = functional_parameter[key]
             if i < 9:
                 self.fpi1 += 2**(8 - i)
             if i >= 9:
                 self.fpi2 += 2**(16 - i)
         else:
             self.functional_parameter[key] = bytes(2)
Example #3
0
 def from_payload(self, payload):
     """Init frame from binary data."""
     self.session_id = payload[0] * 256 + payload[1]
     self.status_id = payload[2]
     self.node_id = payload[3]
     self.run_status = RunStatus(payload[4])
     self.status_reply = StatusReply(payload[5])
     self.status_type = StatusType(payload[6])
     if self.status_type == StatusType.REQUEST_MAIN_INFO:
         self.target_position = Parameter(payload[7:8])
         self.current_position = Parameter(payload[9:10])
         self.remaining_time = payload[11] * 256 + payload[12]
         self.last_master_execution_address = payload[13:16]
         self.last_command_originator = payload[17]
     else:
         self.status_count = payload[7]
         for i in range(8, 8 + self.status_count * 3, 3):
             self.parameter_data.update({
                 NodeParameter(payload[i]):
                 Parameter(payload[i + 1:i + 3])
             })
Example #4
0
 def __init__(self,
              node_ids=None,
              parameter=Parameter(),
              session_id=None,
              originator=Originator.USER):
     """Init Frame."""
     super().__init__(Command.GW_COMMAND_SEND_REQ)
     self.node_ids = node_ids
     self.parameter = parameter
     self.session_id = session_id
     self.originator = originator
     self.priority = Priority.USER_LEVEL_2
Example #5
0
 def __init__(self):
     """Init Frame."""
     super().__init__(Command.GW_GET_NODE_INFORMATION_NTF)
     self.node_id = 0
     self.order = 0
     self.placement = 0
     self.name = ""
     self.velocity = Velocity.DEFAULT
     self.node_type = NodeTypeWithSubtype.NO_TYPE
     self.product_group = 0
     self.product_type = 0
     self.node_variation = NodeVariation.NOT_SET
     self.power_mode = 0
     self.build_number = 0
     self._serial_number = bytes(8)
     self.state = 0
     self.current_position = Parameter()
     self.target = Parameter()
     self.current_position_fp1 = Parameter()
     self.current_position_fp2 = Parameter()
     self.current_position_fp3 = Parameter()
     self.current_position_fp4 = Parameter()
     self.remaining_time = 0
     self.timestamp = 0
     self.alias_array = AliasArray()
Example #6
0
 def from_payload(self, payload):
     """Init frame from binary data."""
     self.node_id = payload[0]
     self.order = payload[1] * 256 + payload[2]
     self.placement = payload[3]
     self.name = bytes_to_string(payload[4:68])
     self.velocity = Velocity(payload[68])
     self.node_type = NodeTypeWithSubtype(payload[69] * 256 + payload[70])
     self.product_group = payload[71]
     self.product_type = payload[72]
     self.node_variation = NodeVariation(payload[73])
     self.power_mode = payload[74]
     self.build_number = payload[
         75]  # <-- hey @VELUX: your documentation is wrong here
     self._serial_number = payload[76:84]
     self.state = payload[84]
     self.current_position = Parameter(payload[85:87])
     self.target = Parameter(payload[87:89])
     self.current_position_fp1 = Parameter(payload[89:91])
     self.current_position_fp2 = Parameter(payload[91:93])
     self.current_position_fp3 = Parameter(payload[93:95])
     self.current_position_fp4 = Parameter(payload[95:97])
     self.remaining_time = payload[97] * 256 + payload[98]
     self.timestamp = struct.unpack(">I", payload[99:103])[0]
     self.alias_array = AliasArray(payload[103:125])
Example #7
0
    def from_payload(self, payload):
        """Init frame from binary data."""
        self.session_id = payload[0] * 256 + payload[1]
        self.originator = Originator(payload[2])
        self.priority = Priority(payload[3])

        len_node_ids = payload[41]
        if len_node_ids > 20:
            raise PyVLXException("command_send_request_wrong_node_length")
        self.node_ids = []
        for i in range(len_node_ids):
            self.node_ids.append(payload[42] + i)

        self.parameter = Parameter(payload[7:9])
Example #8
0
 def __str__(self):
     """Return human readable string."""
     functional_parameter = ""
     for key, value in self.functional_parameter.items():
         functional_parameter += "%s: %s, " % (
             str(key),
             Position(Parameter(bytes(value))),
         )
     return ('<{} node_ids="{}" parameter="{}" functional_parameter="{}" '
             'session_id="{}" originator="{}"/>'.format(
                 type(self).__name__,
                 self.node_ids,
                 self.parameter,
                 functional_parameter,
                 self.session_id,
                 self.originator,
             ))
Example #9
0
 def __init__(self):
     """Init Frame."""
     super().__init__(Command.GW_NODE_STATE_POSITION_CHANGED_NTF)
     self.node_id = 0
     self.state = 0
     self.current_position = Parameter()
     self.target = Parameter()
     self.current_position_fp1 = Parameter()
     self.current_position_fp2 = Parameter()
     self.current_position_fp3 = Parameter()
     self.current_position_fp4 = Parameter()
     self.remaining_time = 0
     self.timestamp = 0
Example #10
0
 def from_payload(self, payload):
     """Init frame from binary data."""
     self.node_id = payload[0]
     self.state = payload[1]
     self.current_position = Parameter(payload[2:4])
     self.target = Parameter(payload[4:6])
     self.current_position_fp1 = Parameter(payload[6:8])
     self.current_position_fp2 = Parameter(payload[8:10])
     self.current_position_fp3 = Parameter(payload[10:12])
     self.current_position_fp4 = Parameter(payload[12:14])
     self.remaining_time = payload[14] * 256 + payload[15]
     # @VELUX: looks like your timestamp is wrong. Looks like
     # you are only transmitting the two lower bytes.
     self.timestamp = struct.unpack(">I", payload[16:20])[0]