UNPKG

@tfaster/node-stiebel-isg-parser

Version:

Parser for the Stiebel Eltron ISG web interface written in typescript

75 lines (74 loc) 3.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var node_html_parser_1 = require("node-html-parser"); function parseVentilationStages(rawData) { var rawDataWithReplacedScriptTags = rawData.replace(/script/g, 'article'); var root = node_html_parser_1.parse(rawDataWithReplacedScriptTags); var articleElements = root.querySelectorAll('#werte div.values article'); var dayStage = articleElements[0].rawText.trim().substr(-3, 1); var nightStage = articleElements[1].rawText.trim().substr(-3, 1); var standbyStage = articleElements[2].rawText.trim().substr(-3, 1); var partyStage = articleElements[3].rawText.trim().substr(-3, 1); var manualStage = articleElements[4].rawText.trim().substr(-3, 1); return { day: parseInt(dayStage, 10), night: parseInt(nightStage, 10), standby: parseInt(standbyStage, 10), party: parseInt(partyStage, 10), manual: parseInt(manualStage, 10), }; } exports.parseVentilationStages = parseVentilationStages; function parseSystemInfo(rawData) { var root = node_html_parser_1.parse(rawData); var valueElements = root.querySelectorAll('#werte table tr td.value'); var readFloat = function (elem) { return parseFloat(elem.rawText.split(' ')[0].replace(',', '.')); }; var readBooleanImage = function (elem, imageFileName) { return elem.firstChild.attributes.src.indexOf(imageFileName) >= 0; }; var res = { roomTemperature: { actualRoomTemperatureHc1: readFloat(valueElements[0]), setRoomTemperatureHc1: readFloat(valueElements[1]), relativeHumidityHc1: readFloat(valueElements[2]), actualRoomTemperatureHc2: readFloat(valueElements[3]), setRoomTemperatureHc2: readFloat(valueElements[4]), relativeHumidityHc2: readFloat(valueElements[5]) }, heating: { outsideTemperature: readFloat(valueElements[6]), actualTemperatureHc1: readFloat(valueElements[7]), setTemperatureHc1: readFloat(valueElements[8]), actualTemperatureHc2: readFloat(valueElements[9]), setTemperatureHc2: readFloat(valueElements[10]), flowTemperature: readFloat(valueElements[11]), returnTemperature: readFloat(valueElements[12]), pressure: readFloat(valueElements[13]), flowRate: readFloat(valueElements[14]) }, dhw: { actualTemperature: readFloat(valueElements[15]), setTemperature: readFloat(valueElements[16]) }, ventilation: { actualFanSpeed: readFloat(valueElements[17]), setFlowRate: readFloat(valueElements[18]), extractAirActualFanSpeed: readFloat(valueElements[19]), extractAirSetFlowRate: readFloat(valueElements[20]), extractAirRelativeHumidity: readFloat(valueElements[21]), extractAirTemperature: readFloat(valueElements[22]), extractAirDewPointTemperature: readFloat(valueElements[23]), differentialPressure: readFloat(valueElements[24]) }, cooling: { dewPointTemperatureHc1: readFloat(valueElements[25]), dewPointTemperatureHc2: readFloat(valueElements[26]) }, heatSourceHeatingStage: parseInt(valueElements[27].rawText, 10), energyManagementEnabled: !readBooleanImage(valueElements[28], 'ste-symbol_an-97b765.png') }; return res; } exports.parseSystemInfo = parseSystemInfo;