UNPKG

homebridge-sonnenbatterie-v2

Version:

A Homebridge plugin for a SonnenBatterie with v2 firmware.

74 lines 3.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SonnenBatterieConsumptionAccessory = void 0; class SonnenBatterieConsumptionAccessory { platform; accessory; service; constructor(platform, accessory) { this.platform = platform; this.accessory = accessory; // set accessory information accessory .getService(platform.Service.AccessoryInformation) .setCharacteristic(platform.Characteristic.Manufacturer, "RFx Labs") .setCharacteristic(platform.Characteristic.Model, "Consumption-V1") .setCharacteristic(platform.Characteristic.SerialNumber, "CONS-V1"); const consumptionService = accessory.getService("SB-Cons-ID") || accessory.addService(platform.Service.Switch, "Consumption", "SB-Cons-ID"); consumptionService.setPrimaryService(true); consumptionService.addOptionalCharacteristic(platform.Characteristic.BatteryLevel); consumptionService.addOptionalCharacteristic(platform.Characteristic.StatusLowBattery); consumptionService.addOptionalCharacteristic(platform.Characteristic.StatusActive); consumptionService.addOptionalCharacteristic(platform.Characteristic.StatusFault); consumptionService .getCharacteristic(platform.Characteristic.On) .onGet(this.hasConsumption.bind(this)); consumptionService .getCharacteristic(platform.Characteristic.BatteryLevel) .onGet(this.getBatteryLevel.bind(this)); consumptionService .getCharacteristic(platform.Characteristic.StatusLowBattery) .onGet(this.hasLowBattery.bind(this)); consumptionService .getCharacteristic(platform.Characteristic.StatusActive) .onGet(this.hasConsumption.bind(this)); this.platform.log.debug("did bind characteristics to service: ", consumptionService.UUID); this.service = consumptionService; } async hasConsumption() { const value = this.platform.sonnenAPI.batteryStatus.Consumption_W > 0; return value; } async getConsumption() { const value = this.platform.sonnenAPI.batteryStatus.Consumption_W; return value; } async getBatteryLevel() { const value = this.platform.sonnenAPI.batteryStatus.USOC; return value; } async hasLowBattery() { const value = this.platform.sonnenAPI.batteryStatus.USOC <= this.platform.sonnenAPI.batteryStatus.BackupBuffer; return value; } // Updatable Accessory // eslint-disable-next-line @typescript-eslint/no-unused-vars updateAccessory(batteryStatus, _) { this.platform.log.debug("updating Consumption accessory: ", batteryStatus.Consumption_W); const hasConsumption = batteryStatus.Consumption_W > 0; const level = batteryStatus.USOC; const lowBattery = level < batteryStatus.BackupBuffer; this.platform.sonnenMqtt.publish("Consumption", batteryStatus.Consumption_W, this.platform.log); this.platform.sonnenMqtt.publish("USOC", batteryStatus.USOC, this.platform.log); //Grid (+I/-E) MQTT topic to modulate charge rate based on excess power this.platform.sonnenMqtt.publish("Grid", batteryStatus.GridFeedIn_W * -1, this.platform.log); this.service.updateCharacteristic(this.platform.Characteristic.On, hasConsumption); this.service.updateCharacteristic(this.platform.Characteristic.BatteryLevel, level); this.service.updateCharacteristic(this.platform.Characteristic.StatusLowBattery, lowBattery); this.service.updateCharacteristic(this.platform.Characteristic.StatusActive, hasConsumption); } } exports.SonnenBatterieConsumptionAccessory = SonnenBatterieConsumptionAccessory; //# sourceMappingURL=sonnenConsumptionAccessory.js.map