bt-sensors-plugin-sk 1.2.0-beta.0.0.5 → 1.2.0-beta.0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/BTSensor.js CHANGED
@@ -101,6 +101,7 @@ function preparePath(obj, str) {
101
101
 
102
102
  class BTSensor extends EventEmitter {
103
103
  //static metadata=new Map()
104
+
104
105
  static DEFAULTS = require('./plugin_defaults.json');
105
106
 
106
107
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bt-sensors-plugin-sk",
3
- "version": "1.2.0-beta.0.0.5",
3
+ "version": "1.2.0-beta.0.0.6",
4
4
  "description": "Bluetooth Sensors for Signalk -- support for Victron devices, RuuviTag, Xiaomi, ATC and Inkbird, Ultrasonic wind meters, Mopeka tank readers, Renogy Battery and Solar Controllers, Aranet4 environment sensors, SwitchBot temp and humidity sensors, KilovaultHLXPlus smart batteries, and Govee GVH51xx temp sensors",
5
5
  "main": "index.js",
6
6
  "dependencies": {
@@ -276,7 +276,7 @@ class MopekaTankSensor extends BTSensor{
276
276
  this.addParameter("medium",
277
277
  {
278
278
  title:"type of liquid in tank",
279
- enum: Object.keys(Media)
279
+ enum: Object.keys(Media)
280
280
  }
281
281
  )
282
282
  this.addParameter("tankHeight",
@@ -286,34 +286,43 @@ class MopekaTankSensor extends BTSensor{
286
286
  unit:"mm"
287
287
  }
288
288
  )
289
+ this.addDefaultParam("id")
289
290
 
290
- this.addMetadatum("battVolt","V","sensor battery in volts",
291
- ((buffer)=>{
291
+ this.addDefaultPath("battVolt","sensors.batteryVoltage")
292
+ .read=((buffer)=>{
292
293
  this.battVolt = (buffer.readUInt8(1)/32)
293
294
  return this.battVolt
294
295
  }).bind(this)
295
- )
296
- this.addMetadatum("battStrength","ratio","sensor battery strength",
297
- (buffer)=>{ return Math.max(0, Math.min(1, (((this.battVolt) - 2.2) / 0.65))) }
298
- )
296
+
297
+ this.addDefaultPath("battStrength", "sensors.batteryStrength")
298
+ .read=(buffer)=>{ return Math.max(0, Math.min(1, (((this.battVolt) - 2.2) / 0.65))) }
299
+
299
300
  this.addMetadatum("temp","K","temperature",
300
301
  ((buffer)=>{
301
302
  this.temp = parseFloat(((buffer.readUInt8(2)&0x7F)+233.15).toFixed(2))
302
303
  return this.temp
303
- }).bind(this)
304
+ })
304
305
  )
306
+ .default="tanks.{id}.temperature"
305
307
  this.addMetadatum("tankLevel","ratio","tank level",
306
308
  (buffer)=>{ return (this._tankLevel(((buffer.readUInt16LE(3))&0x3FFF)))/this.getTankHeight()}
307
309
  )
310
+ .default="tanks.{id}.currentLevel"
311
+
308
312
  this.addMetadatum("readingQuality","","quality of read",
309
313
  (buffer)=>{ return buffer.readUInt8(4)>>6}
310
314
  )
315
+ .default="sensors.{macAndName}.readingQuality"
316
+
311
317
  this.addMetadatum("accX","Mg","acceleration on X-axis",
312
318
  (buffer)=>{ return buffer.readUInt8(8)}
313
319
  )
320
+ .default="sensors.{macAndName}.accelerationXAxis"
321
+
314
322
  this.addMetadatum("accY","Mg","acceleration on Y-axis",
315
323
  (buffer)=>{ return buffer.readUInt8(9)}
316
324
  )
325
+ .default="sensors.{macAndName}.accelerationYAxis"
317
326
  }
318
327
 
319
328
  propertiesChanged(props){
@@ -326,8 +335,8 @@ class MopekaTankSensor extends BTSensor{
326
335
  if (this.name)
327
336
  return this.name
328
337
 
329
- const _name = MopekaDevices.get(this?.modelID??0x0).name
330
- return _name?_name:MopekaDevices.get(0x0).name
338
+ const _name = MopekaDevice.get(this?.modelID??0x0).name
339
+ return _name?_name:MopekaDevice.get(0x0).name
331
340
 
332
341
  }
333
342
  }
@@ -27,16 +27,20 @@ class UltrasonicWindMeter extends BTSensor{
27
27
  )
28
28
 
29
29
  }
30
- async init(){
31
- await super.init()
32
- this.addMetadatum("batt","ratio","Battery strength",
33
- (buffer)=>{return (buffer.readUInt8())/100})
30
+ initSchema(){
31
+ super.initSchema()
32
+ this.addDefaultPath("batt",'sensors.batteryStrength')
33
+ .read=(buffer)=>{return (buffer.readUInt8())/100}
34
+
34
35
  this.addMetadatum("awa","rad","Apparent Wind Angle",
35
36
  (buffer)=>{return ((buffer.readInt16LE())/100)*(Math.PI/180)}
36
37
  )
38
+ .default='environment.wind.angleApparent'
39
+
37
40
  this.addMetadatum("aws","m/s","Apparent Wind Speed",
38
41
  (buffer)=>{return (buffer.readInt16LE()/100)*.514444} //convert knots to m/s
39
42
  )
43
+ .default='environment.wind.speedApparent'
40
44
  }
41
45
 
42
46
  initGATTConnection(){
@@ -31,28 +31,39 @@ class VictronACCharger extends VictronSensor{
31
31
 
32
32
  initSchema(){
33
33
  super.initSchema()
34
+ this.addDefaultParam("id")
34
35
 
35
36
  this.addMetadatum('state','', 'device state',
36
37
  (buff)=>{return VC.OperationMode.get(buff.readUInt8(0))})
37
-
38
+ .default= "electrical.chargers.{id}.state"
38
39
  this.addMetadatum('chargerError','', 'charger error code',
39
40
  (buff)=>{return VC.ChargerError.get(buff.readUInt8(1))})
40
-
41
+ .default= "electrical.chargers.{id}.error"
42
+
41
43
  this.addMetadatum('batt1','V', 'battery 1 voltage')
44
+ .default= "electrical.chargers.{id}.battery1.voltage"
42
45
 
43
46
  this.addMetadatum('curr1','A', 'battery 1 current')
47
+ .default= "electrical.chargers.{id}.battery1.current"
44
48
 
45
49
  this.addMetadatum('batt2','V', 'battery 2 voltage')
50
+ .default= "electrical.chargers.{id}.battery2.voltage"
46
51
 
47
52
  this.addMetadatum('curr2','A', 'battery 2 current')
53
+ .default= "electrical.chargers.{id}.battery2.current"
48
54
 
49
55
  this.addMetadatum('batt3','V', 'battery 3 voltage')
56
+ .default= "electrical.chargers.{id}.battery3.voltage"
50
57
 
51
58
  this.addMetadatum('curr3','A', 'battery 3 current')
52
-
53
- this.addMetadatum('temp', 'K', 'battery temperature')
59
+ .default= "electrical.chargers.{id}.battery3.current"
60
+
61
+ this.addMetadatum('temp', 'K', 'charger temperature')
62
+ .default= "electrical.chargers.{id}.temperature"
54
63
 
55
64
  this.addMetadatum('acCurr','A', 'AC current')
65
+ .default= "electrical.chargers.{id}.ac.current"
66
+
56
67
  }
57
68
  emitValuesFrom(buffer){
58
69
  super.emitValuesFrom(buffer)
@@ -11,22 +11,33 @@ class VictronInverterRS extends VictronSensor{
11
11
 
12
12
 
13
13
  initSchema() {
14
- super.initSchema()
15
-
14
+ super.initSchema()
15
+ this.addDefaultParam("id")
16
16
  this.addMetadatum('deviceState','', 'inverter device state',
17
- (buff)=>{return VC.OperationMode.get(buff.readIntU8(0))})
17
+ (buff)=>{return VC.OperationMode.get(buff.readIntU8(0))})
18
+ .default='electrical.inverters.{id}.state'
19
+
18
20
  const md = this.addMetadatum('chargerError','', 'charger error',
19
- (buff)=>{return VC.ChargerError(buff.readIntU8(1))})
20
- md.notify=true
21
+ (buff)=>{return VC.ChargerError(buff.readIntU8(1))})
22
+ .default='electrical.inverters.{id}.error'
23
+ md.notify=true
21
24
 
22
25
  this.addMetadatum('batteryVoltage','V', 'battery voltage',
23
26
  (buff)=>{return this.NaNif(buff.readInt16LE(2),0x7FFF)/100})
27
+ .default='electrical.inverters.{id}.battery.voltage'
28
+
24
29
  this.addMetadatum('pvPower','W', 'PV power',
25
30
  (buff)=>{return this.NaNif(buff.readUInt16LE(4), 0xffff)})
31
+ .default='electrical.inverters.{id}.power'
32
+
26
33
  this.addMetadatum('yieldToday','W', 'yield yoday in watts',
27
34
  (buff)=>{return this.NaNif(buff.readUInt16LE(6), 0xffff)*10})
35
+ .default='electrical.inverters.{id}.yieldToday'
36
+
28
37
  this.addMetadatum('acOutPower','W', 'AC out power in watts',
29
- (buff)=>{this.NaNif(buff.readInt16LE(8), 0x7fff)})
38
+ (buff)=>{this.NaNif(buff.readInt16LE(8), 0x7fff)})
39
+ .default='electrical.inverters.{id}.ac.power'
40
+
30
41
  }
31
42
 
32
43
  emitValuesFrom(decData){
@@ -22,24 +22,28 @@ class VictronLynxSmartBMS extends VictronSensor{
22
22
  return await this.identifyMode(device, 0x0A)
23
23
  }
24
24
 
25
-
26
25
  initSchema(){
27
26
  super.initSchema()
28
27
  this.addMetadatum('error','', 'error code',
29
28
  (buff)=>{return buff.readUInt8(0)})
30
29
 
31
- this.addMetadatum('ttg','s', 'time to go (in seconds)',
32
- (buff)=>{return this.NaNif(buff.readUInt16LE(1),0xFFFF)*60})
33
- this.addMetadatum('voltage','V', 'channel 1 voltage',
34
- (buff)=>{return this.NaNif(buff.readInt16LE(3),0x7FFF)/100})
35
- this.addMetadatum('current','A','channel 1 current',
36
- (buff)=>{return this.NaNif(buff.readInt16LE(5),0x7FFF)/10})
30
+ this.addDefaultPath('ttg','electrical.batteries.capacity.timeRemaining')
31
+ .read=(buff)=>{return this.NaNif(buff.readUInt16LE(1),0xFFFF)*60}
32
+ this.addDefaultPath('voltage','electrical.batteries.voltage')
33
+ .read=(buff)=>{return this.NaNif(buff.readInt16LE(3),0x7FFF)/100}
34
+ this.addDefaultPath('current','electrical.batteries.current')
35
+ .read=(buff)=>{return this.NaNif(buff.readInt16LE(5),0x7FFF)/10}
36
+
37
37
  this.addMetadatum('ioStatus','','IO Status', //TODO
38
38
  (buff)=>{return buff.readUInt16LE(7)})
39
+
39
40
  this.addMetadatum('warningsAndAlarms','','warnings and alarms')
40
- this.addMetadatum('soc','','state of charge')
41
+
42
+ this.addDefaultPath('soc','electrical.batteries.capacity.stateOfCharge')
41
43
  this.addMetadatum('consumedAh','Ah','amp-hours consumed')
42
- this.addMetadatum('temp', 'K', 'battery temperature')
44
+ .default="electrical.batteries.{batteryID}.capacity.ampHoursConsumed"
45
+
46
+ this.addDefaultPath('temp', 'electrical.batteries.temperature')
43
47
  }
44
48
  emitValuesFrom(buffer){
45
49
  super.emitValuesFrom(buffer)
@@ -10,20 +10,32 @@ class VictronOrionXS extends VictronSensor{
10
10
  }
11
11
  initSchema() {
12
12
  super.initSchema()
13
+ this.addDefaultParam("id")
13
14
  this.addMetadatum('deviceState','', 'device state',
14
15
  (buff)=>{return VC.OperationMode.get(buff.readUInt8(0))})
16
+ .default="electrical.chargers.{id}.state"
17
+
15
18
  this.addMetadatum('chargerError','', 'charger error',
16
19
  (buff)=>{return VC.ChargerError.get(buff.readUInt8(1))})
20
+ .default="electrical.chargers.{id}.error"
21
+
17
22
  this.addMetadatum('outputVoltage','V', 'output voltage',
18
23
  (buff)=>{return this.NaNif(buff.readInt16LE(2),0x7FF)/100})
24
+ .default="electrical.chargers.{id}.output.voltage"
25
+
26
+
19
27
  this.addMetadatum('current','A','output current',
20
28
  (buff)=>{return this.NaNif(buff.readUInt16LE(4),0xFFFF)/10})
29
+ .default="electrical.chargers.{id}.output.current"
21
30
  this.addMetadatum('inputVoltage','V', 'input voltage',
22
31
  (buff)=>{return this.NaNif(buff.readInt16LE(6),0x07FF)/100})
32
+ .default="electrical.chargers.{id}.input.voltage"
23
33
  this.addMetadatum('inputCurrent','A','input current',
24
34
  (buff)=>{return this.NaNif(buff.readUInt16LE(8),0xFFFF)/10})
35
+ .default="electrical.chargers.{id}.input.current"
25
36
  this.addMetadatum('deviceOffReason','', 'device off reason',
26
- (buff)=>{return VC.OffReasons(buff.readUInt32BE(10))})
37
+ (buff)=>{return VC.OffReasons(buff.readUInt32BE(10))})
38
+ .default="electrical.chargers.{id}.offReason"
27
39
  }
28
40
 
29
41
  }