homebridge-sonnenbatterie-v2
Version:
A Homebridge plugin for a SonnenBatterie with v2 firmware.
122 lines • 3.74 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.SonnenAPI = void 0;
const axios_1 = __importDefault(require("axios"));
class SonnenAPI {
version;
interval;
sonnenURL;
sonnenToken;
sonnenSerial;
log;
Endpoints = {
Status: "status",
Latest: "latestdata",
Configurations: "configurations",
Inverter: "inverter",
};
batteryStatus;
inverterStatus;
constructor(version, interval, config, log) {
this.version = version;
this.interval = interval;
this.sonnenURL = config.sonnenURL;
this.sonnenToken = config.sonnenToken;
this.sonnenSerial = config.sonnenSerial;
this.log = log;
this.batteryStatus = {
Apparent_output: 0,
BackupBuffer: 0,
BatteryCharging: false,
BatteryDischarging: false,
Consumption_W: 0,
Fac: 0,
FlowConsumptionBattery: false,
FlowConsumptionGrid: false,
FlowConsumptionProduction: false,
FlowGridBattery: false,
FlowProductionBattery: false,
FlowProductionGrid: false,
GridFeedIn_W: 0,
IsSystemInstalled: 0,
OperatingMode: "",
Pac_total_W: 0,
Production_W: 0,
RSOC: 0,
Sac1: null,
Sac2: null,
Sac3: null,
SystemStatus: "",
Timestamp: "",
USOC: 0,
Uac: 0,
Ubat: 0,
dischargeNotAllowed: false,
generator_autostart: false,
};
this.inverterStatus = {
fac: 0,
iac_total: 0,
ibat: 0,
ipv: 0,
pac_microgrid: 0,
pac_total: 0,
pbat: 0,
phi: 0,
ppv: 0,
sac_total: 0,
tmax: 0,
uac: 0,
ubat: 0,
upv: 0,
};
}
serial() {
return this.sonnenSerial ?? "SB00000";
}
displayName() {
return "Sonnen";
}
makeURL(endpoint) {
//TODO: throw when there's no sonnenURL, sonnenToken
const sonnenURL = this.sonnenURL ?? "192.168.68.51";
const url = `http://${sonnenURL}/api/v${this.version}/${endpoint}`;
return url;
}
async fetchData(url) {
this.log.debug(`fetching from url: ${url}, token: ${this.sonnenToken}`);
const response = await axios_1.default.get(url, {
headers: {
"Content-Type": "application/json",
"Auth-Token": this.sonnenToken,
},
});
const data = response.data;
return data;
}
async reloadInverterStatus() {
const statusEndpoint = this.Endpoints.Inverter;
const url = this.makeURL(statusEndpoint);
this.inverterStatus = await this.fetchData(url);
}
async fetchConfiguration() {
const statusEndpoint = this.Endpoints.Configurations;
const url = this.makeURL(statusEndpoint);
return await this.fetchData(url);
}
async reloadBatteryStatus() {
const statusEndpoint = this.Endpoints.Status;
const url = this.makeURL(statusEndpoint);
this.batteryStatus = await this.fetchData(url);
}
async fetchLatestData() {
const latestEndpoint = this.Endpoints.Latest;
const url = this.makeURL(latestEndpoint);
return await this.fetchData(url);
}
}
exports.SonnenAPI = SonnenAPI;
//# sourceMappingURL=sonnenApi.js.map