{"id":1731,"date":"2014-08-13T11:51:09","date_gmt":"2014-08-13T10:51:09","guid":{"rendered":"http:\/\/blog.guiguiabloc.fr\/?p=1731"},"modified":"2014-08-13T11:51:09","modified_gmt":"2014-08-13T10:51:09","slug":"domotique-et-intelligence-la-communication","status":"publish","type":"post","link":"http:\/\/blog.guiguiabloc.fr\/index.php\/2014\/08\/13\/domotique-et-intelligence-la-communication\/","title":{"rendered":"Domotique et Intelligence : la communication"},"content":{"rendered":"<p><a href=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2014\/08\/lacommunication.png\"><img loading=\"lazy\" class=\"aligncenter size-medium wp-image-1732\" alt=\"lacommunication\" src=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2014\/08\/lacommunication-300x190.png\" width=\"300\" height=\"190\" srcset=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2014\/08\/lacommunication-300x190.png 300w, http:\/\/blog.guiguiabloc.fr\/wp-content\/2014\/08\/lacommunication.png 330w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Quelques mois plus t\u00f4t, j&rsquo;avais \u00e9voqu\u00e9 la n\u00e9cessit\u00e9 de la connaissance pour un environnement domotique (cf. <a title=\"http:\/\/blog.guiguiabloc.fr\/index.php\/2014\/01\/04\/domotique-et-intelligence-la-connaissance\/\" href=\"http:\/\/blog.guiguiabloc.fr\/index.php\/2014\/01\/04\/domotique-et-intelligence-la-connaissance\/\" target=\"_blank\">http:\/\/blog.guiguiabloc.fr\/index.php\/2014\/01\/04\/domotique-et-intelligence-la-connaissance\/<\/a>)<\/p>\n<p>J&rsquo;aimerais maintenant aborder avec vous la deuxi\u00e8me partie, la communication.<\/p>\n<p>A suivre l&rsquo;actualit\u00e9 des constructeurs et les retours ou discussions des utilisateurs de domotique sur les blogs ou forums divers, j&rsquo;ai l&rsquo;impression assez d\u00e9sagr\u00e9able de vivre \u00e0 nouveau le m\u00eame sc\u00e9nario qu&rsquo;il y a plusieurs ann\u00e9es quand l&rsquo;informatique personnelle s&rsquo;est g\u00e9n\u00e9ralis\u00e9e aupr\u00e8s du grand public.<\/p>\n<p>Tout le monde y va de son interface, de son protocole de communication, de sa box r\u00e9volutionnaire, de ses structures http etc.. Bref, \u00ab\u00a0c&rsquo;est moi qui ait la bonne solution et les autres n&rsquo;ont qu&rsquo;a s&rsquo;adapter\u00a0\u00bb.<\/p>\n<p><a href=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2014\/08\/king.jpeg\"><img loading=\"lazy\" class=\"aligncenter size-medium wp-image-1733\" alt=\"king\" src=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2014\/08\/king-232x300.jpeg\" width=\"232\" height=\"300\" srcset=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2014\/08\/king-232x300.jpeg 232w, http:\/\/blog.guiguiabloc.fr\/wp-content\/2014\/08\/king.jpeg 250w\" sizes=\"(max-width: 232px) 100vw, 232px\" \/><\/a><\/p>\n<p>Alors heureusement, un peu d&rsquo;intelligence \u00e0 effleurer ce microcosme car la plupart des solutions \u00ab\u00a0tout-en-un\u00a0\u00bb int\u00e8gre des <a title=\"http:\/\/fr.wikipedia.org\/wiki\/Interface_de_programmation\" href=\"http:\/\/fr.wikipedia.org\/wiki\/Interface_de_programmation\" target=\"_blank\">api <\/a>permettant d&rsquo;interagir via des requ\u00eates http.Ne vous r\u00e9jouissez tout de m\u00eame pas trop vite, chaque API est diff\u00e9rente (REST (ou pas), SOAP (ou pas), LUA_API_QUEJESUISSEULEACOMPRENDRE(c), etc..)<br \/>\nParce que s&rsquo;il vous prend l&rsquo;id\u00e9e saugrenue (ou pas&#8230;) de faire discuter votre <a title=\"http:\/\/www.fibaro.com\/fr\/syst%C3%A8me-fibaro\/home-center-2\" href=\"http:\/\/www.fibaro.com\/fr\/syst%C3%A8me-fibaro\/home-center-2\" target=\"_blank\">box Fibaro<\/a> avec un <a title=\"http:\/\/www.rfxcom.com\/store\/Transceivers\/14103\" href=\"http:\/\/www.rfxcom.com\/store\/Transceivers\/14103\" target=\"_blank\">RFXtrx<\/a> branch\u00e9 sur votre <a title=\"http:\/\/getvera.com\/controllers\/veralite\/\" href=\"http:\/\/getvera.com\/controllers\/veralite\/\" target=\"_blank\">VeraLite<\/a> ou votre PC, vous allez y passer un peu de temps&#8230;<\/p>\n<p>Ne soyez pas m\u00e9disant, j&rsquo;ai pris la solution la plus simple \ud83d\ude00 et ce n&rsquo;est qu&rsquo;un exemple tr\u00e8s basique, j&rsquo;aurais pu pousser le concept jusqu&rsquo;\u00e0 exiger que je puisse communiquer via mon smartphone avec <a title=\"http:\/\/tasker.dinglisch.net\/\" href=\"http:\/\/tasker.dinglisch.net\/\" target=\"_blank\">Tasker <\/a>qui appelle ma centrale <a title=\"http:\/\/www.myfox.fr\/\" href=\"http:\/\/www.myfox.fr\/\" target=\"_blank\">MyFox,<\/a> qui interroge le module fibaro reli\u00e9 \u00e0 mon <a title=\"http:\/\/www.eedomus.com\/fr\/\" href=\"http:\/\/www.eedomus.com\/fr\/\" target=\"_blank\">eedomus<\/a> en fonction des sondes de temp\u00e9ratures dont les donn\u00e9es remontent sur mon <a title=\"http:\/\/www.rfxcom.com\/store\/Transceivers\/11201\" href=\"http:\/\/www.rfxcom.com\/store\/Transceivers\/11201\" target=\"_blank\">RFXCOM Lan<\/a> en supposant que le module X10 reli\u00e9 \u00e0 mon <a title=\"http:\/\/www.planete-domotique.com\/autres\/kits\/kit-de-demarrage-x10-ck15.html\" href=\"http:\/\/www.planete-domotique.com\/autres\/kits\/kit-de-demarrage-x10-ck15.html\" target=\"_blank\">CM15<\/a> soit \u00ab\u00a0on\u00a0\u00bb.<\/p>\n<p><a href=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2014\/08\/why_trollcat.jpg\"><img loading=\"lazy\" class=\"aligncenter size-medium wp-image-1735\" alt=\"why_trollcat\" src=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2014\/08\/why_trollcat-300x218.jpg\" width=\"300\" height=\"218\" srcset=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2014\/08\/why_trollcat-300x218.jpg 300w, http:\/\/blog.guiguiabloc.fr\/wp-content\/2014\/08\/why_trollcat.jpg 371w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>C&rsquo;est compl\u00e8tement idiot, j&rsquo;avoue, mais c&rsquo;\u00e9tait un exemple un peu <a title=\"http:\/\/fr.wiktionary.org\/wiki\/capillotract%C3%A9\" href=\"http:\/\/fr.wiktionary.org\/wiki\/capillotract%C3%A9\" target=\"_blank\">capillotract\u00e9<\/a> du travail \u00e0 fournir pour pouvoir faire discuter tout ses \u00e9quipements entre eux.<\/p>\n<p>Ne croyez pas que cela se borne \u00e0 vos box domotiques, tout ceux qui ont un jour ajouter un serveur <a title=\"http:\/\/www.asterisk.org\/\" href=\"http:\/\/www.asterisk.org\/\" target=\"_blank\">Asterisk<\/a> pour g\u00e9rer leur t\u00e9l\u00e9phonie a la maison se sont demand\u00e9 \u00ab\u00a0et comment que je discute entre ce serveur et ma box ????\u00a0\u00bb<br \/>\nCar oui mon bon monsieur, c&rsquo;est la g\u00e9n\u00e9ration des objets connect\u00e9s !!! Connect\u00e9s, oui, mais \u00e0 moi tout seul parce que le dialogue avec les autres, tr\u00e8s peu pour moi !<\/p>\n<p>Nous sommes tout les jours submerg\u00e9s de ces nouveaux objets qui doivent nous rendrent la vie plus facile, mais ne croyez pas qu&rsquo;il va vous \u00eatre facile de l&rsquo;int\u00e9grer \u00e0 votre monde, chacun parle sa propre langue et dans le terme \u00ab\u00a0connect\u00e9\u00a0\u00bb largement usit\u00e9 par les m\u00e9dias et les constructeurs, on parle rarement de communication, la faute \u00e0 qui ?&#8230;<\/p>\n<p><a href=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2014\/08\/lol-cat.jpg\"><img loading=\"lazy\" class=\"aligncenter size-medium wp-image-1737\" alt=\"lol cat\" src=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2014\/08\/lol-cat-254x300.jpg\" width=\"254\" height=\"300\" srcset=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2014\/08\/lol-cat-254x300.jpg 254w, http:\/\/blog.guiguiabloc.fr\/wp-content\/2014\/08\/lol-cat.jpg 271w\" sizes=\"(max-width: 254px) 100vw, 254px\" \/><\/a><\/p>\n<p>Pour sauver ce petit monde de passionn\u00e9s de domotique perdu dans les m\u00e9andres d&rsquo;un univers sourd et aveugle, il existe quand m\u00eame des projets qui cherche \u00e0 unifier ou interagir avec tout cela.<\/p>\n<p>Nul besoin de vous pr\u00e9senter <a title=\"http:\/\/www.imperihome.com\/fr\/\" href=\"http:\/\/www.imperihome.com\/fr\/\" target=\"_blank\">Imperihome <\/a>qui risque fortement de devenir \u00ab\u00a0LA\u00a0\u00bb solution Android pour faire causer ensemble tout \u00e7a.<\/p>\n<p>En protocole \u00ab\u00a0natif\u00a0\u00bb, <a title=\"http:\/\/xplproject.org.uk\/\" href=\"http:\/\/xplproject.org.uk\/\" target=\"_blank\">xPL<\/a> (dont je suis un fervent d\u00e9fenseur :p (mais \u00e7a vous le savais d\u00e9j\u00e0 si vous \u00eates habitu\u00e9 de ce blog)), a du mal a se faire sa place malgr\u00e9 un concept simple et plut\u00f4t efficace.<\/p>\n<p>Plus r\u00e9cemment, <a title=\"http:\/\/recherche.telecom-bretagne.eu\/xaal\/\" href=\"http:\/\/recherche.telecom-bretagne.eu\/xaal\/\" target=\"_blank\">xAAL<\/a>, prometteur, une grosse \u00e9volution de ce que l&rsquo;on peut faire dans la communication des objets connect\u00e9s et de la domotique en g\u00e9n\u00e9rale (quand on peut parler des copains :p\u00a0 <a title=\"https:\/\/twitter.com\/jkxathome\" href=\"https:\/\/twitter.com\/jkxathome\" target=\"_blank\">@jkxathome )<\/a><\/p>\n<p>Bref, vous l&rsquo;avez compris, quand on veut discuter simplement avec toutes nos passerelles domotiques ou nos objets connect\u00e9s, cela devient vite tr\u00e8s probl\u00e9matique parce qu&rsquo;il faut tout changer selon avec qui vous souhaitez communiquer.<\/p>\n<p>Dans mon billet pr\u00e9c\u00e9dent de cette \u00ab\u00a0s\u00e9rie\u00a0\u00bb, j&rsquo;avais \u00e9voquer le fait que mon serveur domotique \u00e9tait une sorte de centralisateur des informations remont\u00e9es par tout ce qui gravitait autout de lui.<br \/>\nPour la communication, je suis partie du m\u00eame constat.<br \/>\nJe ne veux pas m&rsquo;adresser dans des langues diff\u00e9rentes \u00e0 chacun des p\u00e9riph\u00e9riques, mais uniquement \u00e0 une \u00ab\u00a0porte d&rsquo;entr\u00e9e\u00a0\u00bb et dans un langage compr\u00e9hensible.<\/p>\n<p>Un des exemples les plus d\u00e9monstratifs est <a title=\"http:\/\/blog.guiguiabloc.fr\/index.php\/2014\/07\/03\/domogeek-une-api-simple-pour-repondre-aux-questions-simples\/\" href=\"http:\/\/blog.guiguiabloc.fr\/index.php\/2014\/07\/03\/domogeek-une-api-simple-pour-repondre-aux-questions-simples\/\" target=\"_blank\">le dernier projet dont je vous avais fait part<\/a>, <a title=\"http:\/\/api.domogeek.fr\" href=\"http:\/\/api.domogeek.fr\" target=\"_blank\">api.domogeek.fr<\/a>.<br \/>\nVous envoyez une requ\u00eate simple pour conna\u00eetre une information basique et publique sans vous soucier des m\u00e9thodes diff\u00e9rentes d&rsquo;appels uniques \u00e0 chacune de ses informations (les dates de vacances scolaires, la vigilance m\u00e9t\u00e9o etc&#8230;).<\/p>\n<p>Dans votre environnement domotique, cela doit \u00eatre la m\u00eame chose.<br \/>\nUn point d&rsquo;entr\u00e9e unique, structur\u00e9, d\u00e9fini, qui se chargera de discuter ensuite dans le langage de chaque p\u00e9riph\u00e9rique.<\/p>\n<p>La meilleure fa\u00e7on de mettre cela en place est une API de type <a title=\"http:\/\/fr.wikipedia.org\/wiki\/Representational_State_Transfer\" href=\"http:\/\/fr.wikipedia.org\/wiki\/Representational_State_Transfer\" target=\"_blank\">REST<\/a>.<\/p>\n<p>La mise en oeuvre est simple et \u00e0 la port\u00e9e de tous (surtout si vous avez d\u00e9cider d&rsquo;utiliser un vrai langage comme python (troll inside).<\/p>\n<p>Une fois d\u00e9ploy\u00e9, il devient facile pour tout vos scripts, applications smartphones, etc&#8230; de faire appel \u00e0 cette API pour communiquer avec vos \u00e9quipements sans vous souciez de vous rappeler comment doit s&rsquo;\u00e9crire la requ\u00eate http vers tel ou tel module.<\/p>\n<p>Prenons l&rsquo;exemple du lancement d&rsquo;une sc\u00e8ne sur une VeraLite.<\/p>\n<p>Si je dois interroger directement la VeraLite par http, ma requ\u00eate ressemblera \u00e0 cela :<\/p>\n<pre lang=\"text\">\r\nhttp:\/\/vera:3480\/data_request?id=lu_action&serviceId=urn:micasaverde-com:serviceId:HomeAutomationGateway1&action=RunScene&SceneNum=1\r\n<\/pre>\n<p>(facile \u00e0 retenir, hein ? :p)<\/p>\n<p>Imaginons maintenant que l&rsquo;on \u00e9crive une simple fonction en python pour cela :<\/p>\n<pre lang=\"python\">\r\ndef setscene(device):\r\n  url = 'http:\/\/vera:3480\/data_request?'\r\n  values = {'output_format' : 'text', 'id' : 'lu_action','serviceId': 'urn:micasaverde-com:serviceId:HomeAutomationGateway1', 'action' : 'RunScene', 'SceneNum' : device }\r\n  try:\r\n    data = urllib.urlencode(values)\r\n    req = urllib2.Request(url+data)\r\n    sendrequest = urllib2.urlopen(req)\r\n    responsefromvera = sendrequest.read()\r\n    if responsefromvera != \"OK\":\r\n      return web.notfound()\r\n      return \"200 SUCCESS\"\r\n  except Exception, detail:\r\n    print \"Error \", detail\r\n<\/pre>\n<p>Maintenant, codons une API Rest toute b\u00eate (attention c&rsquo;est du brut de fonderie bien crado) :<\/p>\n<pre lang=\"python\">\r\n#!\/usr\/bin\/python\r\n# Gruik coded by GuiguiAbloc\r\nimport urllib, urllib2, web, re\r\ndef scenevera(device):\r\n  url = 'http:\/\/vera.styx.net:3480\/data_request?'\r\n  values = {'output_format' : 'text', 'id' : 'lu_action', 'serviceId' : 'urn:micasaverde-com:serviceId:HomeAutomationGateway1', 'action' : 'RunScene','SceneNum' : device }\r\n  try:\r\n    data = urllib.urlencode(values)\r\n    req = urllib2.Request(url+data)\r\n    sendrequest = urllib2.urlopen(req)\r\n    responsefromvera = sendrequest.read()\r\n    if responsefromvera != \"OK\":\r\n      return web.notfound()\r\n      return \"200 SUCCESS\"\r\n  except Exception, detail:\r\n    print \"Error \", detail\r\n\r\nweb.config.debug = False\r\n\r\nurls = (\r\n'\/scene\/(.*)', 'scenes'\r\n)\r\n\r\nrender = web.template.render('templates\/', globals={'re':re})\r\napp = web.application(urls, globals())\r\n\r\nclass scenes:\r\n  def POST(self,uri):\r\n    request = uri.split('\/')\r\n    if request == ['']:\r\n      return web.badrequest()\r\n    if request[0]:\r\n      device = request[0]\r\n      try:\r\n        result = scenevera(device)\r\n        return \"200 SUCCESS\\n\"\r\n      except:\r\n        web.notfound()\r\n\r\nif __name__ == '__main__':\r\napp.run()\r\n<\/pre>\n<p>D\u00e9marrez votre script (python monscript.py), il \u00e9coutera par d\u00e9faut sur le port 8080 et lancer une requ\u00eate http de type \u00ab\u00a0POST\u00a0\u00bb (avec surement le meilleur outil sous linux pour contruire des appels http de toutes sortes, <a title=\"http:\/\/curl.haxx.se\/\" href=\"http:\/\/curl.haxx.se\/\" target=\"_blank\">cURL<\/a>) :<\/p>\n<pre lang=\"text\">\r\ncurl -XPOST http:\/\/localhost:8080\/scene\/13\r\n<\/pre>\n<p>Et hop, magique, la sc\u00e8ne 13 est lanc\u00e9e \ud83d\ude42<\/p>\n<p>Maintenant, vous avez une base de donn\u00e9es MySQL (par exemple) dans laquelle vous stockez amoureusement toutes les valeurs de temp\u00e9ratures de vos <a title=\"http:\/\/www.planete-domotique.com\/meteo\/oregon-scientific\/sondes.html\" href=\"http:\/\/www.planete-domotique.com\/meteo\/oregon-scientific\/sondes.html\" target=\"_blank\">sondes Oregon<\/a>.<br \/>\nInterrogeons simplement la derni\u00e8re valeur dans votre BDD de la m\u00eame fa\u00e7on.<\/p>\n<p>D&rsquo;abord la fonction, on va imaginer que votre table \u00ab\u00a0sensor\u00a0\u00bb contient les colonnes \u00ab\u00a0sensorRoom\u00a0\u00bb qui d\u00e9fini le nom de votre sonde et \u00ab\u00a0sensorValue\u00a0\u00bb, la valeur enregistr\u00e9e :<\/p>\n<pre lang=\"python\">\r\n...\r\nimport MySQLdb\r\n...\r\ndef tempdb(ID):\r\n  try:\r\n    if ID == \"salon\":\r\n      ID = \"TempSalon\"\r\n    if ID == \"exterieur\" or ID == \"dehors\" or ID == \"ext\":\r\n      ID = \"TempExt\"\r\n    conn = MySQLdb.connect('localhost', 'mabase', 'login', 'motdepasse')\r\n    cur = conn.cursor()\r\n    cur.execute(\"SELECT sensorValue from sensor where sensorRoom='%s' ORDER BY idx DESC limit 1\" % ID )\r\n    result = cur.fetchone()\r\n    return result[0]\r\n\r\n  except MySQLdb.Error, e:\r\n    print \"Error %d: %s\" % (e.args[0], e.args[1])\r\n    return None\r\n  conn.close()\r\n<\/pre>\n<p>On l&rsquo;inclut dans notre API Python et l&rsquo;on rajoute les appels :<\/p>\n<pre lang=\"python\">\r\n...urls = (\r\n'\/scene\/(.*)', 'scenes',\r\n'\/temp\/(.*)', 'temp'\r\n)\r\n...\r\nclass temp:\r\n  def GET(self,uri):\r\n    request = uri.split('\/')\r\n    if request == ['']:\r\n      return web.badrequest()\r\n    if request[0]:\r\n      room = request[0]\r\n      try:\r\n        result = tempdb(room)\r\n        return result\r\n      except:\r\n        web.notfound()\r\n<\/pre>\n<p>On lance le tout et on fait un appel :<\/p>\n<pre lang=\"text\">\r\ncurl http:\/\/localhost:8080\/temp\/exterieur\r\n16.5\r\n<\/pre>\n<p>C&rsquo;est quand m\u00eame plus simple, non ?<\/p>\n<p>Voici 2 exemples basiques qui nous permettent de communiquer simplement via un point d&rsquo;entr\u00e9e \u00e0 divers \u00e9quipements de notre domotique.<\/p>\n<p>Gardez le contr\u00f4le, toujours, de votre environnement. Quelque soit les objets, p\u00e9riph\u00e9riques, modules communicants qui seront et feront la vie de votre domotique, il vous appartient de ma\u00eetriser la communication avec eux. \u00c9tablissez un point d&rsquo;entr\u00e9e unique dont vous d\u00e9tiendrez la syntaxe et le langage sans devoir d\u00e9pendre du bon vouloir d&rsquo;un constructeur.<br \/>\nChanger de fournisseur ou de technos ne doit pas \u00eatre plus dur que modifier quelques lignes de votre interface de communication sans revoir l&rsquo;int\u00e9gralit\u00e9 de votre interface web ou de votre application smartphone.<\/p>\n<p>Et puisque je suis dans ma p\u00e9riode lolcats sur ce billet&#8230;<\/p>\n<p><a href=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2014\/08\/161432646-1161414097812.jpg\"><img loading=\"lazy\" class=\"aligncenter size-full wp-image-1743\" alt=\"161432646-1161414097812\" src=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2014\/08\/161432646-1161414097812.jpg\" width=\"250\" height=\"250\" srcset=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/2014\/08\/161432646-1161414097812.jpg 250w, http:\/\/blog.guiguiabloc.fr\/wp-content\/2014\/08\/161432646-1161414097812-150x150.jpg 150w, http:\/\/blog.guiguiabloc.fr\/wp-content\/2014\/08\/161432646-1161414097812-144x144.jpg 144w\" sizes=\"(max-width: 250px) 100vw, 250px\" \/><\/a>Amusez vous bien \ud83d\ude00<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quelques mois plus t\u00f4t, j&rsquo;avais \u00e9voqu\u00e9 la n\u00e9cessit\u00e9 de la connaissance pour un environnement domotique (cf. http:\/\/blog.guiguiabloc.fr\/index.php\/2014\/01\/04\/domotique-et-intelligence-la-connaissance\/) J&rsquo;aimerais maintenant aborder avec vous la deuxi\u00e8me partie, la communication. A suivre l&rsquo;actualit\u00e9 des constructeurs et les retours ou discussions des utilisateurs de &hellip; <a href=\"http:\/\/blog.guiguiabloc.fr\/index.php\/2014\/08\/13\/domotique-et-intelligence-la-communication\/\">Read More <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[137],"tags":[132,224,170],"_links":{"self":[{"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/posts\/1731"}],"collection":[{"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/comments?post=1731"}],"version-history":[{"count":13,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/posts\/1731\/revisions"}],"predecessor-version":[{"id":1749,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/posts\/1731\/revisions\/1749"}],"wp:attachment":[{"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/media?parent=1731"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/categories?post=1731"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/tags?post=1731"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}