PowerStationMonitor/nodered/Kunkin Control.json

1 line
13 KiB
JSON

[{"id":"3abae06a.2b9bd","type":"tab","label":"Kunkin KP184 Read and control","disabled":false,"info":"Read all Measurements from Kunkin KP184 and sends it to OpenHAB for Visualization.\n\nSetpoints from OpenHAB are sent to DC Load too.\n\nSerialports Settings\n\nBaud 115200\nDevice Adresse No.1\n\nDevice Adresse is statically because there is only one device present."},{"id":"a9ac179f.b9206","type":"inject","z":"3abae06a.2b9bd","name":"Poll Status","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"0.1","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":130,"y":160,"wires":[["bc96a0a7.bf0438"]]},{"id":"f1d835ce.811","type":"function","z":"3abae06a.2b9bd","name":"CRC","func":"let data = Buffer.from(msg.payload);\n\nlet crc = 0xffff;\n\nfor (let i = 0; i < data.length; ++i) {\n crc ^= data[i];\n for (let j = 0; j < 8; ++j) {\n xor = 0;\n if ((crc & 1) != 0) {\n xor = 0xa001;\n }\n crc = (crc >> 1) ^ xor;\n }\n}\n\ndata = Buffer.concat([data, Buffer.alloc(2)])\n\ndata.writeUInt16BE(crc, data.length - 2);\n\nmsg.payload = data;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":730,"y":160,"wires":[["1e06e235.3d76e6"]]},{"id":"1e06e235.3d76e6","type":"serial request","z":"3abae06a.2b9bd","name":"","serial":"eed39e04.d91888","x":900,"y":160,"wires":[["86acc9ab.9d9398"]]},{"id":"86acc9ab.9d9398","type":"function","z":"3abae06a.2b9bd","name":"Calc V, A","func":"if (msg.payload[1] == 3 && msg.payload[2] == 30) {\n var voltage = {payload: (msg.payload[5] << 8 | msg.payload[6] << 8 | msg.payload[7]) / 1000};\n var current = {payload: (msg.payload[8] << 8 | msg.payload[9] << 8 | msg.payload[10]) / 1000};\n //var on = {payload: (msg.payload[3] & 0b10000000) >> 0}; // is true if on flag is set\n //var mode = {payload: (msg.payload[3] & 0b01100000) >> 5};\n var data = {payload: msg.payload}; //Data passthrough\n}\n\n\nreturn [voltage, current/*, on, mode*/, data];","outputs":3,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1080,"y":220,"wires":[["b1bf4dc6.7b854"],["746fa2cb.fef98c"],["207bd04d.7de5a"]]},{"id":"93d0b500.156ed8","type":"openhab-v2-out","z":"3abae06a.2b9bd","name":"","controller":"d8ac56fb.00594","item":"DC_Load_Voltage","topic":"ItemUpdate","topicType":"ohCommandType","payload":"payload","payloadType":"msg","allowItemOverride":false,"x":1810,"y":160,"wires":[]},{"id":"d90d4a9c.f0c9b","type":"openhab-v2-out","z":"3abae06a.2b9bd","name":"","controller":"d8ac56fb.00594","item":"DC_Load_Current","topic":"ItemUpdate","topicType":"ohCommandType","payload":"payload","payloadType":"msg","allowItemOverride":false,"x":1810,"y":220,"wires":[]},{"id":"bc96a0a7.bf0438","type":"function","z":"3abae06a.2b9bd","name":"Request Status","func":"msg.payload = [0x01, 0x03, 0x03, 0x00, 0x00, 0x00]\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":360,"y":160,"wires":[["f1d835ce.811"]]},{"id":"bc1e6987.c25368","type":"openhab-v2-out","z":"3abae06a.2b9bd","name":"","controller":"d8ac56fb.00594","item":"DC_Load_Mode","topic":"ItemUpdate","topicType":"ohCommandType","payload":"payload","payloadType":"msg","allowItemOverride":false,"x":1800,"y":340,"wires":[]},{"id":"190fa8b8.4bf09f","type":"openhab-v2-out","z":"3abae06a.2b9bd","name":"","controller":"d8ac56fb.00594","item":"DC_Load_OnOff","topic":"ItemUpdate","topicType":"ohCommandType","payload":"payload","payloadType":"msg","allowItemOverride":false,"x":1810,"y":280,"wires":[]},{"id":"207bd04d.7de5a","type":"buffer-parser","z":"3abae06a.2b9bd","name":"Parse States","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"bool","name":"OnOff","offset":3,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"bool","name":"Mode1","offset":3,"length":1,"offsetbit":1,"scale":"1","mask":""},{"type":"bool","name":"Mode2","offset":3,"length":1,"offsetbit":2,"scale":"1","mask":""}],"swap1":"","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"str","resultType":"keyvalue","resultTypeType":"return","multipleResult":false,"fanOutMultipleResult":false,"setTopic":true,"outputs":1,"x":1270,"y":300,"wires":[["69b8751e.df97f4","d720fa49.d36118"]]},{"id":"69b8751e.df97f4","type":"function","z":"3abae06a.2b9bd","name":"Parse Mode","func":"msg.payload = msg.payload.Mode2 << 1 | msg.payload.Mode1;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1450,"y":340,"wires":[["c258d68.127ce28"]]},{"id":"d720fa49.d36118","type":"function","z":"3abae06a.2b9bd","name":"Modify OnOff","func":"if (msg.payload.OnOff == false) {\n msg.payload = \"OFF\";\n}\nif (msg.payload.OnOff == true) {\n msg.payload = \"ON\";\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1450,"y":280,"wires":[["166796f3.15e381"]]},{"id":"9ab3f7fd.76f97","type":"function","z":"3abae06a.2b9bd","name":"Set On Off","func":"if (msg.payload.state == \"ON\") {\n msg.payload = [0x01, 0x06, 0x01, 0x0E, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x01];\n}\n\nif (msg.payload.state == \"OFF\") {\n msg.payload = [0x01, 0x06, 0x01, 0x0E, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00];\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":350,"y":220,"wires":[["f1d835ce.811"]]},{"id":"639e19a5.cf4fb","type":"openhab-v2-in","z":"3abae06a.2b9bd","outputs":1,"name":"DC Load Set On Off","controller":"d8ac56fb.00594","items":["DC_Load_Set_OnOff"],"eventTypes":["ItemCommandEvent"],"ohTimestamp":false,"enableOutput":true,"initialOutput":false,"storeState":false,"storeStateVariable":"","storeStateVariableType":"flow","x":130,"y":220,"wires":[["9ab3f7fd.76f97"]]},{"id":"b316e7d2.bbfa7","type":"openhab-v2-in","z":"3abae06a.2b9bd","outputs":1,"name":"DC Load Set Voltage","controller":"d8ac56fb.00594","items":["DC_Load_Set_Voltage"],"eventTypes":["ItemCommandEvent"],"ohTimestamp":false,"enableOutput":true,"initialOutput":false,"storeState":false,"storeStateVariable":"","storeStateVariableType":"flow","x":120,"y":280,"wires":[["476c134b.3992ec"]]},{"id":"6d60840e.ee251c","type":"openhab-v2-in","z":"3abae06a.2b9bd","outputs":1,"name":"DC Load Set Current","controller":"d8ac56fb.00594","items":["DC_Load_Set_Current"],"eventTypes":["ItemCommandEvent"],"ohTimestamp":false,"enableOutput":true,"initialOutput":false,"storeState":false,"storeStateVariable":"","storeStateVariableType":"flow","x":120,"y":340,"wires":[["ee6a1539.afb0b8"]]},{"id":"e74644d8.d28d5","type":"function","z":"3abae06a.2b9bd","name":"Set Current","func":"msg.payload = [0x01, 0x06, 0x01, 0x16, 0x00, 0x01, 0x04, 0x00, 0x00, msg.payload[0], msg.payload[1]];\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":530,"y":340,"wires":[["f1d835ce.811"]]},{"id":"ee6a1539.afb0b8","type":"function","z":"3abae06a.2b9bd","name":"Dec to Hex","func":"const hexchars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'];\nlet val = msg.payload.state * 1000;\nlet answer = \"\";\nlet size = 4;\nwhile (size--) {\n answer = hexchars[val & 0xF] + answer;\n val = val >> 4;\n}\n\nmsg.payload = Buffer.from(answer, \"hex\");\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":350,"y":340,"wires":[["e74644d8.d28d5"]]},{"id":"476c134b.3992ec","type":"function","z":"3abae06a.2b9bd","name":"Dec to Hex","func":"const hexchars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'];\nlet val = msg.payload.state * 1000;\nlet answer = \"\";\nlet size = 4;\nwhile (size--) {\n answer = hexchars[val & 0xF] + answer;\n val = val >> 4;\n}\n\nmsg.payload = Buffer.from(answer, \"hex\");\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":350,"y":280,"wires":[["747ef8d2.c1e61"]]},{"id":"747ef8d2.c1e61","type":"function","z":"3abae06a.2b9bd","name":"Set Voltage","func":"msg.payload = [0x01, 0x06, 0x01, 0x12, 0x00, 0x01, 0x04, 0x00, 0x00, msg.payload[0], msg.payload[1]];\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":530,"y":280,"wires":[["f1d835ce.811"]]},{"id":"5f2912ef.24cb0c","type":"openhab-v2-in","z":"3abae06a.2b9bd","outputs":1,"name":"DC Load Set Mode","controller":"d8ac56fb.00594","items":["DC_Load_Set_Mode"],"eventTypes":["ItemCommandEvent"],"ohTimestamp":false,"enableOutput":true,"initialOutput":false,"storeState":false,"storeStateVariable":"","storeStateVariableType":"flow","x":130,"y":400,"wires":[["7c6aab39.bdf55c"]]},{"id":"7c6aab39.bdf55c","type":"function","z":"3abae06a.2b9bd","name":"Dec to Hex","func":"const hexchars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'];\nlet val = msg.payload.state;\nlet answer = \"\";\nlet size = 2;\nwhile (size--) {\n answer = hexchars[val & 0xF] + answer;\n val = val >> 4;\n}\n\nmsg.payload = Buffer.from(answer, \"hex\");\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":350,"y":400,"wires":[["9a21acc0.92cee8"]]},{"id":"9a21acc0.92cee8","type":"function","z":"3abae06a.2b9bd","name":"Set Mode","func":"msg.payload = [0x01, 0x06, 0x01, 0x10, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, msg.payload[0]];\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":520,"y":400,"wires":[["f1d835ce.811"]]},{"id":"b1bf4dc6.7b854","type":"rbe","z":"3abae06a.2b9bd","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","x":1630,"y":160,"wires":[["93d0b500.156ed8"]]},{"id":"746fa2cb.fef98c","type":"rbe","z":"3abae06a.2b9bd","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","x":1630,"y":220,"wires":[["d90d4a9c.f0c9b"]]},{"id":"166796f3.15e381","type":"rbe","z":"3abae06a.2b9bd","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","x":1630,"y":280,"wires":[["190fa8b8.4bf09f"]]},{"id":"c258d68.127ce28","type":"rbe","z":"3abae06a.2b9bd","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","x":1630,"y":340,"wires":[["bc1e6987.c25368"]]},{"id":"e20619df.041eb","type":"openhab-v2-in","z":"3abae06a.2b9bd","outputs":1,"name":"DC Load Set Power","controller":"d8ac56fb.00594","items":["DC_Load_Set_Power"],"eventTypes":["ItemCommandEvent"],"ohTimestamp":false,"enableOutput":true,"initialOutput":false,"storeState":false,"storeStateVariable":"","storeStateVariableType":"flow","x":130,"y":460,"wires":[["db9f6789.5da5c8"]]},{"id":"f0d87268.e79c6","type":"openhab-v2-in","z":"3abae06a.2b9bd","outputs":1,"name":"DC Load Set Resistance","controller":"d8ac56fb.00594","items":["DC_Load_Set_Resistance"],"eventTypes":["ItemCommandEvent"],"ohTimestamp":false,"enableOutput":true,"initialOutput":false,"storeState":false,"storeStateVariable":"","storeStateVariableType":"flow","x":110,"y":520,"wires":[["f8d1df9a.68d8e"]]},{"id":"db9f6789.5da5c8","type":"function","z":"3abae06a.2b9bd","name":"Dec to Hex","func":"const hexchars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'];\nlet val = msg.payload.state * 100;\nlet answer = \"\";\nlet size = 4;\nwhile (size--) {\n answer = hexchars[val & 0xF] + answer;\n val = val >> 4;\n}\n\nmsg.payload = Buffer.from(answer, \"hex\");\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":350,"y":460,"wires":[["60ad1a5c.f5b88c"]]},{"id":"f8d1df9a.68d8e","type":"function","z":"3abae06a.2b9bd","name":"Dec to Hex","func":"const hexchars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'];\nlet val = msg.payload.state * 10;\nlet answer = \"\";\nlet size = 4;\nwhile (size--) {\n answer = hexchars[val & 0xF] + answer;\n val = val >> 4;\n}\n\nmsg.payload = Buffer.from(answer, \"hex\");\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":350,"y":520,"wires":[["cb6b24ab.8cc53"]]},{"id":"60ad1a5c.f5b88c","type":"function","z":"3abae06a.2b9bd","name":"Set Power","func":"msg.payload = [0x01, 0x06, 0x01, 0x1E, 0x00, 0x01, 0x04, 0x00, 0x00, msg.payload[0], msg.payload[1]];\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":530,"y":460,"wires":[["f1d835ce.811"]]},{"id":"cb6b24ab.8cc53","type":"function","z":"3abae06a.2b9bd","name":"Set Resistance","func":"msg.payload = [0x01, 0x06, 0x01, 0x1A, 0x00, 0x01, 0x04, 0x00, 0x00, msg.payload[0], msg.payload[1]];\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":540,"y":520,"wires":[["f1d835ce.811"]]},{"id":"eed39e04.d91888","type":"serial-port","serialport":"/dev/ttyDCLoad","serialbaud":"115200","databits":"8","parity":"none","stopbits":"1","waitfor":"0x01","dtr":"none","rts":"none","cts":"none","dsr":"none","newline":"25","bin":"bin","out":"time","addchar":"","responsetimeout":"30"},{"id":"d8ac56fb.00594","type":"openhab-v2-controller","name":"","protocol":"http","ignoreInvalidCertificate":true,"host":"localhost","port":"8080"}]