The Peripheral
class¶
Bluepy’s Peripheral
class encapsulates a connection to a Bluetooth LE peripheral. You create a Peripheral
object directly by specifying its MAC address; when the connection is established, the services and characteristics offered by that device can be discovered and read or written.
Constructor¶
-
Peripheral
([deviceAddress=None[, addrType=ADDR_TYPE_PUBLIC[, iface=None]]])¶ If deviceAddress is not
None
, creates aPeripheral
object and makes a connection to the device indicated by deviceAddress. deviceAddress should be a string comprising six hex bytes separated by colons, e.g."11:22:33:ab:cd:ed"
.If deviceAddress is
None
, creates an un-connectedPeripheral
object. You must call theconnect()
method on this object (passing it a device address) before it will be usable.The addrType parameter can be used to select between fixed (
btle.ADDR_TYPE_PUBLIC
) and random (btle.ADDR_TYPE_RANDOM
) address types, depending on what the target peripheral requires. See section 10.8 of the Bluetooth 4.0 specification for more details.The iface parameter allows the Bluetooth interface on which to make the connection to be set. On Linux, 0 means /dev/hci0, 1 means /dev/hci1 and so on.
deviceAddress may also be a
ScanEntry
object. In this case the device address, address type, and interface number are all taken from theScanEntry
values, and the addrType and iface parameters are ignored.The constructor will throw a
BTLEException
if connection to the device fails.
Instance Methods¶
-
connect
(deviceAddress[, addrType=ADDR_TYPE_PUBLIC[, iface=None]])¶ Makes a connection to the device indicated by deviceAddress, with address type addrType and interface number iface (see the
Peripheral
constructor for details). You should only call this method if thePeripheral
is un-connected (i.e. you did not pass a deviceAddress to the constructor); a given peripheral object cannot be re-connected once connected.
-
disconnect
()¶ Drops the connection to the device, and cleans up associated OS resources. Although the Python destructor for a
Peripheral
will attempt to call this method, you should not rely on this happening at any particular time. Therefore, always explicitly calldisconnect()
if you have finished communicating with a device.
-
getServices
()¶ Returns a list of
Service
objects representing the services offered by the peripheral. This will perform Bluetooth service discovery if this has not already been done; otherwise it will return a cached list of services immediately.On Python 3.x, this returns a dictionary view object, not a list.
-
getServiceByUUID
(uuidVal)¶ Returns an instance of a
Service
object which has the indicated UUID.uuidVal
can be aUUID
object, or any string or integer which can be used to construct aUUID
object. The method will return immediately if the service was previously discovered (e.g. by getServices()), and will query the peripheral otherwise. It raises a BTLEEException if the service is not found.
-
getCharacteristics
(startHnd=1, endHnd=0xFFFF, uuid=None)¶ Returns a list containing
Characteristic
objects for the peripheral. If no arguments are given, will return all characteristics. If startHnd and/or endHnd are given, the list is restricted to characteristics whose handles are within the given range - note that it’s usually more convenient to useService.getCharacteristics()
to get the characteristics associated with a particular service. Alternatively, uuid may be specified to locate a characteristic with a particular UUID value. uuid may be any string, integer, orUUID
type which can be used to construct aUUID
object.If no matching characteristics are found, returns an empty list.
-
getDescriptors
(startHnd=1, endHnd=0xFFFF)¶ Returns a list containing
Descriptor
objects for the peripheral. If no arguments are given, will return all descriptors. If startHnd and/or endHnd are given, the list is restricted to descriptors whose handles are within the given range. Again, it’s usually more convenient to useService.getDescriptors()
to get the descriptors associated with a particular service.If no matching descriptors are found, returns an empty list.
-
withDelegate
(delegate)¶ This stores a reference to a “delegate” object, which is called when asynchronous events such as Bluetooth notifications occur. This should be a subclass of the
DefaultDelegate
class. See Working with notifications for more information. This method returns thePeripheral
object.
-
setDelegate
(delegate)¶ (deprecated since 0.9.10) Same as withDelegate().
-
waitForNotifications
(timeout)¶ Blocks until a notification is received from the peripheral, or until the given timeout (in seconds) has elapsed. If a notification is received, the delegate object’s
handleNotification()
method will be called, andwaitForNotifications()
will then returnTrue
.If nothing is received before the timeout elapses, this will return
False
.
-
writeCharacteristic
(handle, val, withResponse=False)¶ Writes the data val (of type
str
on Python 2.x,byte
on 3.x) to the characteristic identified by handle handle, which should be an integer in the range 1 to 65535. This is useful if you know a characteristic’s GATT handle, but do not have aCharacteristic
object.If withResponse is true, will await confirmation that the write was successful from the device.
-
readCharacteristic
(handle)¶ Reads the current value of the characteristic identified by handle. This is useful if you know the handle for the characteristic but do not have a suitable
Characteristic
object.
Properties¶
All the properties listed below are read-only.
-
addr
¶ Device MAC address (as a hex string separated by colons).
-
addrType
¶ Device address type - one of ADDR_TYPE_PUBLIC or ADDR_TYPE_RANDOM; this will be a printable string.
-
iface
¶ Bluetooth interface number (0 =
/dev/hci0
) used for the connection.