UNPKG

piball

Version:

Installer for foosball game score counting with NodeRED.

2 lines (1 loc) 36 kB
[{"type":"tab","id":"f8613267.079ed","label":"Goals"},{"type":"tab","id":"a1fba292.5e046","label":"Buttons"},{"type":"tab","id":"244c170f.dbb3e8","label":"Events"},{"type":"tab","id":"d744c298.28bb4","label":"System"},{"id":"6e208d60.91df74","type":"subflow","name":"Event push","in":[{"x":60,"y":100,"wires":[{"id":"1a14f7d4.e5eb08"}]}],"out":[]},{"id":"bc8dd804.437228","type":"subflow","name":"Game","in":[{"x":80,"y":260,"wires":[{"id":"9e91de37.616e2"}]}],"out":[{"x":1100,"y":280,"wires":[{"id":"22886c65.dd7794","port":0}]}]},{"id":"33fd5bb2.cc02a4","type":"subflow","name":"Blink","in":[{"x":60,"y":260,"wires":[{"id":"f77e9f10.08816"}]}],"out":[{"x":860,"y":260,"wires":[{"id":"33fd5bb2.cc02a4","port":0},{"id":"d21991f4.2de67","port":0},{"id":"45017804.bafe88","port":0}]}]},{"id":"5012eca8.afed14","type":"subflow","name":"Blink LED","in":[{"x":80,"y":220,"wires":[{"id":"93b730ea.6c48d"}]}],"out":[]},{"id":"fcb2c0e8.034d4","type":"twitter-credentials","screen_name":"@vergissberlin"},{"id":"246dc504.db923a","type":"MySQLdatabase","host":"127.0.0.1","port":"3306","db":"piball"},{"id":"6e649feb.919b6","type":"firebase login","appid":"vivid-fire-2266","uid":"","secret":"","email":"andre@andrelademann.de","password":"anger77"},{"id":"24f21915.db0de6","type":"xmpp-server","server":"xmpp.netresearch.de","port":"5222","nickname":""},{"id":"a447a391.5bb86","type":"function","name":"totalOne","func":"msg.totalOne = msg.payload + 1;\ncontext.global.undo = { 'totalOne': msg.payload };\n\nreturn msg;","outputs":"1","valid":true,"x":995.5,"y":180,"z":"f8613267.079ed","wires":[["1e98a742.e16759"]]},{"id":"a1cc9c15.5e336","type":"inject","name":"Goal","topic":"","payload":"teamOne","payloadType":"string","repeat":"","crontab":"","once":false,"x":110,"y":120,"z":"f8613267.079ed","wires":[["5d535e9d.a2aca"]]},{"id":"296332c7.d69cce","type":"debug","name":"","active":false,"console":"false","complete":"true","x":1330,"y":120,"z":"f8613267.079ed","wires":[]},{"id":"50a01bab.af5fe4","type":"function","name":"totalTwo","func":"msg.totalTwo = msg.payload + 1;\ncontext.global.undo = { 'totalTwo': msg.payload };\n\n\nreturn msg;","outputs":"1","valid":true,"x":995.5,"y":300,"z":"f8613267.079ed","wires":[["1e98a742.e16759"]]},{"id":"f82aa5c8.07d558","type":"inject","name":"Goal","topic":"teamTwo","payload":"","payloadType":"none","repeat":"","crontab":"","once":false,"x":110,"y":360,"z":"f8613267.079ed","wires":[["77e34121.881cc"]]},{"id":"62822d.ff9d7dd4","type":"firebase modify","name":"","firebaselogin":"6e649feb.919b6","firebasepath":"total","child":"","method":"update","x":1358.5,"y":240,"z":"f8613267.079ed","wires":[]},{"id":"1e98a742.e16759","type":"function","name":"Merge total","func":"if(msg.totalOne) {\n msg.payload = {\"totalOne\": msg.totalOne}\n}\nif(msg.totalTwo) {\n msg.payload = {\"totalTwo\": msg.totalTwo}\n}\n\nreturn msg;\n","outputs":"1","valid":true,"x":1184.5,"y":240,"z":"f8613267.079ed","wires":[["296332c7.d69cce","62822d.ff9d7dd4"]]},{"id":"1f947594.e06b8a","type":"firebase query","name":"totalOne","firebaselogin":"6e649feb.919b6","firebasepath":"total/totalOne","child":"","x":835.5,"y":180,"z":"f8613267.079ed","wires":[["a447a391.5bb86","65cd7eff.9a328"]]},{"id":"1d8edcfa.e27123","type":"firebase query","name":"totalTwo","firebaselogin":"6e649feb.919b6","firebasepath":"total/totalTwo","child":"","x":835.5,"y":300,"z":"f8613267.079ed","wires":[["50a01bab.af5fe4","65cd7eff.9a328"]]},{"id":"65cd7eff.9a328","type":"debug","name":"","active":false,"console":"false","complete":"false","x":989,"y":240,"z":"f8613267.079ed","wires":[]},{"id":"bb05ed54.44fa1","type":"comment","name":"Goals","info":"todo:\n- additional data in database\n\t- weather\n\t- wind\n\t- sun\n- Events\n\t- hit count/1000\n\t- Mounsterkill","x":110,"y":60,"z":"f8613267.079ed","wires":[]},{"id":"26152a67.d9ead6","type":"mysql","mydb":"246dc504.db923a","name":"MySQL","x":832,"y":240,"z":"f8613267.079ed","wires":[["65cd7eff.9a328"]]},{"id":"6f5f84ec.90a07c","type":"function","name":"mysql one","func":"// insert score\nmsg.topic = 'INSERT INTO `piball`.`goal` (`type`, `created_at`) VALUES (\"teamOne\", NOW());';\nreturn msg;\n","outputs":1,"valid":true,"x":681,"y":220,"z":"f8613267.079ed","wires":[["26152a67.d9ead6"]]},{"id":"a5d24abd.5a2db8","type":"function","name":"mysql two","func":"// insert score\nmsg.topic = 'INSERT INTO `piball`.`goal` (`type`, `created_at`) VALUES (\"teamTwo\", NOW());';\nreturn msg;\n","outputs":1,"valid":true,"x":680,"y":260,"z":"f8613267.079ed","wires":[["26152a67.d9ead6"]]},{"id":"663e0ae4.99c1f4","type":"inject","name":"undo","topic":"","payload":"0","payloadType":"string","repeat":"","crontab":"","once":false,"x":190,"y":220,"z":"a1fba292.5e046","wires":[["3ef9a94.fc10656"]]},{"id":"f582e48e.0a7d18","type":"function","name":"undo function","func":"if(typeof context.global.undo === 'object') {\n\tmsg.payload = context.global.undo;\n\tdelete context.global.undo;\n\treturn msg;\n}\n","outputs":1,"valid":true,"x":790.5,"y":160,"z":"a1fba292.5e046","wires":[["30c3a462.cf3c5c","428f2e72.bd70d"]]},{"id":"30c3a462.cf3c5c","type":"debug","name":"","active":false,"console":"false","complete":"false","x":1008,"y":120,"z":"a1fba292.5e046","wires":[]},{"id":"d3570d1f.2ca8f","type":"comment","name":"Undo","info":"- Undo counting last score on game and total scores once\n- Play sound \"zonk\"","x":150,"y":100,"z":"a1fba292.5e046","wires":[]},{"id":"428f2e72.bd70d","type":"firebase modify","name":"","firebaselogin":"6e649feb.919b6","firebasepath":"team","child":"","method":"update","x":1017,"y":160,"z":"a1fba292.5e046","wires":[]},{"id":"1c1c3429.e3e3cc","type":"function","name":"undo mysql","func":"// delete last inserted id\nmsg.topic = 'DELETE FROM piball.goal WHERE goal.id=LAST_INSERT_ID();';\n\nreturn msg;","outputs":1,"valid":true,"x":784.5,"y":220,"z":"a1fba292.5e046","wires":[["62210610.9ddef8"]]},{"id":"7d2b8f04.82d47","type":"debug","name":"","active":false,"console":"false","complete":"false","x":1208,"y":220,"z":"a1fba292.5e046","wires":[]},{"id":"62210610.9ddef8","type":"mysql","mydb":"246dc504.db923a","name":"MySQL","x":992,"y":220,"z":"a1fba292.5e046","wires":[["7d2b8f04.82d47"]]},{"id":"7867cd3d.879834","type":"comment","name":"New game","info":"- Reset team scores\n- Start game event listener","x":138.5,"y":400,"z":"a1fba292.5e046","wires":[]},{"id":"4b638170.b49c8","type":"comment","name":"Ring the bell","info":"- Rings a bell (sound)\n- Send a chat message (XMPP)\n- Send a notification on chrome browsers\n- Do not count score until \"new game\" button is pressed","x":144,"y":820,"z":"a1fba292.5e046","wires":[]},{"id":"27158ab6.d8ea76","type":"firebase query","name":"teamOne","firebaselogin":"6e649feb.919b6","firebasepath":"team/teamOne","child":"","x":838,"y":120,"z":"f8613267.079ed","wires":[["de07f793.21f808"]]},{"id":"1d430e0b.e2bcf2","type":"rpi-gpio in","name":"Button red","pin":"15","intype":"up","read":false,"x":177.5,"y":160,"z":"a1fba292.5e046","wires":[["3ef9a94.fc10656","5321d60b.acde28"]]},{"id":"de07f793.21f808","type":"function","name":"teamOne","func":"// Undo\ncontext.global.undo = {\n\tteamOne: msg.payload\n\t};\n\n// Game started?\nif(typeof context.global.game === 'undefined') {\n return [null,null];\n} \n\n// Score\nif(msg.payload < 10 && context.global.game.running) {\n\tmsg.teamOne = msg.payload + 1;\n\treturn [ null, msg ];\n} else {\n\tcontext.global.game = {running: false};\n\treturn [ msg, null];\n}\n","outputs":"2","valid":true,"x":1004.4999923706055,"y":119.74999809265137,"z":"f8613267.079ed","wires":[[],["19cf4336.e630bd"]]},{"id":"19cf4336.e630bd","type":"function","name":"Merge team","func":"if(msg.teamOne) {\n msg.payload = {\"teamOne\": msg.teamOne}\n}\nif(msg.teamTwo) {\n msg.payload = {\"teamTwo\": msg.teamTwo}\n}\n\nreturn msg;\n","outputs":1,"valid":true,"x":1627,"y":240,"z":"f8613267.079ed","wires":[["6e577cce.91a884","f7293668.08d6c8"]]},{"id":"6e577cce.91a884","type":"firebase modify","name":"","firebaselogin":"6e649feb.919b6","firebasepath":"team","child":"","method":"update","x":1818.5,"y":240,"z":"f8613267.079ed","wires":[]},{"id":"f7293668.08d6c8","type":"debug","name":"","active":true,"console":"false","complete":"false","x":1809,"y":140,"z":"f8613267.079ed","wires":[]},{"id":"19b603d8.e649fc","type":"comment","name":"Event notifications","info":"- Under table (10:0 || 0:10)\n- Break thru (totalOne || totalTwo) % 1000","x":177.14285714285714,"y":107.14285714285714,"z":"244c170f.dbb3e8","wires":[]},{"id":"4215209a.bdeae","type":"firebase query","name":"teamTwo","firebaselogin":"6e649feb.919b6","firebasepath":"team/teamTwo","child":"","x":838,"y":360,"z":"f8613267.079ed","wires":[["6aa7c969.955838"]]},{"id":"e4200155.1be","type":"firebase watch","name":"team","firebaselogin":"6e649feb.919b6","firebasepath":"team","x":150,"y":300,"z":"244c170f.dbb3e8","wires":[["628c6e41.9d739","2d7143c1.d28ebc"]]},{"id":"628c6e41.9d739","type":"debug","name":"","active":false,"console":"false","complete":"false","x":350,"y":360,"z":"244c170f.dbb3e8","wires":[]},{"id":"6aa7c969.955838","type":"function","name":"teamTwo","func":"// Undo\ncontext.global.undo = {\n\tteamTwo: msg.payload\n\t};\n\n// Game started?\nif(typeof context.global.game === 'undefined') {\n return [null,null];\n}\n\n// Score\nif(msg.payload < 10 && context.global.game.running) {\n\tmsg.teamTwo = msg.payload + 1;\n\treturn [ msg, null ];\n} else {\n\tcontext.global.game = {running: false};\n\treturn [ null, msg ];\n}\n","outputs":"2","valid":true,"x":998,"y":360,"z":"f8613267.079ed","wires":[["19cf4336.e630bd"],[]]},{"id":"d5c1ea42.2a3e18","type":"rpi-gpio in","name":"","pin":"16","intype":"up","read":false,"x":110,"y":200,"z":"f8613267.079ed","wires":[["6fe851d9.9017b","84265b82.7bd9a8"]]},{"id":"3c5651ec.c3a9ae","type":"comment","name":"Team","info":"","x":145,"y":229.99999904632568,"z":"244c170f.dbb3e8","wires":[]},{"id":"2d7143c1.d28ebc","type":"function","name":"EventTeam","func":"var \n teamOne = parseInt(msg.payload.teamOne),\n teamTwo = parseInt(msg.payload.teamTwo);\n\n// Near under table\nif((teamOne === 9 || teamTwo === 9) && \n(teamOne === 0 || teamTwo === 0)){\n\tmsg.payload.event = 'nearUnderTable';\n}\n\n// Under table\nif((teamOne === 10 || teamTwo === 10) && \n(teamOne === 0 || teamTwo === 0)){\n\tmsg.payload.event = 'underTable';\n}\n\n// Game over\n\n// Under table\nvar over = {};\nif(teamOne === 10 || teamTwo === 10){\n\t// over.payload = 'over';\n\tover = msg;\n\tnode.log('Game Over');\n}\n\nreturn [msg,over];\n\n// Quick goal\n/*\n- Save time game started\n- Save time last goal\n- if(((lastGoalTime || goalStartTime) - goalNowTime) < 20 sec)\n*/\n\n// Catching up\n/*\n- if(Math.abs(teamOne - teamTwo) > 5): start watching\n- Every Goal: if((Math.abs(teamOne - teamTwo) === 0): msg.catchingUp\n*/\n\n","outputs":"2","valid":true,"x":344.5,"y":300,"z":"244c170f.dbb3e8","wires":[["ce63c1db.319c4"],["9523d6cc.6adc28","c1638733.3e9c78"]]},{"id":"ce63c1db.319c4","type":"switch","name":"EventSwitch","property":"payload.event","rules":[{"t":"eq","v":"nearUnderTable"},{"t":"eq","v":"underTable"},{"t":"eq","v":"catchUp"}],"checkall":"false","outputs":3,"x":627,"y":300,"z":"244c170f.dbb3e8","wires":[["a1f9a2dd.5e066","a0370b90.5fc8f8"],["a1f9a2dd.5e066"],["a1f9a2dd.5e066"]]},{"id":"a1f9a2dd.5e066","type":"debug","name":"","active":false,"console":"false","complete":"false","x":868,"y":240,"z":"244c170f.dbb3e8","wires":[]},{"id":"a0dd9714.5f2268","type":"comment","name":"Total","info":"","x":150,"y":440,"z":"244c170f.dbb3e8","wires":[]},{"id":"6be69313.94196c","type":"firebase watch","name":"totalOne","firebaselogin":"6e649feb.919b6","firebasepath":"total/totalOne","x":152,"y":500,"z":"244c170f.dbb3e8","wires":[["d9005804.26ffa8","5715ac9b.a8ea54"]]},{"id":"d9005804.26ffa8","type":"debug","name":"","active":false,"console":"false","complete":"false","x":368,"y":560,"z":"244c170f.dbb3e8","wires":[]},{"id":"5715ac9b.a8ea54","type":"function","name":"EventTotal","func":"// Break thru 1000\nif(parseInt(msg.payload) % 1000 === 0){\n msg.payload = {\n team: 'one',\n score: msg.payload,\n event: 'break1000'\n };\n} else \n\n// Break thru 1000\nif(parseInt(msg.payload) % 100 === 0){\n msg.payload.event = 'break100';\n} else {\n msg.payload.event = null;\n}\n\nreturn msg;\n","outputs":1,"valid":true,"x":362.5,"y":500,"z":"244c170f.dbb3e8","wires":[["e762d39.f189d3","fbfdf424.040208"]]},{"id":"e762d39.f189d3","type":"switch","name":"EventSwitch","property":"payload.event","rules":[{"t":"eq","v":"teamOneBreak1000"},{"t":"eq","v":"teamTwoBreak1000"},{"t":"nnull"}],"checkall":"false","outputs":3,"x":627,"y":560,"z":"244c170f.dbb3e8","wires":[["d31bbb3e.2ce448"],[],["80fc3bd4.7f03c8"]]},{"id":"fbfdf424.040208","type":"debug","name":"","active":false,"console":"false","complete":"false","x":628,"y":500,"z":"244c170f.dbb3e8","wires":[]},{"id":"d31bbb3e.2ce448","type":"template","name":"Break1000","field":"payload","template":"Hey ho!\n\nDie tausender Marke wurde durchbrochen!\nThis is the payload: {{payload}}!\n\n\n--- \nNRsoccer","x":862.5,"y":500,"z":"244c170f.dbb3e8","wires":[["a0370b90.5fc8f8"]]},{"id":"c07d3626.3f82c8","type":"firebase watch","name":"totalTwo","firebaselogin":"6e649feb.919b6","firebasepath":"total/totalTwo","x":152,"y":640,"z":"244c170f.dbb3e8","wires":[["d539ff36.2ac6","dfad772b.205288"]]},{"id":"d539ff36.2ac6","type":"debug","name":"","active":false,"console":"false","complete":"false","x":368,"y":700,"z":"244c170f.dbb3e8","wires":[]},{"id":"a0370b90.5fc8f8","type":"http request","name":"MonsterKill","method":"GET","url":"http://lampen.nr","x":1263.5,"y":320,"z":"244c170f.dbb3e8","wires":[[]]},{"id":"2fa1d6b6.d05e2a","type":"comment","name":"Events","info":"","x":1250,"y":260,"z":"244c170f.dbb3e8","wires":[]},{"id":"dfad772b.205288","type":"function","name":"EventTotal","func":"// Break thru 1000\nif(parseInt(msg.payload) % 1000 === 0){\n msg.payload.event = 'break1000';\n} else \n\n// Break thru 1000\nif(parseInt(msg.payload) % 100 === 0){\n msg.payload.event = 'break100';\n} else {\n msg.payload.event = null;\n}\n\nreturn msg;\n","outputs":1,"valid":true,"x":362.5,"y":640,"z":"244c170f.dbb3e8","wires":[["e762d39.f189d3"]]},{"id":"c8d489c1.372b78","type":"template","name":"Break100","field":"payload","template":"This is the payload: {{payload}}!","x":858.5,"y":580,"z":"244c170f.dbb3e8","wires":[[]]},{"id":"3fd046e1.c02fba","type":"inject","name":"new game","topic":"","payload":"1","payloadType":"string","repeat":"","crontab":"","once":false,"x":177.5,"y":520,"z":"a1fba292.5e046","wires":[["4fb17b32.b04e84"]]},{"id":"e18e1886.1e71e8","type":"rpi-gpio in","name":"Button green","pin":"11","intype":"up","read":false,"x":165,"y":460,"z":"a1fba292.5e046","wires":[["4fb17b32.b04e84","e51918b5.1ae6e8"]]},{"id":"9704bd95.68fb4","type":"firebase query","name":"Team (get)","firebaselogin":"6e649feb.919b6","firebasepath":"team","child":"","x":702.5,"y":460,"z":"a1fba292.5e046","wires":[["ea9896f2.156768"]]},{"id":"2f2fc33b.d0d03c","type":"inject","name":"ring","topic":"0","payload":"","payloadType":"string","repeat":"","crontab":"","once":false,"x":170,"y":920,"z":"a1fba292.5e046","wires":[["4b77b8b3.b48848"]]},{"id":"410679e.fbef988","type":"function","name":"Multiple","func":"msg.payload = 'Ring Ring';\nnode.log('Ring Ring');\nreturn msg;","outputs":"1","valid":true,"x":547.4285583496094,"y":860.4285831451416,"z":"a1fba292.5e046","wires":[["b455831e.4baa8"]]},{"id":"a354baf4.5cab48","type":"rpi-gpio in","name":"Button blue","pin":"13","intype":"up","read":false,"x":160.5,"y":860,"z":"a1fba292.5e046","wires":[["4b77b8b3.b48848","5d9c6afb.a26394"]]},{"id":"71477b17.8eb884","type":"rpi-gpio out","name":"LED","pin":"7","set":false,"out":"out","x":990,"y":520,"z":"a1fba292.5e046","wires":[]},{"id":"cd4561c2.32baa","type":"rpi-gpio out","name":"LED","pin":"7","x":1250,"y":360,"z":"244c170f.dbb3e8","wires":[]},{"id":"ea9896f2.156768","type":"function","name":"reset","func":"context.global.game = {running: true};\n\ncontext.global.undo = { \n\t'teamOne': msg.payload.teamOne,\n\t'teamTwo': msg.payload.teamTwo\n};\n\nmsg.payload = {\n\t'teamOne': 0, \n\t'teamTwo': 0\n}\n\nreturn msg;\n","outputs":1,"valid":true,"x":830,"y":460,"z":"a1fba292.5e046","wires":[["4a7b1717.b584e8","f5697d85.0a968"]]},{"id":"4a7b1717.b584e8","type":"firebase modify","name":"Team (reset)","firebaselogin":"6e649feb.919b6","firebasepath":"team","child":"","method":"set","x":1005.5714416503906,"y":459.5714168548584,"z":"a1fba292.5e046","wires":[]},{"id":"73cadd8.f8c3524","type":"function","name":"Turn off","func":"msg.payload = 0;\nreturn msg;","outputs":1,"valid":true,"x":852.5,"y":360,"z":"244c170f.dbb3e8","wires":[["cd4561c2.32baa"]]},{"id":"4fb17b32.b04e84","type":"switch","name":"","property":"payload","rules":[{"t":"eq","v":1,"v2":0}],"checkall":"true","outputs":1,"x":350,"y":460,"z":"a1fba292.5e046","wires":[["66c2bdff.993d44"]]},{"id":"97fa6aaa.680598","type":"inject","name":"GIT commit","topic":"Deploy","payload":"","payloadType":"none","repeat":"","crontab":"","once":false,"x":177.5,"y":140,"z":"d744c298.28bb4","wires":[["32bff542.cd400a"]]},{"id":"27bfcd7f.d84032","type":"debug","name":"","active":true,"console":"false","complete":"false","x":729,"y":140,"z":"d744c298.28bb4","wires":[]},{"id":"32bff542.cd400a","type":"exec","command":"sudo -u pi sh ~/piball/scripts/deploy.sh","append":"","useSpawn":false,"name":"deploy.sh","x":458.5,"y":140,"z":"d744c298.28bb4","wires":[[],["27bfcd7f.d84032"],[]]},{"id":"6fe851d9.9017b","type":"switch","name":"","property":"payload","rules":[{"t":"eq","v":1,"v2":0}],"checkall":"true","outputs":1,"x":236,"y":200,"z":"f8613267.079ed","wires":[["d189204d.2e76e"]]},{"id":"d189204d.2e76e","type":"delay","name":"limit","pauseType":"rate","timeout":"1","timeoutUnits":"seconds","rate":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":356,"y":200,"z":"f8613267.079ed","wires":[["5d535e9d.a2aca"]]},{"id":"f1f3f9aa.0e0c08","type":"rpi-gpio in","name":"","pin":"18","intype":"up","read":false,"x":110,"y":280,"z":"f8613267.079ed","wires":[["4171778c.be8e88","84265b82.7bd9a8"]]},{"id":"4171778c.be8e88","type":"switch","name":"","property":"payload","rules":[{"t":"eq","v":1,"v2":0}],"checkall":"true","outputs":1,"x":236,"y":280,"z":"f8613267.079ed","wires":[["66475542.99b8ac"]]},{"id":"66475542.99b8ac","type":"delay","name":"limit","pauseType":"rate","timeout":"1","timeoutUnits":"seconds","rate":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":356,"y":280,"z":"f8613267.079ed","wires":[["77e34121.881cc"]]},{"id":"84265b82.7bd9a8","type":"debug","name":"","active":true,"console":"false","complete":"false","x":168,"y":240,"z":"f8613267.079ed","wires":[]},{"id":"a27333ce.5d8cd","type":"inject","name":"","topic":"GIT pull","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":178,"y":218,"z":"d744c298.28bb4","wires":[["b764a78b.489b58"]]},{"id":"b764a78b.489b58","type":"exec","command":"sudo -u pi sh ~/piball/scripts/pull.sh","append":"","useSpawn":"","name":"pull.sh","x":450,"y":220,"z":"d744c298.28bb4","wires":[[],["27bfcd7f.d84032"],[]]},{"id":"5d535e9d.a2aca","type":"function","name":"Goals status","func":"if(typeof context.global != 'undefined') {\n\tif(typeof context.global.game != 'undefined') {\n\t\tif(typeof context.global.game.running != 'undefined') {\n\t\t\tif(context.global.game.running) {\n\t\t\t\treturn msg;\n\t\t\t}\n\t\t}\n\t}\n}\nreturn null;\n","outputs":1,"valid":true,"x":508,"y":200,"z":"f8613267.079ed","wires":[["6f5f84ec.90a07c","27158ab6.d8ea76","1f947594.e06b8a","b868913c.47977","9a014752.65feb8"]]},{"id":"77e34121.881cc","type":"function","name":"Goals status","func":"if(typeof context.global != 'undefined') {\n\tif(typeof context.global.game != 'undefined') {\n\t\tif(typeof context.global.game.running != 'undefined') {\n\t\t\tif(context.global.game.running) {\n\t\t\t\treturn msg;\n\t\t\t}\n\t\t}\n\t}\n}\nreturn null;\n","outputs":1,"valid":true,"x":508,"y":280,"z":"f8613267.079ed","wires":[["a5d24abd.5a2db8","1d8edcfa.e27123","4215209a.bdeae","b868913c.47977","9a014752.65feb8"]]},{"id":"221b3da2.dde4c2","type":"inject","name":"","topic":"Restart","payload":"restart","payloadType":"none","repeat":"","crontab":"","once":false,"x":170,"y":380,"z":"d744c298.28bb4","wires":[["76436e5f.89bc9"]]},{"id":"76436e5f.89bc9","type":"exec","command":"pm2 restart node-red","append":"","useSpawn":"","name":"NodeRED restart","x":482,"y":380,"z":"d744c298.28bb4","wires":[[],["6de5d7bb.921a28"],[]]},{"id":"6de5d7bb.921a28","type":"debug","name":"","active":true,"console":"false","complete":"false","x":728.5,"y":380,"z":"d744c298.28bb4","wires":[]},{"id":"ffa23f2e.005dc","type":"comment","name":"NodeRED","info":"","x":127.5,"y":321,"z":"d744c298.28bb4","wires":[]},{"id":"de624dd8.219db","type":"comment","name":"GIT","info":"","x":110,"y":80,"z":"d744c298.28bb4","wires":[]},{"id":"b868913c.47977","type":"debug","name":"","active":true,"console":"false","complete":"false","x":368,"y":240,"z":"f8613267.079ed","wires":[]},{"id":"f5697d85.0a968","type":"debug","name":"","active":false,"console":"false","complete":"false","x":1004.5714416503906,"y":399.5714168548584,"z":"a1fba292.5e046","wires":[]},{"id":"b455831e.4baa8","type":"debug","name":"","active":false,"console":"false","complete":"false","x":702.9285583496094,"y":860.4285831451416,"z":"a1fba292.5e046","wires":[]},{"id":"1a14f7d4.e5eb08","type":"firebase modify","name":"","firebaselogin":"6e649feb.919b6","firebasepath":"event","child":"","method":"push","x":251,"y":100,"z":"6e208d60.91df74","wires":[]},{"id":"b87d1ee6.4782e","type":"mysql","mydb":"246dc504.db923a","name":"","x":390,"y":160,"z":"6e208d60.91df74","wires":[["cbdd27c9.3422d8","ad40b047.52bf5"]]},{"id":"7ae29823.851d68","type":"function","name":"Query","func":"// insert event\nmsg.topic = 'INSERT INTO `piball`.`event` (`type`, `created_at`) VALUES (\"event\", NOW());';\nreturn msg;","outputs":1,"valid":true,"x":230,"y":160,"z":"6e208d60.91df74","wires":[["b87d1ee6.4782e"]]},{"id":"cbdd27c9.3422d8","type":"debug","name":"","active":true,"console":"false","complete":"false","x":728,"y":160,"z":"6e208d60.91df74","wires":[]},{"id":"c52cb358.3ad35","type":"subflow:6e208d60.91df74","name":"","x":843.5,"y":620,"z":"a1fba292.5e046","wires":[]},{"id":"f3194c41.0ce6b","type":"function","name":"Event","func":" msg.payload = {\n time: Date.now(),\n type: 'newGame'\n };\nreturn msg;","outputs":1,"valid":true,"x":690,"y":620,"z":"a1fba292.5e046","wires":[["c52cb358.3ad35"]]},{"id":"80fc3bd4.7f03c8","type":"subflow:6e208d60.91df74","x":863.5,"y":640,"z":"244c170f.dbb3e8","wires":[]},{"id":"4d1a1b77.b2e5e4","type":"firebase modify","name":"","firebaselogin":"6e649feb.919b6","firebasepath":"game","child":"","method":"push","x":851,"y":680,"z":"a1fba292.5e046","wires":[]},{"id":"66c2bdff.993d44","type":"delay","name":"limit","pauseType":"rate","timeout":"1","timeoutUnits":"seconds","rate":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":470,"y":460,"z":"a1fba292.5e046","wires":[["9704bd95.68fb4","f3194c41.0ce6b","48926d15.b76d94","1646b4a7.e9b94b","9d680e35.6297f"]]},{"id":"48926d15.b76d94","type":"function","name":"Game","func":" msg.payload = {\n time: Date.now()\n };\n \nreturn msg;","outputs":1,"valid":true,"x":690,"y":680,"z":"a1fba292.5e046","wires":[["4d1a1b77.b2e5e4"]]},{"id":"3ef9a94.fc10656","type":"switch","name":"","property":"payload","rules":[{"t":"eq","v":"0"}],"checkall":"true","outputs":1,"x":350,"y":160,"z":"a1fba292.5e046","wires":[["1619bcdc.e9e643"]]},{"id":"1619bcdc.e9e643","type":"delay","name":"limit","pauseType":"rate","timeout":"1","timeoutUnits":"seconds","rate":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":470,"y":160,"z":"a1fba292.5e046","wires":[["f582e48e.0a7d18","1c1c3429.e3e3cc","5f271138.a0d8f","d16801e7.2e98"]]},{"id":"55d38d6e.aa2c74","type":"firebase modify","name":"","firebaselogin":"6e649feb.919b6","firebasepath":"game","child":"","method":"push","x":1011,"y":280,"z":"a1fba292.5e046","wires":[]},{"id":"98be4ca7.6741b","type":"function","name":"Game","func":"/*\nIf last action was hit the \"newgame\" button\n- get current game id\n- delete new game\n- set last game id\n*/\nreturn msg;","outputs":1,"valid":true,"x":770,"y":280,"z":"a1fba292.5e046","wires":[["55d38d6e.aa2c74"]]},{"id":"ad40b047.52bf5","type":"function","name":"save id","func":"// msg.topic = 'DELETE FROM piball.score WHERE score.id=LAST_INSERT_ID();';\n\nreturn msg;","outputs":1,"valid":true,"x":530.5,"y":200,"z":"6e208d60.91df74","wires":[[]]},{"id":"5f271138.a0d8f","type":"function","name":"action","func":"// switch action\n//\n// MySQL\n// game -> delete last inserted game\n// goal -> delete last inserted goal\n//\n// Delete\n// Firebase Event\n\nif(typeof context.global.undo === 'object') {\n\tmsg.payload = context.global.undo;\n\tdelete context.global.undo;\n\treturn msg;\n}\n\nreturn msg;\n","outputs":"2","valid":true,"x":630,"y":280,"z":"a1fba292.5e046","wires":[[],[]]},{"id":"1c9ae0be.e3651f","type":"function","name":"game","func":"/*\nIf last action was hit the \"newgame\" button\n- get current game id\n- delete new game\n- set last game id\n*/\nreturn msg;","outputs":1,"valid":true,"x":510,"y":460,"z":"bc8dd804.437228","wires":[["7caa5d23.8355a4"]]},{"id":"7caa5d23.8355a4","type":"firebase modify","name":"","firebaselogin":"6e649feb.919b6","firebasepath":"game","child":"","method":"push","x":671,"y":460,"z":"bc8dd804.437228","wires":[]},{"id":"14ea6222.eb159e","type":"function","name":"save id","func":"context.global.game = 1; // last inserted id\n\n// msg.topic = 'DELETE FROM piball.score WHERE score.id=LAST_INSERT_ID();';\n\nreturn msg;","outputs":1,"valid":true,"x":510.5,"y":420,"z":"bc8dd804.437228","wires":[[]]},{"id":"1ad8947c.e5276c","type":"firebase modify","name":"","firebaselogin":"6e649feb.919b6","firebasepath":"event","child":"","method":"remove","x":679,"y":420,"z":"bc8dd804.437228","wires":[]},{"id":"9e91de37.616e2","type":"switch","name":"","property":"action","rules":[{"t":"eq","v":"new"},{"t":"eq","v":"delete"},{"t":"eq","v":"edit"},{"t":"eq","v":"over"}],"checkall":"true","outputs":4,"x":210,"y":260,"z":"bc8dd804.437228","wires":[["6c35ed23.93ca14","a69af321.59651"],[],[],["2806d83d.d7f928"]]},{"id":"cfb06851.304f98","type":"comment","name":"Game","info":"1. new\n2. undo\n3. edit\n","x":90,"y":100,"z":"bc8dd804.437228","wires":[]},{"id":"893fd693.76c028","type":"mysql","mydb":"246dc504.db923a","name":"MySQL","x":692,"y":180,"z":"bc8dd804.437228","wires":[["22886c65.dd7794"]]},{"id":"6c35ed23.93ca14","type":"function","name":"mysql","func":"// insert score\nmsg.topic = 'INSERT INTO `piball`.`game` (`type`) VALUES (\"' + msg.type + '\");';\nreturn msg;","outputs":1,"valid":true,"x":530,"y":180,"z":"bc8dd804.437228","wires":[["893fd693.76c028"]]},{"id":"22886c65.dd7794","type":"function","name":"action","func":"// Save last insert id\n// context.global.game = msg.payload.insertId; // last inserted id\n\nreturn msg;","outputs":1,"valid":true,"x":830,"y":180,"z":"bc8dd804.437228","wires":[[]]},{"id":"2435cb32.dbca34","type":"comment","name":"Game New","info":"#### Process\n- Prepare MySQL Query\n- Insert in DB\n- Save lastInsterId as _id_\n- Push to Firebase with _id_","x":500,"y":100,"z":"bc8dd804.437228","wires":[]},{"id":"1646b4a7.e9b94b","type":"function","name":"Game","func":" msg.action = 'new';\n msg.type = 'start';\n\nreturn msg;","outputs":1,"valid":true,"x":690,"y":740,"z":"a1fba292.5e046","wires":[["c00a7b1e.3ff588"]]},{"id":"c00a7b1e.3ff588","type":"subflow:bc8dd804.437228","name":"","x":830,"y":740,"z":"a1fba292.5e046","wires":[["58caac55.a73554"]]},{"id":"58caac55.a73554","type":"debug","name":"","active":false,"console":"false","complete":"false","x":982.9285583496094,"y":740.4285831451416,"z":"a1fba292.5e046","wires":[]},{"id":"6a04a4b0.95fb5c","type":"comment","name":"Game Undo ","info":"#### Process\n- Prepare MySQL Query\n- Insert in DB\n- Save lastInsterId as _id_\n- Push to Firebase with _id_","x":500,"y":240,"z":"bc8dd804.437228","wires":[]},{"id":"be25ed66.41da1","type":"comment","name":"Game delete","info":"#### Process\n- Prepare MySQL Query\n- Insert in DB\n- Save lastInsterId as _id_\n- Push to Firebase with _id_","x":500,"y":360,"z":"bc8dd804.437228","wires":[]},{"id":"ef101bbc.10efe8","type":"comment","name":"System","info":"","x":130,"y":500,"z":"d744c298.28bb4","wires":[]},{"id":"4d2fa607.b2d058","type":"inject","name":"","topic":"","payload":"","payloadType":"date","repeat":"30","crontab":"","once":true,"x":177.5,"y":560,"z":"d744c298.28bb4","wires":[["45f71884.ba08e8"]]},{"id":"45f71884.ba08e8","type":"firebase modify","name":"","firebaselogin":"6e649feb.919b6","firebasepath":"status","child":"","method":"set","x":465,"y":560,"z":"d744c298.28bb4","wires":[]},{"id":"4b77b8b3.b48848","type":"switch","name":"","property":"payload","rules":[{"t":"eq","v":"0"}],"checkall":"true","outputs":1,"x":304.9285583496094,"y":860.4285831451416,"z":"a1fba292.5e046","wires":[["194f964b.e6b06a"]]},{"id":"194f964b.e6b06a","type":"delay","name":"limit","pauseType":"rate","timeout":"1","timeoutUnits":"seconds","rate":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":424.9285583496094,"y":860.4285831451416,"z":"a1fba292.5e046","wires":[["410679e.fbef988","c7539db.f38ac6"]]},{"id":"29b2420f.d64dbe","type":"comment","name":"Blink","info":"","x":97,"y":76,"z":"33fd5bb2.cc02a4","wires":[]},{"id":"d21991f4.2de67","type":"function","name":"off","func":"msg.payload = 0;\nreturn msg;","outputs":1,"valid":true,"x":370,"y":340,"z":"33fd5bb2.cc02a4","wires":[["df1f8143.20e08"]]},{"id":"45017804.bafe88","type":"function","name":"on","func":"msg.payload = 1;\nreturn msg;","outputs":1,"valid":true,"x":730,"y":340,"z":"33fd5bb2.cc02a4","wires":[[]]},{"id":"f77e9f10.08816","type":"delay","name":"","pauseType":"delay","timeout":"500","timeoutUnits":"milliseconds","rate":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":210,"y":340,"z":"33fd5bb2.cc02a4","wires":[["d21991f4.2de67"]]},{"id":"df1f8143.20e08","type":"delay","name":"","pauseType":"delay","timeout":"500","timeoutUnits":"milliseconds","rate":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":570,"y":340,"z":"33fd5bb2.cc02a4","wires":[["45017804.bafe88"]]},{"id":"9d680e35.6297f","type":"subflow:33fd5bb2.cc02a4","x":690,"y":520,"z":"a1fba292.5e046","wires":[["71477b17.8eb884"]]},{"id":"68536de2.97ac94","type":"subflow:33fd5bb2.cc02a4","x":570,"y":220,"z":"5012eca8.afed14","wires":[["a89d87f5.576278"]]},{"id":"a89d87f5.576278","type":"rpi-gpio out","name":"LED","pin":"7","set":false,"out":"out","x":730,"y":220,"z":"5012eca8.afed14","wires":[]},{"id":"7e29d179.81d63","type":"function","name":"on","func":"msg.payload = 1;\nreturn msg;","outputs":1,"valid":true,"x":410,"y":220,"z":"5012eca8.afed14","wires":[["68536de2.97ac94"]]},{"id":"9a014752.65feb8","type":"subflow:5012eca8.afed14","x":535.5,"y":240,"z":"f8613267.079ed","wires":[]},{"id":"9523d6cc.6adc28","type":"delay","name":"","pauseType":"delay","timeout":"1500","timeoutUnits":"milliseconds","rate":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":634,"y":360,"z":"244c170f.dbb3e8","wires":[["73cadd8.f8c3524"]]},{"id":"d16801e7.2e98","type":"subflow:5012eca8.afed14","x":775,"y":115,"z":"a1fba292.5e046","wires":[]},{"id":"93b730ea.6c48d","type":"function","name":"Goals status","func":"if(typeof context.global != 'undefined') {\n\tif(typeof context.global.game != 'undefined') {\n\t\tif(typeof context.global.game.running != 'undefined') {\n\t\t\tif(context.global.game.running) {\n\t\t\t\treturn msg;\n\t\t\t}\n\t\t}\n\t}\n}\nreturn null;\n","outputs":1,"valid":true,"x":247.5,"y":220,"z":"5012eca8.afed14","wires":[["7e29d179.81d63"]]},{"id":"bc3eb10d.43c15","type":"comment","name":"npm","info":"## npm publish\n1. deploy.sh\n2. release.sh","x":130,"y":640,"z":"d744c298.28bb4","wires":[]},{"id":"ff4709ec.00b8f8","type":"inject","name":"npm publish","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":163,"y":700,"z":"d744c298.28bb4","wires":[["6c75c925.938a38"]]},{"id":"4e4b35ac.b1b4cc","type":"debug","name":"","active":true,"console":"false","complete":"false","x":728,"y":700,"z":"d744c298.28bb4","wires":[]},{"id":"6c75c925.938a38","type":"exec","command":"sudo -u pi sh ~/piball/scripts/release.sh","addpay":false,"append":"","useSpawn":false,"name":"release.sh","x":457.5,"y":700,"z":"d744c298.28bb4","wires":[[],["4e4b35ac.b1b4cc"],[]]},{"id":"5321d60b.acde28","type":"debug","name":"","active":true,"console":"false","complete":"false","x":368,"y":220,"z":"a1fba292.5e046","wires":[]},{"id":"e51918b5.1ae6e8","type":"debug","name":"","active":true,"console":"false","complete":"false","x":368,"y":520,"z":"a1fba292.5e046","wires":[]},{"id":"5d9c6afb.a26394","type":"debug","name":"","active":false,"console":"false","complete":"false","x":328,"y":920,"z":"a1fba292.5e046","wires":[]},{"id":"5dbf586d.a240a8","type":"http request","name":"blue","method":"GET","url":"http://192.168.1.23/index.php?0=0000FF&1=0000FF&2=0000FF","x":650,"y":720,"z":"bc8dd804.437228","wires":[["c55c8968.3aa378"]]},{"id":"a3919fa2.5c6e6","type":"comment","name":"Game over","info":"","x":498.5,"y":660,"z":"bc8dd804.437228","wires":[]},{"id":"a69af321.59651","type":"http request","name":"black","method":"GET","url":"http://192.168.1.23/index.php?0=000000&1=000000&2=000000","x":690,"y":120,"z":"bc8dd804.437228","wires":[["b84598a5.47ba68"]]},{"id":"c1638733.3e9c78","type":"function","name":"Game","func":" msg.action = 'over';\n\nreturn msg;","outputs":1,"valid":true,"x":610,"y":400,"z":"244c170f.dbb3e8","wires":[["585fad11.a7a054"]]},{"id":"585fad11.a7a054","type":"subflow:bc8dd804.437228","name":"","x":850,"y":400,"z":"244c170f.dbb3e8","wires":[[]]},{"id":"2806d83d.d7f928","type":"function","name":"Status","func":"// context.global.game.running = false;\nreturn msg;","outputs":1,"valid":true,"x":510,"y":720,"z":"bc8dd804.437228","wires":[["5dbf586d.a240a8"]]},{"id":"360e71ee.c9f18e","type":"inject","name":"","topic":"andre.lademann@netresearch.de","payload":"Hello Dude","payloadType":"string","repeat":"","crontab":"","once":false,"x":159.5,"y":800,"z":"d744c298.28bb4","wires":[["5d92b34e.a26d4c"]]},{"id":"5d92b34e.a26d4c","type":"xmpp out","name":"","server":"24f21915.db0de6","to":"andre.lademann@netresearch.de","join":false,"sendObject":false,"x":450,"y":800,"z":"d744c298.28bb4","wires":[]},{"id":"b84598a5.47ba68","type":"delay","name":"","pauseType":"delay","timeout":"2","timeoutUnits":"seconds","rate":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":836.5,"y":120,"z":"bc8dd804.437228","wires":[["4079f272.bf860c"]]},{"id":"4079f272.bf860c","type":"http request","name":"green","method":"GET","url":"http://192.168.1.23/index.php?0=00FF00&1=00FF00&2=00FF00","x":990,"y":120,"z":"bc8dd804.437228","wires":[[]]},{"id":"fcb0e6dd.034f18","type":"http request","name":"black","method":"GET","url":"http://192.168.1.23/index.php?0=000000&1=000000&2=000000","x":950,"y":720,"z":"bc8dd804.437228","wires":[[]]},{"id":"c55c8968.3aa378","type":"delay","name":"","pauseType":"delay","timeout":"2","timeoutUnits":"seconds","rate":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":796.5,"y":720,"z":"bc8dd804.437228","wires":[["fcb0e6dd.034f18"]]},{"id":"c7539db.f38ac6","type":"http request","name":"blue","method":"GET","url":"http://192.168.1.23/index.php?0=0000FF&1=0000FF&2=0000FF","x":550,"y":920,"z":"a1fba292.5e046","wires":[[]]}]