episensor / node-red-contrib-epi-bluetooth

A Node-RED node to set up a Bluetooth LE peripheral
MIT License
2 stars 0 forks source link

node-red-contrib-epi-bluetooth

A set of Node-RED nodes for creating BluetoothLE host services with JSON based transport.

Available Nodes:

Install

Run the following command in your Node-RED user directory - typically ~/.node-red

npm install node-red-contrib-epi-bluetooth

Usage

After adding your first BLE node to your flow you will need to create a global Device Configuration that will be visible to the connecting Clients.

To do this enter the configuration of the new node and add a new Device definition:

Create a new Device

Next enter the device name that will be shown to clients when scanning and click Add:

Enter device name

Next you need to define a Service under which the assigned GATT Characteristics (Nodes) will be visible to clients:

Create a Service

Enter the Service Name (used for identification within NodeRed) and a Universally Unique Identifier (UUID) of the service. You can use for example Online UUID Generator for getting one. Click Add afterwards.

Set Up a Service

Finally enter a GATT Characteristic UUID unique for a particular node and click Done. This must be unique for each node!

Set characteristic

When creating further nodes you can just select the defined Device and Service and only add unique Characteristic Ids.

Nodes

After saving, the Flow containing the BLE nodes will start advertising the device with services/characteristics attached. When a client successfully connects to a device it can access particular Nodes by the assigned Service/Characteristic UUIDs.

ble-in This node will receive inputs from connected clients. It is Write-Only and accepts JSON strings which need to be split in to 20 byte packets. When the last character will be a \n the node will know that this is the end of the message. Afterwards it will parse the JSON string and pass the object down the flow through the msg.payload field.

ble-notify A Subscription node which clients can listen to. Upon receiving an input message it will push a Notification event to the active listeners. Like in ble-in the messages from msg.payload will be split into 20 character JSON chunks. The final chunk will contain a \n character which marks the end of the JSON payload.

Caveats

Supported By

An open source project supported by EpiSensor.