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
JavaScript
/*
[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