Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

sensortag

sandeepmistry97MIT1.3.0

Node.js lib for the TI SensorTag

TI, SensorTag

readme

node-sensortag

Gitter

Node.js lib for the TI SensorTag and TI CC2650 SensorTag

Prerequisites

Install

npm install sensortag

Examples

See test.js or sensorTag folder in Tom Igoe's BluetoothLE-Examples repo

Usage

var SensorTag = require('sensortag');

Discover

One

SensorTag.discover(callback(sensorTag));

All

function onDiscover(sensorTag) {
  // ...
}

SensorTag.discoverAll(onDiscover);

SensorTag.stopDiscoverAll(onDiscover);

By id

SensorTag.discoverById(id, callback(sensorTag));

By address

SensorTag.discoverByAddress(address, callback(sensorTag));

Properties:

sensorTag = {
  id: "<peripheral id>",
  type: "cc2540" | "cc2650"
}

Connect and Set Up

sensorTag.connectAndSetUp(callback(error));

Disconnect

sensorTag.disconnect(callback);

Disconnect event

Add listener for when SensorTag is disconnected:

sensorTag.once('disconnect', callback);

Device Info

sensorTag.readDeviceName(callback(error, deviceName));

sensorTag.readSystemId(callback(error, systemId));

sensorTag.readSerialNumber(callback(error, serialNumber));

sensorTag.readFirmwareRevision(callback(error, firmwareRevision));

sensorTag.readHardwareRevision(callback(error, hardwareRevision));

sensorTag.readSoftwareRevision(callback(error, softwareRevision));

sensorTag.readManufacturerName(callback(error, manufacturerName));

IR Temperature Sensor

Enable/disable

sensorTag.enableIrTemperature(callback(error));

sensorTag.disableIrTemperature(callback(error));

sensorTag.setIrTemperaturePeriod(period, callback(error)); // period min 300ms, default period is 1000 ms

Read

sensorTag.readIrTemperature(callback(error, objectTemperature, ambientTemperature));

Notify/Unnotify

sensorTag.notifyIrTemperature(callback(error));

sensorTag.unnotifyIrTemperature(callback(error));

sensorTag.on('irTemperatureChange', callback(objectTemperature, ambientTemperature));

Accelerometer

Enable/disable/configure

sensorTag.enableAccelerometer(callback(error));

sensorTag.disableAccelerometer(callback(error));

// CC2540: period 1 - 2550 ms, default period is 2000 ms
// CC2650: period 100 - 2550 ms, default period is 1000 ms
sensorTag.setAccelerometerPeriod(period, callback(error));

Read

sensorTag.readAccelerometer(callback(error, x, y, z));

Notify/Unnotify

sensorTag.notifyAccelerometer(callback(error));

sensorTag.unnotifyAccelerometer(callback(error));

sensorTag.on('accelerometerChange', callback(x, y, z));

Humidity Sensor

Enable/disable

sensorTag.enableHumidity(callback(error));

sensorTag.disableHumidity(callback(error));

sensorTag.setHumidityPeriod(period, callback(error));

Read

sensorTag.readHumidity(callback(error, temperature, humidity));

Notify/Unnotify

sensorTag.notifyHumidity(callback(error));

sensorTag.unnotifyHumidity(callback(error));

sensorTag.on('humidityChange', callback(temperature, humidity));

Magnetometer

Enable/disable

sensorTag.enableMagnetometer(callback(error));

sensorTag.disableMagnetometer(callback(error));

// CC2540: period 1 - 2550 ms, default period is 2000 ms
// CC2650: period 100 - 2550 ms, default period is 1000 ms
sensorTag.setMagnetometerPeriod(period, callback(error));

Read

sensorTag.readMagnetometer(callback(error, x, y, z));

Notify/Unnotify

sensorTag.notifyMagnetometer(callback(error));

sensorTag.unnotifyMagnetometer(callback(error));

sensorTag.on('magnetometerChange', callback(x, y, z));

Barometric Pressure Sensor

Enable/disable

sensorTag.enableBarometricPressure(callback(error));

sensorTag.disableBarometricPressure(callback(error));

sensorTag.setBarometricPressurePeriod(period, callback(error)); // period 100 - 2550 ms

Read

sensorTag.readBarometricPressure(callback(error, pressure));

Notify/Unnotify

sensorTag.notifyBarometricPressure(callback(error));

sensorTag.unnotifyBarometricPressure(callback(error));

sensorTag.on('barometricPressureChange', callback(pressure));

Gyroscope

Enable/disable/configure

sensorTag.enableGyroscope(callback(error));

sensorTag.disableGyroscope(callback(error));

// period 100 - 2550 ms, default period is 1000 ms
sensorTag.setGyroscopePeriod(period, callback(error));

Read

sensorTag.readGyroscope(callback(error, x, y, z));

Notify/Unnotify

sensorTag.notifyGyroscope(callback(error));

sensorTag.unnotifyGyroscope(callback(error));

sensorTag.on('gyroscopeChange', callback(x, y, z));

IO (CC2650 only)

Data read/write

sensorTag.readIoData(callback(error, value));
sensorTag.writeIoData(value, callback(error));

Config read/write

sensorTag.readIoConfig(callback(error, value));
sensorTag.writeIoConfig(value, callback(error));

Luxometer (CC2650 only)

Enable/disable/configure

sensorTag.enableLuxometer(callback(error));

sensorTag.disableLuxometer(callback(error));

sensorTag.setLuxometerPeriod(period, callback(error));

Read

sensorTag.readLuxometer(callback(error, lux));

Notify/Unnotify

sensorTag.notifyLuxometer(callback(error));

sensorTag.unnotifyLuxometer(callback(error));

sensorTag.on('luxometerChange', callback(lux));

Battery Level (CC2650 only)

Read

sensorTag.readBatteryLevel(callback(error, batteryLevel));

Simple Key

Notify/Unnotify

sensorTag.notifySimpleKey(callback(error));

sensorTag.unnotifySimpleKey(callback(error));

CC2540:

sensorTag.on('simpleKeyChange', callback(left, right));

CC2650:

sensorTag.on('simpleKeyChange', callback(left, right, reedRelay));

changelog

Version 1.3.0

  • Add support to CC2650 battery service (@micahnyc)

Version 1.2.3

  • CC2650 now also treats advertised service UUID aa80 as device (@julianoAffonso)
  • use noble-device ^1.4.1

Version 1.2.2

  • revert "only set specific MPU9250 sensor bits with enabling/disabling"

Version 1.2.1

  • only set specific MPU9250 sensor bits with enabling/disabling
  • use 8G accelerometer mode and conversion formula (#62)
  • update MPU9250 formulas to match TI Android source code

Version 1.2.0

  • new CC2650 IO API's: readIoData, writeIoData, readIoConfig, and writeIoConfig
  • add reedRelay arg to simpleKeyChange event for CC2650

Version 1.1.1

  • add missing discoverById API

Version 1.1

  • use noble-device ^1.1.0
  • use id instead of uuid
  • new discoverByAddress and discoverById API's - discoverByUuid is deprecated now

Version 1.0.2

  • Correct code for reading barometric pressure with firmware 0.89 or older (@bChiquet)

Version 1.0.1

  • barometric sensor reading and luxometer conversion formula corrections (@martin-doyle)

Version 1.0

  • use noble-device instead of noble directly
  • add error parameters to callbacks
  • support for SensorTag 2.0 / CC2650
  • remove enableGyroscopeAxis API
  • new discoverAll, stopDiscoverAll, and discoverByUuid API's

Older

  • Changes not recorded