Advertisement
Guest User

Untitled

a guest
Mar 29th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 28.26 KB | None | 0 0
  1. var http = require('http');
  2. var xpath = require('xpath');
  3. var dom = require('xmldom').DOMParser;
  4.  
  5. var stiebeleltronIP = '192.168.1.11';
  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', 0, {
  32. read: true,
  33. write: false,
  34. name: "Fortluft SOLL Volumenstrom",
  35. type: "number",
  36. unit: "%",
  37. role: "value"
  38. });
  39.  
  40. createState('stiebeleltron.prozess.VERDICHTERSTARTS');
  41.  
  42. createState('stiebeleltron.prozess.HEISSGASTEMPERATUR', 0, {
  43. read: true,
  44. write: false,
  45. name: "HEISSGASTEMPERATUR",
  46. type: "number",
  47. unit: "°C",
  48. role: "value.temperature"
  49. });
  50.  
  51. createState('stiebeleltron.prozess.NIEDERDRUCK', 0, {
  52. read: true,
  53. write: false,
  54. name: "NIEDERDRUCK",
  55. type: "number",
  56. unit: "bar"
  57. });
  58.  
  59. createState('stiebeleltron.prozess.HOCHDRUCK', 0, {
  60. read: true,
  61. write: false,
  62. name: "HOCHDRUCK",
  63. type: "number",
  64. unit: "bar"
  65. });
  66. createState('stiebeleltron.prozess.POSITION_VENTIL');
  67.  
  68. createState('stiebeleltron.laufzeit.HEIZEN');
  69. createState('stiebeleltron.laufzeit.WARMWASSER');
  70. createState('stiebeleltron.laufzeit.NHZ_1');
  71. createState('stiebeleltron.laufzeit.NHZ_2');
  72.  
  73. createState('stiebeleltron.waermemenge.HEIZEN_TAG');
  74. createState('stiebeleltron.waermemenge.HEIZEN_SUMME');
  75. createState('stiebeleltron.waermemenge.WARMWASSER_TAG');
  76. createState('stiebeleltron.waermemenge.WARMWASSER_SUMME');
  77. createState('stiebeleltron.waermemenge.NHZ_HEIZEN_SUMME');
  78. createState('stiebeleltron.waermemenge.NHZ_WW_SUMME');
  79.  
  80. createState('stiebeleltron.solar.KOLLEKTORTEMPERATUR', 0, {
  81. read: true,
  82. write: false,
  83. name: "Raum Soll Temperatur",
  84. type: "number",
  85. unit: "°C",
  86. role: "value.temperature"
  87. });
  88. createState('stiebeleltron.solar.WM_SOLAR_HZ_TAG');
  89. createState('stiebeleltron.solar.WM_SOLAR_WW_TAG');
  90.  
  91. createState('stiebeleltron.verbrauch.HEIZEN_TAG');
  92. createState('stiebeleltron.verbrauch.HEIZEN_SUMME');
  93. createState('stiebeleltron.verbrauch.WARMWASSER_TAG');
  94. createState('stiebeleltron.verbrauch.WARMWASSER_SUMME');
  95. createState('stiebeleltron.verbrauch.GESAMT_TAG');
  96. createState('stiebeleltron.verbrauch.GESAMT_SUMME');
  97.  
  98. createState('stiebeleltron.anlage.RAUM_SOLLTEMPERATUR', 0, {
  99. read: true,
  100. write: false,
  101. name: "Raum Soll Temperatur",
  102. type: "number",
  103. unit: "°C",
  104. role: "value.temperature"
  105. });
  106. createState('stiebeleltron.anlage.WARMWASSER_SOLLTEMPERATUR', 0, {
  107. read: true,
  108. write: false,
  109. name: "Warmwasser Ist Temperatur",
  110. type: "number",
  111. unit: "°C",
  112. role: "value.temperature"
  113. });
  114. createState('stiebeleltron.anlage.WARMWASSER_ISTTEMPERATUR', 0, {
  115. read: true,
  116. write: false,
  117. name: "Warmwasser Ist Temperatur",
  118. type: "number",
  119. unit: "°C",
  120. role: "value.temperature"
  121. });
  122. createState('stiebeleltron.anlage.ZULUFT_DREHZAHL', 0, {
  123. read: true,
  124. write: false,
  125. name: "ZULUFT IST LÜFTERDREHZAHL",
  126. type: "number",
  127. unit: "Hz"
  128. });
  129. createState('stiebeleltron.anlage.ZULUFT_VOLUMENSTROM', 0, {
  130. read: true,
  131. write: false,
  132. name: "ZULUFT IST VOLUMENSTROM",
  133. type: "number",
  134. unit: "m³/h"
  135. });
  136. createState('stiebeleltron.anlage.FORTLUFT_DREHZAHL', 0, {
  137. read: true,
  138. write: false,
  139. name: "FORTLUFT IST LÜFTERDREHZAHL",
  140. type: "number",
  141. unit: "Hz"
  142. });
  143. createState('stiebeleltron.anlage.FORTLUFT_VOLUMENSTROM', 0, {
  144. read: true,
  145. write: false,
  146. name: "FORTLUFT IST VOLUMENSTROM",
  147. type: "number",
  148. unit: "m³/h"
  149. });
  150.  
  151. createState('stiebeleltron.anlage.LUEFTUNGSSTUFE_TAG', 0, {
  152. read: true,
  153. write: true,
  154. name: "Lüftungsstufe Tagprogramm",
  155. type: "number",
  156. min: 0,
  157. max: 3
  158. });
  159. on({id: 'javascript.0.stiebeleltron.anlage.LUEFTUNGSSTUFE_TAG'}, function (obj) {
  160.  
  161. setFAN_Day(getState('javascript.0.stiebeleltron.anlage.LUEFTUNGSSTUFE_TAG').val);
  162.  
  163. });
  164. on({id: 'javascript.0.stiebeleltron.anlage.LUEFTUNGSSTUFE_NACHT'}, function (obj) {
  165.  
  166. setFAN_Night(getState('javascript.0.stiebeleltron.anlage.LUEFTUNGSSTUFE_NACHT').val);
  167. });
  168.  
  169. createState('stiebeleltron.anlage.LUEFTUNGSSTUFE_NACHT', 0, {
  170. read: true,
  171. write: true,
  172. name: "Lüftungsstufe Nachtprogramm",
  173. type: "number",
  174. min: 0,
  175. max: 3
  176. });
  177.  
  178. createState('stiebeleltron.anlage.LUEFTUNGSSTUFE_AKTUELL', 0, {
  179. read: true,
  180. write: true,
  181. name: "Lüftungsstufe aktuell",
  182. type: "number",
  183. min: 0,
  184. max: 3
  185. });
  186.  
  187. createState('stiebeleltron.anlage.STARTZEITHEIZKREISPUMPE', 0, {
  188. read: true,
  189. write: true,
  190. name: "Startzeit in msec nach 01.01.1970",
  191. type: "number"
  192. });
  193.  
  194. createState('stiebeleltron.anlage.AUSSENTEMPERATUR', 0, {
  195. read: true,
  196. write: false,
  197. name: "Aussentemperatur",
  198. type: "number",
  199. unit: "°C",
  200. role: "value.temperature"
  201. });
  202.  
  203. createState('stiebeleltron.anlage.HEIZEN_SOLLTEMPERATUR', 0, {
  204. read: true,
  205. write: false,
  206. name: "HK1 Soll Temperatur",
  207. type: "number",
  208. unit: "°C",
  209. role: "value.temperature"
  210. });
  211. createState('stiebeleltron.anlage.HEIZEN_ISTTEMPERATUR', 0, {
  212. read: true,
  213. write: false,
  214. name: "HK1 Ist Temperatur",
  215. type: "number",
  216. unit: "°C",
  217. role: "value.temperature"
  218. });
  219. createState('stiebeleltron.anlage.HEIZEN2_SOLLTEMPERATUR', 0, {
  220. read: true,
  221. write: false,
  222. name: "HK2 Soll Temperatur",
  223. type: "number",
  224. unit: "°C",
  225. role: "value.temperature"
  226. });
  227. createState('stiebeleltron.anlage.HEIZEN2_ISTTEMPERATUR', 0, {
  228. read: true,
  229. write: false,
  230. name: "HK2 Ist Temperatur",
  231. type: "number",
  232. unit: "°C",
  233. role: "value.temperature"
  234. });
  235. createState('stiebeleltron.anlage.SPREIZUNG', 0, {
  236. read: true,
  237. write: false,
  238. name: "Spreizung = Vorlauf - Rücklauftemperatur",
  239. type: "number",
  240. unit: "°C",
  241. role: "value.temperature"
  242. });
  243.  
  244. createState('stiebeleltron.anlage.VORLAUFTEMPERATUR', 0, {
  245. read: true,
  246. write: false,
  247. name: "Rücklauftemperatur",
  248. type: "number",
  249. unit: "°C",
  250. role: "value.temperature"
  251. });
  252. createState('stiebeleltron.anlage.RUECKLAUFTEMPERATUR', 0, {
  253. read: true,
  254. write: false,
  255. name: "Vorlauftemperatur",
  256. type: "number",
  257. unit: "°C",
  258. role: "value.temperature"
  259. });
  260. createState('stiebeleltron.anlage.STATUS');
  261. createState('stiebeleltron.anlage.VOLUMENSTROM', 0, {
  262. read: true,
  263. write: false,
  264. name: "Volumenstrom",
  265. type: "number",
  266. unit: "l/min"
  267. });
  268.  
  269. createState('stiebeleltron.anlage.VOLUMENSTROM_HEIZEN', 0, {
  270. read: true,
  271. write: false,
  272. name: "Volumenstrom Heizen",
  273. type: "number",
  274. unit: "l/min"
  275. });
  276.  
  277. createState('stiebeleltron.anlage.VOLUMENSTROM_WM', 0, {
  278. read: true,
  279. write: false,
  280. name: "Volumenstrom Warmwasser",
  281. type: "number",
  282. unit: "l/min"
  283. });
  284.  
  285. createState('stiebeleltron.anlage.HEIZSTUFE');
  286.  
  287. schedule("*/10 * * * * *", function () {
  288. pollStiebelEltron();
  289. });
  290.  
  291. // call once after script restart
  292. pollStiebelEltron();
  293.  
  294. // Frage stiebeleltron ein Mal und speichere die Antwort in CCU.IO Datenpunkten
  295. function pollStiebelEltron() {
  296. log("polling stiebel eltron adapter");
  297.  
  298. http.get("http://" + stiebeleltronIP + "/?s=0", function (http_res) {
  299.  
  300. // initialize the container for our data
  301. var data = "";
  302.  
  303. // this event fires many times, each time collecting another piece of the response
  304. http_res.on("data", function (chunk) {
  305. // append this chunk to our growing `data` var
  306. data += chunk;
  307. });
  308.  
  309. // this event fires *one* time, after all the `data` events/chunks have been gathered
  310. http_res.on("end", function () {
  311.  
  312. try {// the website has some </divs> without starttags, they must be removed to use dom
  313. var newdata = data.replace(/<\/div>\s<\/div>\s<\/div>\s<\/div>\s/gmi, "<\/div>\r\n<\/div>");
  314. var doc = new dom().parseFromString(newdata);
  315. var nodes = xpath.select("//*[@id=\"box_start_status_system\"]", doc);
  316.  
  317. // since i dont get xpath queries work right, i do it the hard way of accessing the childnodes directly
  318. // Tabelle Prozessdaten
  319. var status = nodes[0].childNodes[1].childNodes[2].childNodes[0].data;
  320. setState('javascript.0.stiebeleltron.anlage.STATUS', status);
  321. }
  322. catch (e) {
  323. log("stiebeleltron: Cannot set Website 1 data:" + e, 'error');
  324. }
  325. });
  326. });
  327.  
  328. http.get("http://" + stiebeleltronIP + "/?s=2,3", function (http_res) {
  329. // initialize the container for our data
  330. var data = "";
  331.  
  332. // this event fires many times, each time collecting another piece of the response
  333. http_res.on("data", function (chunk) {
  334. // append this chunk to our growing `data` var
  335. data += chunk;
  336. });
  337.  
  338. // this event fires *one* time, after all the `data` events/chunks have been gathered
  339. http_res.on("end", function () {
  340. try {
  341. // the website has some </divs> without starttags, they must be removed to use dom
  342. var newdata = data.replace(/<\/div>\s<\/div>\s<\/div>\s<\/div>\s/gmi, "<\/div>\r\n<\/div>");
  343. var doc = new dom().parseFromString(newdata);
  344. var nodes = xpath.select("//*[@id=\"content\"]", doc);
  345.  
  346. // since i dont get xpath queries work right, i do it the hard way of accessing the childnodes directly
  347. // Tabelle Prozessdaten
  348. var positionVentil = (nodes[0].childNodes[1].childNodes[0].childNodes[24].childNodes[3].childNodes[0].data).trim();
  349. setState('javascript.0.stiebeleltron.prozess.POSITION_VENTIL', positionVentil);
  350.  
  351. }
  352. catch (e) {
  353. log("stiebeleltron: Cannot set Website 23 data:" + e, 'error');
  354. }
  355. });
  356. });
  357.  
  358. http.get("http://" + stiebeleltronIP + "/?s=1,0", function (http_res) {
  359. // initialize the container for our data
  360. var data = "";
  361.  
  362. // this event fires many times, each time collecting another piece of the response
  363. http_res.on("data", function (chunk) {
  364. // append this chunk to our growing `data` var
  365. data += chunk;
  366. });
  367.  
  368. // this event fires *one* time, after all the `data` events/chunks have been gathered
  369. http_res.on("end", function () {
  370.  
  371. try {// the website has some </divs> without starttags, they must be removed to use dom
  372. var newdata = data.replace(/<\/div>\s<\/div>\s<\/div>\s<\/div>\s/gmi, "<\/div>\r\n<\/div>");
  373. var doc = new dom().parseFromString(newdata);
  374. var nodes = xpath.select("//*[@id=\"content\"]", doc);
  375.  
  376. // since i dont get xpath queries work right, i do it the hard way of accessing the childnodes directly
  377. // Tabelle Raumtemperatur //*[@id="content"]/div[1]/table/tbody/tr[2]/td[2]
  378. var test = Object("");
  379. var raumsoll = removeDegreeUnit(nodes[0].childNodes[1].childNodes[0].childNodes[2].childNodes[3].childNodes[0].data, test);
  380. setState('javascript.0.stiebeleltron.anlage.RAUM_SOLLTEMPERATUR', raumsoll);
  381.  
  382. // Tabelle Heizung //*[@id="content"]/div[3]/table/tbody/tr[2]/td[2]
  383. var aussentemp = removeDegreeUnit(nodes[0].childNodes[2].childNodes[0].childNodes[2].childNodes[3].childNodes[0].data);
  384. setState('javascript.0.stiebeleltron.anlage.AUSSENTEMPERATUR', aussentemp);
  385.  
  386. var solltemphk1 = removeDegreeUnit(nodes[0].childNodes[2].childNodes[0].childNodes[6].childNodes[3].childNodes[0].data);
  387. setState('javascript.0.stiebeleltron.anlage.HEIZEN_SOLLTEMPERATUR', solltemphk1);
  388.  
  389. var isttemphk1 = removeDegreeUnit(nodes[0].childNodes[2].childNodes[0].childNodes[4].childNodes[3].childNodes[0].data);
  390. var volumenstrom = removeUnit(nodes[0].childNodes[2].childNodes[0].childNodes[18].childNodes[3].childNodes[0].data,5);
  391.  
  392. if (volumenstrom <= 0)
  393. { // pump not active, no valid temperatures
  394. setState('javascript.0.stiebeleltron.anlage.VOLUMENSTROM', 0);
  395. setState('javascript.0.stiebeleltron.anlage.VOLUMENSTROM_HEIZEN', 0);
  396. setState('javascript.0.stiebeleltron.anlage.VOLUMENSTROM_WM', 0);
  397.  
  398.  
  399. setState('javascript.0.stiebeleltron.anlage.VORLAUFTEMPERATUR', 0);
  400.  
  401. setState('javascript.0.stiebeleltron.anlage.RUECKLAUFTEMPERATUR', 0);
  402. setState('javascript.0.stiebeleltron.anlage.STARTZEITHEIZKREISPUMPE',-1);
  403. }
  404. else
  405. {
  406. setState('javascript.0.stiebeleltron.anlage.VOLUMENSTROM', volumenstrom);
  407.  
  408. var vorlaufTemperatur = removeUnit(nodes[0].childNodes[2].childNodes[0].childNodes[12].childNodes[3].childNodes[0].data,2);
  409. setState('javascript.0.stiebeleltron.anlage.VORLAUFTEMPERATUR', vorlaufTemperatur);
  410.  
  411. var ruecklaufTemperatur = removeUnit(nodes[0].childNodes[2].childNodes[0].childNodes[14].childNodes[3].childNodes[0].data,2);
  412. setState('javascript.0.stiebeleltron.anlage.RUECKLAUFTEMPERATUR', ruecklaufTemperatur);
  413.  
  414. setState('javascript.0.stiebeleltron.anlage.SPREIZUNG', vorlaufTemperatur - ruecklaufTemperatur);
  415.  
  416. if (getState('javascript.0.stiebeleltron.prozess.POSITION_VENTIL').val == 2)
  417. {
  418. setState('javascript.0.stiebeleltron.anlage.VOLUMENSTROM_HEIZEN', volumenstrom);
  419. setState('javascript.0.stiebeleltron.anlage.VOLUMENSTROM_WM', 0);
  420.  
  421. // get start date of pump and wait for 120 sec before getting the temperature
  422. var startDateHK1Pump = getState('javascript.0.stiebeleltron.anlage.STARTZEITHEIZKREISPUMPE').val;
  423. if (startDateHK1Pump <= 0)
  424. {
  425. setState('javascript.0.stiebeleltron.anlage.STARTZEITHEIZKREISPUMPE',new Date().getTime());
  426. }
  427. else if (new Date().getTime() - startDateHK1Pump > 120 * 1000)
  428. {
  429. setState('javascript.0.stiebeleltron.anlage.HEIZEN_ISTTEMPERATUR', isttemphk1);
  430.  
  431. var isttemphk2 = removeDegreeUnit(nodes[0].childNodes[2].childNodes[0].childNodes[8].childNodes[3].childNodes[0].data);
  432. setState('javascript.0.stiebeleltron.anlage.HEIZEN2_ISTTEMPERATUR', isttemphk2);
  433.  
  434. var solltemphk2 = removeDegreeUnit(nodes[0].childNodes[2].childNodes[0].childNodes[10].childNodes[3].childNodes[0].data);
  435. setState('javascript.0.stiebeleltron.anlage.HEIZEN2_SOLLTEMPERATUR', solltemphk2);
  436. }
  437. }
  438. else
  439. {
  440. // Warmwasser Zubereitung
  441. setState('javascript.0.stiebeleltron.anlage.STARTZEITHEIZKREISPUMPE',-1);
  442.  
  443. setState('javascript.0.stiebeleltron.anlage.VOLUMENSTROM_HEIZEN', 0);
  444. setState('javascript.0.stiebeleltron.anlage.VOLUMENSTROM_WM', volumenstrom);
  445.  
  446. }
  447. }
  448.  
  449. // Tabelle Warmwasser
  450. var wwist = removeDegreeUnit(nodes[0].childNodes[3].childNodes[0].childNodes[2].childNodes[3].childNodes[0].data);
  451. setState('javascript.0.stiebeleltron.anlage.WARMWASSER_ISTTEMPERATUR', wwist);
  452.  
  453. var wwsoll = removeDegreeUnit(nodes[0].childNodes[3].childNodes[0].childNodes[4].childNodes[3].childNodes[0].data);
  454. setState('javascript.0.stiebeleltron.anlage.WARMWASSER_SOLLTEMPERATUR', wwsoll);
  455.  
  456.  
  457. // Tabelle Lüftung
  458. var zuluftDrehzahl = removeUnit(nodes[0].childNodes[4].childNodes[0].childNodes[2].childNodes[3].childNodes[0].data,2);
  459. setState('javascript.0.stiebeleltron.anlage.ZULUFT_DREHZAHL', zuluftDrehzahl);
  460.  
  461. var zuluftVolumenstrom = removeUnit(nodes[0].childNodes[4].childNodes[0].childNodes[4].childNodes[3].childNodes[0].data,4);
  462. setState('javascript.0.stiebeleltron.anlage.ZULUFT_VOLUMENSTROM', zuluftVolumenstrom);
  463.  
  464. var fortluftDrehzahl = removeUnit(nodes[0].childNodes[4].childNodes[0].childNodes[6].childNodes[3].childNodes[0].data,2);
  465. setState('javascript.0.stiebeleltron.anlage.FORTLUFT_DREHZAHL', fortluftDrehzahl);
  466.  
  467. var fortluftVolumenstrom = removeUnit(nodes[0].childNodes[4].childNodes[0].childNodes[8].childNodes[3].childNodes[0].data,4);
  468. setState('javascript.0.stiebeleltron.anlage.FORTLUFT_VOLUMENSTROM', fortluftVolumenstrom);
  469.  
  470. var lueftungsStufe = 0;
  471. if (zuluftVolumenstrom >= 175)
  472. {
  473. lueftungsStufe = 3;
  474. }
  475. else if (zuluftVolumenstrom >= 125)
  476. {
  477. lueftungsStufe = 2;
  478. }
  479. else if (zuluftVolumenstrom >= 105)
  480. {
  481. lueftungsStufe = 1;
  482. }
  483. setState('javascript.0.stiebeleltron.anlage.LUEFTUNGSSTUFE_AKTUELL', lueftungsStufe);
  484.  
  485. // Tabelle Wärmeerzeuger
  486. var heizstufe = (nodes[0].childNodes[7].childNodes[0].childNodes[2].childNodes[3].childNodes[0].data);
  487. setState('javascript.0.stiebeleltron.anlage.HEIZSTUFE', heizstufe);
  488.  
  489. // SOLAR
  490. var kollektortemperatur = removeDegreeUnit(nodes[0].childNodes[6].childNodes[0].childNodes[2].childNodes[3].childNodes[0].data);
  491. setState('javascript.0.stiebeleltron.solar.KOLLEKTORTEMPERATUR', kollektortemperatur);
  492.  
  493. }
  494. catch (e) {
  495. log("stiebeleltron: Cannot set Website 10 data:" + e, 'error');
  496. }
  497. });
  498. });
  499.  
  500. http.get("http://" + stiebeleltronIP + "/?s=1,1", function (http_res) {
  501. // initialize the container for our data
  502. var data = "";
  503.  
  504. // this event fires many times, each time collecting another piece of the response
  505. http_res.on("data", function (chunk) {
  506. // append this chunk to our growing `data` var
  507. data += chunk;
  508. });
  509.  
  510. // this event fires *one* time, after all the `data` events/chunks have been gathered
  511. http_res.on("end", function () {
  512. try {
  513. // the website has some </divs> without starttags, they must be removed to use dom
  514. var newdata = data.replace(/<\/div>\s<\/div>\s<\/div>\s<\/div>\s/gmi, "<\/div>\r\n<\/div>");
  515. var doc = new dom().parseFromString(newdata);
  516. var nodes = xpath.select("//*[@id=\"content\"]", doc);
  517.  
  518. // since i dont get xpath queries work right, i do it the hard way of accessing the childnodes directly
  519. // Tabelle Prozessdaten
  520. var heissgastemperatur = removeDegreeUnit(nodes[0].childNodes[1].childNodes[0].childNodes[2].childNodes[3].childNodes[0].data);
  521. setState('javascript.0.stiebeleltron.prozess.HEISSGASTEMPERATUR', heissgastemperatur);
  522.  
  523. var hochdruck = removePressureUnit(nodes[0].childNodes[1].childNodes[0].childNodes[4].childNodes[3].childNodes[0].data);
  524. setState('javascript.0.stiebeleltron.prozess.HOCHDRUCK', hochdruck);
  525.  
  526. var niederdruck = removePressureUnit(nodes[0].childNodes[1].childNodes[0].childNodes[6].childNodes[3].childNodes[0].data);
  527. setState('javascript.0.stiebeleltron.prozess.NIEDERDRUCK', niederdruck);
  528.  
  529. var verdampfertemp = removeDegreeUnit(nodes[0].childNodes[1].childNodes[0].childNodes[8].childNodes[3].childNodes[0].data);
  530. setState('javascript.0.stiebeleltron.prozess.VERDAMPFERTEMPERATUR', verdampfertemp);
  531.  
  532. var verfluess = removeDegreeUnit(nodes[0].childNodes[1].childNodes[0].childNodes[10].childNodes[3].childNodes[0].data);
  533. setState('javascript.0.stiebeleltron.prozess.VERFLUESSIGERTEMP', verfluess);
  534.  
  535. // FORTLUFT IST LÜFTERDREHZAHL
  536. var rekuperatortemp = removeDegreeUnit(nodes[0].childNodes[1].childNodes[0].childNodes[12].childNodes[3].childNodes[0].data);
  537. setState('javascript.0.stiebeleltron.prozess.FORTLUFT_IST_LUEFTERDREHZAHL', rekuperatortemp);
  538.  
  539. // FORTLUFT SOLL VOLUMENSTROM
  540. var zwischeneinspritztemp = removeDegreeUnit(nodes[0].childNodes[1].childNodes[0].childNodes[14].childNodes[3].childNodes[0].data);
  541. setState('javascript.0.stiebeleltron.prozess.FORTLUFT_SOLL_VOLUMENSTROM', zwischeneinspritztemp);
  542.  
  543. // VERDICHTERSTARTS
  544. var verdichterstarts = removeUnit(nodes[0].childNodes[1].childNodes[0].childNodes[16].childNodes[3].childNodes[0].data,1);
  545. setState('javascript.0.stiebeleltron.prozess.VERDICHTERSTARTS', verdichterstarts);
  546.  
  547. // Tabelle Wärmemenge
  548. var outHeizenTag = removePowerUnit(nodes[0].childNodes[2].childNodes[0].childNodes[2].childNodes[3].childNodes[0].data);
  549. setState('javascript.0.stiebeleltron.waermemenge.HEIZEN_TAG', outHeizenTag);
  550.  
  551. var outHeizenSumme = removePowerUnit(nodes[0].childNodes[2].childNodes[0].childNodes[4].childNodes[3].childNodes[0].data);
  552. setState('javascript.0.stiebeleltron.waermemenge.HEIZEN_SUMME', outHeizenSumme);
  553.  
  554. var outwarmwasserTag = removePowerUnit(nodes[0].childNodes[2].childNodes[0].childNodes[6].childNodes[3].childNodes[0].data);
  555. setState('javascript.0.stiebeleltron.waermemenge.WARMWASSER_TAG', outwarmwasserTag);
  556.  
  557. var outwarmwasserSumme = removePowerUnit(nodes[0].childNodes[2].childNodes[0].childNodes[8].childNodes[3].childNodes[0].data);
  558. setState('javascript.0.stiebeleltron.waermemenge.WARMWASSER_SUMME', outwarmwasserSumme);
  559.  
  560. var outNHZHeizenSumme = removePowerUnit(nodes[0].childNodes[2].childNodes[0].childNodes[10].childNodes[3].childNodes[0].data);
  561. setState('javascript.0.stiebeleltron.waermemenge.NHZ_HEIZEN_SUMME', outNHZHeizenSumme);
  562.  
  563. var outNHZWarmwasserSumme = removePowerUnit(nodes[0].childNodes[2].childNodes[0].childNodes[12].childNodes[3].childNodes[0].data);
  564. setState('javascript.0.stiebeleltron.waermemenge.NHZ_WW_SUMME', outNHZWarmwasserSumme);
  565.  
  566. var wm_solar_hz_tag = removePowerUnit(nodes[0].childNodes[2].childNodes[0].childNodes[18].childNodes[3].childNodes[0].data);
  567. setState('javascript.0.stiebeleltron.solar.WM_SOLAR_HZ_TAG', wm_solar_hz_tag);
  568. var wm_solar_ww_tag = removePowerUnit(nodes[0].childNodes[2].childNodes[0].childNodes[22].childNodes[3].childNodes[0].data);
  569. setState('javascript.0.stiebeleltron.solar.WM_SOLAR_WW_TAG', wm_solar_ww_tag);
  570.  
  571.  
  572. // Tabelle Leistungsaufnahme
  573. var heizenTag = removePowerUnit(nodes[0].childNodes[3].childNodes[0].childNodes[2].childNodes[3].childNodes[0].data);
  574. setState('javascript.0.stiebeleltron.verbrauch.HEIZEN_TAG', heizenTag);
  575.  
  576. var heizenSumme = removePowerUnit(nodes[0].childNodes[3].childNodes[0].childNodes[4].childNodes[3].childNodes[0].data);
  577. setState('javascript.0.stiebeleltron.verbrauch.HEIZEN_SUMME', heizenSumme);
  578.  
  579. var warmwasserTag = removePowerUnit(nodes[0].childNodes[3].childNodes[0].childNodes[6].childNodes[3].childNodes[0].data);
  580. setState('javascript.0.stiebeleltron.verbrauch.WARMWASSER_TAG', warmwasserTag);
  581.  
  582. var warmwasserSumme = removePowerUnit(nodes[0].childNodes[3].childNodes[0].childNodes[8].childNodes[3].childNodes[0].data);
  583. setState('javascript.0.stiebeleltron.verbrauch.WARMWASSER_SUMME', warmwasserSumme);
  584.  
  585. setState('javascript.0.stiebeleltron.verbrauch.GESAMT_TAG', heizenTag + warmwasserTag);
  586. setState('javascript.0.stiebeleltron.verbrauch.GESAMT_SUMME', heizenSumme + warmwasserSumme);
  587.  
  588. // Tabelle Laufzeit
  589. var laufzeitHeizen = removeHourUnit(nodes[0].childNodes[4].childNodes[0].childNodes[2].childNodes[3].childNodes[0].data);
  590. setState('javascript.0.stiebeleltron.laufzeit.HEIZEN', laufzeitHeizen);
  591.  
  592. var laufzeitWarmwasser = removeHourUnit(nodes[0].childNodes[4].childNodes[0].childNodes[4].childNodes[3].childNodes[0].data);
  593. setState('javascript.0.stiebeleltron.laufzeit.WARMWASSER', laufzeitWarmwasser);
  594.  
  595. var laufzeitNhz1 = removeHourUnit(nodes[0].childNodes[4].childNodes[0].childNodes[6].childNodes[3].childNodes[0].data);
  596. setState('javascript.0.stiebeleltron.laufzeit.NHZ_1', laufzeitNhz1);
  597.  
  598. var laufzeitNhz2 = removeHourUnit(nodes[0].childNodes[4].childNodes[0].childNodes[8].childNodes[3].childNodes[0].data);
  599. setState('javascript.0.stiebeleltron.laufzeit.NHZ_2', laufzeitNhz2);
  600.  
  601. //var laufzeitNhz1u2 = removeHourUnit(nodes[0].childNodes[4].childNodes[0].childNodes[12].childNodes[3].childNodes[0].data);
  602. //setState('javascript.0.stiebeleltron.laufzeit.NHZ_1_2', laufzeitNhz1u2);
  603.  
  604. // setState('javascript.0.stiebeleltron.laufzeit.NHZ_GESAMT', laufzeitNhz1 + laufzeitNhz2 + laufzeitNhz1u2);
  605. }
  606. catch (e) {
  607. log("stiebeleltron: Cannot set Website 11 data:" + e, 'error');
  608. }
  609. });
  610. });
  611.  
  612. }
  613.  
  614. function checkFalseBool(input, checkvalue) {
  615. var result = (input != checkvalue);
  616. return Boolean(result);
  617. }
  618.  
  619. function checkTrueBool(input, checkvalue) {
  620. var result = input == checkvalue;
  621. return Boolean(result);
  622. }
  623.  
  624. function removeUnit(input, unitLength, unit) {
  625. if (unit)
  626. unit.valueOf = unit.toSource = unit.toString = input.substring(input.length - unitLength, input.length);
  627. var value = input.substring(0, input.length - unitLength);
  628. value = value.replace(/,/, ".");
  629. return parseFloat(value);
  630. }
  631.  
  632. function removeHourUnit(input, unit) {
  633. return removeUnit(input, 2, unit);
  634. }
  635.  
  636. function removePowerUnit(input, unit) {
  637. return removeUnit(input, 4);
  638. }
  639.  
  640. function removePressureUnit(input, unit) {
  641. return removeUnit(input, 4);
  642. }
  643.  
  644. function removeDegreeUnit(input, unit) {
  645. return removeUnit(input, 2, unit);
  646. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement