A simple tool to send messages and commands into FreakWAN over Bluetooth low energy. It's tested under Linux, MacOS and Windows.
The best way to install freakble is using pipx:
$ pipx install freakbleFor the GUI you can optionally install themes using:
$ pipx install 'freakble[themes]'When using pip it's suggested to work inside a virtualenv.
$ python -m pip install freakblefreakble uses Poetry as dependency management and packaging tool, you need to install it first.
Then:
- Clone this repository.
- From the root of the repository run:
$ poetry build - Install using pipx or pip (it's better to use pipx):
$ pipx install dist/freakble-0.1.0-py3-none-any.whl
Usage: freakble [OPTIONS] COMMAND [ARGS]...
A simple tool to send messages into FreakWAN.
Options:
--adapter TEXT ble adapter [default: (hci0)]
--help Show this message and exit.
Commands:
gui Start freakble GUI.
repl Start a REPL with the device.
scan Scan to find BLE devices.
send Send one or more words over BLE to a specific device.
version Return freakble version.The send command is used to send a message to the board. You need to know the
address of the device.
You can specify the address of a device using the --device flag or the
environment variable FREAKBLE_DEVICE.
The complete usage is:
Usage: freakble send [OPTIONS] [WORDS]...
Send one or more words over BLE to a specific device.
Options:
--loop send forever the message
--device TEXT ble device address [required]
--sleep-time FLOAT sleep between messages sent with --loop [default: (1
sec)]
--timeout FLOAT Bluetooth LE connection timeout [default: (10 secs)]
--help Show this message and exit.For example:
$ freakble send --device AA:AA:AA:AA:AA:AA Hello, there!where you have to substitute AA:AA:AA:AA:AA:AA with your device's address.
The --loop flag will make freakble to send continuosly the message until
CTRL + C is pressed. The resend interval is defaults to 1 sec and can be
changed using --sleep-time.
$ freakble send --device AA:AA:AA:AA:AA:AA --loop FREAKNETYou can use FREAKBLE_DEVICE environment variables to set the device address,
and to not have to provide it in each commands that need a device address.
For example, using send, if one of your device is called FW_vuzasu
you can do:
$ export FREAKBLE_DEVICE=$(freakble scan | grep FW_vuzasu | cut -d' ' -f1)
$ freakble send "La violenza è l'ultimo rifugio degli incapaci. - Isaac Asimov"FreakWAN supports commands starting with ! character (see the list on
FreakWAN README):
$ freakble send '!bat'
battery 99%, 4.20 voltsIf you don't know what to say, you can always tempt the fates! :)
freakble send "$(fortune)"Please note that this command handle also disconnection from Bluetooth LE so it runs in a few seconds.
The scan command is used to discover Bluetooth LE devices.
Usage: freakble scan [OPTIONS]
Scan to find BLE devices.
Options:
--scan-time FLOAT scan duration [default: (5 secs)]
--help Show this message and exit.For example:
$ freakble scan
AB:AB:AB:AB:AB:AB (rssi:-52) FW_timatu
AF:AF:AF:AF:AF:AF (rssi:-57) FW_vuzasu
The repl command connects to the specified device and stats an interactive
shell with it.
The complete usage is:
Usage: freakble repl [OPTIONS]
Start a REPL with the device.
Options:
--device TEXT ble device address [required]
--timeout FLOAT Bluetooth LE connection timeout [default: (10 secs)]
--help Show this message and exit.
For example:
$ export FREAKBLE_DEVICE=$(freakble scan | grep FW | cut -d' ' -f1)
freakble 0.3.0a0 on linux
Connecting to AB:AB:AB:AB:AB:AB...
Φ]Φ] is the freakble prompt.
You can then talk to the device remembering that commands start with ! and
the text you write if it's not a command is sent as a message in the network.
For example, the following text is sent as a message in the network:
Φ] Hello there!
Φ]
Instead commands make you able to get info or configure your FreakWAN node:
Φ] !help
Commands: !automsg !pw !sp !cr !bw !freq !preset !ls !font !last !addkey !delkey !keys !usekey !nokey
Φ] !bat
battery volts: 4.2
Pressing TAB key or ! will show the autocompletion menu.
To exit from the interactive shell use CTRL + D or CTRL + C
The gui command starts a GUI of freakble. If you don't set the device address
it will start with the following scan interface:
after choosing a device you can click to the connect button to get a graphical REPL:
freakble is licensed under BSD-3-Clause license.