{"id":55,"date":"2016-12-03T23:52:50","date_gmt":"2016-12-03T22:52:50","guid":{"rendered":"http:\/\/www.blog.serveurduke.fr\/?p=55"},"modified":"2018-06-04T13:42:45","modified_gmt":"2018-06-04T11:42:45","slug":"arduino-yun","status":"publish","type":"post","link":"http:\/\/www.blog.serveurduke.fr\/index.php\/2016\/12\/03\/arduino-yun\/","title":{"rendered":"Arduino Yun PA WIFI"},"content":{"rendered":"<p>Un point d&rsquo;acc\u00e8s avec code wpa2 tournant!<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-56\" src=\"http:\/\/www.blog.serveurduke.fr\/wp-content\/uploads\/2016\/12\/IMG_5006-300x132.jpg\" alt=\"img_5006\" width=\"352\" height=\"155\" srcset=\"http:\/\/www.blog.serveurduke.fr\/wp-content\/uploads\/2016\/12\/IMG_5006-300x132.jpg 300w, http:\/\/www.blog.serveurduke.fr\/wp-content\/uploads\/2016\/12\/IMG_5006-768x337.jpg 768w, http:\/\/www.blog.serveurduke.fr\/wp-content\/uploads\/2016\/12\/IMG_5006.jpg 800w\" sizes=\"(max-width: 352px) 100vw, 352px\" \/><\/p>\n<p>Quoi qu&rsquo;est-ce ?<\/p>\n<p>C&rsquo;est une carte Arduino doubl\u00e9e d&rsquo;un Linux, d&rsquo;un module Ethernet et Wifi&#8230; besoin de rien d&rsquo;autre !!!<\/p>\n<p>Et on peut faire quoi avec \u00e7a ? Beaucoup de choses moi j&rsquo;ai cr\u00e9\u00e9e un point acc\u00e8s wifi temporaire.<\/p>\n<p>Branch\u00e9 sur le r\u00e9seau Ethernet de l&rsquo;\u00e9tablissement, le boitier g\u00e9n\u00e8re automatiquement une nouvelle cl\u00e9 Wifi toute les heures la cl\u00e9 s&rsquo;affiche sur un \u00e9cran lcd. \u00a0Id\u00e9ale pour le CDI ou bien en ISN ou TPE pour permettre un acc\u00e8s au wifi aux \u00e9l\u00e8ves.<\/p>\n<p><strong>La cl\u00e9 wifi change automatiquement toute les heures.<\/strong><\/p>\n<p>&nbsp;<\/p>\n<h2><strong>1\/ LE MATOS \u00a090\u20ac environ\u00a0en France (moins cher chez nos amis chinois).<\/strong><\/h2>\n<div><a href=\"http:\/\/www.gotronic.fr\/art-carte-arduino-yun-20667.htm\">Carte Arduino YUN\u00a0<\/a><\/div>\n<div>difficile \u00e0 trouver on trouve l&rsquo;\u00e9quivalent chez robotshop : Carte whatsnext Turquoise<\/div>\n<div><a href=\"http:\/\/www.gotronic.fr\/art-afficheur-lcd-2x16-i2c-dfr0063-19309.htm\">Afficheur LDC I2C<\/a><\/div>\n<div>2 boutons poussoirs<br \/>\nPr\u00e9voir l&rsquo;alimentation avec un cordon USB\/Micro USB\u00a0 ou transformateur MicroUsb (ceux des telephones portables).<\/div>\n<div><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-65\" src=\"http:\/\/www.blog.serveurduke.fr\/wp-content\/uploads\/2016\/12\/YUN-1.png\" alt=\"yun\" width=\"122\" height=\"93\" \/><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-66\" src=\"http:\/\/www.blog.serveurduke.fr\/wp-content\/uploads\/2016\/12\/IMG_5031-300x137.jpg\" alt=\"img_5031\" width=\"114\" height=\"52\" srcset=\"http:\/\/www.blog.serveurduke.fr\/wp-content\/uploads\/2016\/12\/IMG_5031-300x137.jpg 300w, http:\/\/www.blog.serveurduke.fr\/wp-content\/uploads\/2016\/12\/IMG_5031.jpg 400w\" sizes=\"(max-width: 114px) 100vw, 114px\" \/><\/div>\n<div><\/div>\n<h2>2\/ CONFIGURATION<\/h2>\n<div><\/div>\n<div>Il faut configurer la carte en mode Bridge (pont).<br \/>\nPour cela brancher la carte sur un ordinateur a l&rsquo;aide du cordon USB. taper\u00a0<a href=\"http:\/\/linino.local\/\" target=\"_blank\" rel=\"noopener\">http:\/\/linino.local<\/a>\u00a0 ou 192.168.240.1 (10s sur le bouton reset) (A v\u00e9rifier selon le model de la carte)<br \/>\nMot de passe\u00a0doghunter.<\/div>\n<div>Pour les cartes compatibles\u00a0\u00a0<strong>WhatsNext TURQUOISE le mot de passe est : whatsnext<\/strong><\/div>\n<div>le menu de configuration est dans le menu whatsnext\/ luci\u00a0 \u00a0root\/whatsnext&#8230;..<\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-67 aligncenter\" src=\"http:\/\/www.blog.serveurduke.fr\/wp-content\/uploads\/2016\/12\/LININO-300x200.png\" alt=\"linino\" width=\"300\" height=\"200\" srcset=\"http:\/\/www.blog.serveurduke.fr\/wp-content\/uploads\/2016\/12\/LININO-300x200.png 300w, http:\/\/www.blog.serveurduke.fr\/wp-content\/uploads\/2016\/12\/LININO-768x512.png 768w, http:\/\/www.blog.serveurduke.fr\/wp-content\/uploads\/2016\/12\/LININO.png 783w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Cliquer advanced configuration panel<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-69 aligncenter\" src=\"http:\/\/www.blog.serveurduke.fr\/wp-content\/uploads\/2016\/12\/Capture1-300x202.png\" alt=\"capture1\" width=\"300\" height=\"202\" srcset=\"http:\/\/www.blog.serveurduke.fr\/wp-content\/uploads\/2016\/12\/Capture1-300x202.png 300w, http:\/\/www.blog.serveurduke.fr\/wp-content\/uploads\/2016\/12\/Capture1-768x517.png 768w, http:\/\/www.blog.serveurduke.fr\/wp-content\/uploads\/2016\/12\/Capture1.png 779w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Puis de configurer en Bridge.\u00a0PENSEZ A SAUVER<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-70 aligncenter\" src=\"http:\/\/www.blog.serveurduke.fr\/wp-content\/uploads\/2016\/12\/Capture2-300x173.png\" alt=\"capture2\" width=\"642\" height=\"370\" srcset=\"http:\/\/www.blog.serveurduke.fr\/wp-content\/uploads\/2016\/12\/Capture2-300x173.png 300w, http:\/\/www.blog.serveurduke.fr\/wp-content\/uploads\/2016\/12\/Capture2-768x443.png 768w, http:\/\/www.blog.serveurduke.fr\/wp-content\/uploads\/2016\/12\/Capture2.png 978w\" sizes=\"(max-width: 642px) 100vw, 642px\" \/><\/p>\n<p>On suppose un DCHP sur le r\u00e9seau sinon il faudra r\u00e9gler les ip.<\/p>\n<p>&nbsp;<\/p>\n<h2>3\/ CABLAGE<\/h2>\n<p>Les 2 boutons poussoir peuvent fonctionner sans r\u00e9sistance pull-up,<br \/>\non active celle int\u00e9gr\u00e9 dans l&rsquo;arduino grace \u00e0 cette ligne de commande :\u00a0digitalWrite(5,HIGH);<br \/>\nL&rsquo;afficheur LDC est aliment\u00e9 en 5v.<br \/>\nL&rsquo;alimentation peut se faire par le cordon\u00a0 micro USB<span id=\"aaaa\"><\/span><br \/>\nPrendre un afficheur I2C il suffit ainsi de connecter SDA et SCL.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center;\">SCHEMA DE CABLAGE<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-71\" src=\"http:\/\/www.blog.serveurduke.fr\/wp-content\/uploads\/2016\/12\/fritz-300x174.jpg\" alt=\"fritz\" width=\"300\" height=\"174\" srcset=\"http:\/\/www.blog.serveurduke.fr\/wp-content\/uploads\/2016\/12\/fritz-300x174.jpg 300w, http:\/\/www.blog.serveurduke.fr\/wp-content\/uploads\/2016\/12\/fritz.jpg 640w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<h2 style=\"text-align: left;\">4\/ LE CODE<\/h2>\n<p style=\"text-align: left;\">Il faut le dernier IDE c&rsquo;est mieux, et les 2 librairies ci-dessous \u00e0 copier dans le dossier Arduino\/librairies.<\/p>\n<p style=\"text-align: left;\">IDE ARDUINO :<br \/>\n<a href=\"https:\/\/www.arduino.cc\/en\/Main\/Software#\" target=\"_blank\" rel=\"noopener\">Arduino Software<\/a><br \/>\nBiblioth\u00e9ques :<br \/>\n<a href=\"https:\/\/github.com\/fdebrabander\/Arduino-LiquidCrystal-I2C-library\" target=\"_blank\" rel=\"noopener\">LiquidCrystal<\/a><br \/>\n<a href=\"https:\/\/github.com\/arduino-libraries\/Bridge\" target=\"_blank\" rel=\"noopener\">Process.h<\/a><\/p>\n<p style=\"text-align: left;\">Voici le code :<\/p>\n<p>\/\/&#8212;&#8212;&#8212;&#8212;code Eric KELNER . AEFE Lyc\u00e9e FRANCAIS BAMAKO&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n\/\/&#8212;&#8212;&#8212;- \u00a0 Thomas CASTANET. AEFE Lyc\u00e9e FRANCAIS BAMAKO&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n#include &lt;LiquidCrystal_I2C.h&gt;<br \/>\n#include &lt;Process.h&gt;<\/p>\n<p>LiquidCrystal_I2C lcd(0x3F, 16, 2);\u00a0\u00a0 \/\/ VERIFIEZ L ADRESSE DE VOTRE LCD 0X3F OU 0X27 OU AUTRE&#8230;.<\/p>\n<p>const int buttonChangeclef = 6;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ reinitialise la cl\u00e9<br \/>\nconst int boutonAjoutTemps=5;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ ajoute du temps<\/p>\n<p>\/\/int etatButtonChangeclef = 0;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ \u00e9tat des boutons\/<br \/>\n\/\/int etatBoutonAjoutTemps = 0;<\/p>\n<p>int firstStart=1;<\/p>\n<p>String uciClef=\u00a0\u00bb\u00a0\u00bb;<br \/>\nString prefixeClef=\u00a0\u00bbklnr\u00a0\u00bb;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ 4 lettres en prefixe de la cl\u00e9 wifi<br \/>\nString ssid=\u00a0\u00bbklnrWifi\u00a0\u00bb;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ nom du wifi, a personnaliser<br \/>\nString clef=\u00a0\u00bb\u00a0\u00bb;<br \/>\nString xClef=\u00a0\u00bb\u00a0\u00bb;<\/p>\n<p>uint16_t start = millis();<br \/>\nuint16_t previousMillis=0;<br \/>\nstatic int tempsParDefaut=61;\u00a0 \/\/\u00a0 on part sur 60mn par defaut MOINS1 MN le temps de boot<br \/>\nlong time1Hz = 0;<br \/>\nextern volatile unsigned long timer0_millis;<\/p>\n<p>\/\/=================================\u00a0 SETUP ================<br \/>\nvoid setup() {<\/p>\n<p>pinMode(buttonChangeclef, INPUT);\u00a0\u00a0\u00a0\u00a0 \/\/ bouton reinitialise la cl\u00e9<br \/>\ndigitalWrite(buttonChangeclef,HIGH);\u00a0 \/\/ POUR ACTIVER PULL UP INTERNE<br \/>\npinMode(boutonAjoutTemps,INPUT);\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ bouton ajoute du temps<br \/>\ndigitalWrite(boutonAjoutTemps,HIGH); \/\/ POUR ACTIVER PULL UP INTERNE<\/p>\n<p>lcd.begin();lcd.blink();<br \/>\nlcd.setCursor(2,0); lcd.print(\u00ab\u00a0DEMARRAGE\u00a0\u00bb); delay(1000);<br \/>\nlcd.setCursor(2,1);lcd.print(\u00ab\u00a0PATIENTEZ\u00a0\u00bb); delay(1000);<\/p>\n<p>Bridge.begin();<br \/>\nSerial.begin(9600);<br \/>\n}<\/p>\n<p>\/\/=================================\u00a0 LOOP ================<br \/>\nvoid loop() {<\/p>\n<p>int nbClients=0;<br \/>\nString test,chaine;<br \/>\nProcess p;<\/p>\n<p>p.runShellCommand(\u00ab\u00a0\/etc\/config\/testclients2.sh\u00a0\u00bb);<br \/>\nwhile (p.running());<br \/>\nwhile (p.available()) {<br \/>\nchar c = p.read();<br \/>\ntest=c;<br \/>\n\/\/\u00a0 if(test.equals(\u00ab\u00a0\\n\u00a0\u00bb)) nbClients++;<br \/>\nif(!test.equals(\u00a0\u00bb \u00ab\u00a0))\u00a0 if(c==&rsquo;\\n&rsquo;) nbClients++;<br \/>\nchaine=chaine+c;<br \/>\nSerialUSB.print(c);\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ print the number as well<br \/>\n}<\/p>\n<p>SerialUSB.println(\u00ab\u00a0AFFFICHAGE DE LA CHAINE\u00a0\u00bb);<br \/>\nSerialUSB.print(test);<br \/>\nSerialUSB.print(\u00ab\u00a0&#8212;&#8212;&#8212;&#8212;-\u00ab\u00a0);<\/p>\n<p>\/\/for (int =0;chaine.lenght;i++)<br \/>\n\/\/SerialUSB.print(c);\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ print the number as well<\/p>\n<p>\/\/ CALCUL DU TEMPS ECOULE<br \/>\nint m,s;<br \/>\nunsigned long over,elapsed,currentMillis = millis();<br \/>\nelapsed=(currentMillis-previousMillis)-start;<br \/>\nover=elapsed%3600000;<br \/>\nm=int(over\/60000);<br \/>\nover=over%60000;<br \/>\ns=int(over\/1000);<\/p>\n<p>\/\/LIGNE 1\u00a0\u00a0 LCD<br \/>\nlcd.setCursor(0,0);lcd.print(\u00ab\u00a0CLEF:\u00a0\u00bb); lcd.print(clef);\u00a0 \/\/ ON AFFICHE LA CLE WIFI<\/p>\n<p>\/\/LIGNE 2\u00a0\u00a0\u00a0\u00a0 LCD\u00a0\u00a0 \/\/ TOUTES LES 2 SECONDE ON AFFICHE LE TEMPS OU LE SSID<br \/>\nSerialUSB.println(currentMillis &#8211; time1Hz);<\/p>\n<p>if ((currentMillis &#8211; time1Hz) &lt;3000 )\u00a0 { lcd.setCursor(0,1); lcd.print(\u00ab\u00a0CONNECTES: \u00ab\u00a0); lcd.print(nbClients); }<br \/>\nif ((currentMillis &#8211; time1Hz) &gt;= 3000\u00a0 &amp;&amp; (currentMillis &#8211; time1Hz) &lt; 6000 )<br \/>\n{<br \/>\nlcd.setCursor(0,1); lcd.print(\u00ab\u00a0WIFI:\u00a0\u00bb);lcd.print(ssid);<br \/>\n}<\/p>\n<p>\/\/if ((currentMillis &#8211; time1Hz) &gt;= 4000\u00a0\u00a0\u00a0 || digitalRead(boutonAjoutTemps)==1)<br \/>\nif ((currentMillis &#8211; time1Hz) &gt;= 6000\u00a0 )<br \/>\n{ lcd.setCursor(0,1); lcd.print(\u00ab\u00a0Tps :\u00a0\u00bb);<br \/>\nlcd.print(tempsParDefaut-m);lcd.print(\u00ab\u00a0mn\u00a0\u00bb);lcd.print(60-s);lcd.print(\u00ab\u00a0s\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00ab\u00a0);<br \/>\ntime1Hz = currentMillis;<br \/>\nSerialUSB.print(\u00ab\u00a0je rentre je remets a ZERO\u00a0\u00bb);<br \/>\n}<\/p>\n<p>\/\/lcd.scrollDisplayLeft();<br \/>\n\/\/ LECTURE DE L ETAT DES BOUTONS<\/p>\n<p>if(digitalRead(boutonAjoutTemps)==0) {tempsParDefaut=tempsParDefaut+2;}\u00a0 \/\/ On rajoute 2mn lors de l appui sur le bouton<\/p>\n<p>if(tempsParDefaut-m&lt;1)\u00a0 {\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/\u00a0\u00a0 si le temps est eecoul\u00e9 on reinitialise l horloge<br \/>\nfirstStart=1;<br \/>\nnoInterrupts ();<br \/>\ntimer0_millis = 0;<br \/>\ninterrupts ();<br \/>\nstart = millis();<br \/>\n}<\/p>\n<p>if (digitalRead(buttonChangeclef) == LOW || firstStart==1)\u00a0\u00a0 \/\/ SI LE TEMPS EST ECOULE OU APPUI SUR LE BOUTON<br \/>\n{<br \/>\ntempsParDefaut=60;\u00a0\u00a0 \/\/ on repart pour 60mn<br \/>\nfirstStart=0;<\/p>\n<p>lcd.clear(); lcd.noBlink(); lcd.setCursor(0,0); lcd.print(\u00ab\u00a0CREATION CLE\u00a0\u00bb);<\/p>\n<p>randomSeed(analogRead(0));<br \/>\nxClef=(int)random(1000,9999);\u00a0\u00a0 \/\/ cle entre\u00a0 1000 et 9999<\/p>\n<p>uciClef=\u00a0\u00bbwireless.@wifi-iface[0].key=\u00a0\u00bb;<br \/>\nuciClef=uciClef+prefixeClef+String(xClef);\u00a0 \/\/ on construit la chaine<br \/>\nclef=prefixeClef+String(xClef);<\/p>\n<p>lcd.setCursor(0,0); lcd.print(\u00ab\u00a0CONFIGURATION\u00a0\u00a0\u00a0\u00a0 \u00ab\u00a0);<br \/>\ndelay(1000);<\/p>\n<p>\/\/\u00a0\u00a0 command UCI\u00a0 parametrage de la carte<\/p>\n<p>p.runShellCommand(\u00ab\u00a0uci set wireless.@wifi-iface[0].ssid=klnrWifi\u00a0\u00bb);\u00a0\u00a0 \/\/ possible de changer<br \/>\np.runShellCommand(\u00ab\u00a0uci set wireless.@wifi-iface[0].mode=ap\u00a0\u00bb);\u00a0\u00a0 \/\/ point acces<br \/>\np.runShellCommand(\u00ab\u00a0uci set wireless.@wifi-iface[0].encryption=psk-mixed\u00a0\u00bb);\u00a0\u00a0 \/\/ wpa\/wpa2<br \/>\np.runShellCommand(\u00ab\u00a0uci set wireless.@wifi-iface[0].country=FR\u00a0\u00bb);<\/p>\n<p>\/\/\u00a0 reglage clef;<br \/>\np.begin(\u00ab\u00a0uci\u00a0\u00bb);<br \/>\np.addParameter(\u00ab\u00a0set\u00a0\u00bb);<br \/>\np.addParameter(uciClef);<br \/>\np.run();<\/p>\n<p>\/\/\u00a0 validation des parametres<br \/>\np.runShellCommand(\u00ab\u00a0uci commit wireless\u00a0\u00bb);<\/p>\n<p>\/\/ on relance le reseau<br \/>\np.runShellCommand(\u00ab\u00a0uci \/etc\/init.d\/network restart\u00a0\u00bb);<br \/>\np.runShellCommand(\u00ab\u00a0wifi\u00a0\u00bb);<br \/>\n}<br \/>\n}<\/p>\n<p>&nbsp;<\/p>\n<p>C&rsquo;est termin\u00e9 !.<\/p>\n<h2>5\/ Compter le nombre de clients. (en option)<\/h2>\n<p>il faut copier le fichier <a href=\"http:\/\/www.blog.serveurduke.fr\/wp-content\/uploads\/2016\/12\/testclients2.sh_.zip\">testclients2.sh<\/a>\u00a0dans etc\/config.<\/p>\n<p>&nbsp;<\/p>\n<p>cela permet d&rsquo;afficher sur le lcd le nombre de clients connect\u00e9s au point d&rsquo;acc\u00e8s.<\/p>\n<p>&nbsp;<\/p>\n<h2><\/h2>\n<h2>Bugs relev\u00e9s :<\/h2>\n<p>Lors du\u00a0 t\u00e9l\u00e9chargement du code dans la carte arduino YUN elle ne redemarre pas &#8230;.<br \/>\nIl faut alors D\u00e9brancher et rebrancher son alim&#8230;.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un point d&rsquo;acc\u00e8s avec code wpa2 tournant! Quoi qu&rsquo;est-ce ? C&rsquo;est une carte Arduino doubl\u00e9e d&rsquo;un Linux, d&rsquo;un module Ethernet et Wifi&#8230; besoin de rien d&rsquo;autre !!! Et on peut faire quoi avec \u00e7a ? Beaucoup de choses moi j&rsquo;ai<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"_links":{"self":[{"href":"http:\/\/www.blog.serveurduke.fr\/index.php\/wp-json\/wp\/v2\/posts\/55"}],"collection":[{"href":"http:\/\/www.blog.serveurduke.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.blog.serveurduke.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.blog.serveurduke.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.blog.serveurduke.fr\/index.php\/wp-json\/wp\/v2\/comments?post=55"}],"version-history":[{"count":21,"href":"http:\/\/www.blog.serveurduke.fr\/index.php\/wp-json\/wp\/v2\/posts\/55\/revisions"}],"predecessor-version":[{"id":341,"href":"http:\/\/www.blog.serveurduke.fr\/index.php\/wp-json\/wp\/v2\/posts\/55\/revisions\/341"}],"wp:attachment":[{"href":"http:\/\/www.blog.serveurduke.fr\/index.php\/wp-json\/wp\/v2\/media?parent=55"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.blog.serveurduke.fr\/index.php\/wp-json\/wp\/v2\/categories?post=55"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.blog.serveurduke.fr\/index.php\/wp-json\/wp\/v2\/tags?post=55"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}