{"id":427,"date":"2015-01-28T18:23:07","date_gmt":"2015-01-28T17:23:07","guid":{"rendered":"https:\/\/biere.alereno.org\/?p=427"},"modified":"2015-01-29T13:35:59","modified_gmt":"2015-01-29T12:35:59","slug":"controle-et-interface","status":"publish","type":"post","link":"https:\/\/biere.alereno.org\/?p=427","title":{"rendered":"Contr\u00f4le et Interface"},"content":{"rendered":"<h3>L&rsquo;interface<\/h3>\n<p>Mon syst\u00e8me utilise des boutons et des interrupteurs physiques pour certaines op\u00e9rations de base : allumer des pompes ou s\u00e9lectionner lequel des corps de chauffe est actif. \u00a0Tout le reste passe par l&rsquo;interface graphique.<\/p>\n<p>Le logiciel\u00a0affich\u00e9 est grandement inspir\u00e9 du design d&rsquo;un de ceux que j&rsquo;utilise chez <a href=\"http:\/\/www.cybelec.ch\/index.php\/en\/\">Cybelec <\/a>(l&rsquo;entreprise ou je\u00a0travaille). Je rappelle qu&rsquo;on vends des <a href=\"http:\/\/www.cybelec.ch\/index.php\/en\/products\/bending\/numerical-control\/138-cybtouch-12ps\">commandes num\u00e9riques pour presses plieuses<\/a>, et que je suis en fait edsan train de r\u00e9aliser une commande num\u00e9rique\u00a0pour le brassage de la bi\u00e8re. C&rsquo;est finalement assez similaire&#8230;<\/p>\n<p>Le Raspberry Pi (le micro ordinateur qui est int\u00e9gr\u00e9 dans mon syst\u00e8me) affiche donc le\u00a0logiciel que j&rsquo;ai \u00e9crit en <a href=\"http:\/\/en.wikipedia.org\/wiki\/C_Sharp_%28programming_language%29\">C#<\/a>. Ce m\u00eame\u00a0\u00a0logiciel, en r\u00e9action \u00e0 des actions sur l&rsquo;interface envoie des ordres \u00e0 l&rsquo;Arduino (le microcontrolleur qui actionne\/v\u00e9rifie les entr\u00e9es-sorties sur mon syst\u00e8me) Les deux communiquent ensemble par liaison s\u00e9rie.<\/p>\n<figure id=\"attachment_386\" aria-describedby=\"caption-attachment-386\" style=\"width: 634px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/biere.alereno.org\/wp-content\/uploads\/2014\/10\/IMG_0280-e1421833299259.jpg\"><img loading=\"lazy\" class=\"wp-image-386\" src=\"https:\/\/biere.alereno.org\/wp-content\/uploads\/2014\/10\/IMG_0280-e1421833299259.jpg\" alt=\"IMG_0280\" width=\"634\" height=\"428\" srcset=\"https:\/\/biere.alereno.org\/wp-content\/uploads\/2014\/10\/IMG_0280-e1421833299259.jpg 1071w, https:\/\/biere.alereno.org\/wp-content\/uploads\/2014\/10\/IMG_0280-e1421833299259-300x203.jpg 300w, https:\/\/biere.alereno.org\/wp-content\/uploads\/2014\/10\/IMG_0280-e1421833299259-1024x691.jpg 1024w\" sizes=\"(max-width: 634px) 100vw, 634px\" \/><\/a><figcaption id=\"caption-attachment-386\" class=\"wp-caption-text\">Le Raspberry Pi (\u00e0 gauche) et l&rsquo;Arduino (\u00e0 droite), communiquent ensemble par liaison S\u00e9rie (la nappe de c\u00e2bles jaune-orange-rouge-marron juste sous l&rsquo;Arduino qui passe par un convertisseur de tension)<\/figcaption><\/figure>\n<p>L&rsquo;interface graphique affich\u00e9e est relativement \u00e9pur\u00e9e. On peut \u00e9diter des recettes, et les ex\u00e9cuter. Un mode manuel permet de prendre directement contr\u00f4le des \u00e9l\u00e9ments de chauffe ou des pompes. Et enfin d&rsquo;autres menus permettent de voir l&rsquo;\u00e9tat du syst\u00e8me (software, hardware et \u00e9lectronique), de le configurer ou de le tester. La plupart des \u00e9l\u00e9ments d&rsquo;interface sont fait pour \u00eatre touch\u00e9.<\/p>\n<figure id=\"attachment_432\" aria-describedby=\"caption-attachment-432\" style=\"width: 634px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/biere.alereno.org\/wp-content\/uploads\/2015\/01\/BrewManagerMainView.png\"><img loading=\"lazy\" class=\"wp-image-432\" src=\"https:\/\/biere.alereno.org\/wp-content\/uploads\/2015\/01\/BrewManagerMainView.png\" alt=\"L'interface du BrewManager\" width=\"634\" height=\"380\" srcset=\"https:\/\/biere.alereno.org\/wp-content\/uploads\/2015\/01\/BrewManagerMainView.png 798w, https:\/\/biere.alereno.org\/wp-content\/uploads\/2015\/01\/BrewManagerMainView-300x180.png 300w\" sizes=\"(max-width: 634px) 100vw, 634px\" \/><\/a><figcaption id=\"caption-attachment-432\" class=\"wp-caption-text\">L&rsquo;interface du BrewManager<\/figcaption><\/figure>\n<figure id=\"attachment_431\" aria-describedby=\"caption-attachment-431\" style=\"width: 634px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/biere.alereno.org\/wp-content\/uploads\/2015\/01\/BrewManagerLogWindow.png\"><img loading=\"lazy\" class=\"wp-image-431\" src=\"https:\/\/biere.alereno.org\/wp-content\/uploads\/2015\/01\/BrewManagerLogWindow.png\" alt=\"BrewManagerLogWindow\" width=\"634\" height=\"379\" srcset=\"https:\/\/biere.alereno.org\/wp-content\/uploads\/2015\/01\/BrewManagerLogWindow.png 798w, https:\/\/biere.alereno.org\/wp-content\/uploads\/2015\/01\/BrewManagerLogWindow-300x179.png 300w\" sizes=\"(max-width: 634px) 100vw, 634px\" \/><\/a><figcaption id=\"caption-attachment-431\" class=\"wp-caption-text\">La fen\u00eatre qui permet de voir le statut des I\/Os et du microcontr\u00f4lleur.<\/figcaption><\/figure>\n<figure id=\"attachment_433\" aria-describedby=\"caption-attachment-433\" style=\"width: 634px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/biere.alereno.org\/wp-content\/uploads\/2015\/01\/BrewManagerPIDTuning.png\"><img loading=\"lazy\" class=\"wp-image-433\" src=\"https:\/\/biere.alereno.org\/wp-content\/uploads\/2015\/01\/BrewManagerPIDTuning.png\" alt=\"BrewManagerPIDTuning\" width=\"634\" height=\"381\" srcset=\"https:\/\/biere.alereno.org\/wp-content\/uploads\/2015\/01\/BrewManagerPIDTuning.png 798w, https:\/\/biere.alereno.org\/wp-content\/uploads\/2015\/01\/BrewManagerPIDTuning-300x180.png 300w\" sizes=\"(max-width: 634px) 100vw, 634px\" \/><\/a><figcaption id=\"caption-attachment-433\" class=\"wp-caption-text\">La fen\u00eatre affich\u00e9e lorsqu&rsquo;on souhaite tuner les param\u00e8tres de l&rsquo;algorithme de r\u00e9gulation des corps de chauffe.<\/figcaption><\/figure>\n<p>Deux principaux modes de travail sont disponibles (directement emprunt\u00e9s au monde des commandes num\u00e9riques pour machines industrielles) :<\/p>\n<ul>\n<li>Le <strong>mode manuel<\/strong> qui permet de commander tous les \u00e9l\u00e9ments individuellement<\/li>\n<li>Le <strong>mode automatique<\/strong> qui ex\u00e9cute un programme de brassage bien d\u00e9fini, et \u00e9vite donc de rentrer des valeurs \u00e0 la main.<\/li>\n<\/ul>\n<p>Le mode manuel est parfaitement fonctionnel pour ex\u00e9cuter un brassage de A \u00e0 Z. On peut choisir d&rsquo;activer ou de d\u00e9sactiver les pompes, et s\u00e9lectionner les modes des deux corps de chauffe. On a aussi acc\u00e8s \u00e0 un compte \u00e0 rebours qui permet de faire sonner l&rsquo;alarme au bout d&rsquo;un certain temps. Et le tout en gardant un \u0153il sur les 5 sondes de temp\u00e9ratures.<\/p>\n<figure id=\"attachment_436\" aria-describedby=\"caption-attachment-436\" style=\"width: 634px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/biere.alereno.org\/wp-content\/uploads\/2015\/01\/BrewManagerManualMode.png\"><img loading=\"lazy\" class=\"wp-image-436\" src=\"https:\/\/biere.alereno.org\/wp-content\/uploads\/2015\/01\/BrewManagerManualMode.png\" alt=\"Le mode manuel du BrewManager.\" width=\"634\" height=\"380\" srcset=\"https:\/\/biere.alereno.org\/wp-content\/uploads\/2015\/01\/BrewManagerManualMode.png 800w, https:\/\/biere.alereno.org\/wp-content\/uploads\/2015\/01\/BrewManagerManualMode-300x180.png 300w\" sizes=\"(max-width: 634px) 100vw, 634px\" \/><\/a><figcaption id=\"caption-attachment-436\" class=\"wp-caption-text\">Le mode manuel du BrewManager.<\/figcaption><\/figure>\n<h6>Vous allez me dire : \u00ab\u00a0mais pourquoi un mode automatique ???\u00a0\u00bb<\/h6>\n<p>Tout simplement parce que mon objectif est d&rsquo;intervenir le minimum sur le processus de brassage. Mon r\u00eave serait de programmer la recette, d&rsquo;appuyer sur Start, et de revenir 6 heures plus tard pour mettre les levures et fermer la cuve de fermentation. Mais, \u00e7\u00e0 c&rsquo;est l&rsquo;objectif \u00e0 moyen terme (cet \u00e9t\u00e9 ??)&#8230;<\/p>\n<p>Pour l&rsquo;instant, je voudrais au moins pouvoir programmer par exemple \u00a0:<\/p>\n<ol>\n<li>Atteindre 55\u00b0C, faire sonner l&rsquo;alarme (pour m&rsquo;indiquer de transf\u00e9rer l&rsquo;eau et le grain, puis de brancher les tuyaux correctement pour le brassage).<\/li>\n<li>Commencer \u00e0 brasser en actionnant les deux pompes et en ex\u00e9cutant ces palier de temp\u00e9ratures:\n<ol>\n<li>20 minutes \u00e0 55\u00b0C<\/li>\n<li>20 minutes \u00e0 62\u00b0C<\/li>\n<li>30 minutes \u00e0 68\u00b0C<\/li>\n<li>10 minutes \u00e0 74\u00b0C<\/li>\n<li>Puis sonner l&rsquo;alarme pour m&rsquo;indiquer de faire la phase de rin\u00e7age.<\/li>\n<\/ol>\n<\/li>\n<li>etc.<\/li>\n<\/ol>\n<p>Avoir un mode automatique permet donc de r\u00e9aliser les paliers sans mon intervention. En mode manuel, il me faudrait choisir la temp\u00e9rature, programmer l&rsquo;alarme, puis une fois\u00a0que celle-ci sonne, il me faudrait alors revenir programmer la temp\u00e9rature suivante et le compte \u00e0 rebours.<\/p>\n<p>J&rsquo;ai identifi\u00e9 6 phases principales, et chacune aura son menu :<\/p>\n<ol>\n<li>La phase de remplissage de la cuve d&rsquo;eau chaude avec de l&rsquo;eau (froide) qui vient du robinet (quelques minutes)<\/li>\n<li>Le pr\u00e9chauffage de l&rsquo;eau chaude dans cette m\u00eame cuve (quelques minutes)<\/li>\n<li>Le transfert d&rsquo;une partie de l&rsquo;eau chaude dans la cuve de brassage (quelques minutes)<\/li>\n<li>Le brassage \u00e0 proprement parler (de une \u00e0 deux heures)<\/li>\n<li>Le rin\u00e7age des dr\u00eaches (les restes des grains de malt qui doivent \u00eatre lav\u00e9s avec de l&rsquo;eau tr\u00e8s chaude pour en extraire le reste des sucre). Cette phase est lente et r\u00e9alise le transfert du mo\u00fbt depuis la cuve de brassage vers la cuve d&rsquo;\u00e9bullition.(de une \u00e0 deux heures)<\/li>\n<li>Et enfin l&rsquo;\u00e9bullition\u00a0(de une \u00e0 deux heures)<\/li>\n<\/ol>\n<p>Actuellement l&rsquo;interface graphique du mode automatique n&rsquo;est pas encore compl\u00e8tement finalis\u00e9e, mais en voici une \u00e9bauche pour la phase 2 et la phase 3:<\/p>\n<figure id=\"attachment_437\" aria-describedby=\"caption-attachment-437\" style=\"width: 634px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/biere.alereno.org\/wp-content\/uploads\/2015\/01\/BrewManagerAutoHeatstrike.png\"><img loading=\"lazy\" class=\"wp-image-437\" src=\"https:\/\/biere.alereno.org\/wp-content\/uploads\/2015\/01\/BrewManagerAutoHeatstrike.png\" alt=\"L'interface affich\u00e9e en mode automatique pour pr\u00e9chauffer l'eau de la cuve d'eau chaude.\" width=\"634\" height=\"380\" srcset=\"https:\/\/biere.alereno.org\/wp-content\/uploads\/2015\/01\/BrewManagerAutoHeatstrike.png 799w, https:\/\/biere.alereno.org\/wp-content\/uploads\/2015\/01\/BrewManagerAutoHeatstrike-300x180.png 300w\" sizes=\"(max-width: 634px) 100vw, 634px\" \/><\/a><figcaption id=\"caption-attachment-437\" class=\"wp-caption-text\">L&rsquo;interface affich\u00e9e en mode automatique pour pr\u00e9chauffer l&rsquo;eau de la cuve d&rsquo;eau chaude.<\/figcaption><\/figure>\n<figure id=\"attachment_438\" aria-describedby=\"caption-attachment-438\" style=\"width: 634px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/biere.alereno.org\/wp-content\/uploads\/2015\/01\/BrewManagerAutoTransferwater.png\"><img loading=\"lazy\" class=\"wp-image-438\" src=\"https:\/\/biere.alereno.org\/wp-content\/uploads\/2015\/01\/BrewManagerAutoTransferwater.png\" alt=\"L'interface affich\u00e9e en mode automatique pour transf\u00e9rer l'eau depuis la cuve d'eau chaude vers la cuve de brassage.\" width=\"634\" height=\"380\" srcset=\"https:\/\/biere.alereno.org\/wp-content\/uploads\/2015\/01\/BrewManagerAutoTransferwater.png 797w, https:\/\/biere.alereno.org\/wp-content\/uploads\/2015\/01\/BrewManagerAutoTransferwater-300x180.png 300w\" sizes=\"(max-width: 634px) 100vw, 634px\" \/><\/a><figcaption id=\"caption-attachment-438\" class=\"wp-caption-text\">L&rsquo;interface affich\u00e9e en mode automatique pour transf\u00e9rer l&rsquo;eau depuis la cuve d&rsquo;eau chaude vers la cuve de brassage. On remarque que le syst\u00e8me calcule automatiquement la dur\u00e9e de transfert en fonction de la quantit\u00e9 et du d\u00e9bit de la pompe.<\/figcaption><\/figure>\n<p>Il me faudra encore quelques heures de travail pour finaliser cela correctement.<\/p>\n<h3>Le contr\u00f4le<\/h3>\n<p>Le contr\u00f4le est assur\u00e9 par l&rsquo;Arduino. Ce dernier est programm\u00e9 en <a href=\"http:\/\/fr.wikipedia.org\/wiki\/C%2B%2B\">C++<\/a>. Je ne vais pas rentrer trop dans les d\u00e9tails d&rsquo;architecture logicielle, mais je vais tout de m\u00eame pr\u00e9senter les aspects \u00ab\u00a0r\u00e9gulation\u00a0\u00bb. La r\u00e9gulation c&rsquo;est par exemple, \u00ab\u00a0faire chauffer\u00a0\u00bb ou non le corps de chauffe pour maintenir une temp\u00e9rature mesur\u00e9e par une sonde.<\/p>\n<p>Un des avantages de programmer moi-m\u00eame l&rsquo;Arduino, c&rsquo;est que je peux vraiment faire ce que je veux avec. Un Arduino ne co\u00fbte que quelques sous\u00a0(5 environ), et me permet de remplacer trois \u00e9l\u00e9ments (2 PID + Chrono) dont le prix est bien plus \u00e9lev\u00e9. En plus c&rsquo;est plus marrant et plus gratifiant.<\/p>\n<h6>Le PID pour les corps de chauffe<\/h6>\n<p><a href=\"http:\/\/fr.wikipedia.org\/wiki\/R%C3%A9gulateur_PID\">Le\u00a0PID<\/a>, dans un langage d&rsquo;automaticien,\u00a0c&rsquo;est (pour faire simple) un bloc qui prends en entr\u00e9e une valeur <strong>X<\/strong> et qui fait varier une sortie <strong>Y<\/strong>. En principe, les variations sur <strong>Y<\/strong> sont suppos\u00e9es influer sur <strong>X<\/strong>. Le but du PID est de s&rsquo;assurer que <strong>X<\/strong> prenne la valeur que l&rsquo;on souhaite qu&rsquo;elle prenne (le <strong>X vis\u00e9<\/strong>). Y&rsquo;a plein d&rsquo;applications possibles. Voici des exemples:<\/p>\n<ul>\n<li>Dans mon cas, le <strong>X<\/strong>, c&rsquo;est la temp\u00e9rature de la cuve en \u00b0C (entre 10\u00b0C et 100\u00b0C), et le <strong>Y<\/strong>, c&rsquo;est la puissance \u00e0 appliquer sur le corps de chauffe en Watts (entre 0 W et 6000 W). Je souhaite que la cuve soit \u00e0 une temp\u00e9rature pr\u00e9cise <strong>X vis\u00e9<\/strong>, et le PID se charge de trouver la puissance <strong>Y<\/strong> pour atteindre rapidement ou maintenir pr\u00e9cis\u00e9ment cette temp\u00e9rature. Le PID va automatiquement prendre en consid\u00e9ration la dissipation thermique.<\/li>\n<li>L&rsquo;exemple historique se trouve dans la marine, et dans les auto-pilotes. Un bateau \u00a0doit g\u00e9n\u00e9ralement maintenir un cap pr\u00e9cis\u00e9ment (c&rsquo;est le <strong>X vis\u00e9<\/strong>). Une boussole lui fournir le <strong>X<\/strong>. Le PID calcule la position du gouvernail pour maintenir le cap sur <strong>X vis\u00e9.\u00a0<\/strong>Le PID va automatiquement prendre en consid\u00e9ration le vent ou les courant qui font d\u00e9vier le cap.<\/li>\n<\/ul>\n<p>Trois param\u00e8tres (gains) influencent le PID :<\/p>\n<ul>\n<li>Le gain\u00a0proportionnel <strong>P<\/strong>, qui prends l&rsquo;erreur et calcule un Y. Dans mon cas, c&rsquo;est 1 kW par dizi\u00e8me de degr\u00e9. (Si la temp\u00e9rature mesur\u00e9e est trop basse par rapport \u00e0 celle vis\u00e9e de 0.3\u00b0C, on applique 3 kW sur le corps de chauffe)<\/li>\n<li>Le gain int\u00e9gral <strong>I,<\/strong> qui prends en compte le cumul des erreurs pr\u00e9c\u00e9dentes et le multiplie par <strong>I<\/strong>, puis l&rsquo;ajoute au r\u00e9sultat des calculs pr\u00e9c\u00e9dents. Son but est de maintenir une certaine puissance de maintien lorsque l&rsquo;erreur est nulle.<\/li>\n<li>Enfin, le gain d\u00e9riv\u00e9 <strong>D,<\/strong> qui prends en compte la pente des erreurs pr\u00e9c\u00e9dentes. Son but est de tenir compte de la dynamique du syst\u00e8me dans les phase ou l&rsquo;on\u00a0minimise cherche \u00e0 atteindre une nouvelle temp\u00e9rature vis\u00e9e.<\/li>\n<\/ul>\n<p>Le PID est principalement utilis\u00e9 pour chauffer l&rsquo;eau de la cuve d&rsquo;eau chaude. Dans la cuve d&rsquo;\u00e9bullition mes premiers tests ont montr\u00e9 que le manque de brassage d&rsquo;eau faisait que la temp\u00e9rature n&rsquo;\u00e9tait pas homog\u00e8ne au sein de la cuve. Donc r\u00e9guler sur une temp\u00e9rature arbitraire n&rsquo;aurait pas vraiment de sens. C&rsquo;est pour cette raison que je contr\u00f4le la cuve d&rsquo;\u00e9bullition directement en puissance, en appliquant directement la valeur qui maintient une \u00e9bullition constante et suffisante (autour de\u00a04 kW selon mes premiers tests).<\/p>\n<h6>Les pompes<\/h6>\n<p>Je ne r\u00e9gule pas les pompes \u00e0 proprement parler, vu que je ne v\u00e9rifie pas la quantit\u00e9 de liquide pomp\u00e9 (ceci viendra plus tard). Par contre, mon syst\u00e8me me permet de calculer le d\u00e9bit dans des situations courantes, comme par exemple le passage de l&rsquo;eau depuis la marmite d&rsquo;eau chaude vers la marmite de brassage. A terme je souhaite que les volumes soient automatiquement g\u00e9r\u00e9s et que je n&rsquo;aie pas \u00e0 les mesurer syst\u00e9matiquement.<\/p>\n<h3>Conclusion<\/h3>\n<p>C&rsquo;est vraiment cette partie qui me distingue de tout ce que les autres ont fait. Et y&rsquo;a encore beaucoup de place pour des am\u00e9liorations. Mais on verra surement ce qu&rsquo;il faut faire en priorit\u00e9 apr\u00e8s un ou deux brassages&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>L&rsquo;interface Mon syst\u00e8me utilise des boutons et des interrupteurs physiques pour certaines op\u00e9rations de base : allumer des pompes ou s\u00e9lectionner lequel des corps de chauffe est actif. \u00a0Tout le reste passe par l&rsquo;interface graphique. Le logiciel\u00a0affich\u00e9 est grandement inspir\u00e9 du design d&rsquo;un de ceux que j&rsquo;utilise chez Cybelec (l&rsquo;entreprise ou je\u00a0travaille). Je rappelle qu&rsquo;on &hellip; <a href=\"https:\/\/biere.alereno.org\/?p=427\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Contr\u00f4le et Interface<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[6],"tags":[],"_links":{"self":[{"href":"https:\/\/biere.alereno.org\/index.php?rest_route=\/wp\/v2\/posts\/427"}],"collection":[{"href":"https:\/\/biere.alereno.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/biere.alereno.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/biere.alereno.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/biere.alereno.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=427"}],"version-history":[{"count":9,"href":"https:\/\/biere.alereno.org\/index.php?rest_route=\/wp\/v2\/posts\/427\/revisions"}],"predecessor-version":[{"id":449,"href":"https:\/\/biere.alereno.org\/index.php?rest_route=\/wp\/v2\/posts\/427\/revisions\/449"}],"wp:attachment":[{"href":"https:\/\/biere.alereno.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=427"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/biere.alereno.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=427"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/biere.alereno.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=427"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}