-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNodeRed
1 lines (1 loc) · 46.7 KB
/
NodeRed
1
[{"id":"3c22fbf1.636f04","type":"subflow","name":"Subflow 1","info":"","category":"","in":[{"x":80,"y":60,"wires":[{"id":"79eaced2.ff572"}]}],"out":[{"x":460,"y":320,"wires":[{"id":"d270a3c6.b95bf","port":0}]}],"env":[],"color":"#DDAA99"},{"id":"192dd1d0.30b5be","type":"change","z":"3c22fbf1.636f04","name":"mi-clear","rules":[{"t":"set","p":"player","pt":"global","to":"2","tot":"num"},{"t":"set","p":"ui_control","pt":"msg","to":"{\"icon\":\"mi-clear\",\"bgcolor\":\"#FF4444\"}","tot":"json"},{"t":"set","p":"color","pt":"msg","to":"red","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":100,"wires":[["c2a6c5b2.b684e8"]]},{"id":"f8dfa373.666ee","type":"switch","z":"3c22fbf1.636f04","name":"Player 1 or 2","property":"player","propertyType":"global","rules":[{"t":"eq","v":"1","vt":"num"},{"t":"eq","v":"2","vt":"num"}],"checkall":"true","repair":false,"outputs":2,"x":190,"y":120,"wires":[["192dd1d0.30b5be"],["c9eafe50.680d5"]]},{"id":"c9eafe50.680d5","type":"change","z":"3c22fbf1.636f04","name":"mi-clear","rules":[{"t":"set","p":"player","pt":"global","to":"1","tot":"num"},{"t":"set","p":"ui_control","pt":"msg","to":"{ \"icon\":\"mi-lens\" }","tot":"json"},{"t":"set","p":"color","pt":"msg","to":"blue","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":140,"wires":[["c2a6c5b2.b684e8"]]},{"id":"d270a3c6.b95bf","type":"function","z":"3c22fbf1.636f04","name":"Check for Winner","func":"// b [r][c] r=row c= column\n\nmsg.payload = \"no winner yet\"\nvar b = global.get(\"board\")\n\n//node.warn(\"b = \"+b)\n//node.warn(\"b[0][0] = \"+b[0][0])\n//node.warn(\"b[0][1] = \"+b[0][1])\n//node.warn(\"b[0][2] = \"+b[0][2])\nvar tt =b[0][0] + b[0][1] + b[0][2]\n//node.warn(\"tt = \"+tt)\n// ----------------------------------------------------------\n// check to see if all squares used - draw unless someone won\nvar t = 0\nfor (r=0; r<3; r++){\n for (c=0; c<3; c++){\n t += b[r][c]\n }\n}\n//node.warn(\"total = \"+t)\nif (t == 13) msg.payload = \"It's a draw\"\n\n// ----------------------------------------------------------\n// Check to see if X wins \n// Check row 1 - 3\nif ((b[0][0] + b[0][1] + b[0][2]) == 3) msg.payload = \"X wins\"\nif ((b[1][0] + b[1][1] + b[1][2]) == 3) msg.payload = \"X wins\"\nif ((b[2][0] + b[2][1] + b[2][2]) == 3) msg.payload = \"X wins\"\n\n// Check column 1 - 3\nif ((b[0][0] + b[1][0] + b[2][0]) == 3) msg.payload = \"X wins\"\nif ((b[0][1] + b[1][1] + b[2][1]) == 3) msg.payload = \"X wins\"\nif ((b[0][2] + b[1][2] + b[2][2]) == 3) msg.payload = \"X wins\"\n\n// Check DIAGONALS\nif ((b[0][0] + b[1][1] + b[2][2]) == 3) msg.payload = \"X wins\"\nif ((b[2][0] + b[1][1] + b[0][2]) == 3) msg.payload = \"X wins\"\n\n// ----------------------------------------------------------\n// Check to see if O wins \n// Check row 1 - 3\nif ((b[0][0] + b[0][1] + b[0][2]) == 6) msg.payload = \"O wins\"\nif ((b[1][0] + b[1][1] + b[1][2]) == 6) msg.payload = \"O wins\"\nif ((b[2][0] + b[2][1] + b[2][2]) == 6) msg.payload = \"O wins\"\n\n// Check column 1 - 3\nif ((b[0][0] + b[1][0] + b[2][0]) == 6) msg.payload = \"O wins\"\nif ((b[0][1] + b[1][1] + b[2][1]) == 6) msg.payload = \"O wins\"\nif ((b[0][2] + b[1][2] + b[2][2]) == 6) msg.payload = \"O wins\"\n\n// Check DIAGONALS\nif ((b[0][0] + b[1][1] + b[2][2]) == 6) msg.payload = \"O wins\"\nif ((b[2][0] + b[1][1] + b[0][2]) == 6) msg.payload = \"O wins\"\n\n// ----------------------------------------------------------\n// \nif (msg.payload != \"no winner yet\") msg.gameover = \"no\"\nif (msg.payload == \"It's a draw\") msg.gameover = \"draw\"\nif (msg.payload == \"X wins\") msg.gameover = \"yes\"\nif (msg.payload == \"O wins\") msg.gameover = \"yes\"\n\nreturn msg;\n","outputs":1,"noerr":0,"x":610,"y":180,"wires":[[]]},{"id":"c2a6c5b2.b684e8","type":"change","z":"3c22fbf1.636f04","name":"disable square","rules":[{"t":"set","p":"enabled","pt":"msg","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":600,"y":120,"wires":[["d270a3c6.b95bf"]]},{"id":"79eaced2.ff572","type":"function","z":"3c22fbf1.636f04","name":"Mark square used","func":"var square = msg.payload\nvar p = global.get(\"player\")\nvar b = global.get(\"board\")\n//node.warn(\"square =\"+square)\nswitch (square) {\n case 0:\n b[0][0] = p\n break\n case 1:\n b[0][1] = p\n break\n case 2:\n b[0][2] = p\n break\n case 10:\n b[1][0] = p\n break\n case 11:\n b[1][1] = p\n break\n case 12:\n b[1][2] = p\n break\n case 20:\n b[2][0] = p\n break\n case 21:\n b[2][1] = p\n break\n case 22:\n b[2][2] = p\n break\n \n}\nglobal.set(\"board\",b)\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":210,"y":60,"wires":[["f8dfa373.666ee"]]},{"id":"b3adb6e4.f9eff8","type":"api-call-service","z":"552b3ceb.74fbb4","name":"On 7","server":"fa85c3b7.6643e","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.arduino_section_7","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":450,"y":440,"wires":[[]]},{"id":"5fe87efb.c5e06","type":"change","z":"552b3ceb.74fbb4","name":"","rules":[{"t":"set","p":"ui_control","pt":"msg","to":"{ \"icon\":\"\" }","tot":"json"},{"t":"set","p":"enabled","pt":"msg","to":"true","tot":"bool"},{"t":"set","p":"player","pt":"global","to":"1","tot":"num"},{"t":"set","p":"color","pt":"msg","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":440,"y":200,"wires":[["9d5fd2e.2c66a3"]]},{"id":"9d5fd2e.2c66a3","type":"function","z":"552b3ceb.74fbb4","name":"set playing board","func":"//var b = {\n// \"R1C1\":{\"XorO\":9, \"status\":0},\n// \"R1C2\":{\"XorO\":9, \"status\":0},\n// \"R1C3\":{\"XorO\":9, \"status\":0},\n// \"R2C1\":{\"XorO\":9, \"status\":0},\n// \"R2C2\":{\"XorO\":9, \"status\":0},\n// \"R2C3\":{\"XorO\":9, \"status\":0},\n// \"R3C1\":{\"XorO\":9, \"status\":0}, \t\n// \"R3C2\":{\"XorO\":9, \"status\":0},\n// \"R3C3\":{\"XorO\":9, \"status\":0}\n// }\n\nvar b = [[9,9,9],[9,9,9],[9,9,9]]\nglobal.set(\"board\",b)\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":690,"y":200,"wires":[[]]},{"id":"1dd67395.b98ccc","type":"link in","z":"552b3ceb.74fbb4","name":"check for winner","links":["3e9fac5d.76a334","92236a75.62e388","96c61158.e0807"],"x":75,"y":80,"wires":[["ed7b6ea7.a7e68"]]},{"id":"8aaa3065.6ff72","type":"api-call-service","z":"552b3ceb.74fbb4","name":"On 8","server":"fa85c3b7.6643e","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.arduino_section_8","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1110,"y":440,"wires":[[]]},{"id":"e421446b.8851a8","type":"api-call-service","z":"552b3ceb.74fbb4","name":"On 4","server":"fa85c3b7.6643e","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.arduino_section_4","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":450,"y":680,"wires":[[]]},{"id":"1db4dee7.618641","type":"api-call-service","z":"552b3ceb.74fbb4","name":"On 5","server":"fa85c3b7.6643e","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.arduino_section_5","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1090,"y":680,"wires":[[]]},{"id":"bc0a2de4.a5b08","type":"api-call-service","z":"552b3ceb.74fbb4","name":"On 2","server":"fa85c3b7.6643e","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.arduino_section_2","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1090,"y":920,"wires":[[]]},{"id":"1550f3f6.93f05c","type":"api-call-service","z":"552b3ceb.74fbb4","name":"On 9","server":"fa85c3b7.6643e","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.arduino_section_9","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1810,"y":440,"wires":[[]]},{"id":"a6cc747.622f288","type":"api-call-service","z":"552b3ceb.74fbb4","name":"On 6","server":"fa85c3b7.6643e","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.arduino_section_6","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1810,"y":680,"wires":[[]]},{"id":"bf244540.71d888","type":"api-call-service","z":"552b3ceb.74fbb4","name":"On 3","server":"fa85c3b7.6643e","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.arduino_section_3","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1810,"y":920,"wires":[[]]},{"id":"193a4e13.43c572","type":"trigger-state","z":"552b3ceb.74fbb4","name":"HA 7","server":"fa85c3b7.6643e","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"light.arduino_section_7","entityidfiltertype":"exact","debugenabled":false,"constraints":[],"outputs":3,"customoutputs":[{"messageType":"payload","messageValue":"0","messageValueType":"num","comparatorPropertyType":"current_state","comparatorType":"is","comparatorValue":"true","comparatorValueDataType":"bool","comparatorPropertyValue":"new_state.state"}],"outputinitially":false,"state_type":"habool","x":210,"y":380,"wires":[[],[],["6f604b26.67ba24"]]},{"id":"206be468.68fd4c","type":"trigger-state","z":"552b3ceb.74fbb4","name":"HA 8","server":"fa85c3b7.6643e","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"light.arduino_section_8","entityidfiltertype":"exact","debugenabled":false,"constraints":[],"outputs":3,"customoutputs":[{"messageType":"payload","messageValue":"1","messageValueType":"num","comparatorPropertyType":"current_state","comparatorType":"is","comparatorValue":"true","comparatorValueDataType":"bool","comparatorPropertyValue":"new_state.state"}],"outputinitially":false,"state_type":"habool","x":850,"y":380,"wires":[[],[],["3bdb6bee.7984b4"]]},{"id":"503d699e.5c18d8","type":"trigger-state","z":"552b3ceb.74fbb4","name":"HA 9","server":"fa85c3b7.6643e","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"light.arduino_section_9","entityidfiltertype":"exact","debugenabled":false,"constraints":[],"outputs":3,"customoutputs":[{"messageType":"payload","messageValue":"2","messageValueType":"num","comparatorPropertyType":"current_state","comparatorType":"is","comparatorValue":"true","comparatorValueDataType":"bool","comparatorPropertyValue":"new_state.state"}],"outputinitially":false,"state_type":"habool","x":1570,"y":380,"wires":[[],[],["16bb6313.e2744d"]]},{"id":"d41ed5b7.324408","type":"trigger-state","z":"552b3ceb.74fbb4","name":"HA 4","server":"fa85c3b7.6643e","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"light.arduino_section_4","entityidfiltertype":"exact","debugenabled":false,"constraints":[],"outputs":3,"customoutputs":[{"messageType":"payload","messageValue":"10","messageValueType":"num","comparatorPropertyType":"current_state","comparatorType":"is","comparatorValue":"true","comparatorValueDataType":"bool","comparatorPropertyValue":"new_state.state"}],"outputinitially":false,"state_type":"habool","x":210,"y":620,"wires":[[],[],["73f4a692.d66c68"]]},{"id":"625005a8.9d0d6c","type":"trigger-state","z":"552b3ceb.74fbb4","name":"HA 5","server":"fa85c3b7.6643e","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"light.arduino_section_5","entityidfiltertype":"exact","debugenabled":false,"constraints":[],"outputs":3,"customoutputs":[{"messageType":"payload","messageValue":"11","messageValueType":"num","comparatorPropertyType":"current_state","comparatorType":"is","comparatorValue":"true","comparatorValueDataType":"bool","comparatorPropertyValue":"new_state.state"}],"outputinitially":false,"state_type":"habool","x":850,"y":620,"wires":[[],[],["b39d5e6d.b33c5"]]},{"id":"9ea87403.002e18","type":"trigger-state","z":"552b3ceb.74fbb4","name":"HA 6","server":"fa85c3b7.6643e","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"light.arduino_section_6","entityidfiltertype":"exact","debugenabled":false,"constraints":[],"outputs":3,"customoutputs":[{"messageType":"payload","messageValue":"12","messageValueType":"num","comparatorPropertyType":"current_state","comparatorType":"is","comparatorValue":"true","comparatorValueDataType":"bool","comparatorPropertyValue":"new_state.state"}],"outputinitially":false,"state_type":"habool","x":1570,"y":620,"wires":[[],[],["e4493fbd.6cffe"]]},{"id":"a0fc868a.fafe88","type":"trigger-state","z":"552b3ceb.74fbb4","name":"HA 1","server":"fa85c3b7.6643e","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"light.arduino_section_1","entityidfiltertype":"exact","debugenabled":false,"constraints":[],"outputs":3,"customoutputs":[{"messageType":"payload","messageValue":"20","messageValueType":"num","comparatorPropertyType":"current_state","comparatorType":"is","comparatorValue":"true","comparatorValueDataType":"bool","comparatorPropertyValue":"new_state.state"}],"outputinitially":false,"state_type":"habool","x":210,"y":860,"wires":[[],[],["bef51bc4.d0c5e8"]]},{"id":"aa27b6f0.1e9d48","type":"trigger-state","z":"552b3ceb.74fbb4","name":"HA 2","server":"fa85c3b7.6643e","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"light.arduino_section_2","entityidfiltertype":"exact","debugenabled":false,"constraints":[],"outputs":3,"customoutputs":[{"messageType":"payload","messageValue":"21","messageValueType":"num","comparatorPropertyType":"current_state","comparatorType":"is","comparatorValue":"true","comparatorValueDataType":"bool","comparatorPropertyValue":"new_state.state"}],"outputinitially":false,"state_type":"habool","x":850,"y":860,"wires":[[],[],["2c5ae549.0cce9a"]]},{"id":"9b092d63.67ea4","type":"trigger-state","z":"552b3ceb.74fbb4","name":"HA 3","server":"fa85c3b7.6643e","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"light.arduino_section_3","entityidfiltertype":"exact","debugenabled":false,"constraints":[],"outputs":3,"customoutputs":[{"messageType":"payload","messageValue":"22","messageValueType":"num","comparatorPropertyType":"current_state","comparatorType":"is","comparatorValue":"true","comparatorValueDataType":"bool","comparatorPropertyValue":"new_state.state"}],"outputinitially":false,"state_type":"habool","x":1570,"y":860,"wires":[[],[],["ad348abf.e02a18"]]},{"id":"f18579a8.e5daa8","type":"trigger-state","z":"552b3ceb.74fbb4","name":"HA Clear","server":"fa85c3b7.6643e","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"input_boolean.tictacalc_clear","entityidfiltertype":"exact","debugenabled":false,"constraints":[],"outputs":3,"customoutputs":[{"messageType":"payload","messageValue":"false","messageValueType":"bool","comparatorPropertyType":"always","comparatorType":"is","comparatorValue":"","comparatorValueDataType":"str","comparatorPropertyValue":""}],"outputinitially":false,"state_type":"habool","x":120,"y":140,"wires":[[],[],["5fe87efb.c5e06","ed7b6ea7.a7e68","7c3e9b72.a561f4"]]},{"id":"804f1dc9.6533b","type":"api-call-service","z":"552b3ceb.74fbb4","name":"HA Text setzen","server":"fa85c3b7.6643e","version":1,"debugenabled":false,"service_domain":"input_text","service":"set_value","entityId":"input_text.tictacalc_text","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":680,"y":80,"wires":[[]]},{"id":"ed7b6ea7.a7e68","type":"function","z":"552b3ceb.74fbb4","name":"winner","func":"if (msg.payload == \"It's a draw\") {\n delete msg.payload;\n msg.payload= {data:{value: \"Unentschieden :(\"}};\n return msg;\n}\n\nif (msg.payload == \"X wins\") {\n delete msg.payload;\n msg.payload = {data:{value: \"Spieler 1 gewinnt\"}};\n return msg;\n}\n\nif (msg.payload == \"O wins\") {\n delete msg.payload;\n msg.payload = {data:{value: \"Spieler 2 gewinnt\"}};\n return msg;\n}\n\nif (msg.payload == false) {\n delete msg.payload;\n msg.payload = {data:{value: \"Spieldaten gelöscht\"}};\n return msg;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","x":410,"y":80,"wires":[["804f1dc9.6533b"]]},{"id":"7c3e9b72.a561f4","type":"link out","z":"552b3ceb.74fbb4","name":"","links":["855f3ca4.9fd67","2c2ca7ab.6ecd28","9ed6126f.ace59","897aa464.07dbd8"],"x":375,"y":260,"wires":[]},{"id":"855f3ca4.9fd67","type":"link in","z":"552b3ceb.74fbb4","name":"","links":["7c3e9b72.a561f4"],"x":55,"y":700,"wires":[["6f604b26.67ba24","73f4a692.d66c68","bef51bc4.d0c5e8"]]},{"id":"2c2ca7ab.6ecd28","type":"link in","z":"552b3ceb.74fbb4","name":"","links":["7c3e9b72.a561f4"],"x":695,"y":700,"wires":[["3bdb6bee.7984b4","b39d5e6d.b33c5","2c5ae549.0cce9a"]]},{"id":"9ed6126f.ace59","type":"link in","z":"552b3ceb.74fbb4","name":"","links":["7c3e9b72.a561f4"],"x":1415,"y":740,"wires":[["16bb6313.e2744d","e4493fbd.6cffe","ad348abf.e02a18"]]},{"id":"d7744ba4.1583d8","type":"trigger-state","z":"552b3ceb.74fbb4","name":"input_number.tictacalc_rgb_1_r","server":"fa85c3b7.6643e","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"input_number.tictacalc_rgb_1_r","entityidfiltertype":"exact","debugenabled":false,"constraints":[],"outputs":2,"customoutputs":[],"outputinitially":true,"state_type":"num","x":170,"y":1120,"wires":[["5e1b1c82.156d84"],[]]},{"id":"b7db6e0d.d34e1","type":"trigger-state","z":"552b3ceb.74fbb4","name":"input_number.tictacalc_rgb_1_g","server":"fa85c3b7.6643e","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"input_number.tictacalc_rgb_1_g","entityidfiltertype":"exact","debugenabled":false,"constraints":[],"outputs":2,"customoutputs":[],"outputinitially":true,"state_type":"num","x":170,"y":1180,"wires":[["5e1b1c82.156d84"],[]]},{"id":"b1be7567.628f48","type":"trigger-state","z":"552b3ceb.74fbb4","name":"input_number.tictacalc_rgb_1_b","server":"fa85c3b7.6643e","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"input_number.tictacalc_rgb_1_b","entityidfiltertype":"exact","debugenabled":false,"constraints":[],"outputs":2,"customoutputs":[],"outputinitially":true,"state_type":"num","x":170,"y":1240,"wires":[["5e1b1c82.156d84"],[]]},{"id":"17c97334.5f3ded","type":"trigger-state","z":"552b3ceb.74fbb4","name":"input_number.tictacalc_rgb_2_r","server":"fa85c3b7.6643e","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"input_number.tictacalc_rgb_2_r","entityidfiltertype":"exact","debugenabled":false,"constraints":[],"outputs":2,"customoutputs":[],"outputinitially":true,"state_type":"num","x":170,"y":1340,"wires":[["5e1b1c82.156d84"],[]]},{"id":"8e5d6fe2.90695","type":"trigger-state","z":"552b3ceb.74fbb4","name":"input_number.tictacalc_rgb_2_g","server":"fa85c3b7.6643e","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"input_number.tictacalc_rgb_2_g","entityidfiltertype":"exact","debugenabled":false,"constraints":[],"outputs":2,"customoutputs":[],"outputinitially":true,"state_type":"num","x":170,"y":1400,"wires":[["5e1b1c82.156d84"],[]]},{"id":"9ac1321.66da1d","type":"trigger-state","z":"552b3ceb.74fbb4","name":"input_number.tictacalc_rgb_2_b","server":"fa85c3b7.6643e","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"input_number.tictacalc_rgb_2_b","entityidfiltertype":"exact","debugenabled":false,"constraints":[],"outputs":2,"customoutputs":[],"outputinitially":true,"state_type":"num","x":170,"y":1460,"wires":[["5e1b1c82.156d84"],[]]},{"id":"5e1b1c82.156d84","type":"function","z":"552b3ceb.74fbb4","name":"Farben/Lock in Flow speichern","func":"//Farben Spieler 1\nvar r1 = flow.get('r1') || 0;\nvar g1 = flow.get('g1') || 0;\nvar b1 = flow.get('b1') || 0;\n\n//Farben Spieler 2\nvar r2 = flow.get('r2') || 0;\nvar g2 = flow.get('g2') || 0;\nvar b2 = flow.get('b2') || 0;\n\n//Lock\nvar lock = flow.get('lock') || false;\n\n//Farben Spieler 1\nif (msg.topic == \"input_number.tictacalc_rgb_1_r\"){\n r1 = msg.payload;\n flow.set('r1', r1);\n}\n\nif (msg.topic == \"input_number.tictacalc_rgb_1_g\"){\n g1 = msg.payload;\n flow.set('g1', g1);\n}\n\nif (msg.topic == \"input_number.tictacalc_rgb_1_b\"){\n b1 = msg.payload;\n flow.set('b1', b1);\n}\n\n//Farben Spieler 2\nif (msg.topic == \"input_number.tictacalc_rgb_2_r\"){\n r2 = msg.payload;\n flow.set('r2', r2);\n}\n\nif (msg.topic == \"input_number.tictacalc_rgb_2_g\"){\n g2 = msg.payload;\n flow.set('g2', g2);\n}\n\nif (msg.topic == \"input_number.tictacalc_rgb_2_b\"){\n b2 = msg.payload;\n flow.set('b2', b2);\n}\n\n//Lock\nif (msg.topic == \"input_boolean.tictacalc_locked\"){\n lock = msg.payload;\n flow.set('lock', lock);\n}\n\n\nreturn null;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":510,"y":1280,"wires":[[]]},{"id":"5c93b0c0.2628f","type":"api-call-service","z":"552b3ceb.74fbb4","name":"Off 7","server":"fa85c3b7.6643e","version":1,"debugenabled":false,"service_domain":"light","service":"turn_off","entityId":"light.arduino_section_7","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":210,"y":520,"wires":[[]]},{"id":"46be648f.1f6d2c","type":"api-call-service","z":"552b3ceb.74fbb4","name":"Off 8","server":"fa85c3b7.6643e","version":1,"debugenabled":false,"service_domain":"light","service":"turn_off","entityId":"light.arduino_section_8","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":850,"y":520,"wires":[[]]},{"id":"d1f11397.e7a43","type":"api-call-service","z":"552b3ceb.74fbb4","name":"Off 4","server":"fa85c3b7.6643e","version":1,"debugenabled":false,"service_domain":"light","service":"turn_off","entityId":"light.arduino_section_4","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":210,"y":760,"wires":[[]]},{"id":"1a1aa31b.91247d","type":"api-call-service","z":"552b3ceb.74fbb4","name":"Off 5","server":"fa85c3b7.6643e","version":1,"debugenabled":false,"service_domain":"light","service":"turn_off","entityId":"light.arduino_section_5","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":850,"y":760,"wires":[[]]},{"id":"126dcbb3.f9cfc4","type":"api-call-service","z":"552b3ceb.74fbb4","name":"Off 1","server":"fa85c3b7.6643e","version":1,"debugenabled":false,"service_domain":"light","service":"turn_off","entityId":"light.arduino_section_1","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":210,"y":1000,"wires":[[]]},{"id":"87b7f11f.f9832","type":"api-call-service","z":"552b3ceb.74fbb4","name":"Off 2","server":"fa85c3b7.6643e","version":1,"debugenabled":false,"service_domain":"light","service":"turn_off","entityId":"light.arduino_section_2","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":850,"y":1000,"wires":[[]]},{"id":"1d2b9512.c69f4b","type":"api-call-service","z":"552b3ceb.74fbb4","name":"Off 9","server":"fa85c3b7.6643e","version":1,"debugenabled":false,"service_domain":"light","service":"turn_off","entityId":"light.arduino_section_9","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1570,"y":520,"wires":[[]]},{"id":"f3d2b2d2.a9647","type":"api-call-service","z":"552b3ceb.74fbb4","name":"Off 6","server":"fa85c3b7.6643e","version":1,"debugenabled":false,"service_domain":"light","service":"turn_off","entityId":"light.arduino_section_6","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1570,"y":760,"wires":[[]]},{"id":"940ed8f6.5b0208","type":"api-call-service","z":"552b3ceb.74fbb4","name":"Off 3","server":"fa85c3b7.6643e","version":1,"debugenabled":false,"service_domain":"light","service":"turn_off","entityId":"light.arduino_section_3","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1570,"y":1000,"wires":[[]]},{"id":"8064ab4.578ee58","type":"api-call-service","z":"552b3ceb.74fbb4","name":"On 1","server":"fa85c3b7.6643e","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.arduino_section_1","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":450,"y":920,"wires":[[]]},{"id":"e564debb.46a99","type":"switch","z":"552b3ceb.74fbb4","name":"game over?","property":"gameover","propertyType":"msg","rules":[{"t":"eq","v":"yes","vt":"str"},{"t":"eq","v":"draw","vt":"str"},{"t":"eq","v":"no","vt":"str"}],"checkall":"false","repair":false,"outputs":3,"x":430,"y":140,"wires":[[],[],[]]},{"id":"6f604b26.67ba24","type":"function","z":"552b3ceb.74fbb4","name":"farbe setzen / löschen","func":"//Spieler am Zug\nvar p = global.get(\"player\");\n\n//Farben von Spieler 1\nvar r1 = flow.get('r1') || 0;\nvar g1 = flow.get('g1') || 0;\nvar b1 = flow.get('b1') || 0;\n\n//Farben von Spieler 1\nvar r2 = flow.get('r2') || 0;\nvar g2 = flow.get('g2') || 0;\nvar b2 = flow.get('b2') || 0;\n\n//Feld gespielt\nvar played = context.get('played') || false;\n\n//Lock\nvar lock = flow.get('lock') || false;\n\n//Wert des Feldes speichern\nvar value = msg.payload;\n\n//Lock\nif (lock === false) {\n played = false;\n context.set('played', played);\n return [null, msg, null];\n}\n\n\n//Lampen zurücksetzen (Ausgang 2)\nif ((msg.payload === false) || (lock === false)) {\n played = false;\n context.set('played', played);\n return[null, msg, null];\n}\n\n\n//Farbe setzen fü Spieler 1\nif ((p === 1) && (played == false)) {\n \n //Farbe senden (Ausgang 1)\n delete msg.payload;\n msg.payload = {data:{rgb_color: [r1, g1, b1]}};\n played = true;\n context.set('played', played);\n node.send(msg, null, null);\n \n msg.p = p;\n \n //Feldwert senden (Ausgang 3)\n delete msg.payload;\n msg.payload = value;\n return[null, null, msg];\n}\n\n\n//Farbe setzen für Spieler 2\nif ((p === 2) && (played == false)){\n \n //Farbe senden (Ausgang 1)\n delete msg.payload;\n msg.payload = {data:{rgb_color: [r2, g2, b2]}};\n played = true;\n context.set('played', played);\n node.send(msg, null, null);\n \n msg.p = p;\n \n //Feldwert senden (Ausgang 3)\n delete msg.payload;\n msg.payload = value;\n return[null, null, msg];\n}","outputs":3,"noerr":0,"initialize":"","finalize":"","x":260,"y":460,"wires":[["b3adb6e4.f9eff8"],["5c93b0c0.2628f"],["d2569f27.4cd95"]],"outputLabels":["on","off","calc"]},{"id":"73f4a692.d66c68","type":"function","z":"552b3ceb.74fbb4","name":"farbe setzen / löschen","func":"//Spieler am Zug\nvar p = global.get(\"player\");\n\n//Farben von Spieler 1\nvar r1 = flow.get('r1') || 0;\nvar g1 = flow.get('g1') || 0;\nvar b1 = flow.get('b1') || 0;\n\n//Farben von Spieler 1\nvar r2 = flow.get('r2') || 0;\nvar g2 = flow.get('g2') || 0;\nvar b2 = flow.get('b2') || 0;\n\n//Feld gespielt\nvar played = context.get('played') || false;\n\n//Lock\nvar lock = flow.get('lock') || false;\n\n//Wert des Feldes speichern\nvar value = msg.payload;\n\n//Lock\nif (lock === false) {\n played = false;\n context.set('played', played);\n return [null, msg, null];\n}\n\n\n//Lampen zurücksetzen (Ausgang 2)\nif ((msg.payload === false) || (lock === false)) {\n played = false;\n context.set('played', played);\n return[null, msg, null];\n}\n\n\n//Farbe setzen fü Spieler 1\nif ((p === 1) && (played == false)) {\n \n //Farbe senden (Ausgang 1)\n delete msg.payload;\n msg.payload = {data:{rgb_color: [r1, g1, b1]}};\n played = true;\n context.set('played', played);\n node.send(msg, null, null);\n \n msg.p = p;\n \n //Feldwert senden (Ausgang 3)\n delete msg.payload;\n msg.payload = value;\n return[null, null, msg];\n}\n\n\n//Farbe setzen für Spieler 2\nif ((p === 2) && (played == false)){\n \n //Farbe senden (Ausgang 1)\n delete msg.payload;\n msg.payload = {data:{rgb_color: [r2, g2, b2]}};\n played = true;\n context.set('played', played);\n node.send(msg, null, null);\n \n msg.p = p;\n \n //Feldwert senden (Ausgang 3)\n delete msg.payload;\n msg.payload = value;\n return[null, null, msg];\n}","outputs":3,"noerr":0,"initialize":"","finalize":"","x":260,"y":700,"wires":[["e421446b.8851a8"],["d1f11397.e7a43"],["f8a14055.c14ee"]],"outputLabels":["on","off","calc"]},{"id":"bef51bc4.d0c5e8","type":"function","z":"552b3ceb.74fbb4","name":"farbe setzen / löschen","func":"//Spieler am Zug\nvar p = global.get(\"player\");\n\n//Farben von Spieler 1\nvar r1 = flow.get('r1') || 0;\nvar g1 = flow.get('g1') || 0;\nvar b1 = flow.get('b1') || 0;\n\n//Farben von Spieler 1\nvar r2 = flow.get('r2') || 0;\nvar g2 = flow.get('g2') || 0;\nvar b2 = flow.get('b2') || 0;\n\n//Feld gespielt\nvar played = context.get('played') || false;\n\n//Lock\nvar lock = flow.get('lock') || false;\n\n//Wert des Feldes speichern\nvar value = msg.payload;\n\n//Lock\nif (lock === false) {\n played = false;\n context.set('played', played);\n return [null, msg, null];\n}\n\n\n//Lampen zurücksetzen (Ausgang 2)\nif ((msg.payload === false) || (lock === false)) {\n played = false;\n context.set('played', played);\n return[null, msg, null];\n}\n\n\n//Farbe setzen fü Spieler 1\nif ((p === 1) && (played == false)) {\n \n //Farbe senden (Ausgang 1)\n delete msg.payload;\n msg.payload = {data:{rgb_color: [r1, g1, b1]}};\n played = true;\n context.set('played', played);\n node.send(msg, null, null);\n \n msg.p = p;\n \n //Feldwert senden (Ausgang 3)\n delete msg.payload;\n msg.payload = value;\n return[null, null, msg];\n}\n\n\n//Farbe setzen für Spieler 2\nif ((p === 2) && (played == false)){\n \n //Farbe senden (Ausgang 1)\n delete msg.payload;\n msg.payload = {data:{rgb_color: [r2, g2, b2]}};\n played = true;\n context.set('played', played);\n node.send(msg, null, null);\n \n msg.p = p;\n \n //Feldwert senden (Ausgang 3)\n delete msg.payload;\n msg.payload = value;\n return[null, null, msg];\n}","outputs":3,"noerr":0,"initialize":"","finalize":"","x":260,"y":940,"wires":[["8064ab4.578ee58"],["126dcbb3.f9cfc4"],["d429653c.94dab8"]],"outputLabels":["on","off","calc"]},{"id":"3bdb6bee.7984b4","type":"function","z":"552b3ceb.74fbb4","name":"farbe setzen / löschen","func":"//Spieler am Zug\nvar p = global.get(\"player\");\n\n//Farben von Spieler 1\nvar r1 = flow.get('r1') || 0;\nvar g1 = flow.get('g1') || 0;\nvar b1 = flow.get('b1') || 0;\n\n//Farben von Spieler 1\nvar r2 = flow.get('r2') || 0;\nvar g2 = flow.get('g2') || 0;\nvar b2 = flow.get('b2') || 0;\n\n//Feld gespielt\nvar played = context.get('played') || false;\n\n//Lock\nvar lock = flow.get('lock') || false;\n\n//Wert des Feldes speichern\nvar value = msg.payload;\n\n//Lock\nif (lock === false) {\n played = false;\n context.set('played', played);\n return [null, msg, null];\n}\n\n\n//Lampen zurücksetzen (Ausgang 2)\nif ((msg.payload === false) || (lock === false)) {\n played = false;\n context.set('played', played);\n return[null, msg, null];\n}\n\n\n//Farbe setzen fü Spieler 1\nif ((p === 1) && (played == false)) {\n \n //Farbe senden (Ausgang 1)\n delete msg.payload;\n msg.payload = {data:{rgb_color: [r1, g1, b1]}};\n played = true;\n context.set('played', played);\n node.send(msg, null, null);\n \n msg.p = p;\n \n //Feldwert senden (Ausgang 3)\n delete msg.payload;\n msg.payload = value;\n return[null, null, msg];\n}\n\n\n//Farbe setzen für Spieler 2\nif ((p === 2) && (played == false)){\n \n //Farbe senden (Ausgang 1)\n delete msg.payload;\n msg.payload = {data:{rgb_color: [r2, g2, b2]}};\n played = true;\n context.set('played', played);\n node.send(msg, null, null);\n \n msg.p = p;\n \n //Feldwert senden (Ausgang 3)\n delete msg.payload;\n msg.payload = value;\n return[null, null, msg];\n}","outputs":3,"noerr":0,"initialize":"","finalize":"","x":900,"y":460,"wires":[["8aaa3065.6ff72"],["46be648f.1f6d2c"],["7b60237e.4f98cc"]],"outputLabels":["on","off","calc"]},{"id":"b39d5e6d.b33c5","type":"function","z":"552b3ceb.74fbb4","name":"farbe setzen / löschen","func":"//Spieler am Zug\nvar p = global.get(\"player\");\n\n//Farben von Spieler 1\nvar r1 = flow.get('r1') || 0;\nvar g1 = flow.get('g1') || 0;\nvar b1 = flow.get('b1') || 0;\n\n//Farben von Spieler 1\nvar r2 = flow.get('r2') || 0;\nvar g2 = flow.get('g2') || 0;\nvar b2 = flow.get('b2') || 0;\n\n//Feld gespielt\nvar played = context.get('played') || false;\n\n//Lock\nvar lock = flow.get('lock') || false;\n\n//Wert des Feldes speichern\nvar value = msg.payload;\n\n//Lock\nif (lock === false) {\n played = false;\n context.set('played', played);\n return [null, msg, null];\n}\n\n\n//Lampen zurücksetzen (Ausgang 2)\nif ((msg.payload === false) || (lock === false)) {\n played = false;\n context.set('played', played);\n return[null, msg, null];\n}\n\n\n//Farbe setzen fü Spieler 1\nif ((p === 1) && (played == false)) {\n \n //Farbe senden (Ausgang 1)\n delete msg.payload;\n msg.payload = {data:{rgb_color: [r1, g1, b1]}};\n played = true;\n context.set('played', played);\n node.send(msg, null, null);\n \n msg.p = p;\n \n //Feldwert senden (Ausgang 3)\n delete msg.payload;\n msg.payload = value;\n return[null, null, msg];\n}\n\n\n//Farbe setzen für Spieler 2\nif ((p === 2) && (played == false)){\n \n //Farbe senden (Ausgang 1)\n delete msg.payload;\n msg.payload = {data:{rgb_color: [r2, g2, b2]}};\n played = true;\n context.set('played', played);\n node.send(msg, null, null);\n \n msg.p = p;\n \n //Feldwert senden (Ausgang 3)\n delete msg.payload;\n msg.payload = value;\n return[null, null, msg];\n}","outputs":3,"noerr":0,"initialize":"","finalize":"","x":900,"y":700,"wires":[["1db4dee7.618641"],["1a1aa31b.91247d"],["3748ef90.7f01e"]],"outputLabels":["on","off","calc"]},{"id":"2c5ae549.0cce9a","type":"function","z":"552b3ceb.74fbb4","name":"farbe setzen / löschen","func":"//Spieler am Zug\nvar p = global.get(\"player\");\n\n//Farben von Spieler 1\nvar r1 = flow.get('r1') || 0;\nvar g1 = flow.get('g1') || 0;\nvar b1 = flow.get('b1') || 0;\n\n//Farben von Spieler 1\nvar r2 = flow.get('r2') || 0;\nvar g2 = flow.get('g2') || 0;\nvar b2 = flow.get('b2') || 0;\n\n//Feld gespielt\nvar played = context.get('played') || false;\n\n//Lock\nvar lock = flow.get('lock') || false;\n\n//Wert des Feldes speichern\nvar value = msg.payload;\n\n//Lock\nif (lock === false) {\n played = false;\n context.set('played', played);\n return [null, msg, null];\n}\n\n\n//Lampen zurücksetzen (Ausgang 2)\nif ((msg.payload === false) || (lock === false)) {\n played = false;\n context.set('played', played);\n return[null, msg, null];\n}\n\n\n//Farbe setzen fü Spieler 1\nif ((p === 1) && (played == false)) {\n \n //Farbe senden (Ausgang 1)\n delete msg.payload;\n msg.payload = {data:{rgb_color: [r1, g1, b1]}};\n played = true;\n context.set('played', played);\n node.send(msg, null, null);\n \n msg.p = p;\n \n //Feldwert senden (Ausgang 3)\n delete msg.payload;\n msg.payload = value;\n return[null, null, msg];\n}\n\n\n//Farbe setzen für Spieler 2\nif ((p === 2) && (played == false)){\n \n //Farbe senden (Ausgang 1)\n delete msg.payload;\n msg.payload = {data:{rgb_color: [r2, g2, b2]}};\n played = true;\n context.set('played', played);\n node.send(msg, null, null);\n \n msg.p = p;\n \n //Feldwert senden (Ausgang 3)\n delete msg.payload;\n msg.payload = value;\n return[null, null, msg];\n}","outputs":3,"noerr":0,"initialize":"","finalize":"","x":900,"y":940,"wires":[["bc0a2de4.a5b08"],["87b7f11f.f9832"],["25e60d3.dee5cf2"]],"outputLabels":["on","off","calc"]},{"id":"16bb6313.e2744d","type":"function","z":"552b3ceb.74fbb4","name":"farbe setzen / löschen","func":"//Spieler am Zug\nvar p = global.get(\"player\");\n\n//Farben von Spieler 1\nvar r1 = flow.get('r1') || 0;\nvar g1 = flow.get('g1') || 0;\nvar b1 = flow.get('b1') || 0;\n\n//Farben von Spieler 1\nvar r2 = flow.get('r2') || 0;\nvar g2 = flow.get('g2') || 0;\nvar b2 = flow.get('b2') || 0;\n\n//Feld gespielt\nvar played = context.get('played') || false;\n\n//Lock\nvar lock = flow.get('lock') || false;\n\n//Wert des Feldes speichern\nvar value = msg.payload;\n\n//Lock\nif (lock === false) {\n played = false;\n context.set('played', played);\n return [null, msg, null];\n}\n\n\n//Lampen zurücksetzen (Ausgang 2)\nif ((msg.payload === false) || (lock === false)) {\n played = false;\n context.set('played', played);\n return[null, msg, null];\n}\n\n\n//Farbe setzen fü Spieler 1\nif ((p === 1) && (played == false)) {\n \n //Farbe senden (Ausgang 1)\n delete msg.payload;\n msg.payload = {data:{rgb_color: [r1, g1, b1]}};\n played = true;\n context.set('played', played);\n node.send(msg, null, null);\n \n msg.p = p;\n \n //Feldwert senden (Ausgang 3)\n delete msg.payload;\n msg.payload = value;\n return[null, null, msg];\n}\n\n\n//Farbe setzen für Spieler 2\nif ((p === 2) && (played == false)){\n \n //Farbe senden (Ausgang 1)\n delete msg.payload;\n msg.payload = {data:{rgb_color: [r2, g2, b2]}};\n played = true;\n context.set('played', played);\n node.send(msg, null, null);\n \n msg.p = p;\n \n //Feldwert senden (Ausgang 3)\n delete msg.payload;\n msg.payload = value;\n return[null, null, msg];\n}","outputs":3,"noerr":0,"initialize":"","finalize":"","x":1620,"y":460,"wires":[["1550f3f6.93f05c"],["1d2b9512.c69f4b"],["a0763282.7e6e"]],"outputLabels":["on","off","calc"]},{"id":"e4493fbd.6cffe","type":"function","z":"552b3ceb.74fbb4","name":"farbe setzen / löschen","func":"//Spieler am Zug\nvar p = global.get(\"player\");\n\n//Farben von Spieler 1\nvar r1 = flow.get('r1') || 0;\nvar g1 = flow.get('g1') || 0;\nvar b1 = flow.get('b1') || 0;\n\n//Farben von Spieler 1\nvar r2 = flow.get('r2') || 0;\nvar g2 = flow.get('g2') || 0;\nvar b2 = flow.get('b2') || 0;\n\n//Feld gespielt\nvar played = context.get('played') || false;\n\n//Lock\nvar lock = flow.get('lock') || false;\n\n//Wert des Feldes speichern\nvar value = msg.payload;\n\n//Lock\nif (lock === false) {\n played = false;\n context.set('played', played);\n return [null, msg, null];\n}\n\n\n//Lampen zurücksetzen (Ausgang 2)\nif ((msg.payload === false) || (lock === false)) {\n played = false;\n context.set('played', played);\n return[null, msg, null];\n}\n\n\n//Farbe setzen fü Spieler 1\nif ((p === 1) && (played == false)) {\n \n //Farbe senden (Ausgang 1)\n delete msg.payload;\n msg.payload = {data:{rgb_color: [r1, g1, b1]}};\n played = true;\n context.set('played', played);\n node.send(msg, null, null);\n \n msg.p = p;\n \n //Feldwert senden (Ausgang 3)\n delete msg.payload;\n msg.payload = value;\n return[null, null, msg];\n}\n\n\n//Farbe setzen für Spieler 2\nif ((p === 2) && (played == false)){\n \n //Farbe senden (Ausgang 1)\n delete msg.payload;\n msg.payload = {data:{rgb_color: [r2, g2, b2]}};\n played = true;\n context.set('played', played);\n node.send(msg, null, null);\n \n msg.p = p;\n \n //Feldwert senden (Ausgang 3)\n delete msg.payload;\n msg.payload = value;\n return[null, null, msg];\n}","outputs":3,"noerr":0,"initialize":"","finalize":"","x":1620,"y":700,"wires":[["a6cc747.622f288"],["f3d2b2d2.a9647"],["88447bb7.3a8748"]],"outputLabels":["on","off","calc"]},{"id":"ad348abf.e02a18","type":"function","z":"552b3ceb.74fbb4","name":"farbe setzen / löschen","func":"//Spieler am Zug\nvar p = global.get(\"player\");\n\n//Farben von Spieler 1\nvar r1 = flow.get('r1') || 0;\nvar g1 = flow.get('g1') || 0;\nvar b1 = flow.get('b1') || 0;\n\n//Farben von Spieler 1\nvar r2 = flow.get('r2') || 0;\nvar g2 = flow.get('g2') || 0;\nvar b2 = flow.get('b2') || 0;\n\n//Feld gespielt\nvar played = context.get('played') || false;\n\n//Lock\nvar lock = flow.get('lock') || false;\n\n//Wert des Feldes speichern\nvar value = msg.payload;\n\n//Lock\nif (lock === false) {\n played = false;\n context.set('played', played);\n return [null, msg, null];\n}\n\n\n//Lampen zurücksetzen (Ausgang 2)\nif ((msg.payload === false) || (lock === false)) {\n played = false;\n context.set('played', played);\n return[null, msg, null];\n}\n\n\n//Farbe setzen fü Spieler 1\nif ((p === 1) && (played == false)) {\n \n //Farbe senden (Ausgang 1)\n delete msg.payload;\n msg.payload = {data:{rgb_color: [r1, g1, b1]}};\n played = true;\n context.set('played', played);\n node.send(msg, null, null);\n \n msg.p = p;\n \n //Feldwert senden (Ausgang 3)\n delete msg.payload;\n msg.payload = value;\n return[null, null, msg];\n}\n\n\n//Farbe setzen für Spieler 2\nif ((p === 2) && (played == false)){\n \n //Farbe senden (Ausgang 1)\n delete msg.payload;\n msg.payload = {data:{rgb_color: [r2, g2, b2]}};\n played = true;\n context.set('played', played);\n node.send(msg, null, null);\n \n msg.p = p;\n \n //Feldwert senden (Ausgang 3)\n delete msg.payload;\n msg.payload = value;\n return[null, null, msg];\n}","outputs":3,"noerr":0,"initialize":"","finalize":"","x":1620,"y":940,"wires":[["bf244540.71d888"],["940ed8f6.5b0208"],["14a7067a.160fda"]],"outputLabels":["on","off","calc"]},{"id":"d429653c.94dab8","type":"subflow:3c22fbf1.636f04","z":"552b3ceb.74fbb4","name":"","x":460,"y":960,"wires":[["92236a75.62e388"]]},{"id":"f8a14055.c14ee","type":"subflow:3c22fbf1.636f04","z":"552b3ceb.74fbb4","name":"","x":460,"y":740,"wires":[["92236a75.62e388"]]},{"id":"d2569f27.4cd95","type":"subflow:3c22fbf1.636f04","z":"552b3ceb.74fbb4","name":"","env":[],"x":460,"y":500,"wires":[["92236a75.62e388"]]},{"id":"25e60d3.dee5cf2","type":"subflow:3c22fbf1.636f04","z":"552b3ceb.74fbb4","name":"","x":1100,"y":980,"wires":[["96c61158.e0807"]]},{"id":"3748ef90.7f01e","type":"subflow:3c22fbf1.636f04","z":"552b3ceb.74fbb4","name":"","x":1100,"y":740,"wires":[["96c61158.e0807"]]},{"id":"7b60237e.4f98cc","type":"subflow:3c22fbf1.636f04","z":"552b3ceb.74fbb4","name":"","x":1140,"y":500,"wires":[["96c61158.e0807"]]},{"id":"a0763282.7e6e","type":"subflow:3c22fbf1.636f04","z":"552b3ceb.74fbb4","name":"","x":1820,"y":500,"wires":[["3e9fac5d.76a334"]]},{"id":"88447bb7.3a8748","type":"subflow:3c22fbf1.636f04","z":"552b3ceb.74fbb4","name":"","x":1820,"y":740,"wires":[["3e9fac5d.76a334"]]},{"id":"14a7067a.160fda","type":"subflow:3c22fbf1.636f04","z":"552b3ceb.74fbb4","name":"","x":1820,"y":980,"wires":[["3e9fac5d.76a334"]]},{"id":"3e9fac5d.76a334","type":"link out","z":"552b3ceb.74fbb4","name":"","links":["1dd67395.b98ccc"],"x":1975,"y":740,"wires":[]},{"id":"96c61158.e0807","type":"link out","z":"552b3ceb.74fbb4","name":"","links":["1dd67395.b98ccc"],"x":1275,"y":740,"wires":[]},{"id":"92236a75.62e388","type":"link out","z":"552b3ceb.74fbb4","name":"","links":["1dd67395.b98ccc"],"x":595,"y":740,"wires":[]},{"id":"b6d41c85.0cbaa","type":"comment","z":"552b3ceb.74fbb4","name":"Farbe Spieler 1","info":"","x":120,"y":1100,"wires":[]},{"id":"cb546aaa.760da8","type":"comment","z":"552b3ceb.74fbb4","name":"Farbe Spieler 2","info":"","x":120,"y":1320,"wires":[]},{"id":"52adcdee.3cd5a4","type":"trigger-state","z":"552b3ceb.74fbb4","name":"input_boolean.tictacalc_locked","server":"fa85c3b7.6643e","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"input_boolean.tictacalc_locked","entityidfiltertype":"exact","debugenabled":false,"constraints":[],"outputs":5,"customoutputs":[{"messageType":"payload","messageValue":"false","messageValueType":"bool","comparatorPropertyType":"current_state","comparatorType":"is","comparatorValue":"false","comparatorValueDataType":"bool","comparatorPropertyValue":"new_state.state"},{"messageType":"payload","messageValue":"enable","messageValueType":"str","comparatorPropertyType":"current_state","comparatorType":"is","comparatorValue":"true","comparatorValueDataType":"bool","comparatorPropertyValue":"new_state.state"},{"messageType":"payload","messageValue":"disable","messageValueType":"str","comparatorPropertyType":"current_state","comparatorType":"is","comparatorValue":"false","comparatorValueDataType":"bool","comparatorPropertyValue":"new_state.state"}],"outputinitially":true,"state_type":"habool","x":170,"y":1560,"wires":[["5e1b1c82.156d84"],[],["227118ec.97c688"],["28285922.4f96c6"],["28285922.4f96c6"]]},{"id":"8f406bdc.389018","type":"comment","z":"552b3ceb.74fbb4","name":"Lock","info":"","x":90,"y":1520,"wires":[]},{"id":"227118ec.97c688","type":"link out","z":"552b3ceb.74fbb4","name":"","links":["7edc6553.fb0c0c"],"x":375,"y":1560,"wires":[]},{"id":"7edc6553.fb0c0c","type":"link in","z":"552b3ceb.74fbb4","name":"","links":["227118ec.97c688"],"x":95,"y":200,"wires":[["7c3e9b72.a561f4","5fe87efb.c5e06","ed7b6ea7.a7e68"]]},{"id":"87865968.f668a8","type":"link in","z":"552b3ceb.74fbb4","name":"","links":["28285922.4f96c6"],"x":55,"y":660,"wires":[["193a4e13.43c572","d41ed5b7.324408","a0fc868a.fafe88"]]},{"id":"28285922.4f96c6","type":"link out","z":"552b3ceb.74fbb4","name":"","links":["87865968.f668a8","b3c6c320.4b523","d72c18ec.2059d8"],"x":375,"y":1600,"wires":[]},{"id":"b3c6c320.4b523","type":"link in","z":"552b3ceb.74fbb4","name":"","links":["28285922.4f96c6"],"x":695,"y":660,"wires":[["206be468.68fd4c","625005a8.9d0d6c","aa27b6f0.1e9d48"]]},{"id":"d72c18ec.2059d8","type":"link in","z":"552b3ceb.74fbb4","name":"","links":["28285922.4f96c6"],"x":1415,"y":700,"wires":[["503d699e.5c18d8","9ea87403.002e18","9b092d63.67ea4"]]},{"id":"9e9d28ee.018718","type":"comment","z":"552b3ceb.74fbb4","name":"Felder auswerten / setzen","info":"","x":270,"y":340,"wires":[]},{"id":"5069f744.df2d58","type":"comment","z":"552b3ceb.74fbb4","name":"Scoreboard","info":"","x":130,"y":40,"wires":[]},{"id":"fa85c3b7.6643e","type":"server","name":"Home Assistant","addon":true}]