UNPKG

homebridge-sonnenbatterie-v2

Version:

A Homebridge plugin for a SonnenBatterie with v2 firmware.

122 lines 3.74 kB
"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