Advertisement
Guest User

ReadISG

a guest
Nov 13th, 2017
297
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var http = require('http');
  2. var xpath = require('xpath');
  3. var dom = require('xmldom').DOMParser;
  4.  
  5. var stiebeleltronIP = '192.168.10.4';
  6.  
  7. createState('stiebeleltron.prozess.VERDAMPFERTEMPERATUR', 0, {
  8.     read: true,
  9.     write: false,
  10.     name: "VERDAMPFERTEMPERATUR",
  11.     type: "number",
  12.     unit: "°C",
  13.     role: "value.temperature"
  14. });
  15. createState('stiebeleltron.prozess.VERFLUESSIGERTEMP', 0, {
  16.     read: true,
  17.     write: false,
  18.     name: "VERFLUESSIGERTEMP",
  19.     type: "number",
  20.     unit: "°C",
  21.     role: "value.temperature"
  22. });
  23.  
  24. createState('stiebeleltron.prozess.FORTLUFT_IST_LUEFTERDREHZAHL', 0, {
  25.     read: true,
  26.     write: false,
  27.     name: "FORTLUFT Wärmepumpe IST LÜFTERDREHZAHL",
  28.     type: "number",
  29.     unit: "Hz"
  30. });
  31. createState('stiebeleltron.prozess.FORTLUFT_SOLL_VOLUMENSTROM');
  32. createState('stiebeleltron.prozess.HEISSGASTEMPERATUR', 0, {
  33.     read: true,
  34.     write: false,
  35.     name: "HEISSGASTEMPERATUR",
  36.     type: "number",
  37.     unit: "°C",
  38.     role: "value.temperature"
  39. });
  40.  
  41. createState('stiebeleltron.prozess.NIEDERDRUCK', 0, {
  42.     read: true,
  43.     write: false,
  44.     name: "NIEDERDRUCK",
  45.     type: "number",
  46.     unit: "bar"
  47. });
  48.  
  49. createState('stiebeleltron.prozess.HOCHDRUCK', 0, {
  50.     read: true,
  51.     write: false,
  52.     name: "HOCHDRUCK",
  53.     type: "number",
  54.     unit: "bar"
  55. });
  56. createState('stiebeleltron.prozess.POSITION_VENTIL');
  57.  
  58. createState('stiebeleltron.laufzeit.HEIZEN');
  59. createState('stiebeleltron.laufzeit.WARMWASSER');
  60. createState('stiebeleltron.laufzeit.NHZ_1');
  61. createState('stiebeleltron.laufzeit.NHZ_2');
  62.  
  63. createState('stiebeleltron.waermemenge.HEIZEN_TAG');
  64. createState('stiebeleltron.waermemenge.HEIZEN_SUMME');
  65. createState('stiebeleltron.waermemenge.WARMWASSER_TAG');
  66. createState('stiebeleltron.waermemenge.WARMWASSER_SUMME');
  67. createState('stiebeleltron.waermemenge.NHZ_HEIZEN_SUMME');
  68. createState('stiebeleltron.waermemenge.NHZ_WW_SUMME');
  69.  
  70. createState('stiebeleltron.verbrauch.HEIZEN_TAG');
  71. createState('stiebeleltron.verbrauch.HEIZEN_SUMME');
  72. createState('stiebeleltron.verbrauch.WARMWASSER_TAG');        
  73. createState('stiebeleltron.verbrauch.WARMWASSER_SUMME');
  74. createState('stiebeleltron.verbrauch.GESAMT_TAG');
  75. createState('stiebeleltron.verbrauch.GESAMT_SUMME');
  76.  
  77. createState('stiebeleltron.anlage.RAUM_SOLLTEMPERATUR');
  78. createState('stiebeleltron.anlage.WARMWASSER_SOLLTEMPERATUR');
  79. createState('stiebeleltron.anlage.WARMWASSER_ISTTEMPERATUR');
  80. createState('stiebeleltron.anlage.ZULUFT_DREHZAHL', 0, {
  81.     read: true,
  82.     write: false,
  83.     name: "ZULUFT IST LÜFTERDREHZAHL",
  84.     type: "number",
  85.     unit: "Hz"
  86. });
  87. createState('stiebeleltron.anlage.ZULUFT_VOLUMENSTROM', 0, {
  88.     read: true,
  89.     write: false,
  90.     name: "ZULUFT IST VOLUMENSTROM",
  91.     type: "number",
  92.     unit: "m³/h"
  93. });
  94. createState('stiebeleltron.anlage.FORTLUFT_DREHZAHL', 0, {
  95.     read: true,
  96.     write: false,
  97.     name: "FORTLUFT IST LÜFTERDREHZAHL",
  98.     type: "number",
  99.     unit: "Hz"
  100. });
  101. createState('stiebeleltron.anlage.FORTLUFT_VOLUMENSTROM', 0, {
  102.     read: true,
  103.     write: false,
  104.     name: "FORTLUFT IST VOLUMENSTROM",
  105.     type: "number",
  106.     unit: "m³/h"
  107. });
  108.  
  109. createState('stiebeleltron.anlage.LUEFTUNGSSTUFE_TAG', 0, {
  110.     read: true,
  111.     write: true,
  112.     name: "Lüftungsstufe Tagprogramm",
  113.     type: "number",
  114.     min: 0,
  115.     max: 3
  116. });
  117.  
  118. createState('stiebeleltron.anlage.LUEFTUNGSSTUFE_NACHT', 0, {
  119.     read: true,
  120.     write: true,
  121.     name: "Lüftungsstufe Nachtprogramm",
  122.     type: "number",
  123.     min: 0,
  124.     max: 3
  125. });
  126.  
  127. createState('stiebeleltron.anlage.LUEFTUNGSSTUFE_AKTUELL', 0, {
  128.     read: true,
  129.     write: true,
  130.     name: "Lüftungsstufe aktuell",
  131.     type: "number",
  132.     min: 0,
  133.     max: 3
  134. });
  135.  
  136. createState('stiebeleltron.anlage.STARTZEITHEIZKREISPUMPE', 0, {
  137.     read: true,
  138.     write: true,
  139.     name: "Startzeit in msec nach 01.01.1970",
  140.     type: "number"
  141. });
  142.  
  143. createState('stiebeleltron.anlage.AUSSENTEMPERATUR');
  144. createState('stiebeleltron.anlage.HEIZEN_SOLLTEMPERATUR');
  145. createState('stiebeleltron.anlage.HEIZEN_ISTTEMPERATUR');
  146. createState('stiebeleltron.anlage.VORLAUF_ISTEMPERATUR');
  147. createState('stiebeleltron.anlage.FESTWERT_SOLLTEMPERATUR');
  148. createState('stiebeleltron.anlage.SPREIZUNG');
  149. createState('stiebeleltron.anlage.VORLAUFTEMPERATUR');
  150. createState('stiebeleltron.anlage.RUECKLAUFTEMPERATUR');
  151. createState('stiebeleltron.anlage.STATUS');
  152. createState('stiebeleltron.anlage.VOLUMENSTROM');
  153. createState('stiebeleltron.anlage.VOLUMENSTROM_WM');
  154. createState('stiebeleltron.anlage.HEIZSTUFE');
  155.  
  156. schedule("*/10 * * * * *", function () {
  157.     pollStiebelEltron();
  158. });
  159.  
  160. // call once after script restart
  161. pollStiebelEltron();
  162.  
  163. // Frage stiebeleltron ein Mal und speichere die Antwort in CCU.IO Datenpunkten
  164. function pollStiebelEltron() {
  165.     log("polling stiebel eltron adapter");
  166.    
  167.     http.get("http://" + stiebeleltronIP + "/?s=0", function (http_res) {
  168.        
  169.         // initialize the container for our data
  170.         var data = "";
  171.        
  172.         // this event fires many times, each time collecting another piece of the response
  173.         http_res.on("data", function (chunk) {
  174.             // append this chunk to our growing `data` var
  175.             data += chunk;
  176.         });
  177.        
  178.         // this event fires *one* time, after all the `data` events/chunks have been gathered
  179.         http_res.on("end", function () {
  180.            
  181.             try {// the website has some </divs> without starttags, they must be removed to use dom
  182.                 var newdata = data.replace(/<\/div>\s<\/div>\s<\/div>\s<\/div>\s/gmi, "<\/div>\r\n<\/div>");
  183.                 var doc = new dom().parseFromString(newdata);
  184.                 var nodes = xpath.select("//*[@id=\"box_start_status_system\"]", doc);
  185.                
  186.                 // since i dont get xpath queries work right, i do it the hard way of accessing the childnodes directly
  187.                 // Tabelle Prozessdaten
  188.                 var status = nodes[0].childNodes[1].childNodes[2].childNodes[0].data;
  189.                 setState('javascript.0.stiebeleltron.anlage.STATUS', status);
  190.             }
  191.             catch (e) {
  192.                 log("stiebeleltron: Cannot set Website 1 data:" + e, 'error');
  193.             }
  194.         });
  195.     });
  196.    
  197.     http.get("http://" + stiebeleltronIP + "/?s=2,3", function (http_res) {
  198.         // initialize the container for our data
  199.         var data = "";
  200.        
  201.         // this event fires many times, each time collecting another piece of the response
  202.         http_res.on("data", function (chunk) {
  203.             // append this chunk to our growing `data` var
  204.             data += chunk;
  205.         });
  206.        
  207.         // this event fires *one* time, after all the `data` events/chunks have been gathered
  208.         http_res.on("end", function () {
  209.             try {
  210.                 // the website has some </divs> without starttags, they must be removed to use dom
  211.                 var newdata = data.replace(/<\/div>\s<\/div>\s<\/div>\s<\/div>\s/gmi, "<\/div>\r\n<\/div>");
  212.                 var doc = new dom().parseFromString(newdata);
  213.                 var nodes = xpath.select("//*[@id=\"content\"]", doc);
  214.                
  215.                 // since i dont get xpath queries work right, i do it the hard way of accessing the childnodes directly
  216.                 // Tabelle Prozessdaten
  217.                 var positionVentil = (nodes[0].childNodes[1].childNodes[0].childNodes[24].childNodes[3].childNodes[0].data).trim();
  218.                 setState('javascript.0.stiebeleltron.prozess.POSITION_VENTIL', positionVentil);
  219.                
  220.             }
  221.             catch (e) {
  222.                 log("stiebeleltron: Cannot set Website 23 data:" + e, 'error');
  223.             }
  224.         });
  225.     });
  226.    
  227.     http.get("http://" + stiebeleltronIP + "/?s=1,0", function (http_res) {
  228.         // initialize the container for our data
  229.         var data = "";
  230.        
  231.         // this event fires many times, each time collecting another piece of the response
  232.         http_res.on("data", function (chunk) {
  233.             // append this chunk to our growing `data` var
  234.             data += chunk;
  235.         });
  236.        
  237.         // this event fires *one* time, after all the `data` events/chunks have been gathered
  238.         http_res.on("end", function () {
  239.            
  240.             try {// the website has some </divs> without starttags, they must be removed to use dom
  241.                 var newdata = data.replace(/<\/div>\s<\/div>\s<\/div>\s<\/div>\s/gmi, "<\/div>\r\n<\/div>");
  242.                 var doc = new dom().parseFromString(newdata);
  243.                 var nodes = xpath.select("//*[@id=\"content\"]", doc);
  244.                
  245.                 // since i dont get xpath queries work right, i do it the hard way of accessing the childnodes directly
  246.                 // Tabelle Raumtemperatur //*[@id="content"]/div[1]/table/tbody/tr[2]/td[2]
  247.                 var test = Object("");
  248.                 var raumsoll = removeDegreeUnit(nodes[0].childNodes[1].childNodes[0].childNodes[2].childNodes[3].childNodes[0].data, test);
  249.                 setState('javascript.0.stiebeleltron.anlage.RAUM_SOLLTEMPERATUR', raumsoll);
  250.                
  251.                 // Tabelle Heizung //*[@id="content"]/div[3]/table/tbody/tr[2]/td[2]
  252.                 var aussentemp = removeDegreeUnit(nodes[0].childNodes[2].childNodes[0].childNodes[2].childNodes[3].childNodes[0].data);
  253.                 setState('javascript.0.stiebeleltron.anlage.AUSSENTEMPERATUR', aussentemp);
  254.                
  255.                 var isttemphk1 = removeDegreeUnit(nodes[0].childNodes[2].childNodes[0].childNodes[4].childNodes[3].childNodes[0].data);
  256.                 var volumenstrom = removeUnit(nodes[0].childNodes[2].childNodes[0].childNodes[18].childNodes[3].childNodes[0].data,5);
  257.  
  258.                 if (getState('javascript.0.stiebeleltron.prozess.POSITION_VENTIL').val == 2 && volumenstrom > 0)
  259.                 {
  260.                     setState('javascript.0.stiebeleltron.anlage.VOLUMENSTROM', volumenstrom);
  261.                     setState('javascript.0.stiebeleltron.anlage.VOLUMENSTROM_WM', 0);
  262.                    
  263.                     // get start date of pump and wait for 120 sec before getting the temperature
  264.                     var startDateHK1Pump = getState('javascript.0.stiebeleltron.anlage.STARTZEITHEIZKREISPUMPE').val;
  265.                     if (startDateHK1Pump <= 0)
  266.                     {
  267.                         setState('javascript.0.stiebeleltron.anlage.STARTZEITHEIZKREISPUMPE',new Date().getTime());
  268.                     }
  269.                     else if (new Date().getTime() - startDateHK1Pump > 120 * 1000)
  270.                     {
  271.                         setState('javascript.0.stiebeleltron.anlage.HEIZEN_ISTTEMPERATUR', isttemphk1);
  272.                        
  273.                         var solltemphk1 = removeDegreeUnit(nodes[0].childNodes[2].childNodes[0].childNodes[6].childNodes[3].childNodes[0].data);
  274.                         setState('javascript.0.stiebeleltron.anlage.HEIZEN_SOLLTEMPERATUR', solltemphk1);
  275.                    
  276.                         //ISTWERT HK2
  277.                         var vorlauftemp = removeDegreeUnit(nodes[0].childNodes[2].childNodes[0].childNodes[8].childNodes[3].childNodes[0].data);
  278.                         setState('javascript.0.stiebeleltron.anlage.VORLAUF_ISTEMPERATUR', vorlauftemp);
  279.                        
  280.                         // SOLLWERT HK2
  281.                         var festwertsoll = removeDegreeUnit(nodes[0].childNodes[2].childNodes[0].childNodes[10].childNodes[3].childNodes[0].data);
  282.                         setState('javascript.0.stiebeleltron.anlage.FESTWERT_SOLLTEMPERATUR', festwertsoll);
  283.                        
  284.                         var vorlaufTemperatur = removeUnit(nodes[0].childNodes[2].childNodes[0].childNodes[12].childNodes[3].childNodes[0].data,2);
  285.                         setState('javascript.0.stiebeleltron.anlage.VORLAUFTEMPERATUR', vorlaufTemperatur);
  286.                        
  287.                         var ruecklaufTemperatur = removeUnit(nodes[0].childNodes[2].childNodes[0].childNodes[14].childNodes[3].childNodes[0].data,2);
  288.                         setState('javascript.0.stiebeleltron.anlage.RUECKLAUFTEMPERATUR', ruecklaufTemperatur);
  289.                        
  290.                         setState('javascript.0.stiebeleltron.anlage.SPREIZUNG', vorlaufTemperatur - ruecklaufTemperatur);
  291.                     }
  292.                        
  293.                 }
  294.                 else
  295.                 {
  296.                     setState('javascript.0.stiebeleltron.anlage.STARTZEITHEIZKREISPUMPE',-1);
  297.                     setState('javascript.0.stiebeleltron.anlage.VOLUMENSTROM_WM', volumenstrom);
  298.                     setState('javascript.0.stiebeleltron.anlage.VOLUMENSTROM', 0);
  299.                
  300.                     log("Position Ventil nicht auf 2 = Heizkreis, daher keine validen Temperaturen für Heizkreis (HK1 IST " + isttemphk1 + " Grad)");
  301.                 }
  302.                
  303.                 // Tabelle Warmwasser
  304.                 var wwist = removeDegreeUnit(nodes[0].childNodes[3].childNodes[0].childNodes[2].childNodes[3].childNodes[0].data);
  305.                 setState('javascript.0.stiebeleltron.anlage.WARMWASSER_ISTTEMPERATUR', wwist);
  306.                
  307.                 var wwsoll = removeDegreeUnit(nodes[0].childNodes[3].childNodes[0].childNodes[4].childNodes[3].childNodes[0].data);
  308.                 setState('javascript.0.stiebeleltron.anlage.WARMWASSER_SOLLTEMPERATUR', wwsoll);
  309.                
  310.                
  311.                 // Tabelle Lüftung
  312.                 var zuluftDrehzahl = removeUnit(nodes[0].childNodes[4].childNodes[0].childNodes[2].childNodes[3].childNodes[0].data,2);
  313.                 setState('javascript.0.stiebeleltron.anlage.ZULUFT_DREHZAHL', zuluftDrehzahl);
  314.                
  315.                 var zuluftVolumenstrom = removeUnit(nodes[0].childNodes[4].childNodes[0].childNodes[4].childNodes[3].childNodes[0].data,4);
  316.                 setState('javascript.0.stiebeleltron.anlage.ZULUFT_VOLUMENSTROM', zuluftVolumenstrom);
  317.                
  318.                 var fortluftDrehzahl = removeUnit(nodes[0].childNodes[4].childNodes[0].childNodes[6].childNodes[3].childNodes[0].data,2);
  319.                 setState('javascript.0.stiebeleltron.anlage.FORTLUFT_DREHZAHL', fortluftDrehzahl);
  320.                
  321.                 var fortluftVolumenstrom = removeUnit(nodes[0].childNodes[4].childNodes[0].childNodes[8].childNodes[3].childNodes[0].data,4);
  322.                 setState('javascript.0.stiebeleltron.anlage.FORTLUFT_VOLUMENSTROM', fortluftVolumenstrom);
  323.                
  324.                 var lueftungsStufe = 0;
  325.                 if (zuluftVolumenstrom >= 175)
  326.                 {
  327.                     lueftungsStufe = 3;
  328.                 }
  329.                 else if (zuluftVolumenstrom >= 125)
  330.                 {
  331.                     lueftungsStufe = 2;  
  332.                 }
  333.                 else if (zuluftVolumenstrom >= 105)
  334.                 {
  335.                     lueftungsStufe = 1;
  336.                 }
  337.                 setState('javascript.0.stiebeleltron.anlage.LUEFTUNGSSTUFE_AKTUELL', lueftungsStufe);
  338.                
  339.                 // Tabelle Wärmeerzeuger
  340.                 var heizstufe = (nodes[0].childNodes[6].childNodes[0].childNodes[2].childNodes[3].childNodes[0].data);
  341.                 setState('javascript.0.stiebeleltron.anlage.HEIZSTUFE', heizstufe);
  342.             }
  343.             catch (e) {
  344.                 log("stiebeleltron: Cannot set Website 10 data:" + e, 'error');
  345.             }
  346.         });
  347.     });
  348.    
  349.     http.get("http://" + stiebeleltronIP + "/?s=1,1", function (http_res) {
  350.         // initialize the container for our data
  351.         var data = "";
  352.        
  353.         // this event fires many times, each time collecting another piece of the response
  354.         http_res.on("data", function (chunk) {
  355.             // append this chunk to our growing `data` var
  356.             data += chunk;
  357.         });
  358.        
  359.         // this event fires *one* time, after all the `data` events/chunks have been gathered
  360.         http_res.on("end", function () {
  361.             try {
  362.                 // the website has some </divs> without starttags, they must be removed to use dom
  363.                 var newdata = data.replace(/<\/div>\s<\/div>\s<\/div>\s<\/div>\s/gmi, "<\/div>\r\n<\/div>");
  364.                 var doc = new dom().parseFromString(newdata);
  365.                 var nodes = xpath.select("//*[@id=\"content\"]", doc);
  366.                
  367.                 // since i dont get xpath queries work right, i do it the hard way of accessing the childnodes directly
  368.                 // Tabelle Prozessdaten
  369.                 var ruecklauftemp = removeDegreeUnit(nodes[0].childNodes[1].childNodes[0].childNodes[2].childNodes[3].childNodes[0].data);
  370.                 setState('javascript.0.stiebeleltron.prozess.HEISSGASTEMPERATUR', ruecklauftemp);
  371.                
  372.                 var hochdruck = removePressureUnit(nodes[0].childNodes[1].childNodes[0].childNodes[4].childNodes[3].childNodes[0].data);
  373.                 setState('javascript.0.stiebeleltron.prozess.HOCHDRUCK', hochdruck);
  374.                
  375.                 var niederdruck = removePressureUnit(nodes[0].childNodes[1].childNodes[0].childNodes[6].childNodes[3].childNodes[0].data);
  376.                 setState('javascript.0.stiebeleltron.prozess.NIEDERDRUCK', niederdruck);
  377.            
  378.                 var verdampfertemp = removeDegreeUnit(nodes[0].childNodes[1].childNodes[0].childNodes[8].childNodes[3].childNodes[0].data);
  379.                 setState('javascript.0.stiebeleltron.prozess.VERDAMPFERTEMPERATUR', verdampfertemp);
  380.                
  381.                 var verfluess = removeDegreeUnit(nodes[0].childNodes[1].childNodes[0].childNodes[10].childNodes[3].childNodes[0].data);
  382.                 setState('javascript.0.stiebeleltron.prozess.VERFLUESSIGERTEMP', verfluess);
  383.                
  384.                 // FORTLUFT IST LÜFTERDREHZAHL
  385.                 var rekuperatortemp = removeDegreeUnit(nodes[0].childNodes[1].childNodes[0].childNodes[12].childNodes[3].childNodes[0].data);
  386.                 setState('javascript.0.stiebeleltron.prozess.FORTLUFT_IST_LUEFTERDREHZAHL', rekuperatortemp);
  387.                
  388.                 // FORTLUFT SOLL VOLUMENSTROM
  389.                 var zwischeneinspritztemp = removeDegreeUnit(nodes[0].childNodes[1].childNodes[0].childNodes[14].childNodes[3].childNodes[0].data);
  390.                 setState('javascript.0.stiebeleltron.prozess.FORTLUFT_SOLL_VOLUMENSTROM', zwischeneinspritztemp);
  391.                
  392.                 // Tabelle Wärmemenge
  393.                 var outHeizenTag = removePowerUnit(nodes[0].childNodes[2].childNodes[0].childNodes[2].childNodes[3].childNodes[0].data);
  394.                 setState('javascript.0.stiebeleltron.waermemenge.HEIZEN_TAG', outHeizenTag);
  395.                
  396.                 var outHeizenSumme = removePowerUnit(nodes[0].childNodes[2].childNodes[0].childNodes[4].childNodes[3].childNodes[0].data);
  397.                 setState('javascript.0.stiebeleltron.waermemenge.HEIZEN_SUMME', outHeizenSumme);
  398.                
  399.                 var outwarmwasserTag = removePowerUnit(nodes[0].childNodes[2].childNodes[0].childNodes[6].childNodes[3].childNodes[0].data);
  400.                 setState('javascript.0.stiebeleltron.waermemenge.WARMWASSER_TAG', outwarmwasserTag);
  401.                
  402.                 var outwarmwasserSumme = removePowerUnit(nodes[0].childNodes[2].childNodes[0].childNodes[8].childNodes[3].childNodes[0].data);
  403.                 setState('javascript.0.stiebeleltron.waermemenge.WARMWASSER_SUMME', outwarmwasserSumme);
  404.                
  405.                 var outNHZHeizenSumme = removePowerUnit(nodes[0].childNodes[2].childNodes[0].childNodes[10].childNodes[3].childNodes[0].data);
  406.                 setState('javascript.0.stiebeleltron.waermemenge.NHZ_HEIZEN_SUMME', outNHZHeizenSumme);
  407.                
  408.                 var outNHZWarmwasserSumme = removePowerUnit(nodes[0].childNodes[2].childNodes[0].childNodes[12].childNodes[3].childNodes[0].data);
  409.                 setState('javascript.0.stiebeleltron.waermemenge.NHZ_WW_SUMME', outNHZWarmwasserSumme);
  410.                
  411.                
  412.                 // Tabelle Leistungsaufnahme
  413.                 var heizenTag = removePowerUnit(nodes[0].childNodes[3].childNodes[0].childNodes[2].childNodes[3].childNodes[0].data);
  414.                 setState('javascript.0.stiebeleltron.verbrauch.HEIZEN_TAG', heizenTag);
  415.                
  416.                 var heizenSumme = removePowerUnit(nodes[0].childNodes[3].childNodes[0].childNodes[4].childNodes[3].childNodes[0].data);
  417.                 setState('javascript.0.stiebeleltron.verbrauch.HEIZEN_SUMME', heizenSumme);
  418.                
  419.                 var warmwasserTag = removePowerUnit(nodes[0].childNodes[3].childNodes[0].childNodes[6].childNodes[3].childNodes[0].data);
  420.                 setState('javascript.0.stiebeleltron.verbrauch.WARMWASSER_TAG', warmwasserTag);
  421.                
  422.                 var warmwasserSumme = removePowerUnit(nodes[0].childNodes[3].childNodes[0].childNodes[8].childNodes[3].childNodes[0].data);
  423.                 setState('javascript.0.stiebeleltron.verbrauch.WARMWASSER_SUMME', warmwasserSumme);
  424.                
  425.                 setState('javascript.0.stiebeleltron.verbrauch.GESAMT_TAG', heizenTag + warmwasserTag);
  426.                 setState('javascript.0.stiebeleltron.verbrauch.GESAMT_SUMME', heizenSumme + warmwasserSumme);
  427.                
  428.                 // Tabelle Laufzeit
  429.                 var laufzeitHeizen = removeHourUnit(nodes[0].childNodes[4].childNodes[0].childNodes[2].childNodes[3].childNodes[0].data);
  430.                 setState('javascript.0.stiebeleltron.laufzeit.HEIZEN', laufzeitHeizen);
  431.                
  432.                 var laufzeitWarmwasser = removeHourUnit(nodes[0].childNodes[4].childNodes[0].childNodes[4].childNodes[3].childNodes[0].data);
  433.                 setState('javascript.0.stiebeleltron.laufzeit.WARMWASSER', laufzeitWarmwasser);
  434.                
  435.                 var laufzeitNhz1 = removeHourUnit(nodes[0].childNodes[4].childNodes[0].childNodes[6].childNodes[3].childNodes[0].data);
  436.                 setState('javascript.0.stiebeleltron.laufzeit.NHZ_1', laufzeitNhz1);
  437.                
  438.                 var laufzeitNhz2 = removeHourUnit(nodes[0].childNodes[4].childNodes[0].childNodes[8].childNodes[3].childNodes[0].data);
  439.                 setState('javascript.0.stiebeleltron.laufzeit.NHZ_2', laufzeitNhz2);
  440.                
  441.                 //var laufzeitNhz1u2 = removeHourUnit(nodes[0].childNodes[4].childNodes[0].childNodes[12].childNodes[3].childNodes[0].data);
  442.                 //setState('javascript.0.stiebeleltron.laufzeit.NHZ_1_2', laufzeitNhz1u2);
  443.  
  444.                 // setState('javascript.0.stiebeleltron.laufzeit.NHZ_GESAMT', laufzeitNhz1 + laufzeitNhz2 + laufzeitNhz1u2);
  445.             }
  446.             catch (e) {
  447.                 log("stiebeleltron: Cannot set Website 11 data:" + e, 'error');
  448.             }
  449.         });
  450.     });
  451.    
  452. }
  453.    
  454. function checkFalseBool(input, checkvalue) {
  455.     var result = (input != checkvalue);
  456.     return Boolean(result);
  457. }
  458.  
  459. function checkTrueBool(input, checkvalue) {
  460.     var result = input == checkvalue;
  461.     return Boolean(result);
  462. }
  463.  
  464. function removeUnit(input, unitLength, unit) {
  465.     if (unit)
  466.         unit.valueOf = unit.toSource = unit.toString = input.substring(input.length - unitLength, input.length);
  467.     var value = input.substring(0, input.length - unitLength);
  468.     value = value.replace(/,/, ".");
  469.     return parseFloat(value);
  470. }
  471.  
  472. function removeHourUnit(input, unit) {
  473.     return removeUnit(input, 2, unit);
  474. }
  475.  
  476. function removePowerUnit(input, unit) {
  477.     return removeUnit(input, 4);
  478. }
  479.  
  480. function removePressureUnit(input, unit) {
  481.     return removeUnit(input, 4);
  482. }
  483.  
  484. function removeDegreeUnit(input, unit) {
  485.     return removeUnit(input, 2, unit);
  486. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement