UNPKG

bt-sensors-plugin-sk

Version:

Bluetooth Sensors for Signalk - see https://www.npmjs.com/package/bt-sensors-plugin-sk#supported-sensors for a list of supported sensors

371 lines (352 loc) 14.3 kB
/* [GOBIUS C]# list-attributes Primary Service (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0055 f000ffc0-0451-4000-b000-000000000000 Vendor specific Characteristic (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0055/char005e f000ffc5-0451-4000-b000-000000000000 Vendor specific Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0055/char005e/desc0061 00002901-0000-1000-8000-00805f9b34fb Characteristic User Description Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0055/char005e/desc0060 00002902-0000-1000-8000-00805f9b34fb Client Characteristic Configuration Characteristic (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0055/char005a f000ffc2-0451-4000-b000-000000000000 Vendor specific Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0055/char005a/desc005d 00002901-0000-1000-8000-00805f9b34fb Characteristic User Description Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0055/char005a/desc005c 00002902-0000-1000-8000-00805f9b34fb Client Characteristic Configuration Characteristic (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0055/char0056 f000ffc1-0451-4000-b000-000000000000 Vendor specific Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0055/char0056/desc0059 00002901-0000-1000-8000-00805f9b34fb Characteristic User Description Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0055/char0056/desc0058 00002902-0000-1000-8000-00805f9b34fb Client Characteristic Configuration Primary Service (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018 0000ffe0-0000-1000-8000-00805f9b34fb Unknown Characteristic (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char0052 0000fff3-0000-1000-8000-00805f9b34fb Unknown Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char0052/desc0054 00002901-0000-1000-8000-00805f9b34fb Characteristic User Description Characteristic (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char004f 0000fff2-0000-1000-8000-00805f9b34fb Unknown Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char004f/desc0051 00002901-0000-1000-8000-00805f9b34fb Characteristic User Description Characteristic (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char004b 0000fff1-0000-1000-8000-00805f9b34fb Unknown Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char004b/desc004e 00002901-0000-1000-8000-00805f9b34fb Characteristic User Description Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char004b/desc004d 00002902-0000-1000-8000-00805f9b34fb Client Characteristic Configuration Characteristic (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char0048 0000fff0-0000-1000-8000-00805f9b34fb Unknown Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char0048/desc004a 00002901-0000-1000-8000-00805f9b34fb Characteristic User Description Characteristic (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char0044 0000ffef-0000-1000-8000-00805f9b34fb Unknown Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char0044/desc0047 00002901-0000-1000-8000-00805f9b34fb Characteristic User Description Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char0044/desc0046 00002902-0000-1000-8000-00805f9b34fb Client Characteristic Configuration Characteristic (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char0041 0000ffee-0000-1000-8000-00805f9b34fb Unknown Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char0041/desc0043 00002901-0000-1000-8000-00805f9b34fb Characteristic User Description Characteristic (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char003e 0000ffed-0000-1000-8000-00805f9b34fb Unknown Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char003e/desc0040 00002901-0000-1000-8000-00805f9b34fb Characteristic User Description Characteristic (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char003b 0000ffec-0000-1000-8000-00805f9b34fb Unknown Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char003b/desc003d 00002901-0000-1000-8000-00805f9b34fb Characteristic User Description Characteristic (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char0038 0000ffeb-0000-1000-8000-00805f9b34fb Unknown Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char0038/desc003a 00002901-0000-1000-8000-00805f9b34fb Characteristic User Description Characteristic (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char0035 0000ffea-0000-1000-8000-00805f9b34fb Unknown Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char0035/desc0037 00002901-0000-1000-8000-00805f9b34fb Characteristic User Description Characteristic (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char0031 0000ffe9-0000-1000-8000-00805f9b34fb Unknown Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char0031/desc0034 00002901-0000-1000-8000-00805f9b34fb Characteristic User Description Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char0031/desc0033 00002902-0000-1000-8000-00805f9b34fb Client Characteristic Configuration Characteristic (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char002e 0000ffe8-0000-1000-8000-00805f9b34fb Unknown Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char002e/desc0030 00002901-0000-1000-8000-00805f9b34fb Characteristic User Description Characteristic (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char002b 0000ffe7-0000-1000-8000-00805f9b34fb Unknown Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char002b/desc002d 00002901-0000-1000-8000-00805f9b34fb Characteristic User Description Characteristic (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char0028 0000ffe6-0000-1000-8000-00805f9b34fb Unknown Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char0028/desc002a 00002901-0000-1000-8000-00805f9b34fb Characteristic User Description Characteristic (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char0025 0000ffe5-0000-1000-8000-00805f9b34fb Unknown Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char0025/desc0027 00002901-0000-1000-8000-00805f9b34fb Characteristic User Description Characteristic (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char0022 0000ffe4-0000-1000-8000-00805f9b34fb Unknown Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char0022/desc0024 00002901-0000-1000-8000-00805f9b34fb Characteristic User Description Characteristic (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char001f 0000ffe3-0000-1000-8000-00805f9b34fb Unknown Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char001f/desc0021 00002901-0000-1000-8000-00805f9b34fb Characteristic User Description Characteristic (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char001c 0000ffe2-0000-1000-8000-00805f9b34fb Unknown Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char001c/desc001e 00002901-0000-1000-8000-00805f9b34fb Characteristic User Description Characteristic (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char0019 0000ffe1-0000-1000-8000-00805f9b34fb Unknown Descriptor (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service0018/char0019/desc001b 00002901-0000-1000-8000-00805f9b34fb Characteristic User Description Primary Service (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service000d 0000180a-0000-1000-8000-00805f9b34fb Device Information Characteristic (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service000d/char0016 00002a29-0000-1000-8000-00805f9b34fb Manufacturer Name String Characteristic (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service000d/char0014 00002a28-0000-1000-8000-00805f9b34fb Software Revision String Characteristic (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service000d/char0012 00002a27-0000-1000-8000-00805f9b34fb Hardware Revision String Characteristic (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service000d/char0010 00002a25-0000-1000-8000-00805f9b34fb Serial Number String Characteristic (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service000d/char000e 00002a24-0000-1000-8000-00805f9b34fb Model Number String Primary Service (Handle 0x0000) /org/bluez/hci0/dev_34_68_B5_87_2E_04/service000c 00001801-0000-1000-8000-00805f9b34fb Generic Attribute Profile */ const BTSensor = require("../BTSensor"); const GobiusState=new Map( [[0x0, "Start-Up"], [0x1, "Self-Test"], [0x02, "Uninit"], [0x03, "Uncalibrated"], [0x04, "Calibration"], [0x05, "Active"], [0x06, "Error"], [0x07,"Production-Test"], [0x08, "HW-Test"]] ) class GobiusCTankMeter extends BTSensor{ static Domain = BTSensor.SensorDomains.tanks static async identify(device){ const name = await this.getDeviceProp(device,"Name") if (name && name.toLowerCase().startsWith('gobius c')) return this else return null } static ImageFile = "GobiusCTankMeter.png" hasGATT(){ return true } usingGATT(){ return true } emitGATT(){ this.characteristic.readValue() .then((buffer)=> this.emitValuesFrom( buffer) ) } initSchema(){ super.initSchema() this.getGATTParams()["useGATT"].default=true this.addParameter("type",{ tag: "type", description:"Type of tank", enum: [ "petrol", "freshWater", "greyWater", "blackWater", "holding", "lpg", "diesel", "liveWell", "baitWell", "ballast", "rum" ] }) this.addDefaultParam("id") .default="1" this.addParameter("capacity", { title:"capacity of tank in m3 (liters/1000)", type:"number", unit:"m3", isRequired: true, default:10000 } ) this.addMetadatum("mst","","Device state", (buffer)=>{return GobiusState.get(buffer.readInt8(0))} ) .default='tanks.{type}.{id}.deviceState' this.addMetadatum("msb","","Device status", (buffer)=>{return buffer.readInt8(1)} ) .default='tanks.{type}.{id}.deviceStatus' this.addMetadatum("mvd","","Measurement validity 0=invalid 1=valid", (buffer)=>{return buffer.readInt8(2)} ) .default='tanks.{type}.{id}.measurementValidity' this.addMetadatum("mfl","ratio","Current level", (buffer)=>{return buffer.readInt16BE(3)/1000} ) .default='tanks.{type}.{id}.currentLevel' this.addMetadatum("mfr","m3","Remaining volume", (buffer)=>{return this.capacity*(buffer.readInt16BE(3)/1000)} ) .default='tanks.{type}.{id}.remaining' this.addMetadatum("minc","rad","Sensor inclination", (buffer)=>{return buffer.readInt8(5) * Math.PI/180} ) .default='tanks.{type}.{id}.inclination' this.addMetadatum("mdist","mm","Distance from sensor enclosure interface [mm]", (buffer)=>{return buffer.readInt16BE(6) } ) .default='tanks.{type}.{id}.distanceFromEnclosure' this.getJSONSchema().properties.params.required=["type" ] } async initGATTConnection(isReconnecting){ await super.initGATTConnection(isReconnecting) const gattServer = await this.getGATTServer() const service = await gattServer.getPrimaryService("0000ffe0-0000-1000-8000-00805f9b34fb") this.characteristic = await service.getCharacteristic("0000ffe9-0000-1000-8000-00805f9b34fb") } async initGATTNotifications() { await this.characteristic.startNotifications() this.characteristic.on('valuechanged', buffer => { this.emitValuesFrom(buffer) }) } async deactivateGATT(){ await this.stopGATTNotifications(this.characteristic) await super.deactivateGATT() } } module.exports=GobiusCTankMeter