We released some tools to help you developing with Drops.
DropConf is a Node.js script which will help you to run several commands, and quickly configure your drops.
DropConf is a script which executes several commands automatically, with the right timing between each command. It can be used to configure several drops in a row, or to generate configuration files automatically in a Web server for example. It reads the commands in a local file or in a remote file located with its URL.
Before using DropConf, you must install CoffeeScript and Noble. You can do this using npm: $ npm install coffee noble. Noble also requires the libbluetooth-dev package. Then you can run the script:
Before running DropConf, make sure to activate Bluetooth on your computer.
You can either give a DropConf file or an url as an argument. The file must respect the DropConf file format (see below). The command must be executed as root if you don't have the permission to access your HCI device.
sudo coffee dropconf.coffee --file mydropconf.drop
sudo coffee dropconf.coffee --url http://www.example.com/dropconf/42.drop
At start, the script scans the available BLE devices at range:
Start Scanning (at any moment, enter the number of a device to connect to it).
0: c4:b6:49:bb:89:4e Drop12
1: f3:fd:8f:cd:9d:ca Drop26
2: dd:ef:20:e8:91:82 Drop09
The scan will continue until you type the number of the drop you want to connect to (or hit Ctrl+C to stop the script). For example, to connect to Drop26, type 1 followed by Enter.
Then, the script will run all the commands contained in the file you specified in your argument. It will show the sent requests and the recieved notifications. Here is an example of output:
Connecting to Drop26 Discovering characteristics Activate notifications for 00003a0012008da5e31130b4c03b539b done Activate notifications for 00003a0112008da5e31130b4c03b539b done Activate notifications for 00003a0212008da5e31130b4c03b539b done Write in 00003a0212008da5e31130b4c03b539b: 8d00022c65faa0248a5df6c83f20d25545459120 Write in 00003a0212008da5e31130b4c03b539b: 0107ac5d12dc0c44fdea901436cc8850ffff Notification: 8d00 Write in 00003a0112008da5e31130b4c03b539b: 0103010102f04f0000fb4a326b72e6b14b4f7902 Write in 00003a0112008da5e31130b4c03b539b: 01d95750ebdb286c20399d752aea4838b846aab2 Write in 00003a0112008da5e31130b4c03b539b: 025f6bffff Notification: 010301 Write in 00003a0012008da5e31130b4c03b539b: 071a010100ffffff000000020100000000000000 Write in 00003a0012008da5e31130b4c03b539b: 01000000000000000000deadbeef581c748ab1c7 Write in 00003a0012008da5e31130b4c03b539b: 02a725824ef3ba4d823626626c6120626c612062 Write in 00003a0012008da5e31130b4c03b539b: 036c614fce49ca303d1794eb1ec75d876828b967 Write in 00003a0012008da5e31130b4c03b539b: 0445f456d74f84d114231d6e5fc89ec5ffff Notification: 071a010100ffffff Disconnecting from Drop26 You can now close the window
The last line indicates that the script finished successfully.
Here is an example of a DropConf file (this is the file used in the output example above):
2 0 8d00029696a74c757ca51d9d2c49b44495011d24 2 1 0176293f3d419dc93f3330ff91b5f01effff 1 0 0103010102f04f0000ba772df3b8fe4f593fbd99 1 0 0124aa5532ef43f21267331512b52d69634fc0c6 1 1 02da89ffff 0 0 071a010100ffffff000000020100000000000000 0 0 01000000000000000000deadbeef581c748ab1c7 0 0 02a725824ef3ba4d823626626c6120626c612062 0 0 036c617fa4ea756631f9acc7192bd8c5f07014ff 0 1 047d304a7d23df52b82ab2ecc5aef717ffff
Each command is written on a single line.
The first column indicates the characteristic where the command should be written:
The second column indicates if this command expects a notification:
The third column contains the command, written in hexadecimal.