|
[{"id":"d6af7713.3a4268","type":"http response","z":"bee3cb1a.1e87d8","name":"","x":650.0000305175781,"y":44,"wires":[]},{"id":"5206a4a1.f42ccc","type":"http in","z":"bee3cb1a.1e87d8","name":"","url":"/infra","method":"get","swaggerDoc":"","x":291.0000457763672,"y":44,"wires":[["243476ad.a9529a"]]},{"id":"243476ad.a9529a","type":"template","z":"bee3cb1a.1e87d8","name":"Telecommande IR","field":"payload","fieldType":"msg","format":"html","syntax":"mustache","template":"<html>\n <head>\n <title>Telecommandes IR</title>\n <style>\n body {\n background-color: #F0F8FF;\n }\n\n div{\n display: inline-block;\n margin-top: 10px;\n }\n\n .masq{\n width: 88px;\n height: 80px;\n }\n\n .on{\n background-color:red;\n width: 80px ;\n height: 80px;\n border-radius: 50%;\n text-align:center;\n border: 4px solid white;\n transition: background-color 1s;\n }\n\n .onoff{\n opacity: 0.5 ;\n background-color:red;\n width: 80px ;\n height: 80px;\n border-radius: 50%;\n text-align:center;\n border: 4px solid white;\n transition: background-color 1s;\n }\n\n .on:hover{\n background-color: #C60800;\n transition: background-color 0.8s;\n }\n\n .numero{\n background-color:#1E90FF;\n width: 80px ;\n height: 80px;\n border-radius: 10%;\n text-align:center;\n border: 4px solid white;\n transition: background-color 1s;\n }\n\n .numerooff{\n opacity: 0.5 ;\n background-color:#1E90FF;\n width: 80px ;\n height: 80px;\n border-radius: 10%;\n text-align:center;\n border: 4px solid white;\n transition: background-color 1s;\n }\n\n .numero:hover{\n background-color:#1560BD;\n transition: background-color 0.8s;\n }\n\n .vol{\n background-color:#1E90FF;\n width: 80px ;\n height: 80px;\n border-radius: 10%;\n text-align:center;\n border: 4px solid white;\n transition: background-color 1s;\n }\n\n .voloff{\n opacity: 0.5 ;\n background-color:#1E90FF;\n width: 125px ;\n height: 80px;\n border-radius: 10%;\n text-align:center;\n border: 4px solid white;\n transition: background-color 1s;\n }\n\n\n .vol:hover{\n background-color:#1560BD;\n transition: background-color 0.8s;\n }\n\n\n p{\n font-weight: bold;\n font-size: 25px;\n color: #FFFFFF;\n }\n\n .telecommande{\n width: 300px;\n margin-right: 50px;\n margin-left: 85px;\n text-align: center;\n }\n\n .clavier{\n border: 5px solid black;\n transition: background-color 1s;\n border-top-left-radius: 10px;\n border-top-right-radius: 10px;\n border-bottom-right-radius:5px;\n border-bottom-left-radius:5px;\n padding-left: 5px;\n padding-right: 5px;\n padding-bottom: 5px;\n background-color: grey;\n box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24), 0 17px 50px 0 rgba(0,0,0,0.19);\n }\n\n .clavier:hover{\n background-color:#9E9E9E;\n transition: background-color 0.8s;\n }\n\n h2{\n color:black;\n font-size:25px;\n font-weight:bold;\n }\n\n #formulaire{\n width:100%;\n }\n\n .add{\n display:inline-block;\n margin-left:40%;\n }\n\n .add p{\n color:black;\n font-size:0.9em;\n }\n\n h1{\n text-align:center;\n }\n\n .barre{\n text-align:center;\n width:75%;\n }\n\n .sup{\n width:40px;\n height:40px;\n background-color: #D3D3D3;\n border-radius: 50%;\n position: absolute;\n margin-left: 120px;\n margin-top: 70px;\n border: 5px solid black;\n }\n\n .sup:hover{\n background-color: #FF0921;\n }\n\n .sup p{\n color: black;\n margin-top:8px;\n }\n\n .butadd{\n display: inline-block;\n }\n\n </style>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">\n <script type=\"text/javascript\">\n var ws;\n var wsUri = \"ws:\";\n var loc = window.location;\n console.log(loc);\n if (loc.protocol === \"https:\") { wsUri = \"wss:\"; }\n // This needs to point to the web socket in the Node-RED flow\n // ... in this case it's ws/simple\n wsUri += \"//\" + loc.host + loc.pathname.replace(\"infra\",\"ws/infra\");\n\n function wsConnect() {\n console.log(\"connect\",wsUri);\n ws = new WebSocket(wsUri);\n //var line = \"\"; // either uncomment this for a building list of messages\n ws.onmessage = function(msg) {\n var line = \"\"; // or uncomment this to overwrite the existing message\n // parse the incoming message as a JSON object\n var data = msg.data;\n //console.log(data);\n // build the output from the topic and payload parts of the object\n line += \"<p>\"+data+\"</p>\";\n // replace the messages div with the new \"line\"\n //document.getElementById('messages').innerHTML = line;\n //ws.send(JSON.stringify({data:data}));\n }\n ws.onopen = function() {\n // update the status div with the connection status\n //document.getElementById('status').innerHTML = \"connected\";\n //ws.send(\"Open for data\");\n console.log(\"connected\");\n }\n ws.onclose = function() {\n // update the status div with the connection status\n //document.getElementById('status').innerHTML = \"not connected\";\n // in case of lost connection tries to reconnect every 3 secs\n setTimeout(wsConnect,3000);\n }\n }\n \n function doit(m) {\n if (ws) { ws.send(m); }\n }\n\n function sup(m) {\n var txt;\n var r = confirm('Voulez vous vraiment supprimer cette télécommande?');\n if (r == true){\n if (ws) { ws.send(m); }\n }\n\n }\n </script>\n </head>\n\n <body onload=\"wsConnect();\" onunload=\"ws.disconnect();\">\n <script type=\"text/javascript\">\n var objRequete = new XMLHttpRequest(); // instanciation d'un objet XMLHttpRequest\n\n\n\n function fonction_Retour_Reponse() {\n if (objRequete.readyState==4) { // 4: transaction terminée avec données chargées\n //alert(objRequete.responseText);\n document.getElementById('texte').innerHTML=objRequete.responseText;\n }\n }\n \n function action(param, nom) {\n // fonction appelée. param non utilisée ici\n //var ma_variable=document.getElementById(\"...\").value;\n //alert(param);\n objRequete.open('get','http://192.168.0.51/traite.php?param='+ param +'&nom=' + nom ,true); //ouverture d'une requete XMLHttpRequest avec paramètres methode get, mode asynchrone (true)\n objRequete.onreadystatechange = fonction_Retour_Reponse; // nom de la fonction qui traite la reponse de l'accès précédent\n objRequete.send(null); // envoie de la requete\n return true; // la fonction retourne vrai (sans incidence ici - syntaxiquement correct)\n }\n\n action('TELE');\n\n </script>\n\n <font face=\"Arial\">\n <!-- <div><script>alert(\"alert\");</script></div> -->\n <h1>Telecommandes IR</h1>\n <hr class=\"barre\"/>\n <div id=\"formulaire\">\n <div class=\"add\">\n <p class=\"butadd\">Ajouter Telecommande :</p>\n <form class=\"butadd\" action=\"http://192.168.0.51:1880/addremote\">\n <input type=\"submit\" value=\"Cliquez ICI\" />\n </form>\n </div>\n </div>\n\n <hr class=\"barre\" />\n <p id=\"texte\"></p>\n </font>\n </body>\n</html>","x":482.00006103515625,"y":44,"wires":[["d6af7713.3a4268"]]},{"id":"5fbf22db.367a7c","type":"websocket in","z":"bee3cb1a.1e87d8","name":"","server":"7f883047.12176","client":"","x":291.0000305175781,"y":134,"wires":[["848a14ca.391d98","535cb9c3.9248e8"]]},{"id":"4788b0b9.4ac0d","type":"TelecommandeIR","z":"bee3cb1a.1e87d8","name":"TelecommandeIR","controller":"9845a5a.b366058","x":819.4999694824219,"y":129.00000762939453,"wires":[]},{"id":"ea103623.2be3c8","type":"tail","z":"bee3cb1a.1e87d8","name":"","filetype":"text","split":false,"filename":"/root/ir/taildir/irw","x":272.2000732421875,"y":620.2000312805176,"wires":[["c55aa558.9b7a88","33fad32a.4d350c"]]},{"id":"d9e15914.1d3fc8","type":"exec","z":"bee3cb1a.1e87d8","command":"bash ~/ir/addremote.sh ","addpay":true,"append":"","useSpawn":"","timer":"","name":"","x":799.2000122070312,"y":425.5001220703125,"wires":[[],[],[]]},{"id":"62e64605.800dc8","type":"tail","z":"bee3cb1a.1e87d8","name":"","filetype":"text","split":false,"filename":"/root/ir/taildir/add","x":262.00006103515625,"y":525.2000732421875,"wires":[["1caca63b.3e6d2a"]]},{"id":"1caca63b.3e6d2a","type":"function","z":"bee3cb1a.1e87d8","name":"Addremote","func":"var info = msg.payload;\n\nvar msg1;\n\nif(info == \"1\"){\n var msg1 = \"Appuyez environ 2 secondes sur les touches de la telecommande\";\n}\nelse if(info == \"2\"){\n var msg1 = \"Appuyez environ 6 fois sur les memes touches jusqu a que votre telecommande soit reconnue\";\n}\nelse if(info == \"3\"){\n var msg1 = \"Votre Telecommande a ete reconnue\";\n}\nelse if(info == \"app\"){\n var msg1 = \"Appuyer sur la touche de votre télécommande physique\";\n}\nelse if(info == \"click\"){\n var msg1 = \"Cliquer sur une touche que vous voulez enregistrer\";\n}\nelse if(info == \"fin\"){\n var msg1 = \"Enregistrement de la télécommande terminée\";\n}\nelse if(info == \"ok\"){\n var msg1 = \"Votre touche a été enregistrée!\";\n}\nelse if(info == \"spam\"){\n var msg1 = \"Appuyez rapidement sur une touche\";\n}\nelse if(info == \"fin\"){\n var msg1 = \"Appuyez rapidement sur une touche\";\n}\nelse{\n return null;\n}\n\nvar cmd = {\n payload: msg1\n};\n\nreturn cmd;","outputs":1,"noerr":0,"x":489.00001525878906,"y":526.2000579833984,"wires":[["ea5c3a04.217958"]]},{"id":"2d3ce3ba.2dc6ac","type":"comment","z":"bee3cb1a.1e87d8","name":"Site web","info":"","x":826.4999847412109,"y":46.587501525878906,"wires":[]},{"id":"84cf3c61.3441f","type":"comment","z":"bee3cb1a.1e87d8","name":"Envoi infra depuis web ou suppression de la telecommande","info":"","x":1178.199951171875,"y":138.20001220703125,"wires":[]},{"id":"5487d3a.d9f5b2c","type":"comment","z":"bee3cb1a.1e87d8","name":"Enregistrement telecommande","info":"","x":914.2000122070312,"y":260.2000427246094,"wires":[]},{"id":"b3a221ce.bb99f","type":"comment","z":"bee3cb1a.1e87d8","name":"Objets","info":"","x":825.1999816894531,"y":610.1999206542969,"wires":[]},{"id":"73876264.dfeaac","type":"websocket in","z":"bee3cb1a.1e87d8","name":"","server":"309df689.58215a","client":"","x":253.50006103515625,"y":359.4001007080078,"wires":[["3d54970.b453a6a"]]},{"id":"ea5c3a04.217958","type":"websocket out","z":"bee3cb1a.1e87d8","name":"","server":"309df689.58215a","client":"","x":752.5000305175781,"y":526.4000854492188,"wires":[]},{"id":"cbc3658f.b583c8","type":"http response","z":"bee3cb1a.1e87d8","name":"","x":698.2000274658203,"y":281.7999801635742,"wires":[]},{"id":"6f032f65.66e71","type":"http in","z":"bee3cb1a.1e87d8","name":"","url":"/addremote","method":"get","swaggerDoc":"","x":273.2000427246094,"y":281.7999801635742,"wires":[["d9109375.683e6"]]},{"id":"d9109375.683e6","type":"template","z":"bee3cb1a.1e87d8","name":"Ajout Telecommande","field":"payload","fieldType":"msg","format":"html","syntax":"mustache","template":"<!DOCTYPE html>\n<html>\n <head>\n <title>Add Remote</title>\n <style>\n body {\n background-color: #F0F8FF;\n }\n\n div{\n display: inline-block;\n margin-top: 10px;\n }\n\n h2{\n color:black;\n font-size:25px;\n font-weight:bold;\n }\n\n h1{\n text-align:center;\n }\n\n .masq{\n width: 88px;\n height: 80px;\n }\n \n .on{\n background-color:red;\n width: 80px ;\n height: 80px;\n border-radius: 50%;\n text-align:center;\n border: 4px solid white;\n transition: background-color 1s;\n }\n\n .on:hover{\n background-color: #C60800;\n transition: background-color 0.8s;\n }\n\n .sup{\n width:40px;\n height:40px;\n background-color: #D3D3D3;\n border-radius: 50%;\n position: absolute;\n margin-left: 120px;\n margin-top: 70px;\n border: 5px solid black;\n }\n\n .sup:hover{\n background-color: #FF0921;\n }\n\n .sup p{\n color: black;\n margin-top:8px;\n }\n\n #ajout{\n width: 100%;\n height: 300px;\n text-align: center;\n margin-top: 100px;\n }\n\n #name{\n margin-top: 40px;\n height: 30px;\n width: 250px;\n font-size: 15px;\n }\n\n #stop{\n margin-left: 40%;\n }\n\n #messages{\n font-size: 20px;\n font-family: Verdana;\n }\n\n button{\n margin-top: 20px;\n height: 50px;\n width: 300px;\n font-size: 18px;\n }\n\n .telecommande{\n width: 300px;\n text-align: center;\n position: absolute;\n margin-left: 70%;\n margin-top: -400px;\n margin-bottom: 100px;\n }\n\n .clavier{\n border: 5px solid black;\n transition: background-color 1s;\n border-top-left-radius: 10px;\n border-top-right-radius: 10px;\n border-bottom-right-radius:5px;\n border-bottom-left-radius:5px;\n padding-left: 5px;\n padding-right: 5px;\n padding-bottom: 5px;\n background-color: grey;\n box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24), 0 17px 50px 0 rgba(0,0,0,0.19);\n }\n\n .clavier:hover{\n background-color:#9E9E9E;\n transition: background-color 0.8s;\n }\n\n .numero{\n background-color:#1E90FF;\n width: 80px ;\n height: 80px;\n border-radius: 10%;\n text-align:center;\n border: 4px solid white;\n transition: background-color 1s;\n }\n\n .numero:hover{\n background-color:#1560BD;\n transition: background-color 0.8s;\n }\n\n .telecommande p{\n font-weight: bold;\n font-size: 25px;\n color: #FFFFFF;\n }\n\n </style>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">\n <script type=\"text/javascript\">\n var ws;\n var wsUri = \"ws:\";\n var loc = window.location;\n console.log(loc);\n if (loc.protocol === \"https:\") { wsUri = \"wss:\"; }\n // This needs to point to the web socket in the Node-RED flow\n // ... in this case it's ws/simple\n wsUri += \"//\" + loc.host + loc.pathname.replace(\"addremote\",\"ws/addremote\");\n\n function wsConnect() {\n console.log(\"connect\",wsUri);\n ws = new WebSocket(wsUri);\n //var line = \"\"; // either uncomment this for a building list of messages\n ws.onmessage = function(msg) {\n var line = \"\"; // or uncomment this to overwrite the existing message\n // parse the incoming message as a JSON object\n var data = msg.data;\n //console.log(data);\n // build the output from the topic and payload parts of the object\n line += \"<p>\"+data+\"</p>\";\n // replace the messages div with the new \"line\"\n document.getElementById('messages').innerHTML = line;\n\n if(data==\"Enregistrement de la télécommande terminée\"){\n delayMillis = 5000;\n setTimeout(function(){\n document.location.href=\"http://192.168.0.51:1880/infra\";\n }, delayMillis);\n }\n\n if(data==\"Cliquer sur une touche que vous voulez enregistrer\"){\n document.getElementById(\"stop\").style = \"display: block\";\n }\n else{\n document.getElementById(\"stop\").style = \"display: none\";\n }\n //ws.send(JSON.stringify({data:data}));\n }\n ws.onopen = function() {\n // update the status div with the connection status\n //document.getElementById('status').innerHTML = \"connected\";\n //ws.send(\"Open for data\");\n console.log(\"connected\");\n }\n ws.onclose = function() {\n // update the status div with the connection status\n //document.getElementById('status').innerHTML = \"not connected\";\n // in case of lost connection tries to reconnect every 3 secs\n setTimeout(wsConnect,3000);\n }\n }\n\n var objRequete = new XMLHttpRequest(); // instanciation d'un objet XMLHttpRequest\n\n function action(param, nom) {\n // fonction appelée. param non utilisée ici\n //var ma_variable=document.getElementById(\"...\").value;\n //alert(param);\n objRequete.open('get','http://192.168.0.51/add.php?param='+ param + '&nom=' + nom ,true); //ouverture d'une requete XMLHttpRequest avec paramètres methode get, mode asynchrone (true)\n objRequete.send(null); // envoie de la requete\n return true; // la fonction retourne vrai (sans incidence ici - syntaxiquement correct)\n }\n\n function add(newr) {\n // fonction appelée. param non utilisée ici\n //var ma_variable=document.getElementById(\"...\").value;\n objRequete.open('get','http://192.168.0.51/add.php?newr='+ newr ,true); //ouverture d'une requete XMLHttpRequest avec paramètres methode get, mode asynchrone (true)\n objRequete.send(null); // envoie de la requete\n return true; // la fonction retourne vrai (sans incidence ici - syntaxiquement correct)\n }\n\n function doit() {\n var nom = document.getElementById(\"name\").value;\n add(nom);\n var nom2 = nom + \"/NEW\";\n if(nom){\n ws.send(nom2);\n document.getElementById(\"name\").style = \"display: none;\";\n document.getElementById(\"but\").style = \"display: none;\";\n document.getElementById(\"telecommande\").style = \"display: block;\";\n document.getElementById(\"ajout\").style = \"width: 70%\";\n }\n else{\n alert(\"erreur, veuillez entrez un nom\");\n }\n }\n\n function touche(key) {\n var nom = document.getElementById(\"name\").value;\n if (nom != \"stop\"){\n action(key, nom);\n }\n ws.send(key);\n }\n </script>\n </head>\n\n <body onload=\"wsConnect();\" onunload=\"ws.disconnect();\">\n\n <font face=\"Arial\">\n <h1>Ajouter une télécommande</h1>\n <hr />\n <div id=\"ajout\" style=\"\" >\n <p id=\"messages\"> L'ajout de la télécommande se fera dès l'appui du bouton, veuillez suivre les instructions assez rapidement.</p>\n <input id=\"name\" placeholder=\"Nom de la télécommande\">\n <br />\n <button id=\"but\" onclick='doit();'>Ajouter une télécommande</button>\n <button id=\"stop\" style=\"display: none;\" onclick='touche("stop")'>stopper la capture</button>\n </div>\n <div style=\"display: none;\" class=\"telecommande\" id=\"telecommande\">\n <h2>Touches disponibles:</h2>\n <div class=\"clavier\">\n <div class=\"on\" onclick=\"touche("KEY_POWER");\"><p>ON</p></div>\n <div class=\"masq\"></div>\n <div class=\"numero\" onclick=\"touche("BTN_0");\"><p>0</p></div>\n <br>\n <div class=\"numero\" onclick=\"touche("BTN_1");\"><p>1</p></div>\n <div class=\"numero\" onclick=\"touche("BTN_2");\"><p>2</p></div>\n <div class=\"numero\" onclick=\"touche("BTN_3");\"><p>3</p></div>\n <br>\n <div class=\"numero\" onclick=\"touche("BTN_4");\"><p>4</p></div>\n <div class=\"numero\" onclick=\"touche("BTN_5");\"><p>5</p></div>\n <div class=\"numero\" onclick=\"touche("BTN_6");\"><p>6</p></div>\n <br>\n <div class=\"numero\" onclick=\"touche("BTN_7");\"><p>7</p></div>\n <div class=\"numero\" onclick=\"touche("BTN_8");\"><p>8</p></div>\n <div class=\"numero\" onclick=\"touche("BTN_9");\"><p>9</p></div>\n <br>\n <br>\n <div class=\"numero\" style=\"background-color: red;\" onclick=\"touche("BTN_BASE");\"><p>RED</p></div>\n <div class=\"numero\" onclick=\"touche("BTN_FORWARD");\"><p>^</p></div>\n <div class=\"numero\" style=\"background-color: green;\" onclick=\"touche("BTN_BASE2");\"><p>GRE</p></div>\n <br>\n <div class=\"numero\" onclick=\"touche("BTN_LEFT");\"><p><</p></div>\n <div class=\"numero\" onclick=\"touche("BTN_MIDDLE");\"><p>OK</p></div>\n <div class=\"numero\" onclick=\"touche("BTN_RIGHT");\"><p>></p></div>\n <br>\n <div class=\"numero\" style=\"background-color: yellow;\" onclick=\"touche("BTN_BASE3");\"><p>YEL</p></div>\n <div class=\"numero\" onclick=\"touche("BTN_BACK");\"><p>bas</p></div>\n <div class=\"numero\" style=\"background-color: blue;\" onclick=\"touche("BTN_BASE4");\"><p>BLU</p></div>\n </div>\n </div>\n <div id=\"footer\">\n </div>\n </font>\n </body>\n</html>","x":502.2000427246094,"y":281.7999954223633,"wires":[["cbc3658f.b583c8"]]},{"id":"848a14ca.391d98","type":"function","z":"bee3cb1a.1e87d8","name":"Envoi / Suppression","func":"var string = msg.payload;\nvar slash = \"/\";\nvar arrayOfStrings = string.split(slash);\nvar sup = arrayOfStrings[1];\n\nif (sup == \"DEL\"){\n str = arrayOfStrings[0];\n str = str.toLowerCase();\n var sup = {\n payload : str\n };\n return [null, sup];\n}\nelse{\n return [msg, null];\n}","outputs":"2","noerr":0,"x":567.3888854980469,"y":134.33334350585938,"wires":[["4788b0b9.4ac0d"],["f1fc8007.9fe7a"]]},{"id":"f1fc8007.9fe7a","type":"exec","z":"bee3cb1a.1e87d8","command":"/root/ir/remove/del.sh ","addpay":true,"append":"","useSpawn":"","timer":"","name":"","x":822.3888854980469,"y":184.93058013916016,"wires":[[],[],[]]},{"id":"3d54970.b453a6a","type":"function","z":"bee3cb1a.1e87d8","name":"ajouter touche","func":"var string = msg.payload;\nvar slash = \"/\";\nvar arrayOfStrings = string.split(slash);\nvar sup = arrayOfStrings[1];\n\nif (sup == \"NEW\"){\n str = arrayOfStrings[0];\n str = str.toLowerCase();\n var sup = {\n payload : str\n };\n return [null, sup];\n}\nelse{\n return [msg, null];\n}","outputs":"2","noerr":0,"x":544,"y":359,"wires":[["86e13e05.6b12a8"],["d9e15914.1d3fc8"]]},{"id":"86e13e05.6b12a8","type":"exec","z":"bee3cb1a.1e87d8","command":"bash ~/ir/addkey.sh ","addpay":true,"append":"","useSpawn":"","timer":"","name":"","x":796,"y":339.5,"wires":[[],[],[]]},{"id":"98aa9256.54fc4","type":"mqtt out","z":"bee3cb1a.1e87d8","name":"","topic":"/drone","qos":"","retain":"","broker":"534a3ded.ec85a4","x":633.1110534667969,"y":618.5555419921875,"wires":[]},{"id":"c55aa558.9b7a88","type":"function","z":"bee3cb1a.1e87d8","name":"Filtre Drone","func":"var chaine = msg.payload ;\nvar reg1 = new RegExp(\"BTN_[1-9]\", \"g\");\n\nvar regex = chaine.match(reg1);\nvar value = Object.values(regex);\ncmd = value[0];\n\nif (cmd == \"BTN_1\") {\n cls = {\n payload : \"takeoff\"\n };\n}\nelse if(cmd == \"BTN_2\"){\n cls = {\n payload : \"land\"\n }; \n}\n\nreturn cls;","outputs":1,"noerr":0,"x":463.1111145019531,"y":619.5555419921875,"wires":[["f1d67cbb.78cb5","98aa9256.54fc4"]]},{"id":"535cb9c3.9248e8","type":"debug","z":"bee3cb1a.1e87d8","name":"","active":true,"console":"false","complete":"false","x":529.2777709960938,"y":194.99999237060547,"wires":[]},{"id":"7f883047.12176","type":"websocket-listener","z":"","path":"/ws/infra","wholemsg":"false"},{"id":"9845a5a.b366058","type":"lirc-controller","z":0},{"id":"309df689.58215a","type":"websocket-listener","z":"","path":"/ws/addremote","wholemsg":"false"},{"id":"534a3ded.ec85a4","type":"mqtt-broker","z":"","broker":"192.168.0.50","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willPayload":"","birthTopic":"","birthQos":"0","birthPayload":""}] |