homebridge-sonnenbatterie-v2
Version:
A Homebridge plugin for a SonnenBatterie with v2 firmware.
76 lines • 3.88 kB
JavaScript
"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