{"id":55356,"date":"2020-01-18T00:00:00","date_gmt":"2020-01-17T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/lytko-obedinyaet"},"modified":"2020-02-18T14:03:28","modified_gmt":"2020-02-18T11:03:28","slug":"lytko-obedinyaet","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/news\/lytko-obedinyaet","title":{"rendered":"Lytko reune\u0219te","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Cu ceva timp \u00een urm\u0103, v-am prezentat <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/474420\/\">termostatul inteligent<\/a><\/noindex>. Articolul actual a fost ini\u021bial conceput ca o demonstra\u021bie a firmware-ului s\u0103u \u0219i a sistemului de control. Dar pentru a explica logica de func\u021bionare a termostatului \u0219i ceea ce am realizat, este necesar s\u0103 contur\u0103m \u00eentreaga conceptie \u00een ansamblu.<\/p>\n<p><img decoding=\"async\" alt=\"Lytko reune\u0219te\" src=\"\/wp-content\/uploads\/2020\/01\/2cb26fc59fd6708614e52873f2b5fd22.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Despre automatizare<\/h3>\n<p>\n\u00cen mod condi\u021bionat, \u00eentreaga automatizare poate fi \u00eemp\u0103r\u021bit\u0103 \u00een trei categorii:<br \/>\n<u>Categoria 1<\/u> \u2014 dispozitive \u201einteligente\u201d separate. Cump\u0103ra\u021bi de la diferi\u021bi produc\u0103tori becuri, ceainice etc. Avantaje: fiecare dispozitiv \u00eembun\u0103t\u0103\u021be\u0219te func\u021bionalit\u0103\u021bile \u0219i cre\u0219te confortul. Dezavantaje: pentru fiecare nou produc\u0103tor este necesar\u0103 o aplica\u021bie proprie. Protocolele dispozitivelor de la diferi\u021bi produc\u0103tori sunt adesea incompatible \u00eentre ele.<\/p>\n<p><u>Categoria 2<\/u> \u2014 instalarea unui PC pe o plac\u0103 unic\u0103 sau compatibil x86. Acest lucru elimin\u0103 limit\u0103rile \u00een ceea ce prive\u0219te puterea de calcul, iar pe aceast\u0103 ma\u0219in\u0103 este instalat MajorDoMo sau orice alt\u0103 distribu\u021bie server pentru managementul casei inteligente. Astfel, dispozitivele majorit\u0103\u021bii produc\u0103torilor se conecteaz\u0103 \u00eentr-un spa\u021biu informa\u021bional unic. Adic\u0103, apare propriul Server pentru casa inteligent\u0103. Avantaje: compatibilitate sub un singur centru, ceea ce ofer\u0103 posibilit\u0103\u021bi extinse pentru gestionare. Dezavantaje: \u00een cazul unei defect\u0103ri a serverului, \u00eentregul sistem revine la stadiul 1, adic\u0103 devine dezorganizat\u0103 sau inutilizabil\u0103.<\/p>\n<p><u>Categoria 3<\/u> \u2014 cea mai hardcore op\u021biune. La etapa de renovare se instaleaz\u0103 toate comunica\u021biile \u0219i se dubleaz\u0103 toate sistemele. Avantaje: totul este adus la perfec\u021biune \u0219i atunci casa devine \u00eentr-adev\u0103r inteligent\u0103. Dezavantaje: costuri extrem de mari \u00een compara\u021bie cu categoriile 1 \u0219i 2, necesitatea de a planifica din timp totul \u0219i de a lua \u00een considerare fiecare detaliu.<\/p>\n<p>Majoritatea utilizatorilor aleg op\u021biunea 1, iar apoi trec treptat la op\u021biunea 2. Iar \u00een continuare, cei mai perseverenti ajung la op\u021biunea 3. <\/p>\n<p>Dar exist\u0103 o op\u021biune care poate fi numit\u0103 sistem distribuit: fiecare dispozitiv individual va fi \u0219i server \u0219i client. Practic, este o \u00eencercare de a combina op\u021biunea 1 \u0219i op\u021biunea 2. Lu\u00e2nd toate avantajele lor \u0219i excluz\u00e2nd dezavantajele, ating\u00e2nd un echilibru ideal. <\/p>\n<p>Poate c\u0103 cineva va spune c\u0103 o astfel de variant\u0103 a fost deja dezvoltat\u0103. Dar aceste solu\u021bii sunt \u00eengust definite; pentru persoanele care sunt bine preg\u0103tite \u00een programare. Obiectivul nostru este de a reduce pragul de intrare \u00een astfel de sisteme distribuite, at\u00e2t \u00een ceea ce prive\u0219te dispozitivele finale, c\u00e2t \u0219i \u00een ceea ce prive\u0219te integrarea dispozitivelor existente \u00een sistemul nostru. \u00cen cazul termostatului, utilizatorul pur \u0219i simplu \u00eendep\u0103rteaz\u0103 vechiul termostat, instaleaz\u0103 unul inteligent \u0219i conecteaz\u0103 senzorii pe care \u00eei are deja. F\u0103r\u0103 nicio ac\u021biune suplimentar\u0103.<\/p>\n<p>S\u0103 analiz\u0103m integrarea \u00een sistemul nostru printr-un exemplu. <\/p>\n<p>S\u0103 presupunem c\u0103 avem \u00een re\u021bea 8 module Sonoff. Unora dintre utilizatori le va fi suficient s\u0103 controleze prin intermediul cloud-ului Sonoff (categora 1). Unii vor folosi firmware de ter\u021b\u0103 parte \u0219i vor trece treptat la categoria 2. Majoritatea firmware-urilor de ter\u021b\u0103 parte func\u021bioneaz\u0103 pe acelasi principiu: transmiterea datelor c\u0103tre un server MQTT. OpenHub, Majordomo sau orice altceva servesc unui singur scop \u2013 acela de a uni dispozitivele disparate \u00eentr-un spa\u021biu informa\u021bional unitar, fie \u00een Internet, fie \u00een re\u021beaua local\u0103. Prin urmare, existen\u021ba unui server este obligatorie. De aici reiese principal\u0103 problem\u0103 \u2013 \u00een cazul \u00een care serverul cedeaz\u0103, \u00eentreaga sistem\u0103 \u00eenceteaz\u0103 s\u0103 func\u021bioneze autonom. Pentru a preveni acest lucru, sistemele devin mai complexe, fiind ad\u0103ugate metode manuale de control care dubl\u0103 automatizarea \u00een cazul unei defec\u021biuni a serverului. <\/p>\n<p>Noi am ales o alt\u0103 cale, \u00een care fiecare dispozitiv este autosuficient. Astfel, serverul nu joac\u0103 un rol decisiv, ci doar extinde func\u021bionalitatea.<\/p>\n<p>S\u0103 revenim la experimentele noastre mentale. S\u0103 lu\u0103m din nou acelea\u0219i 8 module Sonoff \u0219i s\u0103 instal\u0103m firmware-ul Lytko \u00een ele. \u00cen toate firmware-urile Lytko este implementat\u0103 func\u021bia <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Simple_Service_Discovery_Protocol\">SSDP<\/a><\/noindex>. SSDP este un protocol de re\u021bea, bazat pe un set de protocoale Internet, folosit pentru anun\u021barea \u0219i descoperirea serviciilor de re\u021bea. R\u0103spunsul la cerere poate fi at\u00e2t standard, c\u00e2t \u0219i extins. Am \u00eencorporat \u00een acest r\u0103spuns, pe l\u00e2ng\u0103 func\u021biile standard, crearea unei liste de dispozitive din re\u021bea. Astfel, dispozitivele se g\u0103sesc singure \u0219i fiecare dintre ele va avea o asemenea list\u0103. Exemplu de list\u0103 SSDP:<\/p>\n<pre><code class=\"json\">\"ssdpList\": \n\t{\n\t\t\"id\": 94967291,  \n\t\t\"ip\": \"192.168.x.x\",\n                \"type\": \"termostat\"\n\t}, \n\t{\n\t\t\"id\": 94967282,\n\t\t\"ip\": \"192.168.x.x\",\n                \"type\": \"termostat\"\n\t}<\/code><\/pre>\n<p>\nDup\u0103 cum se vede \u00een exemplu, lista include id-urile dispozitivelor, adresa IP \u00een re\u021bea, tipul blocului (\u00een cazul nostru - termenostat bazat pe Sonoff). Aceast\u0103 list\u0103 se actualizeaz\u0103 o dat\u0103 la dou\u0103 minute (aceast\u0103 perioad\u0103 este suficient\u0103 pentru a r\u0103spunde la modific\u0103rile dinamice ale num\u0103rului de dispozitive din re\u021bea). Astfel, urm\u0103rim ad\u0103ugarea, modificarea \u0219i deconectarea dispozitivelor f\u0103r\u0103 vreo ac\u021biune din partea utilizatorului. Aceast\u0103 list\u0103 este trimis\u0103 c\u0103tre browser sau aplica\u021bia mobil\u0103, iar scriptul genereaz\u0103 automat pagina cu un num\u0103r specificat de blocuri. Fiecare bloc corespunde unui dispozitiv\/senzor\/controleur. Vizual, lista arat\u0103 astfel:<\/p>\n<p><img decoding=\"async\" alt=\"Lytko reune\u0219te\" src=\"\/wp-content\/uploads\/2020\/01\/743abfe57e451aac901db58ed5d81a00.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDar dac\u0103 la esp8266\/esp32 sunt conectate alte radio-senzori prin cc2530 (ZigBee) sau nrf24 (MySensors)? <\/p>\n<h3>Despre proiecte<\/h3>\n<p>\nPe pia\u021b\u0103 exist\u0103 diverse sisteme distribuite. Sistemul nostru permite integrarea cu cele mai populare. <\/p>\n<p>Mai jos sunt prezentate proiecte care, \u00eentr-un fel sau altul, \u00eencearc\u0103 s\u0103 schimbe situa\u021bia cu necompatibilitatea dintre diferi\u021bi produc\u0103tori. Acestea, de exemplu, <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/slsys\">SLS Gateway<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/mysensors\">MySensors. <\/a><\/noindex> sau <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/zesp32\">ZESP32<\/a><\/noindex>. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.zigbee2mqtt.io\/\">ZigBee2MQTT <\/a><\/noindex> este legat de serverul MQTT, prin urmare nu este potrivit pentru exemplu. <\/p>\n<p>Una dintre variantele de implementare MySensors este un gateway bazat pe ESP8266. Celelalte exemple sunt pe ESP32. \u00cen ele putem implementa principiul nostru de lucru pentru detectarea \u0219i crearea listei de dispozitive. <\/p>\n<p>S\u0103 facem un alt experiment mental. Avem un gateway ZESP32 sau SLS Gateway sau MySensors. Cum putem s\u0103 le unim \u00eentr-un spa\u021biu informa\u021bional comun? La func\u021biile standard ale acestor gateway-uri, vom ad\u0103uga biblioteca protocolului SSDP. Atunci c\u00e2nd ne adres\u0103m acestui controller prin SSDP, acesta va ad\u0103uga la r\u0103spunsul standard lista de dispozitive conectate la el. Pe baza acestei informa\u021bii, browserul va genera pagina. \u00cen mod general, aceasta va ar\u0103ta astfel:<\/p>\n<p><img decoding=\"async\" alt=\"Lytko reune\u0219te\" src=\"\/wp-content\/uploads\/2020\/01\/8fba0ebb6be1ee35db010a819e87425c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Interfa\u021ba web<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Lytko reune\u0219te\" src=\"\/wp-content\/uploads\/2020\/01\/627baaf58524b92261c55408479606d1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Aplica\u021bia PWA<\/i><\/p>\n<pre><code class=\"json\">\"ssdpList\": \n{\n   \"id\": 94967291, \/\/ identificator unic al dispozitivului\n   \"ip\": \"192.168.x.x\", \/\/ adresa ip \u00een re\u021bea\n   \"type\": \"termostat\" \/\/ tipul dispozitivului\n},\n{\n   \"id\": 94967292,\n   \"ip\": \"192.168.x.x\",\n   \"type\": \"termostat\"\n},\n{\n   \"id\": 94967293,\n   \"ip\": \"192.168.x.x\",\n   \"type\": \"termostat\"\n},\n{  \n   \"id\": 13587532, \n   \"type\": \"switch\"  \n},\n{  \n   \"id\": 98412557, \n   \"type\": \"fum\"\n},\n{  \n   \"id\": 57995113, \n   \"type\": \"sensor_contact\"\n},\n{  \n   \"id\": 74123668,\n   \"type\": \"sensor_temperatura_umiditate_presiune\"\n},\n{\n    \"id\": 74621883, \n    \"type\": \"sensor_temperatura_umiditate\"\n}\n<\/code><\/pre>\n<p>\nDin exemplu, se poate observa c\u0103 dispozitivele sunt ad\u0103ugate independent unul de cel\u0103lalt. Sunt conectate 3 termostate cu adrese IP proprii \u0219i 5 senzori diferi\u021bi cu ID-uri unice. Dac\u0103 senzorul este conectat la re\u021beaua Wi-Fi, acesta va avea propria adres\u0103 IP, iar dac\u0103 este conectat la un gateway, adresa IP a dispozitivului va fi adresa IP a gateway-ului.<\/p>\n<p>Pentru a comunica cu dispozitivele, aplic\u0103m WebSocket. Acest lucru permite minimizarea consumului de resurse \u00een compara\u021bie cu cererile GET \u0219i ob\u021binerea informa\u021biilor dinamice la conectare sau modificare. <\/p>\n<p>Datele sunt preluate direct de la dispozitivul c\u0103ruia \u00eei apar\u021bine blocul, ocolind serverul. Astfel, \u00een cazul defect\u0103rii oric\u0103rui dispozitiv, sistemul continu\u0103 s\u0103 func\u021bioneze. Pe interfa\u021ba web, dispozitivul disp\u0103rut din list\u0103 nu va fi doar ascuns. Dar un semnal de dispari\u021bie, dac\u0103 este necesar, va fi trimis sub form\u0103 de notificare \u00een aplica\u021bia utilizatorului. <\/p>\n<p>Prima \u00eencercare de implementare a acestei abord\u0103ri a fost aplica\u021bia PWA. Aceasta permite stocarea bazei de blocuri pe dispozitivul utilizatorului \u0219i cererea doar a datelor necesare. \u00cens\u0103, din cauza particularit\u0103\u021bilor structurii, aceast\u0103 variant\u0103 este incomplet\u0103. \u0218i singura solu\u021bie este aplica\u021bia nativ\u0103 pentru Android \u0219i IOS, care este \u00een prezent \u00een dezvoltare activ\u0103. Implicit, aplica\u021bia va func\u021biona doar \u00een re\u021beaua intern\u0103. Dac\u0103 este necesar, totul poate fi transferat la gestionarea extern\u0103. Astfel, atunci c\u00e2nd utilizatorul p\u0103r\u0103se\u0219te re\u021beaua local\u0103, aplica\u021bia trece automat la cloud. <\/p>\n<p>Gestionarea extern\u0103 \u2014 duplicarea complet\u0103 a paginii. La activarea paginii, utilizatorul se poate loga pe server \u0219i gestiona dispozitivele printr-un panou personal. Astfel, Serverul extinde func\u021bionalitatea, permi\u021b\u00e2nd gestionarea dispozitivelor din afara casei \u0219i f\u0103r\u0103 a fi legat de redirec\u021bionarea porturilor sau IP dedicat.<\/p>\n<p>Astfel, varianta descris\u0103 mai sus este lipsit\u0103 de dezavantajele abord\u0103rii server, av\u00e2nd \u00een plus o serie de avantaje \u00een termeni de flexibilitate \u00een conectarea de noi dispozitive.<\/p>\n<h3>Despre termostat<\/h3>\n<p>\nS\u0103 analiz\u0103m sistemul de gestionare pe baza termostatului nostru.<\/p>\n<p>Prev\u0103zut:<\/p>\n<ol>\n<li>Reglarea temperaturii fiec\u0103rui termostat (afi\u0219at\u0103 sub form\u0103 de bloc separat);<\/li>\n<li>Configurarea programului de func\u021bionare a termostatului (diminea\u021ba, ziua, seara, noaptea);<\/li>\n<li>Selectarea re\u021belei Wi-Fi \u0219i conectarea dispozitivului la aceasta;<\/li>\n<li>Actualizarea dispozitivului \"prin aer\";<\/li>\n<li>Configurarea MQTT;<\/li>\n<li>Configurarea re\u021belei la care este conectat dispozitivul.<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Lytko reune\u0219te\" src=\"\/wp-content\/uploads\/2020\/01\/a25f2a8daeabdeba36aa11557eacab0e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPe l\u00e2ng\u0103 gestionarea prin interfa\u021ba web, am prev\u0103zut \u0219i o abordare clasic\u0103 \u2013 prin ap\u0103s\u0103ri pe ecran. La bord se afl\u0103 un monitor Nextion NX3224T024 de 2,4 inci. Alegerea a fost f\u0103cut\u0103 datorit\u0103 simplit\u0103\u021bii de utilizare a acestui dispozitiv. \u00cen prezent, se dezvolt\u0103 un monitor propriu pe baza STM32. Func\u021bionalitatea sa nu este cu nimic mai prejos dec\u00e2t cea a Nextion, dar va costa mai pu\u021bin, ceea ce va influen\u021ba pozitiv pre\u021bul final al dispozitivului.<\/p>\n<p><img decoding=\"async\" alt=\"Lytko reune\u0219te\" src=\"\/wp-content\/uploads\/2020\/01\/ad98f51863dce7cbee1f1ea88891599f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCa orice ecran demn de respect al unui termostat, Nextion-ul nostru poate:<\/p>\n<ul>\n<li>seta temperatura dorit\u0103 de utilizator (prin butoanele din dreapta);<\/li>\n<li>activa \u0219i dezactiva modul de func\u021bionare conform programului (butonul N);<\/li>\n<li>af\u0219a activitatea releului (s\u0103geata din st\u00e2nga);<\/li>\n<li>dispune de protec\u021bie pentru copii (ap\u0103s\u0103rile fizice sunt blocate, p\u00e2n\u0103 c\u00e2nd \u00eencuietoarea este deblocat);<\/li>\n<li>afi\u0219a nivelul semnalului WiFi.<\/li>\n<\/ul>\n<p>\nDe asemenea, cu ajutorul monitorului se poate:<\/p>\n<ul>\n<li>alege tipul senzorului instalat de utilizator;<\/li>\n<li>gestiona func\u021bia de protec\u021bie pentru copii;<\/li>\n<li>actualiza firmware-ul.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Lytko reune\u0219te\" src=\"\/wp-content\/uploads\/2020\/01\/efe3a84ba7e8c95212323ad1370550e0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrin clic pe bara WiFi, utilizatorul va afla informa\u021bii despre re\u021beaua conectat\u0103. Codul QR este folosit pentru asocierea dispozitivului \u00een firmware-ul HomeKit.<\/p>\n<p><img decoding=\"async\" alt=\"Lytko reune\u0219te\" src=\"\/wp-content\/uploads\/2020\/01\/79f55d4872f73a7c03a9f855be8089dc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDemo de lucru cu ecranul:<\/p>\n<p><img decoding=\"async\" alt=\"Lytko reune\u0219te\" src=\"\/wp-content\/uploads\/2020\/01\/bf8ed3d7ae06b0364b393fc442e3556b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAm dezvoltat <noindex><a rel=\"nofollow\" href=\"http:\/\/demo.lytko.com\">o pagin\u0103 demo<\/a><\/noindex> cu trei termostate conectate.<\/p>\n<p>Te vei \u00eentreba: \"Care este particularitatea termostatului vostru?\" \u00cen prezent, pe pia\u021b\u0103 exist\u0103 o mul\u021bime de termostate cu func\u021bie Wi-Fi, programabilitate \u0219i control tactil. De asemenea, entuzia\u0219tii au scris module pentru interac\u021biunea cu majoritatea sistemelor populare de case inteligente (Majordomo, HomeAssistant etc.). <\/p>\n<p>Termostatul nostru este compatibil cu aceste sisteme \u0219i dispune de toate func\u021biile men\u021bionate anterior. Dar aspectul distinctiv este c\u0103 termostatul este constant \u00eembun\u0103t\u0103\u021bit, datorit\u0103 flexibilit\u0103\u021bii sistemului. Cu fiecare actualizare, func\u021bionalitatea va fi extins\u0103. Pe l\u00e2ng\u0103 metoda standard de gestionare a sistemului (programabil), vom ad\u0103uga una adaptiv\u0103. Aplica\u021bia permite ob\u021binerea geoloca\u021biei utilizatorului. Datorit\u0103 acestui lucru, sistemul va schimba dinamic modurile de func\u021bionare \u00een func\u021bie de loca\u021bia acestuia. Iar modulul de vreme va permite s\u0103 se adapteze la condi\u021biile meteorologice. <\/p>\n<p>\u0218i extensibilitate. Oricine poate \u00eenlocui termostatul obi\u0219nuit cu al nostru, cu un minim de efort. Am selectat 5 dintre cei mai populari senzori disponibili pe pia\u021b\u0103 \u0219i am ad\u0103ugat suport pentru ace\u0219tia. Dar chiar \u0219i \u00een cazul caracteristicilor exclusive ale senzorului, utilizatorul poate s\u0103-l conecteze la termostatul nostru. Pentru aceasta, va trebui s\u0103 calibra\u021bi termostatul pentru a func\u021biona cu senzorul specific. V\u0103 vom oferi instruc\u021biuni.<\/p>\n<p>Atunci c\u00e2nd conecta\u021bi termostatul sau orice alt dispozitiv, acesta apare simultan \u00een toate locurile: at\u00e2t \u00een interfa\u021ba web, c\u00e2t \u0219i \u00een aplica\u021bia PWA. Ad\u0103ugarea dispozitivului se face automat: este suficient s\u0103-l conecta\u021bi la re\u021beaua Wi-Fi. <\/p>\n<p>Sistemul nostru nu are nevoie de un server \u0219i, \u00een cazul \u00een care acesta e\u0219ueaz\u0103, nu se transform\u0103 \u00eentr-o dovleac. Chiar \u0219i \u00een cazul e\u0219ecului unuia dintre componente, sistemul nu intr\u0103 \u00een modul de avarie. Controlerele, senzorii, dispozitivele - fiecare element este at\u00e2t server, c\u00e2t \u0219i client, deci este complet autonom. <\/p>\n<p>Pentru cei interesa\u021bi - re\u021belele noastre sociale: <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/LytkoG\">Telegram<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.instagram.com\/lytko_shop\">Instagram<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/lytko_news\">\u0218tiri Telegram<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/vk.com\/lytko_shop\">VK<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.facebook.com\/groups\/2055755264635934\">Facebook<\/a><\/noindex>.<\/p>\n<p>Email: shop@lytko.com<\/p>\n<p><b>P.S.<\/b> nu \u00eencuraj\u0103m renun\u021barea la server. De asemenea, avem suport pentru serverul MQTT \u0219i un cloud propriu. Scopul nostru este s\u0103 ducem stabilitatea \u0219i fiabilitatea sistemului la un nou nivel de calitate. Astfel, serverul s\u0103 nu fie un punct slab, ci s\u0103 completeze func\u021bionalitatea \u0219i s\u0103 fac\u0103 sistemul mai convenabil.<br \/>\n<br \/>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/484296\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u043c\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0412\u0430\u043c \u0443\u043c\u043d\u044b\u0439 \u0442\u0435\u0440\u043c\u043e\u0441\u0442\u0430\u0442. \u041d\u044b\u043d\u0435\u0448\u043d\u044f\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u043a\u0430\u043a \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0435\u0433\u043e \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f. \u041d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u0442\u0435\u0440\u043c\u043e\u0441\u0442\u0430\u0442\u0430 \u0438 \u0442\u043e, \u0447\u0442\u043e \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u044e \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e \u0432 \u0446\u0435\u043b\u043e\u043c. \u041f\u0440\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u0423\u0441\u043b\u043e\u0432\u043d\u043e, \u0432\u0441\u044e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0430 \u0442\u0440\u0438 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438: \u041a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f 1 \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u201c\u0443\u043c\u043d\u044b\u0435\u201d \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0412\u044b [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-55356","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u043c\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0412\u0430\u043c \u0443\u043c\u043d\u044b\u0439 \u0442\u0435\u0440\u043c\u043e\u0441\u0442\u0430\u0442.\" \/>\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\/news\/lytko-obedinyaet\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\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\udd47Lytko \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u043c\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0412\u0430\u043c \u0443\u043c\u043d\u044b\u0439 \u0442\u0435\u0440\u043c\u043e\u0441\u0442\u0430\u0442.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/news\/lytko-obedinyaet\" \/>\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=\"2020-01-17T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:03:28+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\udd47Lytko se une\u0219te | ProHoster","description":"Cu ceva timp \u00een urm\u0103, v-am prezentat termostatul inteligent.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/news\/lytko-obedinyaet","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\udd47Lytko \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 | ProHoster","og:description":"\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u043c\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0412\u0430\u043c \u0443\u043c\u043d\u044b\u0439 \u0442\u0435\u0440\u043c\u043e\u0441\u0442\u0430\u0442.","og:url":"https:\/\/prohoster.info\/ro\/blog\/news\/lytko-obedinyaet","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":"2020-01-17T21:00:00+00:00","article:modified_time":"2020-02-18T11:03:28+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"55356","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:45:29","updated":"2022-10-02 15:29:28","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\/55356","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=55356"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/55356\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=55356"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=55356"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=55356"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}