pyhomekit package¶
Module contents¶
pyhomekit.ble module¶
Contains all of the HAP-BLE classes.
-
class
pyhomekit.ble.HapAccessory(address: str, address_type: str = 'static') → None[source]¶ Bases:
objectHAP Accesory.
Parameters: - address – MAC address of the accessory
- address_type – Type of the address: static or random
-
charateristic(uuid: str) → sphinx.ext.autodoc.Characteristic[source]¶ Return the GATT characteristic for the given UUID.
-
class
pyhomekit.ble.HapAccessoryLock(address: str, address_type: str = 'static') → None[source]¶ Bases:
pyhomekit.ble.HapAccessory
-
class
pyhomekit.ble.HapBlePdu(header: pyhomekit.ble.HapBlePduHeader, TLVs: typing.Sequence[typing.Tuple[int, bytes]]) → None[source]¶ Bases:
objectHAP BLE PDU
-
fragmented¶
-
max_len= 512¶
-
raw_data¶
-
-
class
pyhomekit.ble.HapBlePduHeader(response: bool, continuation: bool) → None[source]¶ Bases:
objectInterface for HAP-BLE Headers.
This class is not meant to be instantiated. Use the children HapBlePduRequestHeader and HapBlePduResponseHeader.
Parameters: - continuation – indicates the fragmentation status of the HAP-BLE PDU. False indicates a first fragment or no fragmentation.
- response – indicates whether the PDU is a response (versus a request)
-
control_field¶ Get Control Field as int.
-
control_field_bits¶ Get Control Field as string of bits.
-
data¶
-
class
pyhomekit.ble.HapBlePduRequestHeader(cid_sid: bytes, op_code: int, response: bool = False, continuation: bool = False, transaction_id: int = None) → None[source]¶ Bases:
pyhomekit.ble.HapBlePduHeaderHAP-BLE PDU Request Header.
Parameters: - continuation – indicates the fragmentation status of the HAP-BLE PDU. False indicates a first fragment or no fragmentation.
- response – indicates whether the PDU is a response (versus a request)
- transation_id – Transaction Identifier
- op_code – HAP Opcode field, which indicates the opcode for the HAP Request PDU.
- cid_sid – Characteristic / Service Instance Identifier is the instance id of the characteristic / service for a particular request.
-
data¶ Byte representation of the PDU Header.
Depends on whether it is a continuation header or not.
-
transaction_id¶ Get the transaction identifier, or generate a new one if none exists.
The transation ID is an 8 bit number identifying the transaction number of this PDU. The TID is randomly generated by the originator of the request and is used to match a request/response pair.
-
class
pyhomekit.ble.HapBlePduResponseHeader(status_code: int, transaction_id: int, continuation: bool = False, response: bool = True) → None[source]¶ Bases:
pyhomekit.ble.HapBlePduHeaderHAP-BLE PDU Response Header.
Parameters: - continuation – indicates the fragmentation status of the HAP-BLE PDU. False indicates a first fragment or no fragmentation.
- response – indicates whether the PDU is a response (versus a request)
- transaction_id – Transaction Identifier
- status_code – HAP Status code for the request.
-
data¶ Byte representation of the PDU Header.
-
class
pyhomekit.ble.HapCharacteristic(accessory: pyhomekit.ble.HapAccessory, uuid: str, retry: bool = False, retry_max_attempts: int = 1, retry_wait_time: int = 2) → None[source]¶ Bases:
objectRepresents data or an associated behavior of a service.
The characteristic is defined by a universally unique type, and has additional properties that determine how the value of the characteristic can be accessed.
Parameters: - accessory – The accessory this characteristic belongs to.
- uuid – The UUID of the underlying GATT characteristic
- retry – Attempt to reconnect when error.
- retry_max_attempts – How many times to attempt reconnection.
- retry_wait_time – How long to wait in s between reconnection attempts.
-
cid¶ Get the Characteristic ID, reading it from the device if required.
-
read(request_header: pyhomekit.ble.HapBlePduRequestHeader) → typing.Dict[str, typing.Any][source]¶ Perform a HAP Characteristic read.
Fragmented read if required.
-
signature¶ Returns the signature, and adds the attributes.
-
pyhomekit.ble.fragment_tlvs(header: pyhomekit.ble.HapBlePduRequestHeader, TLVs: typing.List[typing.Tuple[int, bytes]]) → typing.Iterator[bytes][source]¶ Returns the fragmented TLVs to write.
pyhomekit.constants module¶
HAP Constants
-
class
pyhomekit.constants.HapBleOpCodes[source]¶ Bases:
objectHAP Opcode Descriptions.
-
Characteristic_Execute_Write= 5¶
-
Characteristic_Read= 3¶
-
Characteristic_Signature_Read= 1¶
-
Characteristic_Timed_Write= 4¶
-
Characteristic_Write= 2¶
-
Service_Signature_Read= 6¶
-
-
class
pyhomekit.constants.HapBleStatusCodes[source]¶ Bases:
objectHAP Status code definitions and descriptions.
-
Insufficient_Authentication= 5¶
-
Insufficient_Authorization= 3¶
-
Invalid_Instance_ID= 4¶
-
Invalid_Request= 6¶
-
Max_Procedures= 2¶
-
Success= 0¶
-
Unsupported_PDU= 1¶
-
-
class
pyhomekit.constants.HapParamTypes[source]¶ Bases:
object-
Additional_Authorization_Data= 2¶
-
Characteristic_Instance_ID= 5¶
-
Characteristic_Type= 4¶
-
GATT_Presentation_Format_Descriptor= 12¶
-
GATT_User_Description_Descriptor= 11¶
-
GATT_Valid_Range= 13¶
-
HAP_Characteristic_Properties_Descriptor= 10¶
-
HAP_Linked_Services= 16¶
-
HAP_Service_Properties= 15¶
-
HAP_Step_Value_Descriptor= 14¶
-
HAP_Valid_Values_Descriptor= 17¶
-
HAP_Valid_Values_Range_Descriptor= 18¶
-
Origin_local_vs_remote= 3¶
-
Return_Response= 9¶
-
Service_Instance_ID= 7¶
-
Service_Type= 6¶
-
TTL= 8¶
-
Value= 1¶
-
-
class
pyhomekit.constants.PairingKTLVErrorCodes[source]¶ Bases:
object-
kTLVError_Authenticatio= 2¶
-
kTLVError_Backof= 3¶
-
kTLVError_Bus= 7¶
-
kTLVError_MaxPeer= 4¶
-
kTLVError_MaxTrie= 5¶
-
kTLVError_Unknow= 1¶
-
-
class
pyhomekit.constants.PairingKTLVMethodValues[source]¶ Bases:
objectPairing service kTLV method values
-
Add_Pairing= 3¶
-
List_Pairings= 5¶
-
Pair_Setup= 1¶
-
Pair_Verify= 2¶
-
Remove_Pairing= 4¶
-
Reserved= 0¶
-
-
class
pyhomekit.constants.PairingKTlvValues[source]¶ Bases:
objectPairng service TLV Values.
-
kTLVType_Certificate= 9¶
-
kTLVType_EncryptedData= 5¶
-
kTLVType_Error= 7¶
-
kTLVType_FragmentData= 12¶
-
kTLVType_FragmentLast= 13¶
-
kTLVType_Identifier= 1¶
-
kTLVType_Method= 0¶
-
kTLVType_Permissions= 11¶
-
kTLVType_Proof= 4¶
-
kTLVType_PublicKey= 3¶
-
kTLVType_RetryDelay= 8¶
-
kTLVType_Salt= 2¶
-
kTLVType_Separator= 255¶
-
kTLVType_Signature= 10¶
-
kTLVType_State= 6¶
-
-
pyhomekit.constants.parse_format(b: bytes) → typing.Tuple[int, int][source]¶ Parse the bluetooth characteristic presentation format to format and unit code
-
pyhomekit.constants.to_int32(b: bytes) → int[source]¶ Convert to bytes to 32 bit signed int (little endian).
-
pyhomekit.constants.to_uint16(b: bytes) → int[source]¶ Convert to bytes to 16 bit unsigned short (little endian).
-
pyhomekit.constants.to_uint32(b: bytes) → int[source]¶ Convert to bytes to 32 bit unsigned int (little endian).
-
pyhomekit.constants.to_uint64(b: bytes) → int[source]¶ Convert to bytes to 64 bit unsigned int (little endian).
pyhomekit.utils module¶
Utility functions for BLE
-
exception
pyhomekit.utils.HapBleError(status_code: int = None, name: str = None, message: str = None, *args: str) → None[source]¶ Bases:
ExceptionHAP Error.