UNPKG

node-red-contrib-victron-ble

Version:

node-red node to parse Instant Readout advertisement data from Victron BLE devices

160 lines (159 loc) 4.25 kB
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; protected decryptedData?: Buffer; constructor(advertisementKey: string); protected parseContainer(data: Buffer): AdvertisementContainer; protected getModelId(data: Buffer): number; protected decrypt(data: Buffer): Buffer; parse(data: Buffer): this; abstract parseDecrypted(decrypted: Buffer): void; protected modelId?: number; getModelName(): string; 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; }