Tools

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.

Tools

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.

Download DropConf on GitHub

Install

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:

Usage

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.

DropConf file format

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:

0
Message Command
1
Box Command
2
Drop Command

The second column indicates if this command expects a notification:

0
The command will just wait for the Write Acknowledge and then run the next command.
1
The command will wait for a notification, display it and then run the next command.

The third column contains the command, written in hexadecimal.

Warning! The commands must be split in case of Long Commands, and signed in case of Authenticated Commands. DropConf does not handle these requirements.