node-sensortag
Node.js lib for the TI SensorTag and TI CC2650 SensorTag
Prerequisites
NOTE: Certain API's may not be funcational if your SensorTag is running an older firmware version. You can use TI's iOS or Android apps to update the firmare.
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));