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
53 lines (48 loc) • 2.2 kB
JavaScript
/*
Smart Battery Protect
Start
bit
Nr of
bits Meaning Units Range NA
value Remark
8 8 Device state 0 .. 0xFE 0xFF VE_REG_DEVICE_STATE
16 8 Output state 0 .. 0xFE 0xFF VE_REG_DC_OUTPUT_STATUS
24 8 Error code 0 .. 0xFE 0xFF VE_REG_CHR_ERROR_CODE
32 16 Alarm reason 0 .. 0xFFFF - VE_REG_ALARM_REASON
48 16 Warning reason 0 .. 0xFFFF - VE_REG_WARNING_REASON
64 16 Input voltage 0.01 V 327.68 .. 327.66 V 0x7FFF VE_REG_DC_CHANNEL1_VOLTAGE
80 16 Output voltage 0.01 V 0 .. 655.34 V 0xFFFF VE_REG_DC_OUTPUT_VOLTAGE
96 32 Off reason 0 .. 0xFFFFFFFF - VE_REG_DEVICE_OFF_REASON_2
*/
const VictronSensor = require ("./Victron/VictronSensor.js")
const VC = require("./Victron/VictronConstants.js")
class VictronSmartBatteryProtect extends VictronSensor{
static ImageFile="VictronSmartBatteryProte.jpg"
initSchema(){
super.initSchema()
this.addDefaultParam("id")
this.addMetadatum('deviceState','', 'device state',
(buff)=>{return VC.OperationMode.get(buff.readUInt8(1))})
this.addMetadatum('outputStatus','', 'output status', //TODO
(buff)=>{return (buff.readUInt8(2))})
this.addMetadatum('chargerError','', 'charger error',
(buff)=>{return VC.ChargerError.get(buff.readUInt8(3))})
this.addMetadatum('alarmReason','', 'alarm reason',
(buff)=>{return buff.readUInt16LE(4)})
this.addMetadatum('warningReason','', 'warning reason', //TODO
(buff)=>{return (buff.readUInt16LE(5))})
this.addMetadatum('channel1Voltage','V', 'channel one voltage',
(buff)=>{return this.NaNif(buff.readInt16LE(7),0x7FFF)/100})
this.addMetadatum('outputVoltage','V', 'output voltage',
(buff)=>{return this.NaNif(buff.readUInt16LE(9),0xFFFF)/100})
this.addMetadatum('offReason','', 'off reason',
(buff)=>{return this.offReasonText(buff.readUInt32LE(11))})
}
emitValuesFrom(decData){
super.emitValuesFrom(decData)
const alarm = this.getPath("alarmReason").read(decData)
if (alarm>0)
this.emitAlarm("alarmReason",alarm)
}
}
module.exports=VictronSmartBatteryProtect