Skip to content

Instantly share code, notes, and snippets.

@InfrarougeRT2
Last active March 15, 2017 15:06
Show Gist options
  • Save InfrarougeRT2/3789e95594f4f8f226bf7e3ef4624cb3 to your computer and use it in GitHub Desktop.
Save InfrarougeRT2/3789e95594f4f8f226bf7e3ef4624cb3 to your computer and use it in GitHub Desktop.
InfraRed System

This flow allow to save InfraRed remote via web interface. You can also control your InfraRed remote via the web interface.

You can control any IoT object with your InfraRed remote (for example: Light, Drone, Roller blind, etc...)

First you have to install lirc node:

npm install node-red-contrib-lirc

Then you have to install our node (it is the modification of node-red-contrib-lirc):

soon....

Download our php pages and put it on /var/www/html:

soon.....

Then import the flow!

Enjoy

[{"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(&quot;stop&quot;)'>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(&quot;KEY_POWER&quot;);\"><p>ON</p></div>\n <div class=\"masq\"></div>\n <div class=\"numero\" onclick=\"touche(&quot;BTN_0&quot;);\"><p>0</p></div>\n <br>\n <div class=\"numero\" onclick=\"touche(&quot;BTN_1&quot;);\"><p>1</p></div>\n <div class=\"numero\" onclick=\"touche(&quot;BTN_2&quot;);\"><p>2</p></div>\n <div class=\"numero\" onclick=\"touche(&quot;BTN_3&quot;);\"><p>3</p></div>\n <br>\n <div class=\"numero\" onclick=\"touche(&quot;BTN_4&quot;);\"><p>4</p></div>\n <div class=\"numero\" onclick=\"touche(&quot;BTN_5&quot;);\"><p>5</p></div>\n <div class=\"numero\" onclick=\"touche(&quot;BTN_6&quot;);\"><p>6</p></div>\n <br>\n <div class=\"numero\" onclick=\"touche(&quot;BTN_7&quot;);\"><p>7</p></div>\n <div class=\"numero\" onclick=\"touche(&quot;BTN_8&quot;);\"><p>8</p></div>\n <div class=\"numero\" onclick=\"touche(&quot;BTN_9&quot;);\"><p>9</p></div>\n <br>\n <br>\n <div class=\"numero\" style=\"background-color: red;\" onclick=\"touche(&quot;BTN_BASE&quot;);\"><p>RED</p></div>\n <div class=\"numero\" onclick=\"touche(&quot;BTN_FORWARD&quot;);\"><p>^</p></div>\n <div class=\"numero\" style=\"background-color: green;\" onclick=\"touche(&quot;BTN_BASE2&quot;);\"><p>GRE</p></div>\n <br>\n <div class=\"numero\" onclick=\"touche(&quot;BTN_LEFT&quot;);\"><p><</p></div>\n <div class=\"numero\" onclick=\"touche(&quot;BTN_MIDDLE&quot;);\"><p>OK</p></div>\n <div class=\"numero\" onclick=\"touche(&quot;BTN_RIGHT&quot;);\"><p>></p></div>\n <br>\n <div class=\"numero\" style=\"background-color: yellow;\" onclick=\"touche(&quot;BTN_BASE3&quot;);\"><p>YEL</p></div>\n <div class=\"numero\" onclick=\"touche(&quot;BTN_BACK&quot;);\"><p>bas</p></div>\n <div class=\"numero\" style=\"background-color: blue;\" onclick=\"touche(&quot;BTN_BASE4&quot;);\"><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":""}]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment