UNPKG

flower-power-ble

Version:

node.js/BLE lib to comminucate with Parrot Flower Power devices

232 lines (159 loc) 4.9 kB
flower-power-ble ================= [![Analytics](https://ga-beacon.appspot.com/UA-56089547-1/sandeepmistry/node-flower-power?pixel)](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)~~