{"id":3472,"date":"2015-12-01T12:04:18","date_gmt":"2015-12-01T10:04:18","guid":{"rendered":"http:\/\/yeti.albascout.ro\/blog\/?p=3472"},"modified":"2015-12-01T12:04:18","modified_gmt":"2015-12-01T10:04:18","slug":"cum-sa-ti-deschizi-poarta-de-pe-internet","status":"publish","type":"post","link":"https:\/\/yeti.albascout.ro\/blog\/cum-sa-ti-deschizi-poarta-de-pe-internet\/","title":{"rendered":"Cum s\u0103-\u021bi deschizi poarta de pe Internet"},"content":{"rendered":"<p>Magazia cerceta\u0219ilor din Alba Iulia este \u00een casa familiei mele. Din\u00a0iunie nu mai locuie\u0219te nimeni\u00a0tot timpul acolo, a\u0219a c\u0103 am luat-o ca o provocare personal\u0103 s\u0103 g\u0103sesc o solu\u021bie de acces facil\u0103 pentru lideri la materiale, care s\u0103 nu implice nici multe chei, nici o singur\u0103 cheie plimbat\u0103 pe la toat\u0103 lumea \u00een func\u021bie de nevoie,\u00a0solu\u021bii care, de\u0219i func\u021bionale, sunt complicat de gestionat.<\/p>\n<p>A\u0219a c\u0103 mi-am propus ca obiectiv\u00a0s\u0103 creez un sistem care s\u0103 le permit\u0103 tuturor liderilor s\u0103 deschid\u0103 poarta de la curte &#8230; de pe Internet, mai concret din aplica\u021bia web pe care o folosim pentru toate lucururile legate de Centrul Local.<\/p>\n<p><!--more--><\/p>\n<p>Mi-a luat c\u00e2teva luni s\u0103 leg toate lucrurile \u00eempreun\u0103 \u00eentr-un sistem func\u021bional,\u00a0pentru c\u0103 nu am niciodat\u0103 suficient timp\u00a0dar, cu\u00a0cele c\u00e2teva sugestii de mai jos, ar trebui s\u0103 v\u0103 pute\u021bi pune la punct un sistem asem\u0103n\u0103tor \u00eentr-un weekend &#8211;\u00a0mai ales dac\u0103\u00a0ave\u021bi la \u00eendem\u00e2n\u0103 \u0219i o borma\u0219in\u0103 :)<\/p>\n<h2>Partea cu poarta<\/h2>\n<p>Prima problem\u0103 \u0219i cea \u00een care nu aveam experien\u021b\u0103 de niciun fel a fost cea a <strong>yalei<\/strong>. Trebuia s\u0103 pot s\u0103 folosesc o yal\u0103 care s\u0103 aib\u0103 \u0219i\u00a0cheie clasic\u0103, care s\u0103 func\u021bioneze \u0219i atunci c\u00e2nd nu este curent, dar s\u0103 poat\u0103 fi ac\u021bionat\u0103 \u0219i electric. Am c\u0103utat un pic pe Internet \u0219i am g\u0103sit o firm\u0103 specializat\u0103 de a\u0219a ceva la Cluj, care se nume\u0219te YLI.<\/p>\n<p>Am g\u0103sit repede la ei ce c\u0103utam, <a href=\"http:\/\/www.yli.ro\/inchizatori-electrice-si-electromagnetice-1\/yale-electromagnetice\/yala-electromagnetica-cu-buton-pentru-exterior-sx-11l.html\">o yal\u0103 electromagnetic\u0103 cu buton pentru exterior<\/a>. Pentru c\u0103 yala are, evident, un electromagnet, ea trebuie alimentat\u0103 cumva, a\u0219a c\u0103 am luat de la ei \u0219i o <a href=\"http:\/\/www.yli.ro\/surse-manere-amortizoare-accesorii\/surse-de-alimentare\/sursa-de-alimentare-cu-carcasa-de-metal-ygy-12-10.html\">surs\u0103 de alimentare potrivit\u0103<\/a>.<\/p>\n<p>Pe scurt,\u00a0dac\u0103 yala e sub tensiune (\u00een priz\u0103) ea ac\u021bioneaz\u0103 electromagnetul care declan\u0219eaz\u0103 un mecanism \u0219i\u00a0trage z\u0103vorul. Yala trebuie alimentat\u0103 doar atunci c\u00e2nd se dore\u0219te deschiderea ei, pentru c\u00e2teva secunde.\u00a0Conceptual, problema asta se rezolv\u0103 cu un\u00a0\u00eentrerup\u0103tor. \u00cen circuite, un \u00eentrerup\u0103tor\u00a0care la r\u00e2ndul lui prime\u0219te o comand\u0103 electric\u0103 (\u00een cazul nostru, de pe Internet)\u00a0se nume\u0219te releu. \u0218i, desigur, YLI are \u0219i <a href=\"http:\/\/www.yli.ro\/surse-manere-amortizoare-accesorii\/acesorii-control-acces\/releu-cu-led.html\">relee<\/a> pentru astfel de aplica\u021bii.<\/p>\n<p>Ca povestea asta s\u0103 \u0219i func\u021bioneze, nu doar s\u0103\u00a0par\u0103 inteligent\u0103 trebuie\u00a0ca sursa, releul \u0219i yala s\u0103 fie compatibile electric (adic\u0103 s\u0103 func\u021bioneze la aceea\u0219i tensiune \u0219i sursa s\u0103 dea suficient curent pentru yal\u0103).\u00a0Componentele de mai sus le-am ales s\u0103 fie\u00a0compatibile.<\/p>\n<p>P\u00e2n\u0103 aici, costurile sunt cam de\u00a0<strong>250<\/strong> de lei, poate un pic mai mult \u00een func\u021bie de solu\u021bia de livrare (eu am ales curier dup\u0103 ce am mers p\u00e2n\u0103 la sediul firmei \u0219i n-am g\u0103sit pe unde s\u0103 intru :). Plus o v\u00e2n\u0103taie pe picior dac\u0103 v\u0103 sc\u0103pa\u021bi yala pe picior, c\u0103-i grea. Nu m\u0103 \u00eentreba\u021bi de unde \u0219tiu.<\/p>\n<h2>Partea cu\u00a0Internet-ul<\/h2>\n<p>Cu partea mecanic\u0103 \u0219i aproape toat\u0103 partea electric\u0103 rezolvate, mai aveam nevoie de o solu\u021bie de comand\u0103\u00a0electronic\u0103, prin care\u00a0s\u0103 fac leg\u0103tura dintre Internet \u0219i releu.<\/p>\n<p>A\u0219 putea s\u0103 intru \u00een mai multe detalii, dar cred c\u0103 e suficient s\u0103 zic c\u0103 cele mai comune dou\u0103 solu\u021bii acum pentru hobby-i\u0219tii din Rom\u00e2nia f\u0103r\u0103 foarte mult timp la dispozi\u021bie sunt <a href=\"https:\/\/www.arduino.cc\/en\/Main\/ArduinoBoardUno\">Arduino<\/a> \u0219i\u00a0<a href=\"https:\/\/www.raspberrypi.org\/\">RaspberryPi<\/a>. Aveam c\u00e2te unu din am\u00e2ndou\u0103 acas\u0103, am ales Raspberry pentru c\u0103 am considerat c\u0103 e mai u\u0219or de rezolvat partea de conexiune \u00een re\u021bea (la Arduino \u00ee\u021bi trebuie un <em><a href=\"https:\/\/www.arduino.cc\/en\/Main\/ArduinoEthernetShield\">shield special<\/a><\/em> \u0219i e mai mult cod de scris), dar oricare solu\u021bie poate func\u021biona\u00a0la fel de bine (\u0219i ambele sunt chiar overkill un pic).<\/p>\n<figure id=\"attachment_3474\" aria-describedby=\"caption-attachment-3474\" style=\"width: 660px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/yeti.albascout.ro\/blog\/wp-content\/uploads\/2015\/11\/DSC_8792.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-3474\" src=\"http:\/\/yeti.albascout.ro\/blog\/wp-content\/uploads\/2015\/11\/DSC_8792-1024x681.jpg\" alt=\"RaspberryPi (dreapta), pl\u0103cu\u021ba cu releu de la YLI (st\u00e2nga fa\u021b\u0103) \u0219i conectorii de la tranzistor.\" width=\"660\" height=\"439\" srcset=\"https:\/\/yeti.albascout.ro\/blog\/wp-content\/uploads\/2015\/11\/DSC_8792-1024x681.jpg 1024w, https:\/\/yeti.albascout.ro\/blog\/wp-content\/uploads\/2015\/11\/DSC_8792-300x200.jpg 300w\" sizes=\"auto, (max-width: 660px) 100vw, 660px\" \/><\/a><figcaption id=\"caption-attachment-3474\" class=\"wp-caption-text\">RaspberryPi (dreapta), pl\u0103cu\u021ba cu releu de la YLI (st\u00e2nga fa\u021b\u0103) \u0219i conectorii de la tranzistor.<\/figcaption><\/figure>\n<p>Ca \u0219i costuri, aici e mai greu de estimat c\u0103 aveam deja lucrurile cump\u0103rate, dar un RaspberryPi B V1, ca cel pe care l-am folosit eu era undeva la\u00a0<strong>170 <\/strong>de lei, un alimentator (merge orice alimentator de telefon mobil mai nou) am g\u0103sit cu vreo <strong>50<\/strong> de lei. Mai trebuie ni\u0219te cabluri de conexiune \u0219i un cablu de re\u021bea, pe care presupun\u00e2nd c\u0103 nu le ai deja ajungi la\u00a0<strong>250\u00a0<\/strong>de lei \u0219i pe partea asta.<\/p>\n<p>RaspberryPi-ul\u00a0este \u00een esen\u021b\u0103 un calculator, cu muf\u0103 de re\u021bea cu tot, deci se conecteaz\u0103 u\u0219or la Internet\u00a0\u0219i poate comunica\u00a0cu server-ul pe care avem aplica\u021bia noastr\u0103 de gestiune. Deci \u0219i problema asta este rezolvat\u0103.<\/p>\n<p>Mai trebuia rezolvat\u0103 problema c\u0103 releul ce-l cump\u0103rasem (numai de-alea aveau la YLI) vrea\u00a0comand\u0103 de 12V \u0219i RaspberryPi poate da comenzi doar pe 3.3V \u0219i pe 5V. Problema asta se rezolv\u0103 u\u0219or cu un tranzitor (sau elegant cu un alt releu, mai potrivit &#8211; am ales varianta u\u0219oar\u0103 de data asta).<\/p>\n<figure id=\"attachment_3476\" aria-describedby=\"caption-attachment-3476\" style=\"width: 660px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/yeti.albascout.ro\/blog\/wp-content\/uploads\/2015\/11\/IMG_20151130_193607.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-3476\" src=\"http:\/\/yeti.albascout.ro\/blog\/wp-content\/uploads\/2015\/11\/IMG_20151130_193607-1024x444.jpg\" alt=\"Nu se poate post tehnic f\u0103r\u0103 schem\u0103 :)\" width=\"660\" height=\"286\" srcset=\"https:\/\/yeti.albascout.ro\/blog\/wp-content\/uploads\/2015\/11\/IMG_20151130_193607-1024x444.jpg 1024w, https:\/\/yeti.albascout.ro\/blog\/wp-content\/uploads\/2015\/11\/IMG_20151130_193607-300x130.jpg 300w, https:\/\/yeti.albascout.ro\/blog\/wp-content\/uploads\/2015\/11\/IMG_20151130_193607.jpg 2048w\" sizes=\"auto, (max-width: 660px) 100vw, 660px\" \/><\/a><figcaption id=\"caption-attachment-3476\" class=\"wp-caption-text\">Nu se poate post tehnic f\u0103r\u0103 schem\u0103 :)<\/figcaption><\/figure>\n<p>Ca s\u0103 se prind\u0103\u00a0frumos, cu \u0219urub, toate firele (vezi poz\u0103), a fost nevoie s\u0103 prind de o pl\u0103cu\u021b\u0103 tranzistorul, rezisten\u021ba aferent\u0103 pentru comanda de la tranzistor \u0219i terminalele cu \u0219urub.<\/p>\n<p>La <a href=\"http:\/\/robofun.ro\/\">RoboFun<\/a> (care sunt prietenii no\u0219tri de la colaborarea pe care ne propusesem s\u0103 o facem de UP)\u00a0g\u0103si\u021bi\u00a0cam de toate, iar pentru ce nu au ei &#8211; Internet sau magazinul de componente electronice preferat.<\/p>\n<h2>Software<\/h2>\n<p>\u00cen software, fiecare framework sau limbaj de progamare se prezint\u0103\u00a0cu un\u00a0<em>Hello world!<\/em>, un progr\u0103mel exemplu care demonstreaz\u0103 cum se face cel mai\u00a0elementar lucru \u00een acel sistem.<\/p>\n<p>Pentru Raspberry, echivalentul <em>Hello World!\u00a0<\/em>este aprinsul unui led, o aplica\u021bie absolut identic\u0103 cu activatul unui releu. De aceea, progr\u0103melul \u00een Python este foarte, foarte simplu, l-am comentat mai jos.<\/p>\n<pre># releu.py\n\nimport RPi.GPIO as GPIO\n\n# se initializeaza pin-ul 12 pentru output, initial 0 logic (low)\nGPIO.setmode(GPIO.BOARD)\nGPIO.setup(12, GPIO.OUT, initial=GPIO.LOW)\n\n# se pune 1 logic (high) pe pin-ul 12 (comanda)\nGPIO.output(12, GPIO.HIGH)\n\n# asteptam 2 secunde. Manualul spune ca orice mai mult de 8 strica yala\nimport time\ntime.sleep(2)\n\n# se face curatenie; comanda trece automat pe 0 (low) pin-ul 12\nGPIO.cleanup()\n\n\n<\/pre>\n<p>De fiecare dat\u0103 c\u00e2nd programul ruleaz\u0103,\u00a0electromagnetul se alimenteaz\u0103\u00a0pentru 2 secunde, lucru care trage z\u0103vorul. Z\u0103vorul r\u0103m\u00e2ne pe pozi\u021bia deschis p\u00e2n\u0103\u00a0poarta se \u00eenchide din nou, astfel fereastra de timp \u00een care se poate deschide poarta este nelimitat\u0103, nu doar cele 2 secunde.<\/p>\n<p>Partea asta e un pic mai tehnic\u0103, pentru c\u0103 pe m\u0103sur\u0103 ce \u00eenaint\u0103m spre Internet, sistemele devin mai complexe.\u00a0Aveam mai multe variante pentru a lega server-ul de aici de server-ul\u00a0nostru din Internet, dar solu\u021bia pe care am ales-o e una pe care-am mai folosit-o \u0219i la alte sisteme similare, la care vrem s\u0103 ne putem conecta dar care nu au un IP propriu sau un uptime garantat: VPN (cu <a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-set-up-an-openvpn-server-on-ubuntu-14-04\">OpenVPN<\/a>)<\/p>\n<p>Astfel de fiecare dat\u0103 c\u00e2nd porne\u0219te (dup\u0103 o pan\u0103 de curent, spre exemplu) RaspberryPi-ul intr\u0103 \u00eentr-un VPN gestionat de server-ul nostru. Astfel, exist\u0103 o cale garantat\u0103 \u0219i privat\u0103 de comunicare \u00eentre cele dou\u0103.<\/p>\n<p>Acum, orice trebuie s\u0103 fac este s\u0103 deschid o conexiune <em>ssh<\/em> c\u0103tre Raspberry de pe \u00a0server-ul nostru, \u0219i s\u0103 rulez\u00a0progr\u0103melul de mai sus.<\/p>\n<p>Dar planul original era s\u0103 pot ap\u0103sa un buton \u00een interfa\u021ba aplica\u021biei \u0219i s\u0103 se deschid\u0103 poarta, adic\u0103 cam a\u0219a:<\/p>\n<figure id=\"attachment_3478\" aria-describedby=\"caption-attachment-3478\" style=\"width: 832px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/yeti.albascout.ro\/blog\/wp-content\/uploads\/2015\/11\/Screenshot-from-2015-11-30-18-42-132.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3478\" src=\"http:\/\/yeti.albascout.ro\/blog\/wp-content\/uploads\/2015\/11\/Screenshot-from-2015-11-30-18-42-132.png\" alt=\"Click the button\" width=\"832\" height=\"312\" srcset=\"https:\/\/yeti.albascout.ro\/blog\/wp-content\/uploads\/2015\/11\/Screenshot-from-2015-11-30-18-42-132.png 832w, https:\/\/yeti.albascout.ro\/blog\/wp-content\/uploads\/2015\/11\/Screenshot-from-2015-11-30-18-42-132-300x113.png 300w\" sizes=\"auto, (max-width: 832px) 100vw, 832px\" \/><\/a><figcaption id=\"caption-attachment-3478\" class=\"wp-caption-text\">Click to open &#8230; the gate<\/figcaption><\/figure>\n<p>Pentru aceast\u0103 buc\u0103\u021bic\u0103 de puzzle am folosit\u00a0<em><a href=\"http:\/\/www.fabfile.org\/\">fabric<\/a><\/em>, un wrapper high-level peste ssh pentru python, \u00eentr-un view Django. \u00cen esen\u021b\u0103, tot ce face comand\u0103 fabric este:<\/p>\n<pre># fabfile.py\nfrom fabric.api import run, env, cd\nfrom django.conf import settings\n\n\ndef open_gate():\n    with cd(\"\/home\/pi\"):\n        env.password = settings.GATEKEEPER_CONNECTION_PASSWORD\n        run(\"sudo python releu.py\")<\/pre>\n<h2>Lec\u021bii \u00eenv\u0103\u021bate, distrac\u021bii \u0219i \u00eembun\u0103t\u0103\u021biri<\/h2>\n<p>\u00cen mod evident, acesta nu este un proiect profesionist, \u00een care s\u0103 m\u0103 fi aplecat cu aten\u021bie pe partea de planificare \u0219i execu\u021bie. Am lucrat \u00een weekend-urile \u00een care am ajuns la Alba \u0219i scopul a fost s\u0103 satisfac o nevoie imediat\u0103 a noastr\u0103, a cerceta\u0219ilor cu nevoie de acces la magazie, \u00een cel mai scurt timp.<\/p>\n<p>A fost un proiect distractiv din mai multe puncte de vedere &#8211; o dat\u0103 c\u0103 e o aplica\u021bie\u00a0care are nevoie de de toate &#8211; de la ciocan \u0219i borma\u0219in\u0103 la high level python wrappers peste ssh :). Apoi,\u00a0nu \u0219tiu\u00a0c\u00e2t\u0103 lume poate spune c\u0103 \u0219i-a conectat laptopul la poarta de la curte :).<\/p>\n<figure id=\"attachment_3473\" aria-describedby=\"caption-attachment-3473\" style=\"width: 660px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/yeti.albascout.ro\/blog\/wp-content\/uploads\/2015\/11\/DSC_8785.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-3473\" src=\"http:\/\/yeti.albascout.ro\/blog\/wp-content\/uploads\/2015\/11\/DSC_8785-681x1024.jpg\" alt=\"Laptop + poart\u0103 = awesome\" width=\"660\" height=\"992\" srcset=\"https:\/\/yeti.albascout.ro\/blog\/wp-content\/uploads\/2015\/11\/DSC_8785-681x1024.jpg 681w, https:\/\/yeti.albascout.ro\/blog\/wp-content\/uploads\/2015\/11\/DSC_8785-200x300.jpg 200w, https:\/\/yeti.albascout.ro\/blog\/wp-content\/uploads\/2015\/11\/DSC_8785.jpg 1596w\" sizes=\"auto, (max-width: 660px) 100vw, 660px\" \/><\/a><figcaption id=\"caption-attachment-3473\" class=\"wp-caption-text\">Laptop + poart\u0103 = awesome<\/figcaption><\/figure>\n<p>Am \u00eenv\u0103\u021bat multe lucruri, de la mecanic\u0103 (am stat o sear\u0103 \u00eentreag\u0103 s\u0103 \u00een\u021beleg cum func\u021bioneaz\u0103 yala, \u00eenainte s\u0103 mi-o\u00a0scap pe picior) la probleme ceva mai filosofic-tehnice, spre exemplu care este varianta de preferat pentru o\u00a0aplica\u021bie client \/ server \u00een care server-ul e \u00een spatele unui NAT.<\/p>\n<p><strong>Ca de obicei, scopul acestui post este s\u0103 arate c\u0103 unele lucruri sunt mult mai simplu de realizat dec\u00e2t pare ini\u021bial \u0219i mult mai la \u00eendem\u00e2na oricui e dispus s\u0103 \u00eencerce. <\/strong>Dac\u0103 pot s\u0103 v\u0103 sprijin cu ideile voastre, da\u021bi-mi un semn \u0219i, \u00een m\u0103sura \u00een care \u0219tiu \u0219i pot, dau cu pl\u0103cere o m\u00e2n\u0103 de ajutor.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Magazia cerceta\u0219ilor din Alba Iulia este \u00een casa familiei mele. Din\u00a0iunie nu mai locuie\u0219te nimeni\u00a0tot timpul acolo, a\u0219a c\u0103 am luat-o ca o provocare personal\u0103 s\u0103 g\u0103sesc o solu\u021bie de acces facil\u0103 pentru lideri la materiale, care s\u0103 nu implice nici multe chei, nici o singur\u0103 cheie plimbat\u0103 pe la toat\u0103 lumea \u00een func\u021bie de &hellip; <a href=\"https:\/\/yeti.albascout.ro\/blog\/cum-sa-ti-deschizi-poarta-de-pe-internet\/\" class=\"more-link\">Continu\u0103 s\u0103 cite\u0219ti <span class=\"screen-reader-text\">Cum s\u0103-\u021bi deschizi poarta de pe Internet<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":3482,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[556,735,557],"tags":[567,571,589,818,732,799],"class_list":["post-3472","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cercetasi","category-proiecte","category-facultate","tag-alba-iulia","tag-axente-sever","tag-cercetai","tag-hardware","tag-proiect","tag-software"],"jetpack_featured_media_url":"https:\/\/yeti.albascout.ro\/blog\/wp-content\/uploads\/2015\/11\/DSC_56461.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/yeti.albascout.ro\/blog\/wp-json\/wp\/v2\/posts\/3472","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/yeti.albascout.ro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/yeti.albascout.ro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/yeti.albascout.ro\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/yeti.albascout.ro\/blog\/wp-json\/wp\/v2\/comments?post=3472"}],"version-history":[{"count":4,"href":"https:\/\/yeti.albascout.ro\/blog\/wp-json\/wp\/v2\/posts\/3472\/revisions"}],"predecessor-version":[{"id":3485,"href":"https:\/\/yeti.albascout.ro\/blog\/wp-json\/wp\/v2\/posts\/3472\/revisions\/3485"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/yeti.albascout.ro\/blog\/wp-json\/wp\/v2\/media\/3482"}],"wp:attachment":[{"href":"https:\/\/yeti.albascout.ro\/blog\/wp-json\/wp\/v2\/media?parent=3472"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/yeti.albascout.ro\/blog\/wp-json\/wp\/v2\/categories?post=3472"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/yeti.albascout.ro\/blog\/wp-json\/wp\/v2\/tags?post=3472"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}