jtguggedal / thingy_web_bluetooth

BSD 3-Clause "New" or "Revised" License
7 stars 4 forks source link

Nordic Thingy:52 for Web Bluetooth

About Thingy:52

The Nordic Thingy:52™ is a compact, power-optimized, multi-sensor development kit. It is an easy-to-use development platform, designed to help you build IoT prototypes and demos, without the need to build hardware or write firmware. Read more about it here.

This repository

This repository is an attempt to make it easier to start developing applications for Thingy:52 using Web Bluetooth. Web Bluetooth is a JavaScript API that makes it possible to communicate with Bluetooth Low Energy devices in web browsers. The implementation status for different browsers and platforms can be seen here.

This is work in progress, and for now this repository will help you connect to a Thingy:52 and access all services and characteristics except sound and DFU (Device Firmware Upgrade):

Get started

Example

The following example will first connect to a thingy:52, then read its name and configure the RGB LED to "breathe" purple (color code 5, see here) pulses with 20% intensity and with 1500 ms delays between each pulse. It will also print the name of the device and the firmware version to the console.


import {Thingy} from "./js/thingy.js";

const thingy = new Thingy({logEnabled: true});

async function start(device) {
    try {
        await device.connect();
        await device.ledBreathe({color: 5, intensity: 20, delay: 1500});
        console.log(`Thingy name: ${await device.getName()}`);
        console.log(`Current firmware: ${await device.getFirmwareVersion()}`);
    } catch (error) {
        console.error(error);
    }
}

start(thingy);

Note: the Web Bluetooth API requires that a function trying to connect to a BLE device is initiated by a user action such as a mouse click.

API documentation

Documentation is also available in HTML format here.

Thingy

Parameters

batteryLevelEnable

Enables battery level notifications.

Parameters

Returns Promise<Error> Returns a promise when resolved or a promise with an error on rejection

buttonEnable

Enables button notifications from Thingy. The assigned event handler will be called when the button on the Thingy is pushed or released.

Parameters

Returns Promise<Error> Returns a promise with button state when resolved or a promise with an error on rejection.

colorEnable

Enables color sensor notifications from Thingy. The assigned event handler will be called when notifications are received.

Parameters

Returns Promise<Error> Returns a promise when resolved or a promise with an error on rejection

colorSensorCalibrate

Configures color sensor LED calibration parameters.

Parameters

Returns Promise<Error> Returns a promise when resolved or a promise with an error on rejection.

connect

Connects to Thingy. The function stores all discovered services and characteristics to the Thingy object.

Returns Promise<Error> Returns an empty promise when resolved or a promise with error on rejection

disconnect

Method to disconnect from Thingy.

Returns Promise<Error> Returns an empty promise when resolved or a promise with error on rejection.

eulerEnable

Enables Euler angle data notifications from Thingy. The assigned event handler will be called when notifications are received.

Parameters

Returns Promise<Error> Returns a promise when resolved or a promise with an error on rejection

externalPinsStatus

Gets the current external pin settings from the Thingy device. Returns an object with pin status information.

Returns Promise<(Object | Error)> Returns an external pin status object.

gasEnable

Enables gas notifications from Thingy. The assigned event handler will be called when notifications are received.

Parameters

Returns Promise<Error> Returns a promise when resolved or a promise with an error on rejection

getAdvParams

Gets the current advertising parameters

Returns Promise<(Object | Error)> Returns an object with the advertising parameters when resolved or a promise with error on rejection.

getBatteryLevel

Gets the battery level of Thingy.

Returns Promise<(Object | Error)> Returns battery level in percentage when promise is resolved or an error if rejected.

getCloudToken

Gets the configured cloud token.

Returns Promise<(string | Error)> Returns a string with the cloud token when resolved or a promise with error on rejection.

getConnParams

Gets the current connection parameters.

Returns Promise<(Object | Error)> Returns an object with the connection parameters when resolved or a promise with error on rejection.

getEddystoneUrl

Gets the configured Eddystone URL

Returns Promise<(URL | Error)> Returns a string with the URL when resolved or a promise with error on rejection.

getEnvironmentConfig

Gets the current configuration of the Thingy environment module.

Returns Promise<(Object | Error)> Returns an environment configuration object when promise resolves, or an error if rejected.

getFirmwareVersion

Gets the current firmware version.

Returns Promise<(string | Error)> Returns a string with the firmware version or a promise with error on rejection.

getLedStatus

Gets the current LED settings from the Thingy device. Returns an object with structure that depends on the settings.

Returns Promise<Object> Returns a LED status object. The content and structure depends on the current mode.

getMotionConfig

Gets the current configuration of the Thingy motion module.

Returns Promise<(Object | Error)> Returns a motion configuration object when promise resolves, or an error if rejected.

getMtu

Gets the current Maximal Transmission Unit (MTU)

Returns Promise<(number | Error)> Returns the MTU when resolved or a promise with error on rejection.

getName

Gets the name of the Thingy device.

Returns Promise<(string | Error)> Returns a string with the name when resolved or a promise with error on rejection.

gravityVectorEnable

Enables gravity vector notifications from Thingy. The assigned event handler will be called when notifications are received.

Parameters

Returns Promise<Error> Returns a promise when resolved or a promise with an error on rejection

headingEnable

Enables heading notifications from Thingy. The assigned event handler will be called when notifications are received.

Parameters

Returns Promise<Error> Returns a promise when resolved or a promise with an error on rejection

