A set of Node-RED nodes for creating BluetoothLE host services with JSON based transport.
Available Nodes:
Run the following command in your Node-RED user directory - typically ~/.node-red
npm install node-red-contrib-epi-bluetooth
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:
Next enter the device name that will be shown to clients when scanning and click Add:
Next you need to define a Service under which the assigned GATT Characteristics (Nodes) will be visible to clients:
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.
Finally enter a GATT Characteristic UUID unique for a particular node and click Done. This must be unique for each node!
When creating further nodes you can just select the defined Device and Service and only add unique Characteristic Ids.
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.
An open source project supported by EpiSensor.