@tfaster/node-stiebel-isg-parser
Version:
Parser for the Stiebel Eltron ISG web interface written in typescript
75 lines (74 loc) • 3.63 kB
JavaScript
;
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;