humidityEnable

Enables humidity notifications from Thingy. The assigned event handler will be called when notifications are received.

Parameters

Returns Promise<Error> Returns a promise when resolved or a promise with an error on rejection

ledBreathe

Sets the LED in "breathe" mode where the LED continuously pulses with the specified color, intensity and delay between pulses.

Parameters

Returns Promise<Error> Returns a resolved promise or an error in a rejected promise.

ledConstant

Sets the LED in constant mode with the specified RGB color.

Parameters

Returns Promise<Error> Returns a resolved promise or an error in a rejected promise.

ledOneShot

Sets the LED in one-shot mode. One-shot mode will result in one single pulse of the LED.

Parameters

Returns Promise<Error> Returns a resolved promise or an error in a rejected promise.

motionRawEnable

Enables raw motion data notifications from Thingy. The assigned event handler will be called when notifications are received.

Parameters

Returns Promise<Error> Returns a promise when resolved or a promise with an error on rejection

orientationEnable

Enables orientation detection notifications from Thingy. The assigned event handler will be called when notifications are received.

Parameters

Returns Promise<Error> Returns a promise when resolved or a promise with an error on rejection

pressureEnable

Enables pressure notifications from Thingy. The assigned event handler will be called when notifications are received.

Parameters

Returns Promise<Error> Returns a promise when resolved or a promise with an error on rejection

quaternionEnable

Enables quaternion notifications from Thingy. The assigned event handler will be called when notifications are received.

Parameters

Returns Promise<Error> Returns a promise when resolved or a promise with an error on rejection

rotationMatrixEnable

Enables rotation matrix notifications from Thingy. The assigned event handler will be called when notifications are received.

Parameters

Returns Promise<Error> Returns a promise when resolved or a promise with an error on rejection

setAdvParams

Sets the advertising parameters

Parameters

Returns Promise<Error> Returns a promise.

setCloudToken

Sets the cloud token.

Parameters

Returns Promise<Error> Returns a promise.

setColorInterval

Sets the color sensor update interval.

Parameters

Returns Promise<Error> Returns a promise when resolved or a promise with an error on rejection.

setConnInterval

Sets the connection interval

Parameters

Returns Promise<Error> Returns a promise.

setConnSlaveLatency

Sets the connection slave latency

Parameters

Returns Promise<Object> Returns a promise.

setConnTimeout

Sets the connection supervision timeout Note: According to the Bluetooth Low Energy specification, the supervision timeout in milliseconds must be greater than (1 + slaveLatency) maxConnInterval 2, where maxConnInterval is also given in milliseconds.

Parameters

Returns Promise<Error> Returns a promise.

setEddystoneUrl

Sets the Eddystone URL It's recommeended to use URL shortener to stay within the limit of 14 characters long URL URL scheme prefix such as "https://" and "https://www." do not count towards that limit, neither does expansion codes such as ".com/" and ".org". Full details in the Eddystone URL specification: https://github.com/google/eddystone/tree/master/eddystone-url

Parameters

Returns Promise<Error> Returns a promise.

setExternalPin

Set an external pin to chosen state.

Parameters

Returns Promise<Error> Returns a promise when resolved or a promise with an error on rejection.

setGasInterval

Sets the gas sensor sampling interval.

Parameters

Returns Promise<Error> Returns a promise when resolved or a promise with an error on rejection.

setHumidityInterval

Sets the humidity measurement update interval.

Parameters

Returns Promise<Error> Returns a promise when resolved or a promise with an error on rejection.

setMagnetCompInterval

Sets the magnetometer compensation interval.

Parameters

Returns Promise<Error> Returns a promise when resolved or a promise with an error on rejection.

setMotionProcessFrequency

Sets motion processing unit update frequency.

Parameters

Returns Promise<Error> Returns a promise when resolved or a promise with an error on rejection.

setMtu

Sets the current Maximal Transmission Unit (MTU)

Parameters

Returns Promise<Error> Returns a promise.

setName

Sets the name of the Thingy device.

Parameters

Returns Promise<Error> Returns a promise.

setPressureInterval

Sets the pressure measurement update interval.

Parameters

Returns Promise<Error> Returns a promise when resolved or a promise with an error on rejection.

setStepCounterInterval

Sets the step counter interval.

Parameters

Returns Promise<Error> Returns a promise when resolved or a promise with an error on rejection.

setTemperatureCompInterval

Sets the temperature compensation interval.

Parameters

Returns Promise<Error> Returns a promise when resolved or a promise with an error on rejection.

setTemperatureInterval

Sets the temperature measurement update interval.

Parameters

Returns Promise<Error> Returns a promise when resolved or a promise with an error on rejection.

setWakeOnMotion

Sets wake-on-motion feature to enabled or disabled state.

Parameters

Returns Promise<Error> Returns a promise when resolved or a promise with an error on rejection.

stepEnable

Enables step counter notifications from Thingy. The assigned event handler will be called when notifications are received.

Parameters

Returns Promise<Error> Returns a promise when resolved or a promise with an error on rejection

tapEnable

Enables tap detection notifications from Thingy. The assigned event handler will be called when notifications are received.

Parameters

Returns Promise<Error> Returns a promise when resolved or a promise with an error on rejection

temperatureEnable

Enables temperature notifications from Thingy. The assigned event handler will be called when notifications are received.

Parameters

Returns Promise<Error> Returns a promise when resolved or a promise with an error on rejection