node-red-contrib-victron-ble
Version:
node-red node to parse Instant Readout advertisement data from Victron BLE devices
159 lines (158 loc) • 4.21 kB
TypeScript
/// <reference types="node" />
/// <reference types="node" />
import 'reflect-metadata';
export declare function EnumField(enumType: object): (target: any, propertyKey: string) => void;
export declare enum OperationMode {
OFF = 0,
LOW_POWER = 1,
FAULT = 2,
BULK = 3,
ABSORPTION = 4,
FLOAT = 5,
STORAGE = 6,
EQUALIZE_MANUAL = 7,
INVERTING = 9,
POWER_SUPPLY = 11,
STARTING_UP = 245,
REPEATED_ABSORPTION = 246,
RECONDITION = 247,
BATTERY_SAFE = 248,
ACTIVE = 249,
EXTERNAL_CONTROL = 252,
NOT_AVAILABLE = 255
}
export declare enum ChargerError {
NO_ERROR = 0,
TEMPERATURE_BATTERY_HIGH = 1,
VOLTAGE_HIGH = 2,
REMOTE_TEMPERATURE_A = 3,
REMOTE_TEMPERATURE_B = 4,
REMOTE_TEMPERATURE_C = 5,
REMOTE_BATTERY_A = 6,
REMOTE_BATTERY_B = 7,
REMOTE_BATTERY_C = 8,
HIGH_RIPPLE = 11,
TEMPERATURE_BATTERY_LOW = 14,
TEMPERATURE_CHARGER = 17,
OVER_CURRENT = 18,
BULK_TIME = 20,
CURRENT_SENSOR = 21,
INTERNAL_TEMPERATURE_A = 22,
INTERNAL_TEMPERATURE_B = 23,
FAN = 24,
OVERHEATED = 26,
SHORT_CIRCUIT = 27,
CONVERTER_ISSUE = 28,
OVER_CHARGE = 29,
INPUT_VOLTAGE = 33,
INPUT_CURRENT = 34,
INPUT_POWER = 35,
INPUT_SHUTDOWN_VOLTAGE = 38,
INPUT_SHUTDOWN_CURRENT = 39,
INPUT_SHUTDOWN_FAILURE = 40,
INVERTER_SHUTDOWN_41 = 41,
INVERTER_SHUTDOWN_42 = 42,
INVERTER_SHUTDOWN_43 = 43,
INVERTER_OVERLOAD = 50,
INVERTER_TEMPERATURE = 51,
INVERTER_PEAK_CURRENT = 52,
INVERTER_OUPUT_VOLTAGE_A = 53,
INVERTER_OUPUT_VOLTAGE_B = 54,
INVERTER_SELF_TEST_A = 55,
INVERTER_SELF_TEST_B = 56,
INVERTER_AC = 57,
INVERTER_SELF_TEST_C = 58,
COMMUNICATION = 65,
SYNCHRONISATION = 66,
BMS = 67,
NETWORK_A = 68,
NETWORK_B = 69,
NETWORK_C = 70,
NETWORK_D = 71,
PV_INPUT_SHUTDOWN_80 = 80,
PV_INPUT_SHUTDOWN_81 = 81,
PV_INPUT_SHUTDOWN_82 = 82,
PV_INPUT_SHUTDOWN_83 = 83,
PV_INPUT_SHUTDOWN_84 = 84,
PV_INPUT_SHUTDOWN_85 = 85,
PV_INPUT_SHUTDOWN_86 = 86,
PV_INPUT_SHUTDOWN_87 = 87,
CPU_TEMPERATURE = 114,
CALIBRATION_LOST = 116,
FIRMWARE = 117,
SETTINGS = 119,
TESTER_FAIL = 121,
INTERNAL_DC_VOLTAGE_A = 200,
INTERNAL_DC_VOLTAGE_B = 201,
SELF_TEST = 202,
INTERNAL_SUPPLY_A = 203,
INTERNAL_SUPPLY_B = 205,
INTERNAL_SUPPLY_C = 212,
INTERNAL_SUPPLY_D = 215
}
export declare enum OffReason {
NO_REASON = 0,
NO_INPUT_POWER = 1,
SWITCHED_OFF_SWITCH = 2,
SWITCHED_OFF_REGISTER = 4,
REMOTE_INPUT = 8,
PROTECTION_ACTIVE = 16,
PAY_AS_YOU_GO_OUT_OF_CREDIT = 32,
BMS = 64,
ENGINE_SHUTDOWN = 128,
ANALYSING_INPUT_VOLTAGE = 256
}
export declare enum AlarmReason {
NO_ALARM = 0,
LOW_VOLTAGE = 1,
HIGH_VOLTAGE = 2,
LOW_SOC = 4,
LOW_STARTER_VOLTAGE = 8,
HIGH_STARTER_VOLTAGE = 16,
LOW_TEMPERATURE = 32,
HIGH_TEMPERATURE = 64,
MID_VOLTAGE = 128,
OVERLOAD = 256,
DC_RIPPLE = 512,
LOW_V_AC_OUT = 1024,
HIGH_V_AC_OUT = 2048,
SHORT_CIRCUIT = 4096
}
export declare enum AlarmNotification {
NO_ALARM = 0,
WARNING = 1,
ALARM = 2
}
export declare enum ACInState {
AC_IN_1 = 0,
AC_IN_2 = 1,
NOT_CONNECTED = 2,
UNKNOWN = 3
}
export interface AdvertisementContainer {
prefix: number;
modelId: number;
readoutType: number;
iv: number;
encryptedData: Buffer;
}
export declare abstract class Device {
protected advertisementKey: string;
constructor(advertisementKey: string);
protected parseContainer(data: Buffer): AdvertisementContainer;
protected getModelId(data: Buffer): number;
protected decrypt(data: Buffer): Buffer;
parse(data: Buffer): void;
abstract parseDecrypted(decrypted: Buffer): void;
toJson(): Record<string, any>;
}
export declare function kelvinToCelsius(tempInKelvin: number): number;
export declare class BitReader {
private data;
private bitPosition;
constructor(data: Buffer);
readBit(): number;
readUnsignedInt(numBits: number): number;
readSignedInt(numBits: number): number;
static toSignedInt(value: number, numBits: number): number;
}