UNPKG

homebridge-sonnenbatterie-v2

Version:

A Homebridge plugin for a SonnenBatterie with v2 firmware.

76 lines 3.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SonnenBatterieProductionAccessory = void 0; class SonnenBatterieProductionAccessory { 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, "Production-V1") .setCharacteristic(platform.Characteristic.SerialNumber, "PRD-V1"); const productionService = accessory.getService("SB-Prd-ID") || accessory.addService(platform.Service.Switch, "Production", "SB-Prd-ID"); productionService.setPrimaryService(true); productionService.addOptionalCharacteristic(platform.Characteristic.BatteryLevel); productionService.addOptionalCharacteristic(platform.Characteristic.StatusLowBattery); productionService.addOptionalCharacteristic(platform.Characteristic.StatusActive); productionService.addOptionalCharacteristic(platform.Characteristic.StatusFault); productionService .getCharacteristic(platform.Characteristic.On) .onGet(this.hasProduction.bind(this)); productionService .getCharacteristic(platform.Characteristic.BatteryLevel) .onGet(this.getBatteryLevel.bind(this)); productionService .getCharacteristic(platform.Characteristic.StatusLowBattery) .onGet(this.hasLowBattery.bind(this)); productionService .getCharacteristic(platform.Characteristic.StatusActive) .onGet(this.hasProduction.bind(this)); this.platform.log.debug("did bind characteristics to service: ", productionService.UUID); this.service = productionService; } async hasProduction() { const value = this.platform.sonnenAPI.batteryStatus.Production_W > 0; return value; } async getProduction() { const value = this.platform.sonnenAPI.batteryStatus.Production_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 Production accessory: ", batteryStatus.Production_W); const hasProduction = batteryStatus.Production_W > 0; const level = batteryStatus.USOC; const lowBattery = level < batteryStatus.BackupBuffer; if (this.platform.sonnenMqtt == null) { this.platform.log.error("sonnenMqtt is NULL"); } this.platform.sonnenMqtt.publish("Production", batteryStatus.Production_W, 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, hasProduction); this.service.updateCharacteristic(this.platform.Characteristic.BatteryLevel, level); this.service.updateCharacteristic(this.platform.Characteristic.StatusLowBattery, lowBattery); this.service.updateCharacteristic(this.platform.Characteristic.StatusActive, hasProduction); } } exports.SonnenBatterieProductionAccessory = SonnenBatterieProductionAccessory; //# sourceMappingURL=sonnenProductionAccessory.js.map