{"id":37422,"date":"2019-10-31T22:17:33","date_gmt":"2019-10-31T19:17:33","guid":{"rendered":"https:\/\/prohoster.info\/blog\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm\/"},"modified":"2019-10-31T22:17:33","modified_gmt":"2019-10-31T19:17:33","slug":"shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm","title":{"rendered":"ShIoTiny: noduri, conexiuni \u0219i evenimente sau particularit\u0103\u021bile desen\u0103rii programelor","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"ShIoTiny: noduri, conexiuni \u0219i evenimente sau particularit\u0103\u021bile desen\u0103rii programelor\" src=\"\/wp-content\/uploads\/2019\/08\/e5d6a9f6ca0fc445f705a645e5319c06.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>Tezele principale sau despre ce este acest articol<\/h4>\n<p>\nTema articolului - programarea vizual\u0103 a PLC-ului <b>ShIoTiny<\/b> pentru casa inteligent\u0103, descris\u0103 aici: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463107\/\">ShIoTiny: automatizare mic\u0103, internetul lucrurilor sau \u00abcu \u0219ase luni \u00eenainte de vacan\u021b\u0103\u00bb<\/a><\/noindex>.<\/p>\n<p><b>Foarte pe scurt<\/b> sunt abordate conceptele precum <b>nodi<\/b>, <b>leg\u0103turi<\/b>, <b>evenimentele<\/b>, precum \u0219i particularit\u0103\u021bile \u00eenc\u0103rc\u0103rii \u0219i execu\u021biei programului vizual pe <b>ESP8266<\/b>, care st\u0103 la baza PLC-ului <b>ShIoTiny<\/b>.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Introducere sau c\u00e2teva \u00eentreb\u0103ri organiza\u021bionale<\/h4>\n<p>\n\u00cen articolul anterior despre dezvoltarea mea, am prezentat pe scurt capabilit\u0103\u021bile controlerului <b>ShIoTiny<\/b>.<\/p>\n<p>Cum era de a\u0219teptat, publicul a ar\u0103tat un interes destul de mare \u0219i mi-a adresat multe \u00eentreb\u0103ri. Unii oameni chiar mi-au propus pe loc s\u0103 cumpere controlerul de la mine. Nu, nu sunt \u00eempotriva de a c\u00e2\u0219tiga un pic, dar con\u0219tiin\u021ba mea nu-mi permite s\u0103 v\u00e2nd ceva ce este \u00eenc\u0103 foarte nefinisat din punct de vedere software.<\/p>\n<p>De aceea, am publicat pe GitHub binarele firmware-ului \u0219i schema dispozitivului: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shiotiny\/ShIoTinyBin\">firmware+instruire scurt\u0103+schem\u0103+exemple<\/a><\/noindex>.<\/p>\n<p>Acum oricine poate programa ESP-07 \u0219i s\u0103 experimenteze cu firmware-ul. Dac\u0103 cineva \u00ee\u0219i dore\u0219te cu adev\u0103rat un astfel de pl\u0103cu\u021b\u0103 ca \u00een fotografie - am c\u00e2teva buc\u0103\u021bi. Scrie\u021bi-mi pe email <b>shiotiny@yandex.ru<\/b>. Dar, a\u0219a cum spunea neuitatul Ogur\u021bov: \u00abNu r\u0103spund pentru nimic!\u00bb.<\/p>\n<p>A\u0219adar, s\u0103 trecem la esen\u021b\u0103: ce este &#171;<b>nod<\/b>&#187; (nod) \u0219i &#171;<b>eveniment<\/b>&#171;? Cum se execut\u0103 programul?<\/p>\n<p>Ca de obicei - s\u0103 \u00eencepem \u00een ordine: cu \u00eenc\u0103rcarea programului.<\/p>\n<h4>Cum se \u00eencarc\u0103 programul<\/h4>\n<p>\nS\u0103 \u00eencepem cu ceea ce se \u00eent\u00e2mpl\u0103 atunci c\u00e2nd ap\u0103s\u0103m butonul <b>Upload<\/b> \u00een editorul <b>ElDraw<\/b> \u0219i schema noastr\u0103-program\u0103, format\u0103 din p\u0103tr\u0103\u021bele frumoase, este trimis\u0103 \u00een dispozitiv.<\/p>\n<p>\u00cen primul r\u00e2nd, pe baza schemei desenate de noi, se construie\u0219te o descriere a acesteia \u00een format text.<br \/>\n\u00cen al doilea r\u00e2nd, se verific\u0103 - dac\u0103 toate intr\u0103rile nodurilor sunt conectate la ie\u0219iri. Nu ar trebui s\u0103 existe intr\u0103ri \u00absuspendate\u00bb. Dac\u0103 se descoper\u0103 o astfel de intrare - schema nu se va \u00eenc\u0103rca \u00een ShIoTiny, iar editorul va emite un avertisment corespunz\u0103tor.<\/p>\n<p>Dac\u0103 totul a decurs cu succes, editorul trimite \u00een ShIoTiny descrierea textului schemei nod cu nod. Desigur, schema existent\u0103 din ShIoTiny este \u0219tears\u0103 \u00een prealabil. Descrierea textului ob\u021binut este salvat\u0103 \u00een memoria FLASH.<\/p>\n<p>Apropo, dac\u0103 dori\u021bi s\u0103 \u0219terge\u021bi schema din dispozitiv, pur \u0219i simplu \u00eenc\u0103rca\u021bi \u00een el o schem\u0103 goal\u0103 (care s\u0103 nu con\u021bin\u0103 niciun element-nod).<\/p>\n<p>Odat\u0103 ce \u00eentreaga schem\u0103-program\u0103 este \u00eenc\u0103rcat\u0103 \u00een PLC ShIoTiny, aceasta \u00eencepe s\u0103 \u00abse execute\u00bb. Ce \u00eenseamn\u0103 asta?<\/p>\n<p>S\u0103 men\u021bion\u0103m c\u0103 procesele de \u00eenc\u0103rcare a schemei din memoria FLASH la pornire \u0219i la primirea schemei din editor sunt identice.<\/p>\n<p>Mai \u00eent\u00e2i se creeaz\u0103 obiecte-node pe baza descrierii lor.<br \/>\nApoi se realizeaz\u0103 stabilirea leg\u0103turilor \u00eentre noduri. Asta \u00eenseamn\u0103 c\u0103 se genereaz\u0103 leg\u0103turi de ie\u0219iri la intr\u0103ri \u0219i de intr\u0103ri la ie\u0219iri.<\/p>\n<p>\u0218i abia dup\u0103 toate acestea se lanseaz\u0103 ciclul principal de execu\u021bie al programului.<\/p>\n<p>Am scris mult, dar \u00eentregul proces - de la \"\u00eenc\u0103rcarea\" schemei din memoria FLASH p\u00e2n\u0103 la lansarea ciclului principal - dureaz\u0103 c\u00e2teva frac\u021biuni de secund\u0103 pentru o schem\u0103 de 60-80 de noduri.<\/p>\n<p>Cum func\u021bioneaz\u0103 ciclul principal? Foarte simplu. Mai \u00eent\u00e2i a\u0219teapt\u0103 apari\u021bia <b>evenimentele<\/b> \u00eentr-un anumit nod, apoi proceseaz\u0103 acest eveniment. \u0218i a\u0219a f\u0103r\u0103 sf\u00e2r\u0219it. Sau p\u00e2n\u0103 c\u00e2nd se \u00eencarc\u0103 o nou\u0103 schem\u0103 \u00een ShIoTiny.<\/p>\n<p>De mai multe ori am men\u021bionat astfel de lucruri ca <b>evenimentele<\/b>, <b>nodi<\/b> \u0219i <b>leg\u0103turi<\/b>. Dar ce reprezint\u0103 acestea din punct de vedere programatic? Despre aceasta vom discuta ast\u0103zi.<\/p>\n<h4>Noduri, leg\u0103turi \u0219i evenimente<\/h4>\n<p>\nEste suficient s\u0103 arunc\u0103m o privire asupra exemplelor de scheme-program pentru <b>ShIoTiny<\/b>, pentru a \u00een\u021belege c\u0103 schema const\u0103 doar din dou\u0103 entit\u0103\u021bi - noduri (sau elemente) \u0219i leg\u0103turile dintre ele.<\/p>\n<p><b>Nod<\/b>, <b>node<\/b> sau <b>element al schemei<\/b> \u2014 este o reprezentare virtual\u0103 a unei <b>ac\u021biuni<\/b> asupra datelor. Aceasta poate fi o opera\u021bie aritmetic\u0103, o opera\u021bie logic\u0103 sau orice alt\u0103 opera\u021bie care ne-ar veni \u00een minte. Principalul lucru este c\u0103 nodul are o intrare \u0219i o ie\u0219ire.<\/p>\n<p><b>Autentificare<\/b> \u2014 este locul unde nodul prime\u0219te date. Imaginea intr\u0103rilor - aceste puncte sunt \u00eentotdeauna pe partea st\u00e2ng\u0103 a nodului.<\/p>\n<p><b>Ie\u0219ire<\/b> \u2014 este locul din care se extrage rezultatul muncii nodului. Imaginea ie\u0219irilor - aceste puncte sunt \u00eentotdeauna pe partea dreapt\u0103 a nodului.<\/p>\n<p>Unele noduri nu au intr\u0103ri. Aceste noduri genereaz\u0103 rezultatul \u00een interiorul lor. De exemplu, nodul-constant sau nodul-senzor: nu au nevoie de date de la alte noduri pentru a comunica rezultatul.<\/p>\n<p>Alte noduri, dimpotriv\u0103, nu au ie\u0219iri. Acestea sunt noduri care afi\u0219eaz\u0103, de exemplu, dispozitive de ac\u021biune (releu sau alte similare). Ele primesc date, dar nu genereaz\u0103 rezultate ale calculelor disponibile pentru alte noduri.<\/p>\n<p>\u00cen plus, exist\u0103 un nod unic-comentariu. Acesta nu face nimic, nu are intr\u0103ri sau ie\u0219iri. Scopul s\u0103u este de a fi o explica\u021bie pe schem\u0103.<\/p>\n<p>Ce este \"<b>eveniment<\/b>\u00bb? <b>Eveniment<\/b> \u2014 este apari\u021bia de noi date \u00eentr-un anumit nod. De exemplu, evenimentele includ: schimbarea st\u0103rii unei intr\u0103ri (nodul <b>Input<\/b>), primirea datelor de la un alt dispozitiv (noduri <b>MQTT<\/b> \u0219i <b>UDP<\/b>), expirarea unui interval de timp stabilit (noduri <b>Timer<\/b> \u0219i <b>\u00cent\u00e2rziere<\/b>) \u0219i a\u0219a mai departe.<\/p>\n<p>De ce sunt necesare evenimentele? Pentru a determina \u00een care nod au ap\u0103rut datele noi \u0219i ce st\u0103ri ale nodurilor trebuie schimbate \u00een urma primirii de noi date. Un eveniment \u201etrece\u201d printr-un \u0219ir de noduri, p\u00e2n\u0103 c\u00e2nd viziteaz\u0103 toate nodurile a c\u0103ror stare trebuie verificat\u0103 \u0219i modificat\u0103.<\/p>\n<p>Toate nodurile pot fi \u00eemp\u0103r\u021bite \u00een dou\u0103 categorii. <br \/>\nNodurile care pot genera evenimente le vom numi \u201e<b>noduri active<\/b>\u00bb.<br \/>\nNodurile care nu pot genera evenimente le vom numi \u201e<b>noduri pasive<\/b>\u00bb.<\/p>\n<p>C\u00e2nd un nod genereaz\u0103 un eveniment (adic\u0103 \u00eei apar date noi la ie\u0219ire), atunci, \u00een general, se schimb\u0103 starea \u00eentregului lan\u021b de noduri conectate la ie\u0219irea nodului-generator de evenimente.<\/p>\n<p>Pentru a fi clar, s\u0103 lu\u0103m un exemplu din imagine.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: noduri, conexiuni \u0219i evenimente sau particularit\u0103\u021bile desen\u0103rii programelor\" src=\"\/wp-content\/uploads\/2019\/08\/41b53ae925e85c3f272adec876ab3151.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNodurile active aici sunt Input1, Input2 \u0219i Input3. Celelalte noduri sunt pasive. S\u0103 analiz\u0103m ce se \u00eent\u00e2mpl\u0103 atunci c\u00e2nd se \u00eenchide o intrare sau alta. Rezultatele sunt prezentate pentru comoditate \u00eentr-un tabel.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: noduri, conexiuni \u0219i evenimente sau particularit\u0103\u021bile desen\u0103rii programelor\" src=\"\/wp-content\/uploads\/2019\/08\/0a8435184f85e919f763048120e6e780.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDup\u0103 cum se vede, \u00een cazul unui eveniment, se construie\u0219te un lan\u021b de la nodul surs\u0103 al evenimentului p\u00e2n\u0103 la nodul final. Starea nodurilor care nu sunt incluse \u00een lan\u021b r\u0103m\u00e2ne neschimbat\u0103.<\/p>\n<p>Se ridic\u0103 o \u00eentrebare legitim\u0103: ce se \u00eent\u00e2mpl\u0103 \u00een cazul apari\u021biei a dou\u0103 sau chiar mai multe evenimente simultan?<\/p>\n<p>Ca un apreciator al creativit\u0103\u021bii lui Gleb Anfilov, sunt tentat s\u0103 trimit curioasa \u00eentrebare la cartea sa \u201eEvadarea din uimiri\u201d. Este o \u201eteorie a relativit\u0103\u021bii pentru cei mai mici\u201d, \u00een care este explicat bine ce \u00eenseamn\u0103 \u201esimultan\u201d \u0219i cum s\u0103 tr\u0103ie\u0219ti cu asta.<\/p>\n<p>Dar, practic, totul este mult mai simplu: \u00een cazul apari\u021biei a dou\u0103 sau mai multe evenimente, toate lan\u021burile sunt construite \u0219i procesate secven\u021bial din fiecare surs\u0103 de eveniment pe r\u00e2nd, f\u0103r\u0103 nicio minune.<\/p>\n<p>Urm\u0103toarea \u00eentrebare absolut fireasc\u0103 a cititorului curios este: ce se \u00eent\u00e2mpl\u0103 dac\u0103 nodurile sunt conectate \u00eentr-un cerc? Sau, a\u0219a cum se spune printre ace\u0219ti intelectuali, s\u0103 introduc\u0103 feedback. Adic\u0103 s\u0103 conecteze ie\u0219irea unuia dintre noduri la intrarea nodului anterior, astfel \u00eenc\u00e2t starea ie\u0219irii acelui nod s\u0103 influen\u021beze starea intr\u0103rii sale. S\u0103 conectezi direct ie\u0219irea unui nod la intrarea sa nu va permite editorul <b>ElDraw<\/b>. Iat\u0103 cum, indirect, a\u0219a cum se vede \u00een imaginea de mai jos \u2014 este posibil.<\/p>\n<p>Deci, ce se va \u00eent\u00e2mpla \u00een acest caz? R\u0103spunsul va fi foarte \u201edefinit\u201d: depinde de ce noduri. S\u0103 lu\u0103m un exemplu din imagine.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: noduri, conexiuni \u0219i evenimente sau particularit\u0103\u021bile desen\u0103rii programelor\" src=\"\/wp-content\/uploads\/2019\/08\/7a640c3abfd4868b87f415bce93e4918.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nC\u00e2nd contactele de intrare Input1 sunt deschise pe intrarea superioar\u0103 a nodului A \u2014 0. Pe ie\u0219irea nodului A, de asemenea 0. Pe ie\u0219irea nodului B \u2014 1. \u0218i, \u00een cele din urm\u0103, pe intrarea inferioar\u0103 a nodului A \u2014 1. Totul este clar. Pentru cei care nu \u00een\u021beleg \u2014 consulta\u021bi mai jos descrierea modului \u00een care func\u021bioneaz\u0103 nodurile \u201e\u0218I\u201d \u0219i \u201eNU\u201d.<\/p>\n<p>Acum vom conecta contactele de intrare Input1, adic\u0103 vom aplica 1 pe intrarea superioar\u0103 a nodului A. Cei care sunt familiariza\u021bi cu electronica \u0219tiu c\u0103, de fapt, vom ob\u021bine o schem\u0103 clasic\u0103 de generator folosind elemente logice. \u0218i, \u00een teorie, aceast\u0103 schem\u0103 ar trebui s\u0103 genereze continuu pe ie\u0219irile elementelor A \u0219i B secven\u021be 1-0-1-0-1-0\u2026 \u0219i 0-1-0-1-0-1-\u2026. C\u0103ci evenimentul ar trebui s\u0103 schimbe constant starea nodurilor A \u0219i B, alerg\u00e2nd \u00een cerc 2-3-2-3-\u2026!<\/p>\n<p>Dar, \u00een realitate, acest lucru nu se \u00eent\u00e2mpl\u0103. Schema va c\u0103dea \u00eentr-o stare aleatorie \u2014 fie releul va r\u0103m\u00e2ne activat, fie dezactivat, sau poate va clipoceasc\u0103 u\u0219or activ\u00e2ndu-se \u0219i dezactiv\u00e2ndu-se de mai multe ori la r\u00e2nd. Totul depinde de vremea de la polul sud al lui Marte. Iat\u0103 de ce se \u00eent\u00e2mpl\u0103 acest lucru.<\/p>\n<p>Evenimentul de la nodul Input1 schimb\u0103 starea nodului A, apoi nodul B \u0219i a\u0219a mai departe, de c\u00e2teva ori. Programul determin\u0103 \u201eciclarea\u201d evenimentului \u0219i opre\u0219te for\u021bat acest carnaval. Dup\u0103 aceea, modificarea st\u0103rii nodurilor A \u0219i B este blocat\u0103 p\u00e2n\u0103 la apari\u021bia unui nou eveniment. Momentul \u00een care programul va decide \u2014 \u201esuficient cu rotirea \u00een cerc!\u201d \u2014 depinde \u00een general de mul\u021bi factori \u0219i poate fi considerat aleatoriu.<\/p>\n<blockquote><p>Fi\u021bi aten\u021bi atunci c\u00e2nd conecta\u021bi noduri \u00een cerc \u2014 efectele nu vor fi \u00eentotdeauna evidente! Ave\u021bi o idee clar\u0103 despre ce face\u021bi \u0219i de ce!<\/p><\/blockquote>\n<p> Este posibil s\u0103 construim totu\u0219i un generator cu nodurile disponibile? Da, este posibil! Dar pentru aceasta este necesar un nod care s\u0103 fie capabil s\u0103 genereze evenimente. \u0218i exist\u0103 un astfel de nod \u2014 acesta este \u201elinia de \u00eent\u00e2rziere\u201d. S\u0103 vedem cum func\u021bioneaz\u0103 generatorul cu un periplu de 6 secunde, a\u0219a cum se vede \u00een imaginea de mai jos.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: noduri, conexiuni \u0219i evenimente sau particularit\u0103\u021bile desen\u0103rii programelor\" src=\"\/wp-content\/uploads\/2019\/08\/7dc1babedec97fb8177b846c760ff44e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nElementul cheie al generatorului este nodul A \u2014 linia de \u00eent\u00e2rziere. Dac\u0103 schimbi starea intr\u0103rii liniei de \u00eent\u00e2rziere de la 0 la 1, atunci 1 la ie\u0219ire nu va ap\u0103rea imediat, ci doar dup\u0103 un timp specificat. \u00cen cazul nostru, acesta este de 3 secunde. La fel, dac\u0103 schimbi starea intr\u0103rii liniei de \u00eent\u00e2rziere de la 1 la 0, atunci 0 la ie\u0219ire va ap\u0103rea dup\u0103 acelea\u0219i 3 secunde. Timpul de \u00eent\u00e2rziere este definit \u00een zecimi de secund\u0103. Astfel, valoarea 30 \u00eenseamn\u0103 \u2014 3 sec.<\/p>\n<p>Particularitatea liniei de \u00eent\u00e2rziere este c\u0103 aceasta genereaz\u0103 un eveniment dup\u0103 expirarea timpului de \u00eent\u00e2rziere.<\/p>\n<p>S\u0103 presupunem c\u0103 ini\u021bial la ie\u0219irea liniei de \u00eent\u00e2rziere era 0. Dup\u0103 ce trece prin nodul B \u2014 invertorul \u2014 acest 0 se transform\u0103 \u00een 1 \u0219i ajunge la intrarea liniei de \u00eent\u00e2rziere. Imediat nu se \u00eent\u00e2mpl\u0103 nimic. La ie\u0219irea liniei de \u00eent\u00e2rziere, a\u0219a cum era 0, a\u0219a va r\u0103m\u00e2ne, dar se activeaz\u0103 cronometrarea timpului de \u00eent\u00e2rziere. Trece 3 secunde. \u0218i imediat linia de \u00eent\u00e2rziere genereaz\u0103 un eveniment. La ie\u0219irea sa apare 1. Aceast\u0103 unitate, dup\u0103 ce trece prin nodul B \u2014 invertorul \u2014 se transform\u0103 \u00een 0 \u0219i ajunge la intrarea liniei de \u00eent\u00e2rziere. Trece \u00eenc\u0103 3 secunde\u2026 \u0219i procesul se repet\u0103. Astfel, la fiecare 3 secunde starea ie\u0219irii liniei de \u00eent\u00e2rziere se schimb\u0103 de la 0 la 1 \u0219i apoi de la 1 la 0. Rel\u00e8ul clic\u0103ie. Generatorul func\u021bioneaz\u0103. Perioada impulsurilor este de 6 secunde (3 secunde la ie\u0219ire 0 \u0219i 3 secunde \u2014 1).<\/p>\n<p>Dar, \u00een schemele reale, de obicei nu este nevoie s\u0103 folose\u0219ti nici acest exemplu. Exist\u0103 noduri-timeri speciale, care genereaz\u0103 minunat, f\u0103r\u0103 ajutor extern, o secven\u021b\u0103 de impulsuri cu o perioad\u0103 definit\u0103. Durata \u201e0\u201d \u0219i \u201e1\u201d \u00een aceste impulsuri este egal\u0103 cu jum\u0103tate din perioad\u0103.<\/p>\n<blockquote><p>Pentru a defini ac\u021biuni periodice, folosi\u021bi noduri-timeri.<\/p><\/blockquote>\n<p> Voi men\u021biona c\u0103 aceste semnale digitale, unde durata \u201e0\u201d \u0219i \u201e1\u201d este egal\u0103, se numesc \u201emeandru\u201d. <\/p>\n<p>Sper c\u0103 am l\u0103murit pu\u021bin \u00eentrebarea despre cum se propag\u0103 evenimentele \u00eentre noduri \u0219i ce nu trebuie s\u0103 faci.<\/p>\n<h4>Concluzie \u0219i linkuri<\/h4>\n<p>\nArticolul a ie\u0219it scurt, dar este un articol-r\u0103spuns la \u00eentreb\u0103rile ap\u0103rute despre noduri \u0219i evenimente.<\/p>\n<p>Pe m\u0103sur\u0103 ce firmware-ul avanseaz\u0103 \u0219i apar noi exemple, voi scrie despre cum s\u0103 programez <b>ShIoTiny<\/b> articole scurte, at\u00e2ta timp c\u00e2t va fi interesant pentru oameni.<\/p>\n<p>A\u0219a cum am spus anterior, schema, firmware-ul, exemplele, descrierea nodurilor \u0219i tot <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shiotiny\/ShIoTinyBin\">celelalte lucruri sunt aici<\/a><\/noindex>.<\/p>\n<p>\u00centreb\u0103ri, sugestii, critici \u2014 acestea sunt pentru aici: <b>shiotiny@yandex.ru<\/b><br \/>\n<br \/>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463285\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u0437\u0438\u0441\u044b \u0438\u043b\u0438 \u043e \u0447\u0435\u043c \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u0422\u0435\u043c\u0430 \u0441\u0442\u0430\u0442\u044c\u0438 \u2014 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u041f\u041b\u041a ShIoTiny \u0434\u043b\u044f \u0443\u043c\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0430, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0443\u0442: ShIoTiny: \u043c\u0430\u043b\u0430\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f, \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0432\u0435\u0449\u0435\u0439 \u0438\u043b\u0438 \u00ab\u0437\u0430 \u043f\u043e\u043b\u0433\u043e\u0434\u0430 \u0434\u043e \u043e\u0442\u043f\u0443\u0441\u043a\u0430\u00bb. \u041e\u0447\u0435\u043d\u044c \u043a\u0440\u0430\u0442\u043a\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0442\u0430\u043a\u0438\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f, \u043a\u0430\u043a \u0443\u0437\u043b\u044b, \u0441\u0432\u044f\u0437\u0438, \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430 ESP8266, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043e\u0439 \u041f\u041b\u041a ShIoTiny. \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28078,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37422","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u0437\u0438\u0441\u044b \u0438\u043b\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47ShIoTiny: \u0443\u0437\u043b\u044b, \u0441\u0432\u044f\u0437\u0438 \u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0438\u043b\u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u0437\u0438\u0441\u044b \u0438\u043b\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:17:33+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:17:33+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47ShIoTiny: noduri, conexiuni \u0219i evenimente sau caracteristici ale desen\u0103rii programelor | ProHoster","description":"Principalele puncte sau.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47ShIoTiny: \u0443\u0437\u043b\u044b, \u0441\u0432\u044f\u0437\u0438 \u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0438\u043b\u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c | ProHoster","og:description":"\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u0437\u0438\u0441\u044b \u0438\u043b\u0438.","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:17:33+00:00","article:modified_time":"2019-10-31T19:17:33+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37422","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 17:45:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:27:24","updated":"2026-01-23 17:45:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/37422","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=37422"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/37422\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/28078"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=37422"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=37422"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=37422"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}