Abstraction library for hiding differences in JavaScript BLE APIs
Latest commit 386a600 Sep 12, 2016 @thegecko committed on GitHub Merge pull request #48 from mikaelkindborg/master
Added guard against multiple connects



Circle CI Bower npm Licence MIT

Bleat (Bluetooth Low Energy Abstraction Tool) provides a simplified BLE layer which uses adapters to abstract the usage of BLE in JavaScript on different platforms.


Bleat has 2 APIs:


To install the library, either clone or copy the files to your project or use a package manager:

$ npm install bleat


$ bower install bleat


The bluetooth.helpers.js file contains general helper objects and functions.

The api.<api>.js files each offer a BLE API.

The adapter.<platform>.js files each represent an adapter targetting a specific BLE engine, the adapter-template.js file is an empty template to ease creation of a new adapter.

The <api>.<adapter>.min.js files are minified versions of the BLE APIs including the helpers and a single adapter.

Files follow the UMDJS specification, so should work with CommonJS (such as node.js), AMD (such as RequireJS) and plain JavaScript projects.

Refer to the example_<adapter>_<api> files and folders for simple examples of how to use each combination.

CommonJS (node.js)

Simply require it up, specifying the api you wish to use:

var bleat = require('bleat').classic;


var bleat = require('bleat').webbluetooth;

AMD (RequireJS)

To use bleat with RequireJS, set the requirejs.config to load your API of choice as bleat and add a dependency on your adapter of choice:

    baseUrl: 'path/to/bleat',
    paths: {
        bleat: 'api.classic',
        adapter: 'adapter.evothings'
    shim: {
        bleat: {
            deps: ['adapter']

You can then use bleat as follows:

require(['bleat'], function(bleat) {
    // Use bleat here

Plain JavaScript (globals)

Include the bluetooth.helpers.js file, then the bleat api file you wish to use and finally the adapter file you wish to use:

<script src="path/to/bluetooth.helpers.js"></script>
<script src="path/to/api.classic.js"></script>
<script src="path/to/adapter.evothings.js"></script>

Alternatively, you can just include the minified file which contains the API and adapter you wish to use:

<script src="path/to/web-bluetooth.evothings.min.js"></script>

A global object root.bleat will then be available to use.