Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/emlid/bluetool
Bluetooth manager for Linux.
https://github.com/emlid/bluetool
Last synced: 20 days ago
JSON representation
Bluetooth manager for Linux.
- Host: GitHub
- URL: https://github.com/emlid/bluetool
- Owner: emlid
- License: gpl-3.0
- Created: 2016-07-29T12:58:31.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2023-12-15T10:31:35.000Z (about 1 year ago)
- Last Synced: 2024-11-08T20:17:02.383Z (about 1 month ago)
- Language: Python
- Homepage:
- Size: 75.2 KB
- Stars: 48
- Watchers: 20
- Forks: 26
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
### Bluetool
A simple Python API for Bluetooth D-Bus calls. Allows easy pairing, connecting and scanning.
Also provides a TCP-to-RFCOMM socket bridge for data transfer.#### Dependencies
- `python-dbus`
- `tcpbridge`The package was tested with **Python 2.7**
#### Installation
`pip install bluetool`
or clone and run `make install`
#### Usage
- Bluetooth:
list: `[{"name": Name, "mac_address": MAC-address}, ... ]`Methods of class Bluetooth:
- `start_scanning(timeout)`: `scan` in background
- `scan(timeout)`
- `get_devices_to_pair()`, returns list
- `get_available_devices()`, returns list
- `get_paired_devices()`, returns list
- `get_connected_devices()`, returns list
- `make_discoverable()`, returns bool
- `start_pairing(address)`: `pair` in background
- `pair(address)`, returns bool
- `connect(address)`, returns bool
- `disconnect(address)`, returns bool
- `trust(address)`, returns bool
- `remove(address)`, returns bool
- `set_adapter_property(prop, value)`, returns bool
- `get_adapter_property(prop)`
- `set_device_property(address, prop, value)`, returns bool
- `get_device_property(address, prop)`- BluetoothServer:
- Step1: Use `run()` to create SPP
- Step2: Connect the bluetooth device
- Step3: TCPServer is available for connection
Use `shutdown()` to shutdown server.##### Examples
- Scanning
```python
from bluetool import Bluetoothbluetooth = Bluetooth()
bluetooth.scan()
devices = bluetooth.get_available_devices()
print(devices)
```
- Using the RFCOMM-TCP Bridge
```python
import signal
from bluetool import BluetoothServerdef handler(signum, frame):
server.shutdown()tcp_port = 8100
server = BluetoothServer(tcp_port)signal.signal(signal.SIGINT, handler)
signal.signal(signal.SIGTERM, handler)server.run()
```
- Using the Bluetooth Agent
```python
import signal
from bluetool.agent import Client, AgentSvrclass MyClient(Client):
def request_pin_code(self, dev_info):
print(dev_info)
return raw_input("Input pin code:")def request_passkey(self, dev_info):
print(dev_info)
return raw_input("Input passkey:")def request_confirmation(self, dev_info, *args):
print(dev_info, args)
return raw_input("Input 'yes' to accept request:") == "yes"def request_authorization(self, dev_info):
print(dev_info)
return raw_input("Input 'yes' to accept request:") == "yes"def handler(signum, frame):
svr.shutdown()svr = AgentSvr(client_class=MyClient)
signal.signal(signal.SIGINT, handler)
signal.signal(signal.SIGTERM, handler)svr.run()
```### About the project
This package was written by [Aleksandr Aleksandrov](https://github.com/AD-Aleksandrov) working at [Emlid](https://emlid.com/).
The bluetool was originally written for the [Emlid Reach RTK receiver](https://emlid.com/reach/), but we decided to open source it, as there is no easy Python API for BT pairing/connecting. Feel free to add issues and submit pull requests.