/blueberrypy

Bluetooth Low Energy Python Module

Primary LanguageC++GNU General Public License v2.0GPL-2.0

blueberrypy

This is still under development. Check back in a week or two.

This project was created/started due to a lack of good Bluetooth Low Energy support out there for Python. There's really good support for NodeJS and GoLang, but for python there's just a whole bunch of libraries and none of them seem to be complete with Bluetooth Low Energy support. I plan on changing that with this library (blueberrypy). The features I plan to support in the first phase (week 1) are:

Planned

  • Enable/disabling scanning (Done)
  • Parsing advertisement data (Done)
  • Python callback with parsed advertisement (Done)
  • Connect/disconnect BleDevice (Done)
  • Enumeration of services (Done)
  • Enumeration of characteristics (Done)
  • Enumeration of descriptors (Done)
  • Exposing services with python bindings (Done)
  • Exposing characteristics with python bindings (Done)
  • Read (under ATT_MTU) characteristic with python bindings (Done)
  • Write (under ATT_MTU) characteristic with python bindings (Done)
  • Notifty characteristic with python bindings (Done)
  • Indicate characteristic with python bindings (Done)
  • Create Python script to make bindings easier to use (Done)
  • Make python module (Not sure how to do this)
  • Fragemented read (> ATT_MTU)
  • Fragemented write (> ATT_MTU)
  • Statically link native library so everything is in one shared object (Done)

Issues

  • Read advertisment thread never exits (fixed)
  • Mainloop thread never exits
  • Expose ATT errors up to python (fixed)

Not currently planned to implement

  • Reading descriptors
  • Writing descriptors
  • Dynamic database handling (service changed handling)
  • LE Security (Encryption/Authentication/Key storage)
  • Update connection parameters