UNPKG

homebridge-sonnenbatterie-v2

Version:

A Homebridge plugin for a SonnenBatterie with v2 firmware.

81 lines 4.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SonnenBatterieGridAccessory = void 0; class SonnenBatterieGridAccessory { 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, "Grid-V1") .setCharacteristic(platform.Characteristic.SerialNumber, "GRID-V1"); const gridService = accessory.getService("SB-Grid-ID") || accessory.addService(platform.Service.Switch, "Grid Export", "SB-Grid-ID"); gridService.addOptionalCharacteristic(platform.Characteristic.BatteryLevel); gridService.addOptionalCharacteristic(platform.Characteristic.StatusLowBattery); gridService.addOptionalCharacteristic(platform.Characteristic.StatusActive); gridService.addOptionalCharacteristic(platform.Characteristic.StatusFault); gridService .getCharacteristic(platform.Characteristic.On) .onGet(this.isImporting.bind(this)); gridService .getCharacteristic(platform.Characteristic.BatteryLevel) .onGet(this.getBatteryLevel.bind(this)); gridService .getCharacteristic(platform.Characteristic.StatusLowBattery) .onGet(this.hasLowBattery.bind(this)); gridService .getCharacteristic(platform.Characteristic.StatusActive) .onGet(this.isImporting.bind(this)); this.platform.log.debug("did bind characteristics to service: ", gridService.UUID); this.service = gridService; } async isImporting() { const value = this.platform.sonnenAPI.batteryStatus.GridFeedIn_W >= 0; return value; } async isExporting() { const value = this.platform.sonnenAPI.batteryStatus.GridFeedIn_W < 0; return value; } async getGridFeedIn() { const value = this.platform.sonnenAPI.batteryStatus.GridFeedIn_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 Grid accessory: ", batteryStatus.GridFeedIn_W); const isFeedingIntoGrid = batteryStatus.GridFeedIn_W > 0; const level = batteryStatus.USOC; const lowBattery = level < batteryStatus.BackupBuffer; // feature: only publish grid feed-in when we aren't discharing the battery; this should prevent // us from vehicle charging when the battery is discharging for whatever reason. const gridFeedInValue = batteryStatus.BatteryDischarging ? 0 : batteryStatus.GridFeedIn_W * -1; this.platform.sonnenMqtt.publish("Grid", gridFeedInValue, this.platform.log); this.platform.sonnenMqtt.publish("USOC", batteryStatus.USOC, this.platform.log); this.platform.sonnenMqtt.publish("RSOC", batteryStatus.RSOC, this.platform.log); this.service.updateCharacteristic(this.platform.Characteristic.On, isFeedingIntoGrid); this.service.updateCharacteristic(this.platform.Characteristic.BatteryLevel, level); this.service.updateCharacteristic(this.platform.Characteristic.StatusLowBattery, lowBattery); this.service.updateCharacteristic(this.platform.Characteristic.StatusActive, isFeedingIntoGrid); } } exports.SonnenBatterieGridAccessory = SonnenBatterieGridAccessory; //# sourceMappingURL=sonnenGridAccessory.js.map