[{"id":"bd122bcd.5ccc38","type":"tab","label":"Intergas HRE 28/24","disabled":false,"info":""},{"id":"a546d83.9886928","type":"inject","z":"bd122bcd.5ccc38","name":"","props":[{"p":"payload"}],"repeat":"10","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"[83, 63, 13]","payloadType":"bin","x":120,"y":40,"wires":[["b86e4cf8.7ce8"]]},{"id":"29f12bea.e330d4","type":"mqtt out","z":"bd122bcd.5ccc38","name":"rookgas","topic":"Intergas/hre","qos":"1","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"bce77269.6d315","x":860,"y":100,"wires":[]},{"id":"7f031af3.9a86b4","type":"show-value","z":"bd122bcd.5ccc38","name":"","path":"","x":390,"y":40,"wires":[[]]},{"id":"8008e93f.97f4f8","type":"function","z":"bd122bcd.5ccc38","name":"","func":"const buf = Buffer.from(msg.payload);\n\n//Taanvoer\nvar myJson = {'Trookgas': myFunction(buf[0], buf[1])};\n\n//Taanvoer\nmyJson.Taanvoer = myFunction(buf[2], buf[3]);\n\n//Tretour\nmyJson.Tretour = myFunction(buf[4], buf[5]);\n\n//Ttapwater\nmyJson.Ttapwater = myFunction(buf[6], buf[7]);\n\n//T???\n//Geen sensor? = {payload: myFunction(buf[8], buf[9])};\n\n//T???\n//Geen sensor? = {payload: myFunction(buf[10], buf[11])};\n\n//Pstatisch;\nmyJson.Pstat = myFunction(buf[12], buf[13]);\n\n//FanToerental\nmyJson.Toerental = myFunction(buf[18], buf[19]) * 100;\n\nmsg = {payload: (myJson)};\n\nreturn [msg];\n\nfunction myFunction(x1,x2) {\n    var newBuffer = Buffer.from([x2, x1]);    \n    return newBuffer.readIntBE(0, 2); \n    }\n    ","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":300,"y":100,"wires":[["458d38b.df8fbc8"]]},{"id":"458d38b.df8fbc8","type":"show-value","z":"bd122bcd.5ccc38","name":"Trookgas","path":"","x":520,"y":120,"wires":[["29f12bea.e330d4"]]},{"id":"b86e4cf8.7ce8","type":"serial request","z":"bd122bcd.5ccc38","name":"","serial":"664385f1.cf571c","x":110,"y":100,"wires":[["7f031af3.9a86b4","8008e93f.97f4f8","fd5ba19d.c07a6","91ce67e9.79df78","8d48bb2c.6999e8","e0d2b93f.f6b408","cf4f985.23a3d68","ee52c097.b52d6","ef0441c0.23896","54007335.c0b89c","16c99495.df85eb","c575d062.157e5","4a90df67.e4a6","7fc277db.00fdd8","4d6b7965.dbfc98","4d471b00.d63c44","d81281c6.0fa75"]]},{"id":"fd5ba19d.c07a6","type":"function","z":"bd122bcd.5ccc38","name":"","func":"const buf = Buffer.from(msg.payload);\n\nvar ch_status_code = 0;\nvar ch_fault_code = 0;\n\nch_status_code = buf[24];\n\n    if ((buf[27] & 0x80 != 0x80)) {\n        \n        ch_fault_code  = parseInt(buf[29]);\n        ch_status_code = 256 + ch_fault_code;\n        } else {\n        \n            ch_fault_code = 0;\n        }\n\nswitch (ch_status_code) {\n    case 51:\n        msg3 = {payload: \"Warm water\"};\n        break;\n    case 102:\n        msg3 = {payload: \"CV brandt\"};\n        break;\n    case 126:\n        msg3 = {payload: \"CV in rust\"};\n        break;\n    case 204:\n        msg3 = {payload: \"Tapwater nadraaien\"};\n        break;\n    case 231:\n        msg3 = {payload: \"CV Nadraaien\"};\n        break;        \n    default:\n        msg3 = {payload: \"Unknown: \" + ch_status_code};\n}\n\nmsg1 = {payload: ch_status_code};      \nmsg2 = {payload: ch_fault_code}; \n\nreturn [msg1, msg2, msg3];\n// ontbreken: ventileren, ontsteken, opwarmen boiler\n      // op display\n      // - uit; wachtstand; 0 Nadraaien CV; 1 Gew. temperatuur bereikt; 2 Zelftest\n      //   3 Ventileren; 4  Ontsteken; 5 CV; 6 Warm water; 7 Opwarmen boiler\n//      case  51: strcpy_P(ch_status_description,  PSTR(\"Warm water\"));   break;\n//      case 102: strcpy_P(ch_status_description,  PSTR(\"CV brandt\"));   break;\n//      case 126: strcpy_P(ch_status_description,  PSTR(\"CV in rust\"));  break;\n//      case 204: strcpy_P(ch_status_description,  PSTR(\"Tapwater nadraaien\"));   break;  //ventileren?\n//      case 231: strcpy_P(ch_status_description,  PSTR(\"CV Nadraaien\"));   break;\n//      case 999: strcpy_P(ch_status_description,  PSTR(\"Status 999\"));  break;\n//      default:  sprintf_P(ch_status_description, PSTR(\"Code %d\"), ch_status_code);","outputs":3,"noerr":0,"initialize":"","finalize":"","libs":[],"x":100,"y":660,"wires":[["f6d8d3c3.60cc7"],["1c778196.94331e"],["5ba19d3.b9bf964"]]},{"id":"f6d8d3c3.60cc7","type":"show-value","z":"bd122bcd.5ccc38","name":"status","path":"","x":290,"y":640,"wires":[[]]},{"id":"1c778196.94331e","type":"show-value","z":"bd122bcd.5ccc38","name":"fault","path":"","x":290,"y":700,"wires":[[]]},{"id":"5ba19d3.b9bf964","type":"show-value","z":"bd122bcd.5ccc38","name":"","path":"","x":310,"y":760,"wires":[[]]},{"id":"91ce67e9.79df78","type":"function","z":"bd122bcd.5ccc38","name":"","func":"const buf = Buffer.from(msg.payload);\n\nmsg = {payload: (myFunction(buf[14], buf[15]))};\n\nreturn msg;\n\nfunction myFunction(x1,x2) {\n    var newBuffer = Buffer.from([x2, x1]);    \n    return newBuffer.readIntBE(0, 2); \n    }","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":100,"y":400,"wires":[["e3a94335.f4c12"]]},{"id":"e3a94335.f4c12","type":"show-value","z":"bd122bcd.5ccc38","name":"Setpoint","path":"","x":300,"y":400,"wires":[[]]},{"id":"8d48bb2c.6999e8","type":"function","z":"bd122bcd.5ccc38","name":"","func":"const buf = Buffer.from(msg.payload);\n\nmsg = {payload: (myFunction(buf[16], buf[17]) * 100)};\n\nreturn msg;\n\nfunction myFunction(x1,x2) {\n    var newBuffer = Buffer.from([x2, x1]);    \n    return newBuffer.readIntBE(0, 2); \n    }","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":100,"y":460,"wires":[["57ee1c03.2d61c4"]]},{"id":"e0d2b93f.f6b408","type":"function","z":"bd122bcd.5ccc38","name":"","func":"const buf = Buffer.from(msg.payload);\n\nmsg = {payload: (myFunction(buf[22], buf[23]))};\n\nreturn msg;\n\nfunction myFunction(x1,x2) {\n    var newBuffer = Buffer.from([x2, x1]);    \n    return newBuffer.readIntBE(0, 2); \n    }","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":100,"y":520,"wires":[["cb682e96.9ecb"]]},{"id":"57ee1c03.2d61c4","type":"show-value","z":"bd122bcd.5ccc38","name":"SetpointFanSpeed","path":"","x":330,"y":460,"wires":[[]]},{"id":"cb682e96.9ecb","type":"show-value","z":"bd122bcd.5ccc38","name":"IO Current","path":"","x":310,"y":520,"wires":[[]]},{"id":"cf4f985.23a3d68","type":"function","z":"bd122bcd.5ccc38","name":"","func":"const buf = Buffer.from(msg.payload);\n\nmsg = {payload: (myFunction(buf[26], buf[28]))};\n\nreturn msg;\n\nfunction myFunction(x1,x2) {\n    var newBuffer = Buffer.from([x2, x1]);    \n    return newBuffer.readIntBE(0, 2); \n    }","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":100,"y":580,"wires":[["30cbf068.c7ab7"]]},{"id":"30cbf068.c7ab7","type":"show-value","z":"bd122bcd.5ccc38","name":"","path":"","x":310,"y":580,"wires":[[]]},{"id":"ee52c097.b52d6","type":"function","z":"bd122bcd.5ccc38","name":"Byte 27","func":"const buf = Buffer.from(msg.payload);\nvar i = 27;\nvar myString = \"\";\n\nif ((buf[i] & 1) == 1) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 2) == 2) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 4) == 4) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 8) == 8) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 16) == 16) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 32) == 32) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 64) == 64) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 128) == 128) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nmsg = {payload: myString};\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":740,"y":460,"wires":[["de192973.b18338"]]},{"id":"de192973.b18338","type":"show-value","z":"bd122bcd.5ccc38","name":"","path":"","x":910,"y":460,"wires":[[]]},{"id":"ef0441c0.23896","type":"link out","z":"bd122bcd.5ccc38","name":"data","links":["5968da8b.7b6f44"],"x":575,"y":20,"wires":[]},{"id":"54007335.c0b89c","type":"function","z":"bd122bcd.5ccc38","name":"Byte 24","func":"const buf = Buffer.from(msg.payload);\nvar i = 24;\nvar myString = \"\";\n\nif ((buf[i] & 1) == 1) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 2) == 2) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 4) == 4) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 8) == 8) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 16) == 16) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 32) == 32) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 64) == 64) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 128) == 128) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nmsg = {payload: myString};\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":740,"y":280,"wires":[["f95edcbf.53ef4"]]},{"id":"f95edcbf.53ef4","type":"show-value","z":"bd122bcd.5ccc38","name":"","path":"","x":910,"y":280,"wires":[[]]},{"id":"16c99495.df85eb","type":"function","z":"bd122bcd.5ccc38","name":"Byte 25","func":"const buf = Buffer.from(msg.payload);\nvar i = 25;\nvar myString = \"\";\n\nif ((buf[i] & 1) == 1) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 2) == 2) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 4) == 4) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 8) == 8) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 16) == 16) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 32) == 32) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 64) == 64) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 128) == 128) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nmsg = {payload: myString};\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":740,"y":340,"wires":[["1eb9fc83.f40553"]]},{"id":"1eb9fc83.f40553","type":"show-value","z":"bd122bcd.5ccc38","name":"","path":"","x":910,"y":340,"wires":[[]]},{"id":"c575d062.157e5","type":"function","z":"bd122bcd.5ccc38","name":"Byte 26","func":"const buf = Buffer.from(msg.payload);\nvar i = 26;\nvar myString = \"\";\n\nif ((buf[i] & 1) == 1) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 2) == 2) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 4) == 4) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 8) == 8) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 16) == 16) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 32) == 32) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 64) == 64) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 128) == 128) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nmsg = {payload: myString};\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":740,"y":400,"wires":[["ecc5b41c.002cc8"]]},{"id":"ecc5b41c.002cc8","type":"show-value","z":"bd122bcd.5ccc38","name":"","path":"","x":910,"y":400,"wires":[[]]},{"id":"d81281c6.0fa75","type":"function","z":"bd122bcd.5ccc38","name":"Byte 28","func":"const buf = Buffer.from(msg.payload);\nvar i = 28;\nvar myString = \"\";\n\nif ((buf[i] & 1) == 1) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 2) == 2) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 4) == 4) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 8) == 8) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 16) == 16) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 32) == 32) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 64) == 64) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 128) == 128) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nmsg = {payload: myString};\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":740,"y":520,"wires":[["2b0e658f.2bfd5a"]]},{"id":"4a90df67.e4a6","type":"function","z":"bd122bcd.5ccc38","name":"Byte 29","func":"const buf = Buffer.from(msg.payload);\nvar i = 29;\nvar myString = \"\";\n\nif ((buf[i] & 1) == 1) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 2) == 2) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 4) == 4) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 8) == 8) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 16) == 16) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 32) == 32) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 64) == 64) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 128) == 128) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nmsg = {payload: myString};\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":740,"y":580,"wires":[["6a83dd48.556b94"]]},{"id":"7fc277db.00fdd8","type":"function","z":"bd122bcd.5ccc38","name":"Byte 30","func":"const buf = Buffer.from(msg.payload);\nvar i = 30;\nvar myString = \"\";\n\nif ((buf[i] & 1) == 1) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 2) == 2) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 4) == 4) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 8) == 8) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 16) == 16) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 32) == 32) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 64) == 64) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 128) == 128) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nmsg = {payload: myString};\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":740,"y":640,"wires":[["25bd488.aa3d4b8"]]},{"id":"4d6b7965.dbfc98","type":"function","z":"bd122bcd.5ccc38","name":"Byte 31","func":"const buf = Buffer.from(msg.payload);\nvar i = 31;\nvar myString = \"\";\n\nif ((buf[i] & 1) == 1) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 2) == 2) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 4) == 4) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 8) == 8) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 16) == 16) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 32) == 32) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 64) == 64) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 128) == 128) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nmsg = {payload: myString};\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":740,"y":700,"wires":[["f34e9737.3a0698"]]},{"id":"4d471b00.d63c44","type":"function","z":"bd122bcd.5ccc38","name":"Byte 32","func":"const buf = Buffer.from(msg.payload);\nvar i = 32;\nvar myString = \"\";\n\nif ((buf[i] & 1) == 1) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 2) == 2) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 4) == 4) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 8) == 8) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 16) == 16) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 32) == 32) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 64) == 64) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nif ((buf[i] & 128) == 128) {\n    myString += \"1\";\n}\nelse {\n    myString += \"0\";\n}\nmsg = {payload: myString};\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":740,"y":760,"wires":[["dc320e5a.7238a"]]},{"id":"2b0e658f.2bfd5a","type":"show-value","z":"bd122bcd.5ccc38","name":"","path":"","x":910,"y":520,"wires":[[]]},{"id":"6a83dd48.556b94","type":"show-value","z":"bd122bcd.5ccc38","name":"","path":"","x":910,"y":580,"wires":[[]]},{"id":"25bd488.aa3d4b8","type":"show-value","z":"bd122bcd.5ccc38","name":"","path":"","x":910,"y":640,"wires":[[]]},{"id":"f34e9737.3a0698","type":"show-value","z":"bd122bcd.5ccc38","name":"","path":"","x":910,"y":700,"wires":[[]]},{"id":"dc320e5a.7238a","type":"show-value","z":"bd122bcd.5ccc38","name":"","path":"","x":910,"y":760,"wires":[[]]},{"id":"bce77269.6d315","type":"mqtt-broker","name":"HomeAssistant","broker":"192.168.178.180","port":"1883","clientid":"NodeRed","usetls":false,"compatmode":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"Connect NodeRed","birthQos":"0","birthPayload":"On","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"sessionExpiry":""},{"id":"664385f1.cf571c","type":"serial-port","z":"bd122bcd.5ccc38","serialport":"/dev/ttyUSB0","serialbaud":"9600","databits":"8","parity":"none","stopbits":"1","waitfor":"","dtr":"none","rts":"none","cts":"none","dsr":"none","newline":"3000","bin":"bin","out":"time","addchar":"","responsetimeout":"3000"}]