[{"id":"95be6ed3.7737d","type":"subflow","name":"8relay-status","info":"","category":"","in":[{"x":60,"y":80,"wires":[{"id":"7951b71c.460c68"}]}],"out":[{"x":660,"y":80,"wires":[{"id":"dae61885.5203b8","port":0}]}],"env":[],"color":"#DDAA99"},{"id":"7951b71c.460c68","type":"i2c in","z":"95be6ed3.7737d","name":"read inport-reg0-add","busno":"1","address":"63","command":"0","count":"1","x":200,"y":80,"wires":[["e1219774.bdc3e8"]]},{"id":"e1219774.bdc3e8","type":"function","z":"95be6ed3.7737d","name":"switch all relays","func":"var relayMaskRemap = [1,4,2,8,64,16,32,128];\n//var relayChRemap = [0,2,1,3,6,4,5,7];\n\nvar relay = msg.relay;\nvar oldVal = msg.payload;\n\nval = IOToRelay(oldVal);\nval = val & (1 << (relay - 1));\nif( val === 0){\n msg.stat = 0; \n}\nelse{\n msg.stat = 1;\n}\nreturn msg;\n\n//-----------------------------------------------\n\nfunction relayToIO(relay){\n var val1 = 0;\n for (i = 0; i < 9; i++) {\n if ((relay & (1 << i)) !== 0){\n val1 = val1 + relayMaskRemap[i]; \n }\n }\n return val1;\n}\n\nfunction IOToRelay(iov){\n var val2 = 0;\n for (i = 0; i < 9; i++) {\n if ((iov & relayMaskRemap[i]) !== 0){\n val2 = val2 + (1 << i); \n }\n }\n return val2;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":400,"y":80,"wires":[["dae61885.5203b8"]]},{"id":"dae61885.5203b8","type":"function","z":"95be6ed3.7737d","name":"","func":"msg.payload = msg.stat;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":560,"y":80,"wires":[[]]}]