[{"id":"Topic.LedMatrix","type":"queue-topic","origin":"/root/thethingbox/node_modules/node-red/flow/flows.json","topic":"LEDMatrix"},{"id":"MQTT.Localhost","type":"mqtt-broker","origin":"/root/thethingbox/node_modules/node-red/flow/flows.json","broker":"localhost","port":"1883","clientid":""},{"id":"99f30803.a91d48","type":"subflow","name":"LED text (5)","in":[{"x":54,"y":66,"wires":[{"id":"535ca4ae.1ef56c"}]}],"out":[],"origin":"/root/thethingbox/node_modules/node-red/flow/flows.json"},{"id":"535ca4ae.1ef56c","type":"function","origin":"/root/thethingbox/node_modules/node-red/flow/flows.json","name":"Format text if provide from calendar","func":"if (msg.hasOwnProperty(\"data\")){\n if(msg.data.hasOwnProperty(\"kind\")){\n if(~msg.data.kind.indexOf(\"calendar\")){\n msg.payload = msg.payload.title + \" : \" + msg.payload.start;\n }\n }\n}\nreturn msg;","outputs":1,"x":260,"y":65.58331298828125,"z":"99f30803.a91d48","wires":[["b221155a.b32388"]]},{"id":"b221155a.b32388","type":"function","origin":"/root/thethingbox/node_modules/node-red/flow/flows.json","name":"is time ?","func":"var re = msg.payload.match(/(([01][0-9]|2[0-3]):[0-5][0-9])/);\nif ( re !== null && re.length !==0 && re[0] == msg.payload ){\n /*\n var date = new Date();\n var h = Number(re[0].split(\":\")[0]);\n var m = Number(re[0].split(\":\")[1]);\n var h24 = h;\n if(~msg.payload.indexOf(\"pm\")){\n h24+=12;\n }\n if(Number(date.getHours()) > h24 || Number(date.getMinutes()) > m ){\n var newTime = h+\":\"+m;\n msg.payload.replace(re[0],newTime);\n }*/\n \n return [msg,null];\n}\nreturn [null,msg];","outputs":"2","x":482.9999694824219,"y":65.5833740234375,"z":"99f30803.a91d48","wires":[["238deace.f5a0c6"],["6eb4310f.a4064"]]},{"id":"d2063b5f.896568","type":"queueuser","origin":"/root/thethingbox/node_modules/node-red/flow/flows.json","msgaction":"add","element":"","msgtype":"","over":"addStart","ttl":"1","callbackTopic":"","broker":"MQTT.Localhost","topic":"Topic.LedMatrix","x":857,"y":59,"z":"99f30803.a91d48","wires":[["28789d01.c44c62"]]},{"id":"28789d01.c44c62","type":"queueuser","origin":"/root/thethingbox/node_modules/node-red/flow/flows.json","msgaction":"cons","element":"","msgtype":"","over":"","ttl":"","callbackTopic":"LedMatrix/display","broker":"MQTT.Localhost","topic":"Topic.LedMatrix","x":1057.683349609375,"y":58.883331298828125,"z":"99f30803.a91d48","wires":[[]]},{"id":"238deace.f5a0c6","type":"function","origin":"/root/thethingbox/node_modules/node-red/flow/flows.json","name":"","func":"msg.y = 13;\nmsg.x = 1;\nmsg.font = \"Roboto-Regular\";\nmsg.textsize = 2;\nmsg.speed = 0;\n\nif (!msg.hasOwnProperty(\"intensity\")){\n msg.intensity = 60;\n}\nreturn msg;","outputs":1,"noerr":0,"x":670,"y":33,"z":"99f30803.a91d48","wires":[["d2063b5f.896568"]]},{"id":"6eb4310f.a4064","type":"function","origin":"/root/thethingbox/node_modules/node-red/flow/flows.json","name":"","func":"if (!msg.hasOwnProperty(\"speed\")){\n msg.speed = 3;\n}\nif (!msg.hasOwnProperty(\"font\")){\n msg.font = \"Roboto-Regular\";\n}\nif (!msg.hasOwnProperty(\"size\")){\n msg.size = 3;\n}\nif (!msg.hasOwnProperty(\"intensity\")){\n msg.intensity = 60;\n}\nreturn msg;","outputs":1,"noerr":0,"x":670,"y":90,"z":"99f30803.a91d48","wires":[["d2063b5f.896568"]]},{"id":"MQTT.Localhost","type":"mqtt-broker","origin":"/root/thethingbox/node_modules/node-red/flow/flows.json","broker":"localhost","port":"1883","clientid":""},{"id":"530bf301.2c68dc","type":"mqtt-broker","broker":"api.timesquair.io","port":"1883","clientid":""},{"id":"3f19ce6b.4c4cd2","type":"info","name":"Bot's commands router","info":"","icon":"comment.png","langs":[{"key":"en-US","title":"Bot's commands router","body":"","isDefault":true}],"currentLanguage":"fr-FR","x":146,"y":300.25396728515625,"z":"293ee063.12984","wires":[]},{"id":"bfcf28f.228d3d8","type":"inject","name":"Autostart","topic":"","payload":"","payloadType":"none","repeat":"","crontab":"","once":true,"x":220.38092041015625,"y":81.99999999999999,"z":"293ee063.12984","wires":[["b981faec.fb4738"]]},{"id":"fbbc4d51.8f2a8","type":"function","name":"Process Sender","func":"/*\n*/\n\nmsg.backtopic = \"jedi/response/\" + msg.payload.params[0] ;\n\ncontext.global.chat_id= msg.payload.body.message.chat.id ;\n\n// Get message content\nmsg.botmessage = {} ;\nmsg.botmessage.sender = {} ;\nmsg.botmessage.sender.id = msg.payload.body.message.from.id ;\nmsg.botmessage.sender.first_name = msg.payload.body.message.from.first_name ;\nmsg.botmessage.sender.last_name = msg.payload.body.message.from.last_name ;\nmsg.botmessage.sender.username = msg.payload.body.message.from.username ;\nmsg.botmessage.text = msg.payload.body.message.text ;\nmsg.botmessage.mime_type = msg.payload.body.message.mime_type ;\nmsg.botmessage.file_id = msg.payload.body.message.file_id ;\nmsg.botmessage.voice = msg.payload.body.message.voice ;\nif(msg.botmessage.voice !== undefined)\n msg.botmessage.voice.file_id = msg.payload.body.message.voice.file_id ;\n\nreturn msg;\n","outputs":1,"noerr":0,"x":623.3809127807617,"y":367.0000014305115,"z":"293ee063.12984","wires":[["80c9d53d.61e858","747e8e21.11976"]]},{"id":"dff1b01a.650ad","type":"json","name":"","x":469.7103805541992,"y":365.51766204833984,"z":"293ee063.12984","wires":[["fbbc4d51.8f2a8"]]},{"id":"fd09e254.a78c5","type":"mqtt out","name":"","topic":"","qos":"","retain":"","broker":"530bf301.2c68dc","x":951.3809585571289,"y":345.7777738571167,"z":"293ee063.12984","wires":[]},{"id":"80c9d53d.61e858","type":"function","name":"Success","func":"/*\n*/\n\nvar topic = msg.backtopic ;\n\nmsg = { \"payload\" : { \"body\" : \"\"\n , \"statusCode\" : \"200\"\n , \"headers\" : { \"XLife\": \"IsFine\" }\n }\n } ;\n \nmsg.topic = topic ;\n\nreturn msg;","outputs":1,"noerr":0,"x":823.3808975219727,"y":347.7777738571167,"z":"293ee063.12984","wires":[["fd09e254.a78c5"]]},{"id":"747e8e21.11976","type":"function","name":"Analyse message","func":"var text = msg.botmessage.text ;\nvar command = \"\" ;\nvar args = \"\" ;\n\nif(text === undefined)\n {\n msg.topic = \"bot/filein\" ;\n msg.payload = msg.botmessage ; \n return msg;\n }\n\nif(text.substring(0,1) == \"/\")\n { // The first word is a command\n var firstSpace = text.indexOf(\" \") ;\n if(firstSpace == -1)\n { // There is a command with no arg\n command = text.substring(1) ;\n }\n else\n { // There are additional arg(s)\n command = text.substring(1, firstSpace) ;\n args = text.substring(firstSpace+1) ;\n }\n msg.topic = \"bot/\" + command ;\n msg.botmessage.text = args ;\n msg.payload = msg.botmessage ; \n return [msg, null, null];\n }\n\ncommand = \"nocommand\" ;\nargs = text ;\nmsg.topic = \"bot/\" + command ;\nmsg.botmessage.text = args ;\nmsg.payload = msg.botmessage ; \nreturn [null, null, msg];\n","outputs":"3","noerr":0,"x":844.8570709228516,"y":436.4285764694214,"z":"293ee063.12984","wires":[["2a851773.081fd8"],[],["f42a08fa.6d50f8"]]},{"id":"4da0dad5.436f14","type":"mqtt in","name":"","topic":"jedi/request/botAAFJmtCzHriipM9zE4od","broker":"530bf301.2c68dc","x":255.71532440185547,"y":365.6998624801636,"z":"293ee063.12984","wires":[["dff1b01a.650ad"]]},{"id":"5d7e9cf7.a4f674","type":"http request","name":"Send Command","method":"POST","ret":"txt","url":"","x":847.1948089599609,"y":1044.024676322937,"z":"293ee063.12984","wires":[[]]},{"id":"a13e3ee1.55b12","type":"mqtt in","name":"","topic":"bot/command","broker":"MQTT.Localhost","x":81.0569839477539,"y":1039.6307554244995,"z":"293ee063.12984","wires":[["2ee362bc.02c56e"]]},{"id":"9355ac64.00191","type":"function","name":"Execute Telegram command","func":"/*\nWe wait the following payload's attributes:\n - recipient (mandatory) : Telegram recipient's ID \n - command (optional) : Telegram's command (default = sendMessage)\n - text (optional) : Text to send (default = none)\n - reply_markup (optional) : Cf. Telegram's doc (default = none)\n*/\n\n//\nvar BotSecretToken = context.global.telegram.token ;\n//\nvar inPayload = msg.payload ; \nvar command = \"sendMessage\" ;\n\nif( inPayload.command !== undefined)\n {\n command = inPayload.command ;\n }\n\nmsg.headers = { \"Content-Type\" : \"application/json\" } ;\nmsg.url = \"https://api.telegram.org/bot\" + BotSecretToken + \"/\" + command ;\nmsg.payload = {} ;\nmsg.payload.chat_id = inPayload.recipient ;\n\nif(inPayload.text)\n msg.payload.text = inPayload.text ;\nelse\n msg.payload.text = \"-\" ;\n\nif(inPayload.reply_markup)\n msg.payload.reply_markup = inPayload.reply_markup ;\n\nreturn msg;\n","outputs":1,"noerr":0,"x":450.66766357421875,"y":1043.4319829940796,"z":"293ee063.12984","wires":[["5e2c42d1.2ab5fc"]]},{"id":"5e2c42d1.2ab5fc","type":"json","name":"","x":669.4985542297363,"y":1041.705563545227,"z":"293ee063.12984","wires":[["5d7e9cf7.a4f674"]]},{"id":"2ee362bc.02c56e","type":"json","name":"","x":237.19243621826172,"y":1040.995873451233,"z":"293ee063.12984","wires":[["9355ac64.00191"]]},{"id":"f48987b4.744e28","type":"info","name":"Internal commands implementation","info":"","icon":"comment.png","langs":[{"key":"en-US","title":"Internal commands implementation","body":"","isDefault":true}],"currentLanguage":"fr-FR","x":210.0495376586914,"y":992.8530216217041,"z":"293ee063.12984","wires":[]},{"id":"1b33db31.072f05","type":"info","name":"Bot independant functions","info":"","icon":"comment.png","langs":[{"key":"en-US","title":"Bot independant functions","body":"","isDefault":true}],"currentLanguage":"fr-FR","x":202.54853057861328,"y":433.62622356414795,"z":"293ee063.12984","wires":[]},{"id":"950eb51b.8b14b8","type":"mqtt in","name":"","topic":"bot/nocommand","broker":"MQTT.Localhost","x":156.16500854492188,"y":926.7776880264282,"z":"293ee063.12984","wires":[["d7e5dfb9.1955b"]]},{"id":"d7e5dfb9.1955b","type":"json","name":"","x":336.3613586425781,"y":926.9498109817505,"z":"293ee063.12984","wires":[["2ddad3d1.26944c"]]},{"id":"b981faec.fb4738","type":"function","name":"Set Globals","func":"context.global.telegram = {} ;\ncontext.global.telegram.token = \"Enter your own token\" ;\n\ncontext.global.jedi = {} ;\ncontext.global.jedi.token = context.global.telegram.token.substr(10, 20) ;\n\n\ncontext.global.database = {} ;\ncontext.global.database.name = \"TSA_trial_bot\" ;\n\nreturn msg;","outputs":1,"noerr":0,"x":360.38092041015625,"y":81.99999999999999,"z":"293ee063.12984","wires":[[]]},{"id":"682bb8cc.b677f8","type":"info","name":"Gloabals settings","info":"","icon":"comment.png","langs":[{"key":"en-US","title":"Gloabals settings","body":"","isDefault":true}],"currentLanguage":"fr-FR","x":234.38092041015625,"y":20,"z":"293ee063.12984","wires":[]},{"id":"1e768163.7b7b3f","type":"inject","name":"","topic":"","payload":"","payloadType":"none","repeat":"","crontab":"","once":false,"x":211.38092041015625,"y":244.00000286102295,"z":"293ee063.12984","wires":[["52d5085a.490ec8"]]},{"id":"52d5085a.490ec8","type":"function","name":"setWebhook","func":"\n// Note: we consider here that the name of the topic used by Jedi is this sub-part of the token:\nvar topic = context.global.jedi.token ;\n\nmsg.payload = \"-F \\\"url=https://api.timesquair.io/api/jedi/bot\" +\n topic + \"\\\"\" + \" \" +\n \"\\\"https://api.telegram.org/bot\" + context.global.telegram.token + \"/setWebhook\\\"\" ;\n\nreturn(msg) ;\n","outputs":1,"noerr":0,"x":351.3808898925781,"y":244.00000286102295,"z":"293ee063.12984","wires":[["45e11bab.314564"]]},{"id":"45e11bab.314564","type":"exec","command":"curl","addpay":true,"append":"","useSpawn":"","name":"","x":488.6031494140625,"y":244.22220134735107,"z":"293ee063.12984","wires":[["6afdf80f.cf6f68"],[],["6afdf80f.cf6f68"]]},{"id":"6afdf80f.cf6f68","type":"display","active":true,"x":670.3808441162109,"y":246.99997997283936,"z":"293ee063.12984","wires":[]},{"id":"1f6fa5ec.6fce6a","type":"mqtt in","name":"","topic":"bot/display","broker":"MQTT.Localhost","x":142.9150161743164,"y":671.9898862838745,"z":"293ee063.12984","wires":[["41f07ef6.83c57"]]},{"id":"41f07ef6.83c57","type":"json","name":"","x":275.9149932861328,"y":671.9898767471313,"z":"293ee063.12984","wires":[["315d05e1.8ca7da"]]},{"id":"315d05e1.8ca7da","type":"function","name":"Save inPayload","func":"msg.inPayload = msg.payload ; \n\nmsg.payload = msg.payload.text ;\n\nreturn msg;","outputs":1,"noerr":0,"x":423.9149932861328,"y":670.9898767471313,"z":"293ee063.12984","wires":[["c3862bc6.231258","1bca5108.13bcdf"]]},{"id":"c3862bc6.231258","type":"subflow:99f30803.a91d48","name":"","x":606.9150238037109,"y":638.9898328781128,"z":"293ee063.12984","wires":[]},{"id":"1bca5108.13bcdf","type":"function","name":"Add feedback","func":"msg.payload = \"the following message has been displayed on TimeSquAir: \" + msg.payload ;\n\nreturn msg;","outputs":1,"noerr":0,"x":601.9150238037109,"y":698.9898557662964,"z":"293ee063.12984","wires":[["f13be8e5.987dd8"]]},{"id":"2ddad3d1.26944c","type":"set","property":"payload","value":"Not a command","name":"","x":504.6649932861328,"y":926.4899091720581,"z":"293ee063.12984","wires":[["271a0551.9a321a"]]},{"id":"1782d23b.8d277e","type":"mqtt in","name":"","topic":"bot/radio_on","broker":"MQTT.Localhost","x":149.9150161743164,"y":510.9898862838745,"z":"293ee063.12984","wires":[["af7eab74.e14f38"]]},{"id":"8499c49.fb6dd38","type":"function","name":"Send payload","func":"\nvar text = msg.payload ; \n\nmsg.payload = {} ;\nif(msg.inPayload !== undefined)\n msg.payload.recipient = msg.inPayload.sender.id ;\nelse if(msg.sender !== undefined)\n msg.payload.recipient = msg.sender.id ;\nelse\n msg.payload.recipient = context.global.chat_id ;\n\nmsg.payload.text = text ;\n\nreturn msg;","outputs":1,"noerr":0,"x":330.29759216308594,"y":823.6665449142456,"z":"293ee063.12984","wires":[["a52e9a70.e53f58"]]},{"id":"a52e9a70.e53f58","type":"json","name":"","x":468.2975311279297,"y":823.6664838790894,"z":"293ee063.12984","wires":[["26e30f09.7f4ae"]]},{"id":"26e30f09.7f4ae","type":"mqtt out","name":"","topic":"bot/command","qos":"","retain":"","broker":"MQTT.Localhost","x":613.2975921630859,"y":823.6665449142456,"z":"293ee063.12984","wires":[]},{"id":"271a0551.9a321a","type":"mqtt out","name":"","topic":"bot/feedback","qos":"","retain":"","broker":"MQTT.Localhost","x":701.0475311279297,"y":926.1666669845581,"z":"293ee063.12984","wires":[]},{"id":"f13be8e5.987dd8","type":"mqtt out","name":"","topic":"bot/feedback","qos":"","retain":"","broker":"MQTT.Localhost","x":784.7975311279297,"y":698.4166746139526,"z":"293ee063.12984","wires":[]},{"id":"d90a041c.e45e68","type":"mqtt in","name":"","topic":"bot/feedback","broker":"MQTT.Localhost","x":160.29759216308594,"y":823.6665449142456,"z":"293ee063.12984","wires":[["8499c49.fb6dd38"]]},{"id":"1e571074.7304d","type":"mqtt in","name":"","topic":"bot/radio_off","broker":"MQTT.Localhost","x":149.79757690429688,"y":567.1666746139526,"z":"293ee063.12984","wires":[["3b2bc0c3.68b42"]]},{"id":"3e869194.217c8e","type":"Open","x":433.7141571044922,"y":509.3333387374878,"z":"293ee063.12984","wires":[["2d47f09f.872a2"]]},{"id":"3b2bc0c3.68b42","type":"Close","x":357.2141571044922,"y":562.3333387374878,"z":"293ee063.12984","wires":[["2d47f09f.872a2"]]},{"id":"2d47f09f.872a2","type":"sound","name":"Radio Phenix","sound":"http://live.radio-campus.org:8000/caen.mp3","x":608.7141571044922,"y":531.3333387374878,"z":"293ee063.12984","wires":[[],[]]},{"id":"af7eab74.e14f38","type":"function","name":"","func":"msg.payload = null;\n\nreturn msg;","outputs":1,"noerr":0,"x":288.71421813964844,"y":510.33327770233154,"z":"293ee063.12984","wires":[["3e869194.217c8e"]]},{"id":"2a851773.081fd8","type":"mqtt out","name":"","topic":"","qos":"0","retain":"","broker":"MQTT.Localhost","x":1001.7142333984375,"y":415.3333158493042,"z":"293ee063.12984","wires":[]},{"id":"f42a08fa.6d50f8","type":"mqtt out","name":"","topic":"","qos":"0","retain":"","broker":"MQTT.Localhost","x":999.9148712158203,"y":464.98991680145264,"z":"293ee063.12984","wires":[]},{"id":"82824e96.8e8d8","type":"go","name":"","x":215.15237426757812,"y":167.34286785125732,"z":"293ee063.12984","wires":[["36a00eb8.3d1e52"]]},{"id":"36a00eb8.3d1e52","type":"function","name":"","func":"msg.payload = \"jedi/request/bot\" +context.global.jedi.token ;\nreturn msg;","outputs":1,"noerr":0,"x":373.1523742675781,"y":167.34286785125732,"z":"293ee063.12984","wires":[["53eae1c9.a6574"]]},{"id":"53eae1c9.a6574","type":"display","active":true,"x":539.1523742675781,"y":166.34286785125732,"z":"293ee063.12984","wires":[]},{"id":"3467422d.d3f9ee","type":"info","name":"Click \"Go\" to get the MQTT router topic in the Debug panel","info":"","icon":"comment.png","langs":[{"key":"en-US","title":"Click \"Go\" to get the MQTT router topic in the Debug panel","body":"","isDefault":true}],"currentLanguage":"fr-FR","x":269.0095520019531,"y":128.4857177734375,"z":"293ee063.12984","wires":[]},{"id":"d8e4f1e3.5c42d","type":"info","name":"Launch this flow to link automatically the Telegram commands from your BOT to a MQTT service","info":"","icon":"comment.png","langs":[{"key":"en-US","title":"Launch this flow to link automatically the Telegram commands from your BOT to a MQTT service","body":"","isDefault":true}],"currentLanguage":"fr-FR","x":381.38092041015625,"y":207,"z":"293ee063.12984","wires":[]}]