Freebox os Dashboard - Tokens
This flow is token part only. It is needed to use all the other ones. This flow is only a part from Freebox os dashboard, please go to the collection
Freebox os dashboard
Node-RED flows to manage your Freebox with a Raspberry Pi
Language
French only
Install
Node RED installation :
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
Palette needed :
node-red-contrib-crypto-js-dynamic
node-red-dashboard
Command line installation :
cd ~/.nodered
npm install node-red-contrib-crypto-js-dynamic
npm install node-red-dashboard
Features
- Reboot button
- Uplink and Downlink gauge speed
- Upload and Download chart
- xDSL gain chart
- xDSL protocol and modulation
- Uptime
- Synchronisation and connection state
- IPv4 and IPv6 display
- Temperatures and fan speed
- DHCP main informations
- Static and dynamic IP - Host tables
[{"id":"902ff135d5a095e1","type":"tab","label":"Token","disabled":false,"info":""},{"id":"cb1dfcde.fd153","type":"function","z":"902ff135d5a095e1","name":"set body","func":"msg.headers = 'Content-Type:application/json';\nmsg.payload = {\n \"app_id\": \"nodered.rpi\",\n \"app_name\": \"Node red\", \n \"app_version\": \"0.0.1\",\n \"device_name\": \"Raspberry Pi\"\n};\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":660,"y":20,"wires":[["e44209e7.752698"]]},{"id":"dcf34aab.218928","type":"inject","z":"902ff135d5a095e1","name":"first connexion","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"","payloadType":"date","x":470,"y":20,"wires":[["cb1dfcde.fd153"]]},{"id":"e44209e7.752698","type":"http request","z":"902ff135d5a095e1","name":"post to freebox","method":"POST","ret":"obj","paytoqs":"ignore","url":"http://mafreebox.freebox.fr/api/v8/login/authorize/","tls":"","persist":false,"proxy":"","authType":"","x":820,"y":20,"wires":[["c9897172daf23abc","bbf53c77c70b1ba7"]]},{"id":"ee306582.f0dde8","type":"debug","z":"902ff135d5a095e1","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1430,"y":20,"wires":[]},{"id":"c92c484a90bbe1f3","type":"file","z":"902ff135d5a095e1","name":"","filename":"/home/pi/freebox/apitoken.txt","appendNewline":false,"createDir":true,"overwriteFile":"true","encoding":"none","x":1200,"y":20,"wires":[["ee306582.f0dde8"]]},{"id":"c9897172daf23abc","type":"function","z":"902ff135d5a095e1","name":"filter token","func":"msg.payload = msg.payload.result.app_token\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":990,"y":20,"wires":[["c92c484a90bbe1f3"]]},{"id":"bbf53c77c70b1ba7","type":"function","z":"902ff135d5a095e1","name":"filter track ID","func":"msg.payload = msg.payload.result.track_id\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":990,"y":60,"wires":[["80b053ea9ef93baf"]]},{"id":"80b053ea9ef93baf","type":"file","z":"902ff135d5a095e1","name":"","filename":"/home/pi/freebox/apitrackid.txt","appendNewline":false,"createDir":true,"overwriteFile":"true","encoding":"none","x":1210,"y":60,"wires":[["4be31c44de82f461"]]},{"id":"4a055755d6b2eaa8","type":"catch","z":"902ff135d5a095e1","name":"no apitoken","scope":["402b8b42a7d64b59","0ad7876a2452d618"],"uncaught":false,"x":650,"y":360,"wires":[["f45c1da4d0d85d32","ce941eb03383db62"]]},{"id":"b0ac3d7152bf203b","type":"inject","z":"902ff135d5a095e1","name":"check track id","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payloadType":"date","x":110,"y":280,"wires":[["402b8b42a7d64b59"]]},{"id":"b553624c9c8361f9","type":"http request","z":"902ff135d5a095e1","name":"get status from freebox","method":"GET","ret":"obj","paytoqs":"body","url":"http://mafreebox.freebox.fr/api/v8/login/authorize/{{{payload}}}","tls":"","persist":false,"proxy":"","authType":"","x":620,"y":280,"wires":[["45452887c22a5c04"]]},{"id":"402b8b42a7d64b59","type":"file in","z":"902ff135d5a095e1","name":"","filename":"/home/pi/freebox/apitrackid.txt","format":"utf8","chunk":false,"sendError":false,"encoding":"none","allProps":false,"x":370,"y":280,"wires":[["b553624c9c8361f9"]]},{"id":"633e6fb0771043fb","type":"debug","z":"902ff135d5a095e1","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":990,"y":240,"wires":[]},{"id":"c50e0e24267eff7f","type":"switch","z":"902ff135d5a095e1","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"pending","vt":"str"},{"t":"eq","v":"granted","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":3,"x":1010,"y":300,"wires":[["cee26c66fd145480","783e6dceb348d90c"],["8c45e471876aea13"],["132d24b15421b896","e29d311342a7f748"]]},{"id":"79af2bd7ba47fac0","type":"exec","z":"902ff135d5a095e1","command":"rm /home/pi/freebox/*","addpay":"","append":"","useSpawn":"false","timer":"","winHide":false,"oldrc":false,"name":"","x":300,"y":180,"wires":[["9147000e98cadfa4","528840ad0e284cc4"],[],[]]},{"id":"5383067cddb63321","type":"inject","z":"902ff135d5a095e1","name":"delete key","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payloadType":"date","x":100,"y":180,"wires":[["79af2bd7ba47fac0"]]},{"id":"9147000e98cadfa4","type":"debug","z":"902ff135d5a095e1","name":"token deleted","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"\"token deleted\"","targetType":"jsonata","statusVal":"","statusType":"auto","x":520,"y":160,"wires":[]},{"id":"cee26c66fd145480","type":"delay","z":"902ff135d5a095e1","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"x":1200,"y":260,"wires":[["4668879010213b1f"]]},{"id":"2bd5df3bd28288d0","type":"link in","z":"902ff135d5a095e1","name":"check track ID","links":["4668879010213b1f","4be31c44de82f461","e1d2f2d6bee9570f"],"x":155,"y":320,"wires":[["402b8b42a7d64b59"]]},{"id":"4668879010213b1f","type":"link out","z":"902ff135d5a095e1","name":"track ID pending","links":["2bd5df3bd28288d0"],"x":1295,"y":260,"wires":[]},{"id":"0bf097188c7c3e72","type":"link in","z":"902ff135d5a095e1","name":"delete key","links":["132d24b15421b896"],"x":135,"y":220,"wires":[["79af2bd7ba47fac0"]]},{"id":"132d24b15421b896","type":"link out","z":"902ff135d5a095e1","name":"track ID timeout","links":["0bf097188c7c3e72"],"x":1095,"y":320,"wires":[]},{"id":"4be31c44de82f461","type":"link out","z":"902ff135d5a095e1","name":"new key","links":["2bd5df3bd28288d0"],"x":1375,"y":60,"wires":[]},{"id":"ce941eb03383db62","type":"debug","z":"902ff135d5a095e1","name":"no token","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"\"no token, please go to first connexion\"","targetType":"jsonata","statusVal":"","statusType":"auto","x":820,"y":400,"wires":[]},{"id":"0ad7876a2452d618","type":"file in","z":"902ff135d5a095e1","name":"","filename":"/home/pi/freebox/apitoken.txt","format":"utf8","chunk":false,"sendError":false,"encoding":"none","allProps":false,"x":360,"y":380,"wires":[["e1d2f2d6bee9570f"]]},{"id":"f77220bbb0a168a6","type":"inject","z":"902ff135d5a095e1","name":"is token existing ?","props":[{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":"","topic":"","payloadType":"date","x":130,"y":380,"wires":[["0ad7876a2452d618"]]},{"id":"e1d2f2d6bee9570f","type":"link out","z":"902ff135d5a095e1","name":"check track ID","links":["2bd5df3bd28288d0"],"x":515,"y":380,"wires":[]},{"id":"aa2323fd4a42c8e8","type":"ui_text","z":"902ff135d5a095e1","group":"fd862af735b45aa1","order":1,"width":0,"height":0,"name":"","label":"status","format":"{{msg.payload}}","layout":"row-spread","x":1010,"y":360,"wires":[]},{"id":"f45c1da4d0d85d32","type":"function","z":"902ff135d5a095e1","name":"","func":"msg.payload = \"No token.\";\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":820,"y":360,"wires":[["aa2323fd4a42c8e8"]]},{"id":"45452887c22a5c04","type":"function","z":"902ff135d5a095e1","name":"filter status","func":"msg.payload = msg.payload.result.status\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":810,"y":280,"wires":[["c50e0e24267eff7f","aa2323fd4a42c8e8","633e6fb0771043fb"]]},{"id":"d2dfba58bfe5de5d","type":"change","z":"902ff135d5a095e1","name":"","rules":[{"t":"set","p":"enabled","pt":"msg","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":280,"y":60,"wires":[["3783715ea1d59a7a"]]},{"id":"3783715ea1d59a7a","type":"ui_button","z":"902ff135d5a095e1","name":"","group":"fd862af735b45aa1","order":0,"width":0,"height":0,"passthru":false,"label":"New Token","tooltip":"","color":"","bgcolor":"","icon":"","payload":"","payloadType":"str","topic":"topic","topicType":"msg","x":470,"y":60,"wires":[["cb1dfcde.fd153"]]},{"id":"8c45e471876aea13","type":"link out","z":"902ff135d5a095e1","name":"access granted","links":["7dae05e4bd94c68b","433c6746eb7752d1"],"x":1155,"y":300,"wires":[]},{"id":"7dae05e4bd94c68b","type":"link in","z":"902ff135d5a095e1","name":"new token disable","links":["8c45e471876aea13"],"x":155,"y":60,"wires":[["d2dfba58bfe5de5d"]]},{"id":"2eb2ae5bd5082b40","type":"inject","z":"902ff135d5a095e1","name":"enable button","props":[{"p":"enabled","v":"true","vt":"bool"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":110,"y":100,"wires":[["6c15e834a28c52ba"]]},{"id":"6c15e834a28c52ba","type":"change","z":"902ff135d5a095e1","name":"","rules":[{"t":"set","p":"enabled","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":280,"y":100,"wires":[["3783715ea1d59a7a"]]},{"id":"783e6dceb348d90c","type":"debug","z":"902ff135d5a095e1","name":"message","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"\"please go to your freebox to accept access\"","targetType":"jsonata","statusVal":"","statusType":"auto","x":1200,"y":220,"wires":[]},{"id":"330b701296516180","type":"http request","z":"902ff135d5a095e1","name":"get challenge","method":"GET","ret":"obj","paytoqs":"ignore","url":"http://mafreebox.freebox.fr/api/v8/login/","tls":"","persist":false,"proxy":"","authType":"","x":350,"y":500,"wires":[["3896f960c8b9dfd4"]]},{"id":"b216fbbdb944f669","type":"inject","z":"902ff135d5a095e1","name":"get session_token","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payloadType":"date","x":130,"y":500,"wires":[["330b701296516180"]]},{"id":"53e2796d5f8f6634","type":"http request","z":"902ff135d5a095e1","name":"get session token","method":"POST","ret":"obj","paytoqs":"ignore","url":"http://mafreebox.freebox.fr/api/v8/login/session","tls":"","persist":false,"proxy":"","authType":"","x":1320,"y":500,"wires":[["1ffbcf8f598fc5d0","398edcc5b5f101a7"]]},{"id":"1ffbcf8f598fc5d0","type":"debug","z":"902ff135d5a095e1","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload.result.session_token","targetType":"msg","statusVal":"","statusType":"auto","x":1590,"y":540,"wires":[]},{"id":"5fe255758b94bed8","type":"debug","z":"902ff135d5a095e1","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":840,"y":540,"wires":[]},{"id":"3896f960c8b9dfd4","type":"function","z":"902ff135d5a095e1","name":"challenge","func":"msg.challenge = msg.payload.result.challenge;\nmsg.salt = msg.payload.result.password_salt;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":530,"y":500,"wires":[["1fc1be830456f3ce"]]},{"id":"d9b5da9938eb8436","type":"function","z":"902ff135d5a095e1","name":"token, key","func":"msg.headers = 'Content-Type:application/json';\nchallenge = msg.challenge;\nsalt = msg.salt;\napitoken = msg.payload;\nmsg.payload = challenge;\nmsg.secrectkey = apitoken;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":850,"y":500,"wires":[["e86962216db3bb51","e5d4aa4e54466018"]]},{"id":"1fc1be830456f3ce","type":"file in","z":"902ff135d5a095e1","name":"get apitoken","filename":"/home/pi/freebox/apitoken.txt","format":"utf8","chunk":false,"sendError":false,"encoding":"none","allProps":false,"x":680,"y":500,"wires":[["5fe255758b94bed8","d9b5da9938eb8436"]]},{"id":"775eab353f01562a","type":"function","z":"902ff135d5a095e1","name":"set body","func":"msg.headers = 'Content-Type:application/json';\npassword = msg.payload;\nmsg.payload = {\n \"app_id\": \"nodered.rpi\"\n};\nmsg.payload['password'] = password;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1150,"y":500,"wires":[["53e2796d5f8f6634"]]},{"id":"6802c4e2dd7751f9","type":"debug","z":"902ff135d5a095e1","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1160,"y":460,"wires":[]},{"id":"e86962216db3bb51","type":"debug","z":"902ff135d5a095e1","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"secrectkey","targetType":"msg","statusVal":"","statusType":"auto","x":1030,"y":540,"wires":[]},{"id":"e5d4aa4e54466018","type":"hmac","z":"902ff135d5a095e1","name":"","algorithm":"HmacSHA1","key":"null (see https://github.com/vivekrp/node-red-contrib-crypto-js-dynamic/blob/main/cryptojs/hmac.js)","x":1000,"y":500,"wires":[["6802c4e2dd7751f9","775eab353f01562a"]]},{"id":"7cda904dd912b8f4","type":"debug","z":"902ff135d5a095e1","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1660,"y":500,"wires":[]},{"id":"045310221337d147","type":"inject","z":"902ff135d5a095e1","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"session_token","payloadType":"global","x":140,"y":560,"wires":[["bf204558ef10526e"]]},{"id":"bf204558ef10526e","type":"debug","z":"902ff135d5a095e1","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":330,"y":560,"wires":[]},{"id":"398edcc5b5f101a7","type":"function","z":"902ff135d5a095e1","name":"set global","func":"msg.payload = msg.payload.result.session_token;\nglobal.set(\"session_token\",msg.payload);\nmsg.payload = global.get(\"session_token\");\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1510,"y":500,"wires":[["7cda904dd912b8f4"]]},{"id":"433c6746eb7752d1","type":"link in","z":"902ff135d5a095e1","name":"get session_token","links":["8c45e471876aea13","c55d039534b287a9"],"x":195,"y":460,"wires":[["330b701296516180"]]},{"id":"53ad7a99c32ea714","type":"http request","z":"902ff135d5a095e1","name":"","method":"POST","ret":"obj","paytoqs":"ignore","url":"http://mafreebox.freebox.fr/api/v8/login/logout/","tls":"","persist":false,"proxy":"","authType":"","x":530,"y":620,"wires":[["4b8a11aa947fbe23","1edcf236b7a5559d"]]},{"id":"88c3dca5560eb65a","type":"inject","z":"902ff135d5a095e1","name":"delete session_token","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payloadType":"date","x":140,"y":620,"wires":[["98e76f3448c22086"]]},{"id":"4b8a11aa947fbe23","type":"debug","z":"902ff135d5a095e1","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":730,"y":620,"wires":[]},{"id":"98e76f3448c22086","type":"function","z":"902ff135d5a095e1","name":"set body","func":"msg.headers = {\n 'Content-Type':'application/json'\n \n};\nmsg.headers['X-Fbx-App-Auth'] = global.get(\"session_token\");\nmsg.payload = {\n};\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"msg.headers = {\n 'Content-Type':'application/json'\n \n};\nmsg.headers['X-Fbx-App-Auth'] = global.get(\"session_token\");\nmsg.payload = {\n};\nreturn msg;","libs":[],"x":340,"y":620,"wires":[["53ad7a99c32ea714"]]},{"id":"55644bfee0f03883","type":"link in","z":"902ff135d5a095e1","name":"delete session key","links":["528840ad0e284cc4"],"x":195,"y":660,"wires":[["98e76f3448c22086"]]},{"id":"528840ad0e284cc4","type":"link out","z":"902ff135d5a095e1","name":"apikey deleted","links":["55644bfee0f03883"],"x":455,"y":200,"wires":[]},{"id":"1edcf236b7a5559d","type":"change","z":"902ff135d5a095e1","name":"","rules":[{"t":"delete","p":"session_token","pt":"global"}],"action":"","property":"","from":"","to":"","reg":false,"x":780,"y":660,"wires":[[]]},{"id":"37179428002096c8","type":"link in","z":"902ff135d5a095e1","name":"disconnected ?","links":["5db676517e50f886","ce7055a089f5a123","ab71f09f658799c4","ac663d7015ac34d9","378cf04502f140f7","9c058d3835be1ce4","348f1fd0133eef3c","1bc6370c3c1c88f6","3710a8bbc6ca0c37"],"x":35,"y":420,"wires":[["179be6f8f6677530"]]},{"id":"179be6f8f6677530","type":"switch","z":"902ff135d5a095e1","name":"disconnected ?","property":"payload.msg","propertyType":"msg","rules":[{"t":"eq","v":"Vous devez vous connecter pour accéder à cette fonction","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":140,"y":420,"wires":[["f357cda7bd73b171"]]},{"id":"845850beab243563","type":"ui_toast","z":"902ff135d5a095e1","position":"dialog","displayTime":"3","highlight":"","sendall":true,"outputs":1,"ok":"OK","cancel":"Annuler","raw":false,"topic":"Demander un nouveau Token","name":"","x":1470,"y":340,"wires":[["d03860648f73f459"]]},{"id":"e29d311342a7f748","type":"change","z":"902ff135d5a095e1","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"La freebox n'a pas autorisé l'application. Cliquez sur OK, et acceptez la demande sur affichée sur l'écran de la Freebox.","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1300,"y":340,"wires":[["845850beab243563"]]},{"id":"d03860648f73f459","type":"switch","z":"902ff135d5a095e1","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"OK","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":1610,"y":340,"wires":[["68697e2e1a746549"]]},{"id":"68697e2e1a746549","type":"link out","z":"902ff135d5a095e1","name":"new token","links":["5e6bbf6de05ac935"],"x":1695,"y":340,"wires":[]},{"id":"5e6bbf6de05ac935","type":"link in","z":"902ff135d5a095e1","name":"New Token","links":["68697e2e1a746549"],"x":535,"y":100,"wires":[["cb1dfcde.fd153"]]},{"id":"4ab9d5f922c5db0b","type":"catch","z":"902ff135d5a095e1","name":"","scope":["1fc1be830456f3ce"],"uncaught":false,"x":1130,"y":360,"wires":[["e29d311342a7f748"]]},{"id":"f357cda7bd73b171","type":"change","z":"902ff135d5a095e1","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"","tot":"date"}],"action":"","property":"","from":"","to":"","reg":false,"x":360,"y":420,"wires":[["5025e879b67e61db"]]},{"id":"5025e879b67e61db","type":"function","z":"902ff135d5a095e1","name":"no spam","func":"dialog_delay = flow.get(\"dialog_delay\");\nif(dialog_delay){\n if( msg.payload-dialog_delay < 20000){\n return null;\n}}\nflow.set(\"dialog_delay\",msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":520,"y":420,"wires":[["330b701296516180"]]},{"id":"dbb2327e977fbca7","type":"ui_spacer","z":"902ff135d5a095e1","name":"spacer","group":"8641f24d830c936b","order":2,"width":1,"height":1},{"id":"fd862af735b45aa1","type":"ui_group","name":"New Token","tab":"26293d9a08da82d7","order":2,"disp":true,"width":"6","collapse":false},{"id":"8641f24d830c936b","type":"ui_group","name":"Températures","tab":"5c0ab36281749b90","order":6,"disp":true,"width":"7","collapse":false},{"id":"26293d9a08da82d7","type":"ui_tab","name":"Config","icon":"settings","order":3,"disabled":false,"hidden":false},{"id":"5c0ab36281749b90","type":"ui_tab","name":"Home","icon":"network_check","order":1,"disabled":false,"hidden":false}]