bt-sensors-plugin-sk 1.3.1 → 1.3.2

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
@@ -856,6 +856,10 @@ class BTSensor extends EventEmitter {
856
856
  return this.currentProperties?.RSSI??NaN
857
857
  }
858
858
 
859
+ isPaired(){
860
+ return this.currentProperties?.Paired??false
861
+ }
862
+
859
863
  getSignalStrength(){
860
864
  const rssi = this.getRSSI()
861
865
  if (!rssi)
package/README.md CHANGED
@@ -1,7 +1,11 @@
1
1
  # Bluetooth Sensors for [Signal K](http://www.signalk.org)
2
2
 
3
3
  ## WHAT'S NEW
4
+ # Version 1.3.2
4
5
 
6
+ - Victron Alarm Reason improvements
7
+ - VictronOrionXS offReason text implementation
8
+ - Shelly Blu H&T description changes
5
9
 
6
10
  # Version 1.3.1
7
11
 
package/index.js CHANGED
@@ -110,7 +110,7 @@ class MissingSensor {
110
110
  on(){
111
111
 
112
112
  }
113
-
113
+ stopNotifications(){}
114
114
  isError(){
115
115
  return true
116
116
  }
@@ -550,7 +550,6 @@ module.exports = function (app) {
550
550
  c.debug=app.debug
551
551
 
552
552
  const sensor = new c(device, config?.params, config?.gattParams)
553
-
554
553
  sensor._paths=config.paths //this might be a good candidate for refactoring
555
554
  sensor._app=app
556
555
  sensor._adapter=adapter //HACK!
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bt-sensors-plugin-sk",
3
- "version": "1.3.1",
3
+ "version": "1.3.2",
4
4
  "description": "Bluetooth Sensors for Signalk - see https://www.npmjs.com/package/bt-sensors-plugin-sk#supported-sensors for a list of supported sensors",
5
5
  "main": "index.js",
6
6
  "dependencies": {
@@ -348,7 +348,7 @@ class GobiusCTankMeter extends BTSensor{
348
348
  }
349
349
 
350
350
  async deactivateGATT(){
351
- await this.stopNotifications(this.characteristic)
351
+ await this.stopGATTNotifications(this.characteristic)
352
352
  await super.deactivateGATT()
353
353
  }
354
354
 
@@ -84,10 +84,19 @@ class JBDBMS extends BTSensor {
84
84
 
85
85
  this.addDefaultPath('SOC','electrical.batteries.capacity.stateOfCharge')
86
86
  .read=(buffer)=>{return buffer.readUInt8(23)/100}
87
-
88
- this.addMetadatum('FET', '', 'FET Control',
89
- (buffer)=>{return buffer.readUInt8(24)} )
90
- .default="electrical.batteries.{batteryID}.FETControl"
87
+
88
+
89
+ this.addMetadatum('FET', '', 'FET On/Off Status',
90
+ (buffer)=>{return buffer.readUInt8(24) !=0 } )
91
+ .default="electrical.batteries.{batteryID}.FETStatus"
92
+
93
+ this.addMetadatum('FETCharging', '', 'FET Status Charging',
94
+ (buffer)=>{return (buffer.readUInt8(24) & 0x1) !=0 })
95
+ .default="electrical.batteries.{batteryID}.FETStatus.charging"
96
+
97
+ this.addMetadatum('FETDischarging', '', 'FET Status Discharging',
98
+ (buffer)=>{return (buffer.readUInt8(24) & 0x2) !=0 })
99
+ .default="electrical.batteries.{batteryID}.FETStatus.discharging"
91
100
 
92
101
  await this.deviceConnect()
93
102
  const gattServer = await this.device.gatt()
@@ -20,10 +20,10 @@ class ShellySBHT003C extends AbstractBTHomeSensor {
20
20
 
21
21
 
22
22
  getTextDescription(){
23
- return `NOTE: Device must be paired with SignalK server machine to operate properly. For more information about the sensor go here: <a href=https://us.shelly.com/products/shelly-blu-h-t-black target="_blank">Shelly Blu H&T</a>.`
23
+ return `NOTE: Device must be paired with SignalK server machine or you won't see updates (see: <a href=https://shelly-api-docs.shelly.cloud/docs-ble/common#pairing target="_blank">https://shelly-api-docs.shelly.cloud/docs-ble/common#pairing</a> ). For more information about the sensor go here: <a href=https://us.shelly.com/blogs/documentation/shelly-blu-h-t target="_blank">Shelly Blu H&T</a>.<br><br>Alternatively you can edit your /etc/bluetooth/main.conf file and set "TemporaryTimeout = 90" in the [General] section, then restart the bluetooth service.`
24
24
  }
25
25
 
26
- initSchema() {
26
+ initSchema() {
27
27
  super.initSchema()
28
28
  this.addDefaultParam("zone")
29
29
 
@@ -20,11 +20,11 @@ class ShellySBMO003Z extends AbstractBTHomeSensor {
20
20
  * @type {string}
21
21
  */
22
22
  static LOCAL_NAME="Shelly BLU Motion";
23
- static ImageFile="ShellyBLUMotion.webp"
23
+ static ImageFile="ShellyBLUMotion.webp"
24
24
 
25
25
  getTextDescription(){
26
- return `NOTE: Device must be paired with SignalK server machine to operate properly. For more information about the sensor go here: <a href=https://us.shelly.com/products/shelly-blu-motion target="_blank">Shelly Blu Motion</a>.`
27
- }
26
+ return `${!this.isPaired()?"NOTE: Device must be paired with SignalK server machine to operate properly (see: <a href=https://shelly-api-docs.shelly.cloud/docs-ble/common#pairing target=\"_blank\">https://shelly-api-docs.shelly.cloud/docs-ble/common#pairing</a> ":"Device is paired."}).<br><br>For more information about the sensor click here: <a href=https://us.shelly.com/products/shelly-blu-motion target="_blank">Shelly Blu Motion</a>.`
27
+ }
28
28
 
29
29
  initSchema() {
30
30
  super.initSchema()
@@ -62,20 +62,6 @@ class ShellySBMO003Z extends AbstractBTHomeSensor {
62
62
  .default="sensors.{macAndName}.button"
63
63
 
64
64
 
65
- /*
66
- this.addMetadatum(
67
- "packetID",
68
- null,
69
- "packetID from sensor",
70
- this.parsePacketID.bind(this)
71
- )
72
- .default="sensors.{macAndName}.packetID"
73
- */
74
-
75
- }
76
- getState() {
77
-
78
- return super.getState()
79
65
  }
80
66
  }
81
67
 
@@ -18,6 +18,14 @@ const ProtectionStatus = {
18
18
  0x4000: "Short Circuit Protection"
19
19
  }
20
20
 
21
+ const BatteryState = {
22
+ 0: "Discharging/Idle",
23
+ 1: "Charging",
24
+ 2: "Discharging",
25
+ 4: "Charge Disabled"
26
+
27
+ }
28
+
21
29
  class ShenzhenLiONBMS extends BTSensor{
22
30
  static Domain = BTSensor.SensorDomains.electrical
23
31
  static ImageFile = "LiTimeLiFePo4Battery.avif"
@@ -91,6 +99,9 @@ class ShenzhenLiONBMS extends BTSensor{
91
99
  this.addMetadatum(`cell${cellNum+1}Voltage`,'V', `cell #${cellNum+1} voltage`,
92
100
  (buff)=>{return buff.readInt16LE(16+(cellNum*2)) /1000})
93
101
  .default=`electrical.batteries.{batteryID}.cells.${cellNum+1}.voltage`
102
+
103
+ this.addMetadatum(`cell${cellNum+1}Balancing`,'', `cell #${cellNum+1} balance state (true=balancing)`)
104
+ .default=`electrical.batteries.{batteryID}.cells.${cellNum+1}.balancing`
94
105
  }
95
106
 
96
107
  this.addDefaultPath('current','electrical.batteries.current')
@@ -119,19 +130,15 @@ class ShenzhenLiONBMS extends BTSensor{
119
130
  .default="electrical.batteries.{batteryID}.balanceMemoryActive"
120
131
 
121
132
  this.addMetadatum('protectionState','', 'protection state',
122
- (buff)=>{return buff.slice(76,80).reverse().join("")})
133
+ (buff)=>{return ProtectionStatus[buff.readUInt16LE(76)]??"Normal"})
123
134
  .default="electrical.batteries.{batteryID}.protectionState"
124
135
 
125
136
  this.addMetadatum('failureState','', 'failure state',
126
137
  (buff)=>{return buff.slice(80,84).reverse().join("").slice(-3)})
127
138
  .default="electrical.batteries.{batteryID}.failureState"
128
-
129
- this.addMetadatum('balanceState','', '1 = cell at offset is balancing',
130
- (buff)=>{return buff.slice(84,88).reverse().join("")})
131
- .default="electrical.batteries.{batteryID}.balanceState"
132
139
 
133
140
  this.addMetadatum('batteryState','', 'charge disabled = "0004", charging = "0001" (when charging active app will show estimated time untill fully charged), discharging/idle: "0000", unkown = "0002"',
134
- (buff)=>{return buff.slice(88,90).reverse().join("")})
141
+ (buff)=>{return (BatteryState[buff.readUInt16LE(88)])??"Unknown"})
135
142
  .default="electrical.batteries.{batteryID}.batteryState"
136
143
 
137
144
  this.addMetadatum('dischargeCount','', 'discharge count',
@@ -148,6 +155,16 @@ class ShenzhenLiONBMS extends BTSensor{
148
155
  this.getJSONSchema().properties.params.required=["batteryID", "numberOfCells" ]
149
156
  }
150
157
 
158
+ emitValuesFrom(buffer){
159
+ super.emitValuesFrom(buffer)
160
+ const balanceState= buffer.slice(84,88).reverse().join("")
161
+
162
+ for(let cellNum=0; cellNum < this?.numberOfCells??4; cellNum++) {
163
+ this.emit(`cell${cellNum+1}Balancing`, balanceState[cellNum]==='1')
164
+ }
165
+
166
+ }
167
+
151
168
  async initGATTConnection(isReconnecting){
152
169
 
153
170
  await super.initGATTConnection(isReconnecting)
@@ -56,64 +56,369 @@ const Images = require('./VictronImages.js')
56
56
  [7, 'INVERTER'],
57
57
  [8, 'WATER_HEATER']
58
58
  ]),
59
- MODEL_ID_MAP :{
59
+
60
+ MODEL_ID_MAP : {
61
+ 0x1: "VPN",
62
+ 0x2: "VBC",
63
+ 0x3: "VVC",
64
+ 0x4: "VCC",
65
+ 0x5: "VCM",
66
+ 0x6: "VGM",
67
+ 0x7: "VRS",
68
+ 0x8: "Free Technics software",
69
+ 0x9: "VBC GMDSS",
70
+ 0xA: "VPM GMDSS",
71
+ 0xB: "BPP",
72
+ 0xC: "VBC 48V",
73
+ 0xD: "VVC2",
74
+ 0xE: "VBC 144V",
75
+ 0xF: "VBC2",
76
+ 0x10: "VBC 144V",
77
+ 0x11: "Lynx Shunt 1000A VE.Net",
78
+ 0x100: "BMV to NMEA2000 interface",
79
+ 0x101: "Skylla-i Control",
80
+ 0x102: "Hybrid Panel",
81
+ 0x103: "VE.Bus to NMEA2000 interface",
82
+ 0x104: "Skylla-i 24/100 (1+1)",
83
+ 0x105: "Skylla-i 24/80A (1+1)",
84
+ 0x106: "Skylla-i 24/100 (3)",
85
+ 0x107: "Skylla-i 24/80 (3)",
86
+ 0x108: "BlueSolar Charger MPPT 150/70",
87
+ 0x140: "Ion Control",
88
+ 0x141: "Lynx Shunt 1000A VE.Can",
89
+ 0x142: "Lynx Ion",
90
+ 0x200: "BMV-600S",
91
+ 0x201: "BMV-602S",
92
+ 0x202: "BMV-600HS",
60
93
  0x203: {name: "BMV-700",image: Images.bmv},
61
94
  0x204: {name: "BMV-702",image: Images.bmv},
62
95
  0x205: {name: "BMV-700H",image: Images.bmv},
63
- 0x0300: "BlueSolar MPPT 70|15",
64
- 0xA040: "BlueSolar MPPT 75|50",
65
- 0xA041: "BlueSolar MPPT 150|35",
66
- 0xA042: "BlueSolar MPPT 75|15",
67
- 0xA043: "BlueSolar MPPT 100|15",
68
- 0xA044: "BlueSolar MPPT 100|30",
69
- 0xA045: "BlueSolar MPPT 100|50",
70
- 0xA046: "BlueSolar MPPT 150|70",
71
- 0xA047: "BlueSolar MPPT 150|100",
72
- 0xA049: "BlueSolar MPPT 100|50 rev2",
73
- 0xA04A: "BlueSolar MPPT 100|30 rev2",
74
- 0xA04B: "BlueSolar MPPT 150|35 rev2",
75
- 0xA04C: "BlueSolar MPPT 75|10",
76
- 0xA04D: "BlueSolar MPPT 150|45",
77
- 0xA04E: "BlueSolar MPPT 150|60",
78
- 0xA04F: "BlueSolar MPPT 150|85",
79
- 0xA050: "SmartSolar MPPT 250|100",
80
- 0xA051: "SmartSolar MPPT 150|100",
81
- 0xA052: "SmartSolar MPPT 150|85",
82
- 0xA053: "SmartSolar MPPT 75|15",
83
- 0xA054: "SmartSolar MPPT 75|10",
84
- 0xA055: "SmartSolar MPPT 100|15",
85
- 0xA056: "SmartSolar MPPT 100|30",
86
- 0xA057: "SmartSolar MPPT 100|50",
87
- 0xA058: "SmartSolar MPPT 150|35",
88
- 0xA059: "SmartSolar MPPT 150|100 rev2",
89
- 0xA05A: "SmartSolar MPPT 150|85 rev2",
90
- 0xA05B: "SmartSolar MPPT 250|70",
91
- 0xA05C: "SmartSolar MPPT 250|85",
92
- 0xA05D: "SmartSolar MPPT 250|60",
93
- 0xA05E: "SmartSolar MPPT 250|45",
94
- 0xA05F: "SmartSolar MPPT 100|20",
95
- 0xA060: "SmartSolar MPPT 100|20 48V",
96
- 0xA061: "SmartSolar MPPT 150|45",
97
- 0xA062: "SmartSolar MPPT 150|60",
98
- 0xA063: "SmartSolar MPPT 150|70",
99
- 0xA064: "SmartSolar MPPT 250|85 rev2",
100
- 0xA065: "SmartSolar MPPT 250|100 rev2",
101
- 0xA066: "BlueSolar MPPT 100|20",
102
- 0xA067: "BlueSolar MPPT 100|20 48V",
103
- 0xA068: "SmartSolar MPPT 250|60 rev2",
104
- 0xA069: "SmartSolar MPPT 250|70 rev2",
105
- 0xA06A: "SmartSolar MPPT 150|45 rev2",
106
- 0xA06B: "SmartSolar MPPT 150|60 rev2",
107
- 0xA06C: "SmartSolar MPPT 150|70 rev2",
108
- 0xA06D: "SmartSolar MPPT 150|85 rev3",
109
- 0xA06E: "SmartSolar MPPT 150|100 rev3",
110
- 0xA06F: "BlueSolar MPPT 150|45 rev2",
111
- 0xA070: "BlueSolar MPPT 150|60 rev2",
112
- 0xA071: "BlueSolar MPPT 150|70 rev2",
113
- 0xA0EB: "Smart Lithium Battery 12.8v 200AH",
114
- 0xA0EA: "Smart Lithium Battery 25.6v 200AH",
115
- 0xA0F0: "Smart Lithium Battery 4 cells 12v 330AH",
116
- 0xA0EE: "Smart Lithium Battery",
96
+ 0x211: "BMV PCBA test firmware",
97
+ 0x300: "BlueSolar Charger MPPT 70/15",
98
+ 0x1110: "Remote panel",
99
+ 0x1120: "Remote panel 20MHz",
100
+ 0x1121: "Remote panel Dongle 20MHz",
101
+ 0x1130: "MK2 20Mhz",
102
+ 0x1131: "MK2 Dongle 20Mhz",
103
+ 0x1132: "VE.Bus Resetter (based on MK2) 20 Mhz",
104
+ 0x1140: "MK2 tachometer 20Mhz",
105
+ 0x1145: "BMS 20Mhz",
106
+ 0x1150: "Solar switch box",
107
+ 0x1160: "USB VEBus grabber",
108
+ 0x1170: "MK3",
109
+ 0x1421: "Phoenix Charger 12/100",
110
+ 0x1422: "Phoenix Charger 12/200",
111
+ 0x1431: "Phoenix Charger 24/50",
112
+ 0x1432: "Phoenix Charger 24/100",
113
+ 0x1700: "Phoenix Multi 12V full power",
114
+ 0x1701: "Phoenix Multi 12V half power",
115
+ 0x1702: "Phoenix MultiPlus 12V full power",
116
+ 0x1703: "MultiCompact 12V low power",
117
+ 0x1704: "MultiCompact 12V medium power",
118
+ 0x1705: "MultiCompact 12V high power",
119
+ 0x1706: "MultiCompactPlus 12V high power",
120
+ 0x1707: "MultiCompactPlus 12V medium power",
121
+ 0x1710: "Phoenix Multi 24V full power",
122
+ 0x1711: "Phoenix Multi 24V half power",
123
+ 0x1712: "Phoenix MultiPlus 24V full power",
124
+ 0x1713: "MultiCompact 24V low power",
125
+ 0x1714: "MultiCompact 24V medium power",
126
+ 0x1715: "MultiCompact 24V high power",
127
+ 0x1716: "MultiCompactPlus 24V high power",
128
+ 0x1717: "MultiCompactPlus 24V medium power",
129
+ 0x1730: "Phoenix Multi 120 12V full power",
130
+ 0x1731: "Phoenix Multi 120 12V half power",
131
+ 0x1732: "Phoenix MultiPlus 120 12V full power",
132
+ 0x1740: "Phoenix Multi 120 24V full power",
133
+ 0x1741: "Phoenix Multi 120 24V half power",
134
+ 0x1742: "Phoenix MultiPlus 120 24V full power",
135
+ 0x1750: "Phoenix Multi 48V full power",
136
+ 0x1751: "Phoenix Multi 48V half power",
137
+ 0x1752: "Phoenix MultiPlus 48V full power",
138
+ 0x1800: "Phoenix Multi 12V full power",
139
+ 0x1801: "Phoenix Multi 12V half power",
140
+ 0x1802: "Phoenix MultiPlus 12V full power",
141
+ 0x1803: "MultiCompact 12V low power",
142
+ 0x1804: "MultiCompact 12V medium power",
143
+ 0x1805: "MultiCompact 12V high power",
144
+ 0x1806: "MultiCompactPlus 12V high power",
145
+ 0x1807: "MultiCompactPlus 12V medium power",
146
+ 0x1808: "Phoenix MultiPlus 12V/2000",
147
+ 0x1809: "Phoenix MultiPlus 12V/3000",
148
+ 0x1810: "Phoenix Multi 24V full power",
149
+ 0x1811: "Phoenix Multi 24V half power",
150
+ 0x1812: "Phoenix MultiPlus 24V full power",
151
+ 0x1813: "MultiCompact 24V low power",
152
+ 0x1814: "MultiCompact 24V medium power",
153
+ 0x1815: "MultiCompact 24V high power",
154
+ 0x1816: "MultiCompactPlus 24V high power",
155
+ 0x1817: "MultiCompactPlus 24V medium power",
156
+ 0x1818: "Phoenix MultiPlus 24V/2000",
157
+ 0x1830: "Phoenix Multi 120 12V full power",
158
+ 0x1831: "Phoenix Multi 120 12V half power",
159
+ 0x1832: "Phoenix MultiPlus 120 12V full power",
160
+ 0x1836: "MultiCompactPlus 120 12V high power",
161
+ 0x1839: "Phoenix MultiPlus 120 12V/3000",
162
+ 0x1840: "Phoenix Multi 120 24V full power",
163
+ 0x1841: "Phoenix Multi 120 24V half power",
164
+ 0x1842: "Phoenix MultiPlus 120 24V full power",
165
+ 0x1846: "MultiCompactPlus 120 24V high power",
166
+ 0x1850: "Phoenix Multi 48V full power",
167
+ 0x1851: "Phoenix Multi 48V half power",
168
+ 0x1852: "Phoenix MultiPlus 48V full power",
169
+ 0x1856: "MultiCompactPlus 48V high power",
170
+ 0x1862: "Phoenix MultiPlus 120 48V full power",
171
+ 0x1871: "MultiCompactPlus 12V 2K",
172
+ 0x1872: "MultiCompactPlus 24V 2K",
173
+ 0x1900: "MultiPlus 12/3000/120-50",
174
+ 0x1901: "MultiPlus 12/3000/120-30",
175
+ 0x1902: "Phoenix MultiPlus 12V full power",
176
+ 0x1903: "Phoenix Multi Compact 12/800/35-16",
177
+ 0x1906: "MultiPlus Compact 12/1600/70-16",
178
+ 0x1907: "MultiPlus Compact 12/1200/50-16",
179
+ 0x1908: "MultiPlus Compact 12/2000/80-30",
180
+ 0x1909: "MultiPlus 12/3000/120-16",
181
+ 0x1910: "MultiPlus 24/3000/70-50",
182
+ 0x1911: "MultiPlus 24/3000/70-30",
183
+ 0x1912: "MultiPlus 24/3000/70-16",
184
+ 0x1913: "Phoenix Multi Compact 24/800/16-16",
185
+ 0x1916: "MultiPlus Compact 24/1600/40-16",
186
+ 0x1917: "MultiPlus Compact 24/1200/25-16",
187
+ 0x1918: "MultiPlus Compact 24/2000/50-30",
188
+ 0x1920: "MultiPlus 48/3000/35-50",
189
+ 0x1921: "MultiPlus 48/3000/35-30",
190
+ 0x1922: "MultiPlus 48/3000/35-16",
191
+ 0x1930: "Quattro 12/5000/200-2x30",
192
+ 0x1931: "Quattro 12/3000/120-50/30",
193
+ 0x1932: "Quattro 12/5000/200-50/30",
194
+ 0x1933: "Quattro 12/5000/220-2x75",
195
+ 0x1940: "Quattro 24/5000/120-2x30",
196
+ 0x1941: "Quattro 24/3000/70-50/30",
197
+ 0x1942: "Quattro 24/5000/120-50/30",
198
+ 0x1943: "Quattro 24/8000/200-2x100",
199
+ 0x1948: "Quattro 24/5000/120-2x100",
200
+ 0x1949: "MultiPlus 24/5000/120-50",
201
+ 0x1950: "Quattro 48/5000/70-2x30",
202
+ 0x1952: "Quattro 48/5000/70-50/30",
203
+ 0x1953: "Quattro 48/10000/140-2x100",
204
+ 0x1954: "Quattro 48/8000/110-2x100",
205
+ 0x1958: "Quattro 48/5000/70-2x100",
206
+ 0x1959: "MultiPlus 48/5000/70-50",
207
+ 0x2002: "MultiPlus 12/3000/120-50 120V",
208
+ 0x2008: "MultiPlus Compact 12/2000/80-50 120V",
209
+ 0x2009: "Phoenix MultiPlus 120 12V/3000",
210
+ 0x2012: "MultiPlus 24/3000/70-50 120V",
211
+ 0x2018: "MultiPlus Compact 24/2000/50-50 120V",
212
+ 0x2022: "Phoenix MultiPlus 120 48V/3000",
213
+ 0x2048: "Quattro 24/5000/120-2x100 120V",
214
+ 0x2051: "Quattro 48/3000/35-2x50 120V",
215
+ 0x2053: "Quattro 48/5000/70-2x100 120V",
216
+ 0x2059: "Phoenix MultiPlus 120 48V/5000",
217
+ 0x2060: "Phoenix 12/3000/120-50-120/240V",
218
+ 0x2062: "MultiPlus Compact 12/2000/80-50(30)-120/240V",
219
+ 0x2071: "Quattro 24/5000/120-2x60-120/240V",
220
+ 0x2072: "MultiPlus Compact 24/2000/50-50(30)-120/240V",
221
+ 0x2080: "Phoenix MultiPlus 120/240 48V/3000 with 50A AC relais",
222
+ 0x2101: "Phoenix HF",
223
+ 0x2403: "Phoenix 12/800",
224
+ 0x2404: "Phoenix 12/1200",
225
+ 0x2413: "Phoenix 24/800",
226
+ 0x2414: "Phoenix 24/1200",
227
+ 0x2423: "Phoenix 48/800",
228
+ 0x2424: "Phoenix 48/1200",
229
+ 0x2453: "Phoenix 12/800 120V",
230
+ 0x2454: "Phoenix 12/1200 120V",
231
+ 0x2463: "Phoenix 24/800 120V",
232
+ 0x2464: "Phoenix 24/1200 120V",
233
+ 0x2473: "Phoenix 48/800 120V",
234
+ 0x2474: "Phoenix 48/1200 120V",
235
+ 0x2600: "MultiPlus 12/3000/120-50",
236
+ 0x2603: "MultiPlus Compact 12/800/35-16",
237
+ 0x2605: "MultiPlus-II 12/3000/120-32",
238
+ 0x2606: "MultiPlus Compact 12/1600/70-16",
239
+ 0x2607: "MultiPlus Compact 12/1200/50-16",
240
+ 0x2608: "MultiPlus Compact 12/2000/80-30",
241
+ 0x2609: "MultiPlus 12/3000/120-16",
242
+ 0x2610: "MultiPlus 24/3000/70-50",
243
+ 0x2611: "MultiPlus-II 24/3000/70-32",
244
+ 0x2612: "MultiPlus 24/3000/70-16",
245
+ 0x2613: "MultiPlus Compact 24/800/16-16",
246
+ 0x2614: "MultiPlus 24/5000/120-100",
247
+ 0x2615: "MultiPlus-II 24/5000/120-50",
248
+ 0x2616: "MultiPlus Compact 24/1600/40-16",
249
+ 0x2617: "MultiPlus Compact 24/1200/25-16",
250
+ 0x2618: "MultiPlus Compact 24/2000/50-30",
251
+ 0x2619: "MultiPlus-II 48/15000/200-100",
252
+ 0x2620: "MultiPlus 48/3000/35-50",
253
+ 0x2621: "MultiPlus-II 48/8000/110-100",
254
+ 0x2622: "MultiPlus 48/3000/35-16",
255
+ 0x2623: "MultiPlus-II 48/5000/70-50",
256
+ 0x2624: "MultiPlus 48/5000/70-100",
257
+ 0x2625: "MultiPlus-II 48/3000/35-32",
258
+ 0x2626: "MultiPlus-II 48/5000/70-50",
259
+ 0x2627: "MultiPlus-II 48/10000/140-100/100",
260
+ 0x2628: "MultiPlus-II 48/3000/35-32",
261
+ 0x2629: "MultiPlus-II 48/3000/35-32",
262
+ 0x2631: "Quattro 12/3000/120-50/30",
263
+ 0x2632: "Quattro-II 12/5000/200-2x50",
264
+ 0x2633: "Quattro 12/5000/220-2x75",
265
+ 0x2634: "Quattro 12/3000/120-2x50",
266
+ 0x2641: "Quattro 24/3000/70-50/30",
267
+ 0x2642: "Quattro 24/5000/120-50/30",
268
+ 0x2643: "Quattro 24/8000/200-2x100",
269
+ 0x2644: "Quattro 24/3000/70-2x50",
270
+ 0x2645: "Quattro-II 24/5000/120-2x50",
271
+ 0x2648: "Quattro 24/5000/120-2x100",
272
+ 0x2649: "MultiPlus 24/5000/120-50",
273
+ 0x2651: "Quattro-II 48/5000/70-2x50",
274
+ 0x2652: "Quattro 48/5000/70-50/30",
275
+ 0x2653: "Quattro 48/10000/140-2x100",
276
+ 0x2654: "Quattro 48/8000/110-2x100",
277
+ 0x2655: "Quattro 48/8000/110-2x100",
278
+ 0x2656: "Quattro 48/15000/200-2x100",
279
+ 0x2657: "Quattro 48/5000/70-2x100-S",
280
+ 0x2658: "Quattro 48/5000/70-2x100",
281
+ 0x2659: "MultiPlus 48/5000/70-50",
282
+ 0x2660: "MultiPlus 12/500/20-16",
283
+ 0x2661: "MultiPlus 12/800/35-16",
284
+ 0x2662: "MultiPlus 12/1200/50-16",
285
+ 0x2663: "MultiPlus 12/1600/70-16",
286
+ 0x2664: "MultiPlus 12/2000/80-32",
287
+ 0x2665: "MultiPlus 24/500/10-16",
288
+ 0x2666: "MultiPlus 24/800/16-16",
289
+ 0x2667: "MultiPlus 24/1200/25-16",
290
+ 0x2668: "MultiPlus 24/1600/40-16",
291
+ 0x2669: "MultiPlus 24/2000/50-32",
292
+ 0x2670: "MultiPlus 48/500/6-16",
293
+ 0x2671: "MultiPlus 48/800/9-16",
294
+ 0x2672: "MultiPlus 48/1200/13-16",
295
+ 0x2673: "MultiPlus 48/1600/20-16",
296
+ 0x2674: "MultiPlus 48/2000/25-32",
297
+ 0x2680: "MultiGrid 12/3000/120-50",
298
+ 0x2685: "MultiGrid 24/3000/70-50",
299
+ 0x2690: "MultiGrid 48/3000/35-50",
300
+ 0x2702: "MultiPlus 12/3000/120-50 120V",
301
+ 0x2705: "MultiPlus-II 12/3000/120-50 120V",
302
+ 0x2708: "MultiPlus Compact 12/2000/80-50 120V",
303
+ 0x2711: "MultiPlus-II 24/3000/70-50 120V",
304
+ 0x2712: "MultiPlus 24/3000/70-50 120V",
305
+ 0x2718: "MultiPlus Compact 24/2000/50-50 120V",
306
+ 0x2729: "MultiPlus-II 48/3000/35-50 120V",
307
+ 0x2733: "Quattro 12/5000/220-2x100 120V",
308
+ 0x2748: "Quattro 24/5000/120-2x100 120V",
309
+ 0x2751: "Quattro 48/3000/35-2x50 120V",
310
+ 0x2753: "Quattro 48/5000/70-2x100 120V",
311
+ 0x2754: "Quattro 48/10000/140-2x100 120V",
312
+ 0x2764: "MultiPlus 12/2000/80-50 120V",
313
+ 0x2769: "MultiPlus 24/2000/50-50 120V",
314
+ 0x2774: "MultiPlus 48/2000/25-50 120V",
315
+ 0x2775: "MultiPlus-II 24/3000/70-50 2x120V",
316
+ 0x2780: "MultiPlus-II 12/3000/120-50 2x120V",
317
+ 0x2781: "Quattro-II 12/3000/120-2x50 2x120V",
318
+ 0xA000: "Skylla-IP44/IP65 battery charger",
319
+ 0xA001: "Skylla-IP65 12V/70A (1+1)",
320
+ 0xA002: "Skylla-IP65 12V/70A (3)",
321
+ 0xA003: "Skylla-IP44 12V/60A (1+1)",
322
+ 0xA004: "Skylla-IP44 12V/60A (3)",
323
+ 0xA005: "Skylla-IP65 24V/35A (1+1)",
324
+ 0xA006: "Skylla-IP65 24V/35A (3)",
325
+ 0xA007: "Skylla-IP44 24V/30A (1+1)",
326
+ 0xA008: "Skylla-IP44 24V/30A (3)",
327
+ 0xA010: "Skylla-S battery charger",
328
+ 0xA011: "Skylla-S 12V/100A (1+1)",
329
+ 0xA012: "Skylla-S 12V/100A (3)",
330
+ 0xA013: "Skylla-S 24V/100A (1+1)",
331
+ 0xA014: "Skylla-S 24V/100A (3)",
332
+ 0xA015: "Skylla-S 24V/50A (1+1)",
333
+ 0xA016: "Skylla-S 24V/50A (3)",
334
+ 0xA040: "BlueSolar Charger MPPT 75/50",
335
+ 0xA041: "BlueSolar Charger MPPT 150/35 rev1",
336
+ 0xA042: "BlueSolar Charger MPPT 75/15",
337
+ 0xA043: "BlueSolar Charger MPPT 100/15",
338
+ 0xA044: "BlueSolar Charger MPPT 100/30 rev1",
339
+ 0xA045: "BlueSolar Charger MPPT 100/50 rev1",
340
+ 0xA046: "BlueSolar Charger MPPT 150/70",
341
+ 0xA047: "BlueSolar Charger MPPT 150/100",
342
+ 0xA048: "BlueSolar Charger MPPT 75/50 rev2",
343
+ 0xA049: "BlueSolar Charger MPPT 100/50 rev2",
344
+ 0xA04A: "BlueSolar Charger MPPT 100/30 rev2",
345
+ 0xA04B: "BlueSolar Charger MPPT 150/35 rev2",
346
+ 0xA04C: "BlueSolar Charger MPPT 75/10",
347
+ 0xA04D: "BlueSolar Charger MPPT 150/45",
348
+ 0xA04E: "BlueSolar Charger MPPT 150/60",
349
+ 0xA04F: "BlueSolar Charger MPPT 150/85",
350
+ 0xA050: "SmartSolar Charger MPPT 250/100",
351
+ 0xA051: "SmartSolar Charger MPPT 150/100",
352
+ 0xA052: "SmartSolar Charger MPPT 150/85",
353
+ 0xA053: "SmartSolar Charger MPPT 75/15",
354
+ 0xA054: "SmartSolar Charger MPPT 75/10",
355
+ 0xA055: "SmartSolar Charger MPPT 100/15",
356
+ 0xA056: "SmartSolar Charger MPPT 100/30",
357
+ 0xA057: "SmartSolar Charger MPPT 100/50",
358
+ 0xA058: "SmartSolar Charger MPPT 150/35",
359
+ 0xA059: "SmartSolar Charger MPPT 150/100 rev2",
360
+ 0xA05A: "SmartSolar Charger MPPT 150/85 rev2",
361
+ 0xA05B: "SmartSolar Charger MPPT 250/70",
362
+ 0xA05C: "SmartSolar Charger MPPT 250/85",
363
+ 0xA05D: "SmartSolar Charger MPPT 250/60",
364
+ 0xA05E: "SmartSolar Charger MPPT 250/60",
365
+ 0xA05F: "SmartSolar Charger MPPT 100/20",
366
+ 0xA060: "SmartSolar Charger MPPT 100/20 48V",
367
+ 0xA061: "SmartSolar Charger MPPT 150/45",
368
+ 0xA062: "SmartSolar Charger MPPT 150/60",
369
+ 0xA063: "SmartSolar Charger MPPT 150/70",
370
+ 0xA064: "SmartSolar Charger MPPT 250/85 rev2",
371
+ 0xA065: "SmartSolar Charger MPPT 250/100 rev2",
372
+ 0xA066: "BlueSolar Charger MPPT 100/20",
373
+ 0xA067: "BlueSolar Charger MPPT 100/20 48V",
374
+ 0xA068: "SmartSolar Charger MPPT 250/60 rev2",
375
+ 0xA069: "SmartSolar Charger MPPT 250/70 rev2",
376
+ 0xA06A: "SmartSolar Charger MPPT 150/45 rev2",
377
+ 0xA06B: "SmartSolar Charger MPPT 150/60 rev2",
378
+ 0xA06C: "SmartSolar Charger MPPT 150/70 rev2",
379
+ 0xA06D: "SmartSolar Charger MPPT 150/85 rev3",
380
+ 0xA06E: "SmartSolar Charger MPPT 150/100 rev3",
381
+ 0xA06F: "BlueSolar Charger MPPT 150/45 rev2",
382
+ 0xA070: "BlueSolar Charger MPPT 150/60 rev2",
383
+ 0xA071: "BlueSolar Charger MPPT 150/70 rev2",
384
+ 0xA072: "BlueSolar Charger MPPT 150/45 rev3",
385
+ 0xA073: "SmartSolar Charger MPPT 150/45 rev3",
386
+ 0xA074: "SmartSolar Charger MPPT 75/10 rev2",
387
+ 0xA075: "SmartSolar Charger MPPT 75/15 rev2",
388
+ 0xA076: "BlueSolar Charger MPPT 100/30 rev3",
389
+ 0xA077: "BlueSolar Charger MPPT 100/50 rev3",
390
+ 0xA078: "BlueSolar Charger MPPT 150/35 rev3",
391
+ 0xA079: "BlueSolar Charger MPPT 75/10 rev2",
392
+ 0xA07A: "BlueSolar Charger MPPT 75/15 rev2",
393
+ 0xA07B: "BlueSolar Charger MPPT 100/15 rev2",
394
+ 0xA07C: "BlueSolar Charger MPPT 75/10 rev3",
395
+ 0xA07D: "BlueSolar Charger MPPT 75/15 rev3",
396
+ 0xA07E: "SmartSolar Charger MPPT 100/30 12V",
397
+ 0xA0C1: "Lithium Battery Balancer 12V/3.5A",
398
+ 0xA0C2: "Lithium Battery Balancer 12V/8A",
399
+ 0xA0C3: "Lithium Battery Balancer 24V/3.5A",
400
+ 0xA0C4: "Lithium Battery Balancer 12V/2A",
401
+ 0xA0E0: "Smart Lithium Battery 12.8V/90Ah",
402
+ 0xA0E1: "Smart Lithium Battery 12.8V/60Ah",
403
+ 0xA0E2: "Smart Lithium Battery 12.8V/160Ah",
404
+ 0xA0E3: "Smart Lithium Battery 12.8V/200Ah",
405
+ 0xA0E4: "Smart Lithium Battery 12.8V/300Ah",
406
+ 0xA0E5: "Smart Lithium Battery 12.8V/100Ah",
407
+ 0xA0E6: "Smart Lithium Battery 12.8V/200Ah",
408
+ 0xA0E7: "Smart Lithium Battery 12.8V/300Ah",
409
+ 0xA0E8: "Smart Lithium Battery 12.8V/100Ah",
410
+ 0xA0E9: "Smart Lithium Battery 12.8V/150Ah",
411
+ 0xA0EA: "Smart Lithium Battery 25.6V/200Ah",
412
+ 0xA0EB: "Smart Lithium Battery 12.8V/200Ah",
413
+ 0xA0EC: "Smart Lithium Battery 12.8V/160Ah",
414
+ 0xA0ED: "Smart Lithium Battery 12.8V/50Ah",
415
+ 0xA0EE: "Smart Lithium Battery 25.6V/200Ah",
416
+ 0xA0EF: "Smart Lithium Battery 25.6V/100Ah",
417
+ 0xA0F0: "Smart Lithium Battery 12.8V/330Ah",
418
+ 0xA0F1: "Smart Lithium Battery 25.6V/330Ah",
419
+ 0xA0F2: "Smart Lithium Battery 12.8V/300Ah",
420
+ 0xA100: "BlueSolar Remote Panel",
421
+ 0xA101: "BlueSolar Charger MPPT 150/85",
117
422
  0xA102: "SmartSolar MPPT VE.Can 150/70",
118
423
  0xA103: "SmartSolar MPPT VE.Can 150/45",
119
424
  0xA104: "SmartSolar MPPT VE.Can 150/60",
@@ -128,11 +433,62 @@ const Images = require('./VictronImages.js')
128
433
  0xA10D: "SmartSolar MPPT VE.Can 150/85 rev2",
129
434
  0xA10E: "SmartSolar MPPT VE.Can 150/100 rev2",
130
435
  0xA10F: "BlueSolar MPPT VE.Can 150/100",
436
+ 0xA110: "SmartSolar MPPT RS 450/100",
437
+ 0xA111: "SmartSolar MPPT RS 450/200",
131
438
  0xA112: "BlueSolar MPPT VE.Can 250/70",
132
439
  0xA113: "BlueSolar MPPT VE.Can 250/100",
133
440
  0xA114: "SmartSolar MPPT VE.Can 250/70 rev2",
134
441
  0xA115: "SmartSolar MPPT VE.Can 250/100 rev2",
135
442
  0xA116: "SmartSolar MPPT VE.Can 250/85 rev2",
443
+ 0xA117: "BlueSolar MPPT VE.Can 150/100 rev2",
444
+ 0xA120: "VE.Bus to NMEA2000 interface (rev2)",
445
+ 0xA121: "VE.Direct to CAN interface",
446
+ 0xA130: "Lynx Ion + Shunt",
447
+ 0xA131: "Lynx Smart Shunt 1000A VE.Can",
448
+ 0xA140: "PV Inverter (QWACS)",
449
+ 0xA141: "PV Inverter (AC Current Sensor)",
450
+ 0xA142: "Fronius solar inverters",
451
+ 0xA143: "SMA solar inverters",
452
+ 0xA144: "SunSpec solar inverters",
453
+ 0xA145: "ABB/Fimer solar inverters",
454
+ 0xA160: "Tank sensor",
455
+ 0xA161: "Generic Tank Input",
456
+ 0xA162: "Generic Temperature Input",
457
+ 0xA163: "NMEA-0183 GPS",
458
+ 0xA164: "NMEA 2000 GPS",
459
+ 0xA165: "Generic pulse meter",
460
+ 0xA166: "Generic digital input",
461
+ 0xA170: "Mppt control",
462
+ 0xA171: "Mppt control PCBA test firmware",
463
+ 0xA180: "Peak Power Pack 12V 8Ah",
464
+ 0xA181: "Peak Power Pack PCBA test firmware",
465
+ 0xA182: "VE.Direct Bluetooth Smart Dongle",
466
+ 0xA183: "Bootloader for softdevice v7",
467
+ 0xA184: "Virtual id for v1 legacy dongle",
468
+ 0xA185: "Peak Power Pack 12V 20Ah",
469
+ 0xA186: "Peak Power Pack 12V 30Ah",
470
+ 0xA187: "Peak Power Pack 12V 40Ah",
471
+ 0xA188: "VE.Direct Bluetooth Smart Dongle (Rev2)",
472
+ 0xA189: "VE.Direct Bluetooth Smart Dongle (Rev3)",
473
+ 0xA190: "SmartSolar Bluetooth Interface",
474
+ 0xA191: "SmartSolar Bluetooth Interface (Rev2)",
475
+ 0xA192: "BMV-7xx Smart Bluetooth Interface",
476
+ 0xA193: "Lynx Ion BMS Bluetooth Interface",
477
+ 0xA194: "Phoenix Inverter Smart Bluetooth Interface",
478
+ 0xA195: "VE.Can SmartSolar Bluetooth Interface",
479
+ 0xA196: "SmartShunt Bluetooth Interface",
480
+ 0xA197: "SmartSolar Bluetooth Interface (Rev3)",
481
+ 0xA198: "BMV-7xx Smart Bluetooth Interface (Rev2)",
482
+ 0xA199: "Lynx Ion BMS Bluetooth Interface (Rev2)",
483
+ 0xA19A: "Phoenix Inverter Smart Bluetooth Interface (Rev2)",
484
+ 0xA19B: "VE.Can SmartSolar Bluetooth Interface (Rev2)",
485
+ 0xA19C: "SmartShunt Bluetooth Interface (Rev2)",
486
+ 0xA19D: "SmartShunt Bluetooth Interface (Rev2)",
487
+ 0xA19E: "Sun Inverter Bluetooth Interface",
488
+ 0xA19F: "All-In-1 Bluetooth Interface",
489
+ 0xA1B0: "Smart Energy Meter",
490
+ 0xA1B1: "VE.Can Energy Meter",
491
+ 0xA200: "Phoenix Inverter",
136
492
  0xA201: "Phoenix Inverter 12V 250VA 230V",
137
493
  0xA202: "Phoenix Inverter 24V 250VA 230V",
138
494
  0xA204: "Phoenix Inverter 48V 250VA 230V",
@@ -145,6 +501,9 @@ const Images = require('./VictronImages.js')
145
501
  0xA231: "Phoenix Inverter 12V 250VA 230V",
146
502
  0xA232: "Phoenix Inverter 24V 250VA 230V",
147
503
  0xA234: "Phoenix Inverter 48V 250VA 230V",
504
+ 0xA235: "Phoenix Sun Inverter 12V 250VA 230V",
505
+ 0xA236: "Phoenix Sun Inverter 24V 250VA 230V",
506
+ 0xA237: "Phoenix Sun Inverter 48V 250VA 230V",
148
507
  0xA239: "Phoenix Inverter 12V 250VA 120V",
149
508
  0xA23A: "Phoenix Inverter 24V 250VA 120V",
150
509
  0xA23C: "Phoenix Inverter 48V 250VA 120V",
@@ -172,62 +531,300 @@ const Images = require('./VictronImages.js')
172
531
  0xA279: "Phoenix Inverter 12V 1200VA 120V",
173
532
  0xA27A: "Phoenix Inverter 24V 1200VA 120V",
174
533
  0xA27C: "Phoenix Inverter 48V 1200VA 120V",
175
- 0xA281: "Phoenix Inverter 12V 1600VA 230V",
176
- 0xA282: "Phoenix Inverter 24V 1600VA 230V",
177
- 0xA284: "Phoenix Inverter 48V 1600VA 230V",
178
- 0xA291: "Phoenix Inverter 12V 2000VA 230V",
179
- 0xA292: "Phoenix Inverter 24V 2000VA 230V",
180
- 0xA294: "Phoenix Inverter 48V 2000VA 230V",
181
- 0xA2A1: "Phoenix Inverter 12V 3000VA 230V",
182
- 0xA2A2: "Phoenix Inverter 24V 3000VA 230V",
183
- 0xA2A4: "Phoenix Inverter 48V 3000VA 230V",
184
- 0xA31A: "Blue Smart AC Charger IP67",
185
- 0xA33B: "Blue Smart AC Charger IP65",
186
- 0xA33C: "Blue Smart AC Charger IP65",
187
- 0xA340: "Phoenix Smart IP43 Charger 12|50 (1+1)",
188
- 0xA341: "Phoenix Smart IP43 Charger 12|50 (3)",
189
- 0xA342: "Phoenix Smart IP43 Charger 24|25 (1+1)",
190
- 0xA343: "Phoenix Smart IP43 Charger 24|25 (3)",
191
- 0xA344: "Phoenix Smart IP43 Charger 12|30 (1+1)",
192
- 0xA345: "Phoenix Smart IP43 Charger 12|30 (3)",
193
- 0xA346: "Phoenix Smart IP43 Charger 24|16 (1+1)",
194
- 0xA347: "Phoenix Smart IP43 Charger 24|16 (3)",
195
- 0xA350: "Phoenix Smart IP43 Charger 12|50 (1+1) 120-240V A350",
534
+ 0xA281: "Smart Phoenix Inverter 12V 2000VA 230V",
535
+ 0xA282: "Smart Phoenix Inverter 24V 2000VA 230V",
536
+ 0xA284: "Smart Phoenix Inverter 48V 2000VA 230V",
537
+ 0xA289: "Smart Phoenix Inverter 12V 2000VA 120V",
538
+ 0xA28A: "Smart Phoenix Inverter 24V 2000VA 120V",
539
+ 0xA28C: "Smart Phoenix Inverter 48V 2000VA 120V",
540
+ 0xA291: "Smart Phoenix Inverter 12V 2000VA 230V",
541
+ 0xA292: "Smart Phoenix Inverter 24V 2000VA 230V",
542
+ 0xA294: "Smart Phoenix Inverter 48V 2000VA 230V",
543
+ 0xA299: "Smart Phoenix Inverter 12V 2000VA 120V",
544
+ 0xA29A: "Smart Phoenix Inverter 24V 2000VA 120V",
545
+ 0xA29C: "Smart Phoenix Inverter 48V 2000VA 120V",
546
+ 0xA2A1: "Smart Phoenix Inverter 12V 3000VA 230V",
547
+ 0xA2A2: "Smart Phoenix Inverter 24V 3000VA 230V",
548
+ 0xA2A4: "Smart Phoenix Inverter 48V 3000VA 230V",
549
+ 0xA2A9: "Smart Phoenix Inverter 12V 3000VA 120V",
550
+ 0xA2AA: "Smart Phoenix Inverter 24V 3000VA 120V",
551
+ 0xA2AC: "Smart Phoenix Inverter 48V 3000VA 120V",
552
+ 0xA2B2: "Smart Phoenix Inverter 24V 5000VA 230V",
553
+ 0xA2B4: "Smart Phoenix Inverter 48V 5000VA 230V",
554
+ 0xA2BA: "Smart Phoenix Inverter 24V 5000VA 120V",
555
+ 0xA2BC: "Smart Phoenix Inverter 48V 5000VA 120V",
556
+ 0xA2E1: "Phoenix Inverter 12V 800VA 230V",
557
+ 0xA2E2: "Phoenix Inverter 24V 800VA 230V",
558
+ 0xA2E4: "Phoenix Inverter 48V 800VA 230V",
559
+ 0xA2E9: "Phoenix Inverter 12V 800VA 120V",
560
+ 0xA2EA: "Phoenix Inverter 24V 800VA 120V",
561
+ 0xA2EC: "Phoenix Inverter 48V 800VA 120V",
562
+ 0xA2F1: "Phoenix Inverter 12V 1200VA 230V",
563
+ 0xA2F2: "Phoenix Inverter 24V 1200VA 230V",
564
+ 0xA2F4: "Phoenix Inverter 48V 1200VA 230V",
565
+ 0xA2F9: "Phoenix Inverter 12V 1200VA 120V",
566
+ 0xA2FA: "Phoenix Inverter 24V 1200VA 120V",
567
+ 0xA2FC: "Phoenix Inverter 48V 1200VA 120V",
568
+ 0xA300: "Blue Smart Charger - Generic",
569
+ 0xA301: "Blue Smart IP65 Charger 12|10",
570
+ 0xA302: "Blue Smart IP65 Charger 12|15",
571
+ 0xA303: "Blue Smart IP65 Charger 24|8",
572
+ 0xA304: "Blue Smart IP65 Charger 12|5",
573
+ 0xA305: "Blue Smart IP65 Charger 12|7",
574
+ 0xA306: "Blue Smart IP65 Charger 24|5",
575
+ 0xA307: "Blue Smart IP65 Charger 12|4",
576
+ 0xA308: "Blue Smart IP65s Charger 12|4",
577
+ 0xA309: "Blue Smart IP65s Charger 12|5",
578
+ 0xA30A: "Blue Smart IP65 Charger 12|25",
579
+ 0xA30B: "Blue Smart IP65 Charger 24|13",
580
+ 0xA30C: "Blue Smart IP65 Charger 6V/12V-1.1A",
581
+ 0xA30D: "Blue Smart IP65s Charger 12/4",
582
+ 0xA30E: "Blue Smart IP65s Charger 12/5",
583
+ 0xA30F: "Blue Smart IP65 Charger 12/7",
584
+ 0xA310: "Blue Smart IP67 Charger 12|7",
585
+ 0xA311: "Blue Smart IP67 Charger 12|13",
586
+ 0xA312: "Blue Smart IP67 Charger 24|5",
587
+ 0xA313: "Blue Smart IP67 Charger 12|17",
588
+ 0xA314: "Blue Smart IP67 Charger 12|25",
589
+ 0xA315: "Blue Smart IP67 Charger 24|8",
590
+ 0xA316: "Blue Smart IP67 Charger 24|12",
591
+ 0xA317: "Blue Smart IP67 Charger 12/7",
592
+ 0xA318: "Blue Smart IP67 Charger 12/13",
593
+ 0xA319: "Blue Smart IP67 Charger 24/5",
594
+ 0xA31A: "Blue Smart IP67 Charger 12/17",
595
+ 0xA31B: "Blue Smart IP67 Charger 12/25",
596
+ 0xA31C: "Blue Smart IP67 Charger 24/8",
597
+ 0xA31D: "Blue Smart IP67 Charger 24/12",
598
+ 0xA320: "Blue Smart IP22 Charger 12|15 (1)",
599
+ 0xA321: "Blue Smart IP22 Charger 12|15 (3)",
600
+ 0xA322: "Blue Smart IP22 Charger 12|20 (1)",
601
+ 0xA323: "Blue Smart IP22 Charger 12|20 (3)",
602
+ 0xA324: "Blue Smart IP22 Charger 12|30 (1)",
603
+ 0xA325: "Blue Smart IP22 Charger 12|30 (3)",
604
+ 0xA326: "Blue Smart IP22 Charger 24|8 (1)",
605
+ 0xA327: "Blue Smart IP22 Charger 24|8 (3)",
606
+ 0xA328: "Blue Smart IP22 Charger 24|12 (1)",
607
+ 0xA329: "Blue Smart IP22 Charger 24|12 (3)",
608
+ 0xA32A: "Blue Smart IP22 Charger 24|16 (1)",
609
+ 0xA32B: "Blue Smart IP22 Charger 24|16 (3)",
610
+ 0xA32C: "Blue Smart IP22 Charger 12/15 (1)",
611
+ 0xA32D: "Blue Smart IP22 Charger 12/15 (3)",
612
+ 0xA32E: "Blue Smart IP22 Charger 12/20 (1)",
613
+ 0xA32F: "Blue Smart IP22 Charger 12/20 (3)",
614
+ 0xA330: "Blue Smart IP22 Charger 12/30 (1)",
615
+ 0xA331: "Blue Smart IP22 Charger 12/30 (3)",
616
+ 0xA332: "Blue Smart IP22 Charger 24/8 (1)",
617
+ 0xA333: "Blue Smart IP22 Charger 24/8 (3)",
618
+ 0xA334: "Blue Smart IP22 Charger 24/12 (1)",
619
+ 0xA335: "Blue Smart IP22 Charger 24/12 (3)",
620
+ 0xA336: "Blue Smart IP22 Charger 24/16 (1)",
621
+ 0xA337: "Blue Smart IP22 Charger 24/16 (3)",
622
+ 0xA338: "Blue Smart IP65 Charger 12/10",
623
+ 0xA339: "Blue Smart IP65 Charger 12/15",
624
+ 0xA33A: "Blue Smart IP65 Charger 24/5",
625
+ 0xA33B: "Blue Smart IP65 Charger 24/8",
626
+ 0xA33C: "Blue Smart IP65 Charger 12/5",
627
+ 0xA340: "Phoenix Smart IP43 Charger 12|50 (1+1) 230V",
628
+ 0xA341: "Phoenix Smart IP43 Charger 12|50 (3) 230V",
629
+ 0xA342: "Phoenix Smart IP43 Charger 24|25 (1+1) 230V",
630
+ 0xA343: "Phoenix Smart IP43 Charger 24|25 (3) 230V",
631
+ 0xA344: "Phoenix Smart IP43 Charger 12|30 (1+1) 230V",
632
+ 0xA345: "Phoenix Smart IP43 Charger 12|30 (3) 230V",
633
+ 0xA346: "Phoenix Smart IP43 Charger 24|16 (1+1) 230V",
634
+ 0xA347: "Phoenix Smart IP43 Charger 24|16 (3) 230V",
635
+ 0xA350: "Phoenix Smart IP43 Charger 12|50 (1+1) 120-240V",
636
+ 0xA351: "Phoenix Smart IP43 Charger 12|50 (3) 120-240V",
637
+ 0xA352: "Phoenix Smart IP43 Charger 24|25 (1+1) 120-240V",
638
+ 0xA353: "Phoenix Smart IP43 Charger 24|25 (3) 120-240V",
639
+ 0xA354: "Phoenix Smart IP43 Charger 12|30 (1+1) 120-240V",
640
+ 0xA355: "Phoenix Smart IP43 Charger 12|30 (3) 120-240V",
641
+ 0xA356: "Phoenix Smart IP43 Charger 24|16 (1+1) 120-240V",
642
+ 0xA357: "Phoenix Smart IP43 Charger 24|16 (3) 120-240V",
643
+ 0xA360: "IMPULSE-II 24/6 Smart IP44",
644
+ 0xA361: "IMPULSE-II 24/8 Smart IP44",
645
+ 0xA362: "IMPULSE-II 24/6 Smart IP65",
646
+ 0xA363: "IMPULSE-II 24/8 Smart IP65",
647
+ 0xA364: "IMPULSE-II 24/6 Smart IP44",
648
+ 0xA365: "IMPULSE-II 24/8 Smart IP44",
649
+ 0xA366: "IMPULSE-II 24/12 Smart IP65",
650
+ 0xA367: "IMPULSE-II 24/11 Smart IP44",
651
+ 0xA368: "IMPULSE-II 24/8 Smart IP44",
652
+ 0xA369: "IMPULSE-II 24/6 Smart IP44",
653
+ 0xA36A: "IMPULSE-II 24/8 Smart IP65",
654
+ 0xA36B: "IMPULSE-II 24/6 Smart IP65",
655
+ 0xA37D: "Vector 12/20 Smart",
656
+ 0xA37E: "IMPULSE-II L 12/20 Smart",
657
+ 0xA37F: "IMPULSE-II L 12/20 Smart",
658
+ 0xA380: {name: "BMV-710 Smart", image: Images.bmv},
196
659
  0xA381: {name: "BMV-712 Smart", image: Images.bmv},
197
660
  0xA382: {name: "BMV-710H Smart", image: Images.bmv},
198
661
  0xA383: {name: "BMV-712 Smart Rev2", image: Images.bmv},
199
662
  0xA389: {name:"SmartShunt 500A/50mV",image: Images.shunt},
200
663
  0xA38A: {name:"SmartShunt 1000A/50mV",image: Images.shunt},
201
664
  0xA38B: {name:"SmartShunt 2000A/50mV",image: Images.shunt},
665
+ 0xA38C: {name:"SmartShunt IP67 500A/50mV",image: Images.shunt},
666
+ 0xA38D: {name:"SmartShunt IP67 1000A/50mV",image: Images.shunt},
667
+ 0xA38E: {name:"SmartShunt IP67 2000A/50mV",image: Images.shunt},
668
+ 0xA390: "Lynx Ion BMS General",
669
+ 0xA391: "Lynx Ion BMS 150A",
670
+ 0xA392: "Lynx Ion BMS 400A",
671
+ 0xA393: "Lynx Ion BMS 600A",
672
+ 0xA394: "Lynx Ion BMS 1000A",
673
+ 0xA3A0: "VE.Bus smart dongle",
202
674
  0xA3A4: "Smart Battery Sense",
203
- 0xA3A5: "Smart Battery Sense",
204
- 0xA3B0: "Smart Battery Protect",
205
- 0xA3C0: "Orion Smart 12V|12V-18A Isolated DC-DC Charger",
206
- 0xA3C8: "Orion Smart 12V|12V-30A Isolated DC-DC Charger",
207
- 0xA3D0: "Orion Smart 12V|12V-30A Non-isolated DC-DC Charger",
208
- 0xA3C1: "Orion Smart 12V|24V-10A Isolated DC-DC Charger",
209
- 0xA3C9: "Orion Smart 12V|24V-15A Isolated DC-DC Charger",
210
- 0xA3D1: "Orion Smart 12V|24V-15A Non-isolated DC-DC Charger",
211
- 0xA3C2: "Orion Smart 24V|12V-20A Isolated DC-DC Charger",
212
- 0xA3CA: "Orion Smart 24V|12V-30A Isolated DC-DC Charger",
213
- 0xA3D2: "Orion Smart 24V|12V-30A Non-isolated DC-DC Charger",
214
- 0xA3C3: "Orion Smart 24V|24V-12A Isolated DC-DC Charger",
215
- 0xA3CB: "Orion Smart 24V|24V-17A Isolated DC-DC Charger",
216
- 0xA3D3: "Orion Smart 24V|24V-17A Non-isolated DC-DC Charger",
217
- 0xA3C4: "Orion Smart 24V|48V-6A Isolated DC-DC Charger",
218
- 0xA3CC: "Orion Smart 24V|48V-8.5A Isolated DC-DC Charger",
219
- 0xA3C5: "Orion Smart 48V|12V-20A Isolated DC-DC Charger",
220
- 0xA3CD: "Orion Smart 48V|12V-30A Isolated DC-DC Charger",
221
- 0xA3C6: "Orion Smart 48V|24V-12A Isolated DC-DC Charger",
222
- 0xA3CE: "Orion Smart 48V|24V-16A Isolated DC-DC Charger",
223
- 0xA3C7: "Orion Smart 48V|48V-6A Isolated DC-DC Charger",
224
- 0xA3CF: "Orion Smart 48V|48V-8.5A Isolated DC-DC Charger",
675
+ 0xA3A5: "Smart Battery Sense (Rev2)",
676
+ 0xA3B0: "Smart BatteryProtect 12/24V-65A",
677
+ 0xA3B1: "Smart BatteryProtect 12/24V-100A",
678
+ 0xA3B2: "Smart BatteryProtect 12/24V-220A",
679
+ 0xA3B3: "Smart BatteryProtect 48V-100A",
680
+ 0xA3C0: "Orion Smart 12V/12V-18A DC-DC Converter",
681
+ 0xA3C1: "Orion Smart 12V/24V-10A DC-DC Converter",
682
+ 0xA3C2: "Orion Smart 24V/12V-20A DC-DC Converter",
683
+ 0xA3C3: "Orion Smart 24V/24V-12A DC-DC Converter",
684
+ 0xA3C4: "Orion Smart 24V/48V-6A DC-DC Converter",
685
+ 0xA3C5: "Orion Smart 48V/12V-20A DC-DC Converter",
686
+ 0xA3C6: "Orion Smart 48V/24V-12A DC-DC Converter",
687
+ 0xA3C7: "Orion Smart 48V/48V-6A DC-DC Converter",
688
+ 0xA3C8: "Orion Smart 12V/12V-30A DC-DC Converter",
689
+ 0xA3C9: "Orion Smart 12V/24V-15A DC-DC Converter",
690
+ 0xA3CA: "Orion Smart 24V/12V-30A DC-DC Converter",
691
+ 0xA3CB: "Orion Smart 24V/24V-17A DC-DC Converter",
692
+ 0xA3CC: "Orion Smart 24V/48V-8.5A DC-DC Converter",
693
+ 0xA3CD: "Orion Smart 48V/12V-30A DC-DC Converter",
694
+ 0xA3CE: "Orion Smart 48V/24V-16A DC-DC Converter",
695
+ 0xA3CF: "Orion Smart 48V/48V-8A DC-DC Converter",
696
+ 0xA3D0: "Orion Smart 12V/12V-30A Buck-Boost Converter",
697
+ 0xA3D1: "Orion Smart 12V/24V-15A Buck-Boost Converter",
698
+ 0xA3D2: "Orion Smart Orion 24V/12V-30A Buck-Boost Converter",
699
+ 0xA3D3: "Orion Smart Orion 24V/24V-17A Buck-Boost Converter",
700
+ 0xA3E0: "Smart BMS CL 12-100",
701
+ 0xA3E5: "Lynx Smart BMS 500",
225
702
  0xA3E6: "Lynx Smart BMS 1000",
226
- 0x2780: "Victron Multiplus II 12/3000/120-50 2x120V",
703
+ 0xA3E8: "Smart BMS 12-200",
704
+ 0xA3EC: "smallBMS",
705
+ 0xA3F0: "Smart Buckboost 12V/12V-50A non-iso DC-DC charger",
706
+ 0xA400: "MultiC - Generic",
707
+ 0xA401: "Inverter RS Solar 48V/6000VA/80A",
708
+ 0xA402: "Inverter RS 48V/6000VA",
709
+ 0xA441: "Multi RS Solar 48V/6000VA/100A",
710
+ 0xA442: "Multi RS Solar 48V/6000VA/100A",
711
+ 0xA443: "Multi RS Solar 48V/6000VA/100A",
712
+ 0xA444: "Multi RS Solar 48V/6000VA/100A",
713
+ 0xA480: "Multi 15kVA 3phase",
714
+ 0xA4C0: "Transfer Switch - Generic id",
715
+ 0xA4C1: "Transfer Switch 3 Phase 2 in 1 out 80A",
716
+ 0xA501: "MultiPlus-X Smart 12V/3000VA/120A",
717
+ 0xB000: "Valence XP Battery",
718
+ 0xB001: "Valence BMS",
719
+ 0xB002: "Carlo Gavazzi EM24 Energy Meter",
720
+ 0xB003: "Redflow ZBM 2 Battery",
721
+ 0xB004: "LG resu battery",
722
+ 0xB005: "BMZ battery",
723
+ 0xB006: "Carlo Gavazzi virtual PV Inverter (on EM24)",
724
+ 0xB007: "CAN-bus BMS battery",
725
+ 0xB008: "Murata battery",
726
+ 0xB009: "Pylontech battery",
727
+ 0xB00A: "BYD B-Box Pro battery",
728
+ 0xB00B: "PureDrive battery",
729
+ 0xB00C: "Carlo Gavazzi ET 112 Energy Meter",
730
+ 0xB00D: "Carlo Gavazzi ET 340 Energy Meter",
731
+ 0xB00E: "ZCell BMS",
732
+ 0xB00F: "Energy Tube EMSC2 battery",
733
+ 0xB010: "Mercedes Benz Energy battery",
734
+ 0xB011: "Carlo Gavazzi virtual PV Inverter (on ET340)",
735
+ 0xB012: "FIAMM SoNick 48TL battery",
736
+ 0xB013: "SSS DC Energy Meter/Switch",
737
+ 0xB014: "Freedom WON battery",
738
+ 0xB015: "BYD B-Box L battery",
739
+ 0xB016: "Discover AES battery",
740
+ 0xB017: "Carlo Gavazzi EM24 Ethernet Energy Meter",
741
+ 0xB018: "Smappee Power Box",
742
+ 0xB019: "BYD Premium LV battery",
743
+ 0xB020: "BlueNova battery",
744
+ 0xB021: "BSLBATT battery",
745
+ 0xB022: "REC-BMS battery",
746
+ 0xB023: "Eastron SDM630 Energy Meter",
747
+ 0xB024: "Freedom WON eTower battery",
748
+ 0xB025: "Dyness battery",
749
+ 0xB026: "Carlo Gavazzi EM540 Energy Meter",
750
+ 0xB027: "Carlo Gavazzi virtual PV Inverter (on EM540)",
751
+ 0xB028: "Cegasa battery",
752
+ 0xB029: "Pylontech Pelio-L battery",
753
+ 0xB030: "IMT Si-RS485 Series Solar Irradiance Sensor",
754
+ 0xB031: "Carlo Gavazzi EM300 Spec 27 Energy Meter",
755
+ 0xB032: "Carlo Gavazzi virtual PV Inverter (on EM300 Spec 27)",
756
+ 0xB033: "ABB B-Series Energy Meter",
757
+ 0xB034: "Shelly EM/3EM Energy Meter",
758
+ 0xB040: "Fischer Panda Genset",
759
+ 0xB041: "WATT Imperium Fuel Cell 3.0",
760
+ 0xB042: "Bornay Windplus",
761
+ 0xB043: "WATT Imperium Fuel Cell 4.0",
762
+ 0xB050: "123 SmartBMS",
763
+ 0xB051: "Hubble battery",
764
+ 0xB060: "Oceanvolt Display 2",
765
+ 0xB061: "Oceanvolt ServoProp",
766
+ 0xB070: "Volturnus Wind Turbine Voltage Limiter",
767
+ 0xB071: "EConnect Distribution Box",
768
+ 0xB080: "Wakespeed WS500 Alternator Regulator",
769
+ 0xB081: "Wakespeed WS3000 DCDC EMS",
770
+ 0xB0C0: "MG BMS 24-96V General",
771
+ 0xB0C1: "MG BMS 24-48V/150A",
772
+ 0xB0C2: "MG BMS 24-48V/400A",
773
+ 0xB0C3: "MG BMS 24-48V/600A",
774
+ 0xB0C4: "MG BMS 24-48V/1000A",
775
+ 0xB0C5: "MG BMS 72V/400A",
776
+ 0xB0C6: "MG BMS 96V/600A",
777
+ 0xB0C7: "MG BMS 72-96V/500A",
778
+ 0xB0D0: "MG BMS 12V General",
779
+ 0xB0D1: "MG BMS 12V/150",
780
+ 0xB0D2: "MG BMS 12V/400A",
781
+ 0xB0D3: "MG BMS 12V/600A",
782
+ 0xB0D4: "MG BMS 12V/1000A",
783
+ 0xB0D8: "MG BMS 48-900V General",
784
+ 0xB0D9: "MG BMS 48-900V/300A",
785
+ 0xB0DA: "MG BMS 48-900V/500A",
786
+ 0xB0E0: "MG SmartLink MX",
787
+ 0xB0E1: "MG SmartLink Connect",
788
+ 0xB0E2: "MG SmartLink PLC",
789
+ 0xC000: "VGR, VGR2 or VER",
790
+ 0xC001: "Color Control",
791
+ 0xC002: "Venus GX",
792
+ 0xC003: "Generic Venus Device",
793
+ 0xC004: "VE.Direct LoRaWAN",
794
+ 0xC005: "VE.Direct LoRaWAN Smart",
795
+ 0xC006: "Octo GX",
796
+ 0xC007: "EasySolar-II",
797
+ 0xC008: "MultiPlus-II",
798
+ 0xC009: "Maxi GX",
227
799
  0xC00A: "Cerbo GX",
800
+ 0xC00B: "EasySolar-II",
801
+ 0xC00C: "MultiPlus-II",
802
+ 0xC00D: "Maxi GX",
803
+ 0xC00E: "EasySolar-II",
804
+ 0xC00F: "MultiPlus-II",
805
+ 0xC010: "Maxi GX",
806
+ 0xC011: "SHS400",
807
+ 0xC012: "Cerbo GX",
808
+ 0xC013: "Ekrano GX",
809
+ 0xC014: "Cerbo-S GX",
810
+ 0xC020: "VE.Direct LoRaWAN",
811
+ 0xC021: "Global Link 520",
812
+ 0xC024: "EV Charge Station 32A",
813
+ 0xC025: "EV Charge Station 32A",
814
+ 0xC026: "EV Charge Station 32A NS",
815
+ 0xC028: "GX Tank 140",
816
+ 0xC029: "RuuviTag",
817
+ 0xC02A: "Mopeka sensor",
228
818
  0xC030: {name:"SmartShunt IP65 500A/50mV",image: Images.shunt},
229
- 0xeba0: "Smart Lithium Battery",
230
-
819
+ 0xC031: {name:"SmartShunt IP65 1000A/50mV",image: Images.shunt},
820
+ 0xC032: {name:"SmartShunt IP65 2000A/50mV", image: Images.shunt},
821
+ 0xC033: "All-In-1 Smart",
822
+ 0xC034: "BMV-800 Smart",
823
+ 0xC035: "SmartShunt IP65 500A/50mV",
824
+ 0xC036: "SmartShunt IP65 1000A/50mV",
825
+ 0xC037: "SmartShunt IP65 2000A/50mV",
826
+ 0xeba0: "Smart Lithium Battery"
827
+
231
828
  },
232
829
  AuxMode:{
233
830
  STARTER_VOLTAGE: 0,
@@ -306,7 +903,7 @@ ChargerError:new Map()
306
903
  .set(215, "INTERNAL_SUPPLY_VOLTAGE_D")
307
904
  ,
308
905
  OffReasons : new Map([
309
- [0x00000000, 'NONE'],
906
+ [0x00000000, 'NO REASON'],
310
907
  [0x00000001, 'NO_INPUT_POWER'],
311
908
  [0x00000002, 'SWITCHED_OFF_SWITCH'],
312
909
  [0x00000004, 'SWITCHED_OFF_REGISTER'],
@@ -315,7 +912,6 @@ OffReasons : new Map([
315
912
  [0x00000020, 'PAY_AS_YOU_GO_OUT_OF_CREDIT'],
316
913
  [0x00000040, 'BMS'],
317
914
  [0x00000080, 'ENGINE_SHUTDOWN'],
318
- [0x00000081, 'ENGINE_SHUTDOWN_AND_INPUT_VOLTAGE_LOCKOUT'],
319
915
  [0x00000100, 'ANALYSING_INPUT_VOLTAGE']
320
916
  ])
321
917
  }
@@ -11,7 +11,7 @@ const VictronIdentifier = require('./VictronIdentifier.js');
11
11
  constructor(device,config,gattConfig){
12
12
  super(device,config,gattConfig)
13
13
 
14
- if (device.modelID)
14
+ if (device&&device.modelID)
15
15
  this.modelID=device.modelID
16
16
  }
17
17
 
@@ -52,6 +52,31 @@ const VictronIdentifier = require('./VictronIdentifier.js');
52
52
  }
53
53
  return null
54
54
  }
55
+
56
+ offReasonText(value){
57
+ let reasons=[];
58
+ VC.OffReasons.forEach((v,k)=>{
59
+ if (k&value)
60
+ reasons.push(v);
61
+ })
62
+ return reasons.join("|");
63
+ }
64
+
65
+ alarmReasonText(value){
66
+ let reasons=[];
67
+ VC.AlarmReason.forEach((v,k)=>{
68
+ if (k&value)
69
+ reasons.push(v);
70
+ })
71
+ return reasons.join("|");
72
+ }
73
+ emitAlarm(tag="alarm", alarm){
74
+ this.emit(
75
+ tag,
76
+ { message:this.alarmReasonText(alarm),
77
+ alarm: `0x${alarm.toString(16).padStart(8,"0")}`,
78
+ alarmstate: 'alert'})
79
+ }
55
80
  async init(){
56
81
  await super.init()
57
82
  this.addParameter(
@@ -63,7 +88,7 @@ const VictronIdentifier = require('./VictronIdentifier.js');
63
88
  )
64
89
  }
65
90
  alarmReason(alarmValue){
66
- return this.constructor.AlarmReason[alarmValue]
91
+ return VC.AlarmReason.get(alarmValue)
67
92
  }
68
93
  getModelName(){
69
94
  const mID = this.getModelID()
@@ -80,7 +80,7 @@ class VictronBatteryMonitor extends VictronSensor{
80
80
 
81
81
  this.auxMode=VC.AuxMode.STARTER_VOLTAGE
82
82
 
83
- if (!this.auxMode){
83
+ if (this.auxMode==undefined){
84
84
  const md=await this.constructor.getDataPacket(this.device, this.getManufacturerData(this.constructor.ManufacturerID))
85
85
  try {
86
86
  if (this.encryptionKey){
@@ -120,17 +120,15 @@ class VictronBatteryMonitor extends VictronSensor{
120
120
  }
121
121
 
122
122
  }
123
-
123
+
124
124
  emitValuesFrom(decData){
125
125
 
126
126
  this.emitData("ttg",decData,0)
127
127
  this.emitData("voltage",decData,2);
128
128
  const alarm = this.getPath("alarm").read(decData,4)
129
- if (alarm>0){
130
- this.emit(
131
- `ALARM #${alarm} from ${this.getDisplayName()})`,
132
- { message: VC.AlarmReason.get(alarm), state: 'alert'})
133
- }
129
+ if (alarm>0)
130
+ this.emitAlarm("alarm",alarm)
131
+
134
132
  switch(this.auxMode){
135
133
  case VC.AuxMode.STARTER_VOLTAGE:
136
134
  this.emitData("starterVoltage",decData,6);
@@ -25,7 +25,7 @@ class VictronDCDCConverter extends VictronSensor{
25
25
  .default="electrical.chargers.{id}.output.voltage"
26
26
 
27
27
  this.addMetadatum('offReason','', 'reason unit is off',
28
- (buff)=>{return VC.OffReasons.get(buff.readUInt32LE(6))})
28
+ (buff)=>{return this.offReasonText(buff.readUInt32LE(6))})
29
29
  .default="electrical.chargers.{id}.offReason"
30
30
 
31
31
 
@@ -55,6 +55,7 @@ class VictronDCEnergyMeter extends VictronSensor{
55
55
  this.addMetadatum('alarm','', 'alarm',
56
56
  (buff)=>{return buff.readUInt16LE(4)})
57
57
  .default="electrical.meters.{id}.alarm"
58
+ this.getPath("alarm").notify=true
58
59
  this.addMetadatum('current','A', 'current')
59
60
  .default="electrical.meters.{id}.current"
60
61
 
@@ -65,9 +66,7 @@ class VictronDCEnergyMeter extends VictronSensor{
65
66
  this.emitData("voltage",decData,2);
66
67
  const alarm = this.getPath("alarm").read(decData,4)
67
68
  if (alarm>0){
68
- this.emit(
69
- `ALARM #${alarm} from ${this.getDisplayName()})`,
70
- { message: AlarmReason(alarm), state: 'alert'})
69
+ this.emitAlarm("alarm",alarm)
71
70
  }
72
71
  switch(this.auxMode){
73
72
  case VC.AuxMode.STARTER_VOLTAGE:
@@ -17,6 +17,7 @@ class VictronInverter extends VictronSensor{
17
17
  const md = this.addMetadatum('alarmReason','', 'reason for alarm',
18
18
  (buff)=>{return buff.readIntU16LE(1)})
19
19
  .default="electrical.inverters.{id}.alarm"
20
+ md.notify=true
20
21
 
21
22
  this.addDefaultPath('dcVoltage','electrical.inverters.dc.voltage')
22
23
  .read=(buff)=>{return this.NaNif(buff.readInt16LE(3),0x7FFF)/100}
@@ -40,9 +41,7 @@ class VictronInverter extends VictronSensor{
40
41
  this.NaNif(br.read_unsigned_int(11),0x7FF)/10)
41
42
  const alarm = this.getPath("alarmReason").read(decData)
42
43
  if (alarm>0){
43
- this.emit(
44
- `ALARM #${alarm} from ${this.getDisplayName()})`,
45
- { message: VC.AlarmReason.get(alarm), state: 'alert'})
44
+ this.emitAlarm("alarmReason",alarm)
46
45
  }
47
46
  }
48
47
 
@@ -37,7 +37,7 @@ class VictronLynxSmartBMS extends VictronSensor{
37
37
  (buff)=>{return buff.readUInt16LE(7)})
38
38
  .default="electrical.batteries.{batteryID}.IOStatus"
39
39
 
40
- this.addMetadatum('warningsAndAlarms','','warnings and alarms')
40
+ this.addMetadatum('warningsAndAlarms','','warnings and alarms (undocumented)')
41
41
 
42
42
  this.addDefaultPath('soc','electrical.batteries.capacity.stateOfCharge')
43
43
 
@@ -32,9 +32,11 @@ class VictronOrionXS extends VictronSensor{
32
32
  (buff)=>{return this.NaNif(buff.readUInt16LE(8),0xFFFF)/10})
33
33
  .default="electrical.chargers.{id}.input.current"
34
34
  this.addMetadatum('deviceOffReason','', 'device off reason',
35
- (buff)=>{return VC.OffReasons.get(buff.readUInt32BE(10))})
35
+ (buff)=>{return this.offReasonText(buff.readUInt32LE(10))})
36
36
  .default="electrical.chargers.{id}.offReason"
37
37
  }
38
38
 
39
+
40
+
39
41
  }
40
42
  module.exports=VictronOrionXS
@@ -32,7 +32,8 @@ class VictronSmartBatteryProtect extends VictronSensor{
32
32
  this.addMetadatum('chargerError','', 'charger error',
33
33
  (buff)=>{return VC.ChargerError.get(buff.readUInt8(3))})
34
34
  this.addMetadatum('alarmReason','', 'alarm reason',
35
- (buff)=>{return VC.AlarmReason.get(buff.readUInt16LE(4))})
35
+ (buff)=>{return buff.readUInt16LE(4)})
36
+ this.getPath("alarmReason").notify=true
36
37
  this.addMetadatum('warningReason','', 'warning reason', //TODO
37
38
  (buff)=>{return (buff.readUInt16LE(5))})
38
39
  this.addMetadatum('channel1Voltage','V', 'channel one voltage',
@@ -40,8 +41,14 @@ class VictronSmartBatteryProtect extends VictronSensor{
40
41
  this.addMetadatum('outputVoltage','V', 'output voltage',
41
42
  (buff)=>{return this.NaNif(buff.readUInt16LE(9),0xFFFF)/100})
42
43
  this.addMetadatum('offReason','', 'off reason',
43
- (buff)=>{return VC.OffReasons.get(buff.readUInt16LE(11))}) //TODO
44
+ (buff)=>{return this.offReasonText(buff.readUInt32LE(11))})
44
45
  }
46
+ emitValuesFrom(decData){
47
+ super.emitValuesFrom(decData)
48
+ const alarm = this.getPath("alarm").read(decData)
49
+ if (alarm>0)
50
+ this.emitAlarm("alarm",alarm)
51
+ }
45
52
 
46
53
  }
47
54
  module.exports=VictronSmartBatteryProtect
package/testGATT.js ADDED
@@ -0,0 +1,24 @@
1
+ const {createBluetooth} = require('@naugehyde/node-ble');
2
+
3
+ const {bluetooth, destroy} = createBluetooth();
4
+ var cls=require("./sensor_classes/XiaomiMiBeacon.js");
5
+
6
+ const adapter = await bluetooth.getAdapter("hci0");
7
+ await adapter.startDiscovery();
8
+ var device = await adapter.waitDevice("A4:C1:38:3E:7E:94",60000);
9
+
10
+ var continueTesting=true;
11
+ var trial=1
12
+ function sleep(ms) {
13
+ return new Promise(resolve => setTimeout(resolve, ms));
14
+ }
15
+ while(continueTesting) {
16
+ console.log("trial: "+trial++);
17
+ await device.connect();
18
+ console.log("\tconnected");
19
+
20
+ await device.disconnect();
21
+ console.log("\tdisconnected");
22
+ await sleep(2000)
23
+
24
+ }