flower-power-ble
Version:
node.js/BLE lib to comminucate with Parrot Flower Power devices
232 lines (159 loc) • 4.9 kB
Markdown
flower-power-ble
=================
[](https://github.com/igrigorik/ga-beacon)
node.js lib for the [Parrot Flower Power](http://www.parrot.com/usa/products/flower-power/)
Install
-------
```sh
$ npm install flower-power-ble
```
Usage
-----
```javascript
var FlowerPower = require('flower-power-ble');
```
__Discover__
```javascript
// Discover one Flower Power
FlowerPower.discover(callback(flowerPower));
// Discover all Flower Power's
FlowerPower.discoverAll(callback(flowerPower));
```
__Connect and Setup__
```javascript
flowerPower.connectAndSetup(callback(error));
```
__Disconnect__
```javascript
flowerPower.disconnect(callback(error));
```
__Device Info__
```javascript
flowerPower.readSystemId(callback(error, systemId));
flowerPower.readSerialNumber(callback(error, serialNumber));
flowerPower.readFirmwareRevision(callback(error, firmwareRevision));
flowerPower.readHardwareRevision(callback(error, hardwareRevision));
flowerPower.readManufacturerName(callback(error, manufacturerName));
```
__Other Info__
```javascript
flowerPower.readFriendlyName(callback(error, friendlyName));
flowerPower.writeFriendlyName(friendlyName, callback(error));
flowerPower.readColor(callback(error, color));
```
__Battery Level__
```javascript
// batteryLevel range is 0 - 100
flowerPower.readBatteryLevel(callback(error, batteryLevel));
```
__Sunlight__
```javascript
// sunlight units are photons per square meter
flowerPower.readSunlight(callback(error, sunlight));
```
__Soil Temperature__
```javascript
flowerPower.readSoilTemperature(callback(error, temperature)); // C
```
__Air Temperature__
```javascript
flowerPower.readAirTemperature(callback(error, temperature)); // C
```
__Soil Moisture__
```javascript
// soilMoisture units is percentage (%)
flowerPower.readSoilMoisture(callback(error, soilMoisture));
```
__Calibrated__
```javascript
// firmware versions 1.1 and above
flowerPower.readCalibratedSoilMoisture(callback(error, soilMoisture)); // %
flowerPower.readCalibratedAirTemperature(callback(error, temperature)); // C
flowerPower.readCalibratedSunlight(callback(error, sunlight)); // photons per square meter (mol/m²/d)
flowerPower.readCalibratedEa(callback(error, ea)); // no units
flowerPower.readCalibratedEcb(callback(error, ecb)); // dS/m
flowerPower.readCalibratedEcPorous(callback(error, ecPorous)); // dS/m
```
__Live mode__
```javascript
// sunlightChange, soilTemperatureChange, airTemperatureChange,
// soilMoistureChange events are emitted (see below)
flowerPower.enableLiveMode(callback(error));
flowerPower.disableLiveMode(callback(error));
```
__Calibrated live mode__
```javascript
// firmware versions 1.1 and above
// calibratedSoilMoistureChange, calibratedAirTemperatureChange,
// calibratedSunlightChange, calibratedEaChange, calibratedEcbChange,
// calibratedEcPorousChange events are emitted (see below)
flowerPower.enableCalibratedLiveMode(callback(error));
flowerPower.disableCalibratedLiveMode(callback(error));
```
__LED__
```javascript
flowerPower.ledFade(callback(error));
flowerPower.ledOff(callback(error));
```
__History__
```javascript
flowerPower.getHistory(index, callback(error, history));
```
__Update firmware__
```javascript
flowerPower.updateFirmware(file.bin, callback(error));
```
Events
------
__Disconnect__
```javascript
flowerPower.on('disconnect', callback);
```
__Sunlight Change__
```javascript
flowerPower.on('sunlightChange', callback(sunlight));
```
__Soil Temperature Change__
```javascript
flowerPower.on('soilTemperatureChange', callback(soilTemperature));
```
__Air Temperature Change__
```javascript
flowerPower.on('airTemperatureChange', callback(airTemperature));
```
__Soil Moisture Change__
```javascript
flowerPower.on('soilMoistureChange', callback(soilMoisture));
```
__Calibrated Change__
```javascript
flowerPower.on('calibratedSoilMoistureChange', callback(soilMoisture));
flowerPower.on('calibratedAirTemperatureChange', callback(temperature));
flowerPower.on('calibratedSunlightChange', callback(sunlight));
flowerPower.on('calibratedEaChange', callback(ea));
flowerPower.on('calibratedEcbChange', callback(ecb));
flowerPower.on('calibratedEcPorousChange', callback(ecPorous));
```
TODO
----
* ~~discover~~
* ~~connect~~
* ~~discover~~
* ~~discover services and characteristics~~
* ~~read device info~~
* ~~system id~~
* ~~serial number~~
* ~~firmware revision~~
* ~~hardware revision~~
* ~~read battery level~~
* ~~read sunlight~~
* ~~read temperature~~
* ~~read soil moisture~~
* ~~live mode~~
* ~~sunlight~~
* ~~temperature~~
* ~~soil moisture~~
* ~~read fertilizer~~
* ~~read historic data~~
* ~~update firmware~~
* ~~__use calculations to convert values__ (currently using lookup table)~~