{"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\/pt\/blog\/news\/lytko-obedinyaet","title":{"rendered":"Lytko integra","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>H\u00e1 algum tempo, apresentamos a voc\u00ea <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/474420\/\">um termostato inteligente<\/a><\/noindex>. O artigo atual foi inicialmente pensado como uma demonstra\u00e7\u00e3o de seu firmware e sistema de controle. Mas, para explicar a l\u00f3gica de funcionamento do termostato e o que implementamos, \u00e9 necess\u00e1rio delinear todo o conceito como um todo.<\/p>\n<p><img decoding=\"async\" alt=\"Lytko integra\" 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>Sobre automa\u00e7\u00e3o<\/h3>\n<p>\nCondi\u00e7\u00f5es, toda a automa\u00e7\u00e3o pode ser dividida em tr\u00eas categorias:<br \/>\n<u>Categoria 1<\/u> \u2014 dispositivos \u201cinteligentes\u201d individuais. Voc\u00ea adquire l\u00e2mpadas, chaleiras etc., de diferentes fabricantes. Vantagens: cada dispositivo expande as possibilidades e aumenta o conforto. Desvantagens: para cada novo fabricante, \u00e9 necess\u00e1rio um aplicativo pr\u00f3prio. Os protocolos de dispositivos de diferentes fabricantes frequentemente n\u00e3o s\u00e3o compat\u00edveis entre si.<\/p>\n<p><u>Categoria 2<\/u> \u2014 instala\u00e7\u00e3o de um PC de placa \u00fanica ou compat\u00edvel com x86. Isso remove as limita\u00e7\u00f5es de poder de computa\u00e7\u00e3o, e neste equipamento \u00e9 instalado o MajorDoMo ou qualquer outra distribui\u00e7\u00e3o de servidor para gerenciar a casa inteligente. Dessa forma, os dispositivos da maioria dos fabricantes se conectam em um espa\u00e7o informacional \u00fanico. Ou seja, um servidor para a casa inteligente \u00e9 criado. Vantagens: compatibilidade sob um centro \u00fanico, o que oferece amplas possibilidades de controle. Desvantagens: em caso de falha do servidor, todo o sistema retorna \u00e0 fase 1, ou seja, torna-se fragmentado ou in\u00fatil.<\/p>\n<p><u>Categoria 3<\/u> \u2014 a op\u00e7\u00e3o mais hardcore. Na fase de reparo, todas as comunica\u00e7\u00f5es s\u00e3o instaladas e todos os sistemas s\u00e3o duplicados. Vantagens: tudo \u00e9 levado ao ideal e, assim, a casa se torna realmente inteligente. Desvantagens: extremo custo comparado \u00e0s categorias 1 e 2, necessidade de planejamento antecipado de tudo e considera\u00e7\u00e3o de cada detalhe.<\/p>\n<p>A maioria dos usu\u00e1rios escolhem a op\u00e7\u00e3o um e, em seguida, transita gradualmente para a op\u00e7\u00e3o dois. E, posteriormente, os mais determinados alcan\u00e7am a op\u00e7\u00e3o 3. <\/p>\n<p>Mas existe uma op\u00e7\u00e3o que pode ser chamada de sistema distribu\u00eddo: cada dispositivo separado ser\u00e1 tanto servidor quanto cliente. Essencialmente, \u00e9 uma tentativa de unir a op\u00e7\u00e3o 1 e a op\u00e7\u00e3o 2. Reunir todas as suas vantagens e eliminar desvantagens, encontrando um meio-termo. <\/p>\n<p>\u00c9 poss\u00edvel que algu\u00e9m diga que essa op\u00e7\u00e3o j\u00e1 foi desenvolvida. Mas essas solu\u00e7\u00f5es s\u00e3o espec\u00edficas; destinadas a pessoas com conhecimento em programa\u00e7\u00e3o. Nosso objetivo \u00e9 reduzir a barreira de entrada em sistemas distribu\u00eddos, tanto na forma de dispositivos finais quanto na integra\u00e7\u00e3o de dispositivos existentes em nosso sistema. No caso do termostato, o usu\u00e1rio simplesmente desinstala seu termostato antigo, instala um inteligente e conecta os sensores que j\u00e1 possui a ele. Sem nenhuma a\u00e7\u00e3o adicional.<\/p>\n<p>Vamos considerar a integra\u00e7\u00e3o em nosso sistema como exemplo. <\/p>\n<p>Suponha que temos 8 m\u00f3dulos Sonoff na rede. Alguns usu\u00e1rios precisar\u00e3o apenas do controle via nuvem Sonoff (categoria 1). Outros come\u00e7ar\u00e3o a usar firmware de terceiros e migrar\u00e3o gradualmente para a categoria 2. A maioria dos firmwares de terceiros opera pelo mesmo princ\u00edpio: transmiss\u00e3o de dados para um servidor MQTT. OpenHub, Majordomo ou qualquer outro serve a um \u00fanico prop\u00f3sito \u2013 unir dispositivos dispersos em um \u00fanico espa\u00e7o informativo, localizado na Internet ou em uma rede local. Portanto, a presen\u00e7a de um Servidor \u00e9 obrigat\u00f3ria. Aqui surge o principal problema \u2013 se o Servidor falhar, todo o sistema deixa de funcionar de forma aut\u00f4noma. Para evitar isso, os sistemas se tornam mais complexos, adicionando maneiras manuais de controle, que duplicam a automa\u00e7\u00e3o em caso de falha do Servidor. <\/p>\n<p>N\u00f3s, por outro lado, seguimos um caminho diferente, onde cada dispositivo \u00e9 autossuficiente. Assim, o Servidor n\u00e3o desempenha um papel decisivo, apenas amplia a funcionalidade.<\/p>\n<p>Vamos voltar ao experimento mental. Novamente pegamos os mesmos 8 m\u00f3dulos Sonoff e instalamos neles o firmware Lytko. Todas as implementa\u00e7\u00f5es do firmware Lytko t\u00eam a fun\u00e7\u00e3o <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Simple_Service_Discovery_Protocol\">SSDP<\/a><\/noindex>. SSDP \u00e9 um protocolo de rede, baseado em um conjunto de protocolos da Internet, usado para anunciar e descobrir servi\u00e7os de rede. A resposta a uma solicita\u00e7\u00e3o pode ser tanto padr\u00e3o quanto estendida. Incorporamos a esse retorno, al\u00e9m das fun\u00e7\u00f5es padr\u00e3o, a cria\u00e7\u00e3o de uma lista de dispositivos na rede. Assim, os dispositivos se encontram e cada um deles ter\u00e1 essa lista. Exemplo de lista 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\": \"term\u00f4metro\"\n\t}, \n\t{\n\t\t\"id\": 94967282,\n\t\t\"ip\": \"192.168.x.x\",\n                \"type\": \"term\u00f4metro\"\n\t}<\/code><\/pre>\n<p>\nComo mostrado no exemplo, a lista inclui os IDs dos dispositivos, o endere\u00e7o IP na rede, o tipo de bloco (neste caso, um termostato baseado em Sonoff). Esta lista \u00e9 atualizada a cada dois minutos (esse intervalo \u00e9 suficiente para responder \u00e0s mudan\u00e7as din\u00e2micas no n\u00famero de dispositivos na rede). Assim, monitoramos a adi\u00e7\u00e3o, altera\u00e7\u00e3o e desconex\u00e3o de dispositivos sem qualquer a\u00e7\u00e3o do usu\u00e1rio. Esta lista \u00e9 enviada para o navegador ou aplicativo m\u00f3vel, e o script gera automaticamente a p\u00e1gina com a quantidade especificada de blocos. Cada bloco corresponde a um dispositivo\/sensor\/controlador. Visualmente, a lista \u00e9 assim:<\/p>\n<p><img decoding=\"async\" alt=\"Lytko integra\" src=\"\/wp-content\/uploads\/2020\/01\/743abfe57e451aac901db58ed5d81a00.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMas e se outros sensores de r\u00e1dio estiverem conectados ao esp8266\/esp32 atrav\u00e9s do cc2530 (ZigBee) ou nrf24 (MySensors)? <\/p>\n<h3>Sobre projetos<\/h3>\n<p>\nExistem diversos sistemas distribu\u00eddos no mercado. Nosso sistema permite integra\u00e7\u00e3o com os mais populares. <\/p>\n<p>Abaixo est\u00e3o projetos que, de uma forma ou de outra, tentam mudar a situa\u00e7\u00e3o de incompatibilidade entre diferentes fabricantes. Por exemplo, <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> ou <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/zesp32\">ZESP32<\/a><\/noindex>. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.zigbee2mqtt.io\/\">ZigBee2MQTT <\/a><\/noindex> ligado a um servidor MQTT, portanto n\u00e3o \u00e9 adequado para este exemplo. <\/p>\n<p>Uma das op\u00e7\u00f5es para implementar MySensors \u00e9 um gateway baseado em ESP8266. Os outros exemplos s\u00e3o baseados em ESP32. Neles, podemos implementar nosso princ\u00edpio de opera\u00e7\u00e3o para detectar e criar uma lista de dispositivos. <\/p>\n<p>Vamos fazer mais um experimento mental. Temos o gateway ZESP32 ou SLS Gateway ou MySensors. Como podemos integr\u00e1-los em um \u00fanico espa\u00e7o de informa\u00e7\u00e3o? \u00c0s fun\u00e7\u00f5es padr\u00e3o desses gateways, adicionaremos a biblioteca do protocolo SSDP. Ao consultar este controlador via SSDP, ele adicionar\u00e1 \u00e0 resposta padr\u00e3o uma lista de dispositivos conectados a ele. Com base nessa informa\u00e7\u00e3o, o navegador gerar\u00e1 a p\u00e1gina. Em termos gerais, isso parecer\u00e1 assim:<\/p>\n<p><img decoding=\"async\" alt=\"Lytko integra\" src=\"\/wp-content\/uploads\/2020\/01\/8fba0ebb6be1ee35db010a819e87425c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Interface web<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Lytko integra\" src=\"\/wp-content\/uploads\/2020\/01\/627baaf58524b92261c55408479606d1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Aplicativo PWA<\/i><\/p>\n<pre><code class=\"json\">\"ssdpList\": \n{\n   \"id\": 94967291, \/\/ identificador \u00fanico do dispositivo\n   \"ip\": \"192.168.x.x\", \/\/ endere\u00e7o ip na rede\n   \"type\": \"term\u00f4metro\" \/\/ tipo de dispositivo\n},\n{\n   \"id\": 94967292,\n   \"ip\": \"192.168.x.x\",\n   \"type\": \"term\u00f4metro\"\n},\n{\n   \"id\": 94967293,\n   \"ip\": \"192.168.x.x\",\n   \"type\": \"term\u00f4metro\"\n},\n{  \n   \"id\": 13587532, \n   \"type\": \"interruptor\"  \n},\n{  \n   \"id\": 98412557, \n   \"type\": \"detector de fuma\u00e7a\"\n},\n{  \n   \"id\": 57995113, \n   \"type\": \"sensor de contato\"\n},\n{  \n   \"id\": 74123668,\n   \"type\": \"sensor de temperatura, umidade e press\u00e3o\"\n},\n{\n    \"id\": 74621883, \n    \"type\": \"sensor de temperatura e umidade\"\n}\n<\/code><\/pre>\n<p>\nA partir do exemplo, podemos ver que os dispositivos s\u00e3o adicionados de forma independente uns dos outros. Tr\u00eas termostatos est\u00e3o conectados com seus pr\u00f3prios endere\u00e7os IP e cinco sensores diferentes com IDs \u00fanicos. Se o sensor estiver conectado \u00e0 rede Wi-Fi, ter\u00e1 seu pr\u00f3prio IP; se estiver conectado ao gateway, o endere\u00e7o IP do dispositivo ser\u00e1 o endere\u00e7o IP do gateway.<\/p>\n<p>Para a comunica\u00e7\u00e3o com os dispositivos, utilizamos WebSocket. Isso permite minimizar o consumo de recursos em compara\u00e7\u00e3o com solicita\u00e7\u00f5es GET e obter informa\u00e7\u00f5es dinamicamente durante a conex\u00e3o ou altera\u00e7\u00e3o. <\/p>\n<p>Os dados s\u00e3o obtidos diretamente do dispositivo ao qual o bloco pertence, contornando o servidor. Assim, em caso de falha de qualquer um dos dispositivos, o sistema continua funcionando. No interface web, apenas o dispositivo que desapareceu da lista n\u00e3o ser\u00e1 exibido. Mas o sinal de sua aus\u00eancia, se necess\u00e1rio, chegar\u00e1 como uma notifica\u00e7\u00e3o no aplicativo do usu\u00e1rio. <\/p>\n<p>A primeira tentativa de implementar essa abordagem foi um aplicativo PWA. Isso permite armazenar a base de blocos no dispositivo do usu\u00e1rio e solicitar apenas os dados necess\u00e1rios. No entanto, devido \u00e0s particularidades da estrutura, essa op\u00e7\u00e3o \u00e9 incompleta. E a \u00fanica sa\u00edda \u00e9 um aplicativo nativo para Android e iOS, que est\u00e1 atualmente em desenvolvimento ativo. Por padr\u00e3o, o aplicativo funcionar\u00e1 apenas na rede interna. Se necess\u00e1rio, pode-se mudar tudo para controle externo. Assim, quando o usu\u00e1rio sai da rede local, o aplicativo comutar\u00e1 automaticamente para a nuvem. <\/p>\n<p>O controle externo \u00e9 uma duplica\u00e7\u00e3o completa da p\u00e1gina. Ao ativar a p\u00e1gina, o usu\u00e1rio pode se conectar ao servidor e gerenciar os dispositivos atrav\u00e9s do painel pessoal. Assim, o servidor amplia a funcionalidade, permitindo gerenciar dispositivos estando fora de casa e sem estar preso \u00e0 configura\u00e7\u00e3o de encaminhamentos de portas ou a um IP dedicado.<\/p>\n<p>Assim, a op\u00e7\u00e3o descrita acima est\u00e1 desprovida das desvantagens da abordagem do servidor e possui v\u00e1rias vantagens, como a flexibilidade na conex\u00e3o de novos dispositivos.<\/p>\n<h3>Sobre o termostato<\/h3>\n<p>\nVamos considerar o sistema de gerenciamento com base em nosso termostato.<\/p>\n<p>Previsto:<\/p>\n<ol>\n<li>Regula\u00e7\u00e3o da temperatura de cada termostato (exibida como um bloco separado);<\/li>\n<li>Configura\u00e7\u00e3o da programa\u00e7\u00e3o de opera\u00e7\u00e3o do termostato (manh\u00e3, dia, noite, madrugada);<\/li>\n<li>Sele\u00e7\u00e3o da rede Wi-Fi e conex\u00e3o do dispositivo a ela;<\/li>\n<li>Atualiza\u00e7\u00e3o do dispositivo \"over-the-air\";<\/li>\n<li>Configura\u00e7\u00e3o do MQTT;<\/li>\n<li>Configura\u00e7\u00e3o da rede \u00e0 qual o dispositivo est\u00e1 conectado.<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Lytko integra\" src=\"\/wp-content\/uploads\/2020\/01\/a25f2a8daeabdeba36aa11557eacab0e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAl\u00e9m do gerenciamento atrav\u00e9s da interface web, tamb\u00e9m \u00e9 poss\u00edvel usar o cl\u00e1ssico \u2014 toques na tela. A bordo est\u00e1 um monitor Nextion NX3224T024 de 2,4 polegadas. A escolha recaiu sobre ele devido \u00e0 facilidade de uso do dispositivo. No entanto, estamos desenvolvendo nosso pr\u00f3prio monitor baseado em STM32. Sua funcionalidade n\u00e3o \u00e9 inferior \u00e0 do Nextion, mas ter\u00e1 um custo menor, o que impactar\u00e1 positivamente no pre\u00e7o final do dispositivo.<\/p>\n<p><img decoding=\"async\" alt=\"Lytko integra\" src=\"\/wp-content\/uploads\/2020\/01\/ad98f51863dce7cbee1f1ea88891599f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nComo qualquer tela de termostato respeit\u00e1vel, nosso Nextion pode:<\/p>\n<ul>\n<li>definir a temperatura necess\u00e1ria para o usu\u00e1rio (com os bot\u00f5es \u00e0 direita);<\/li>\n<li>ligar e desligar o modo de opera\u00e7\u00e3o programado (bot\u00e3o N);<\/li>\n<li>exibir o funcionamento do rel\u00e9 (seta \u00e0 esquerda);<\/li>\n<li>possuir prote\u00e7\u00e3o contra crian\u00e7as (as Press\u00f5es f\u00edsicas s\u00e3o bloqueadas enquanto o cadeado n\u00e3o for liberado);<\/li>\n<li>exibir o n\u00edvel do sinal WiFi.<\/li>\n<\/ul>\n<p>\nAl\u00e9m disso, atrav\u00e9s do monitor \u00e9 poss\u00edvel:<\/p>\n<ul>\n<li>selecionar o tipo de sensor que o usu\u00e1rio possui;<\/li>\n<li>gerenciar a fun\u00e7\u00e3o de prote\u00e7\u00e3o contra crian\u00e7as;<\/li>\n<li>atualizar o firmware.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Lytko integra\" src=\"\/wp-content\/uploads\/2020\/01\/efe3a84ba7e8c95212323ad1370550e0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAo clicar na barra WiFi, o usu\u00e1rio obt\u00e9m informa\u00e7\u00f5es sobre a rede conectada. O c\u00f3digo QR \u00e9 utilizado para emparelhar o dispositivo com a vers\u00e3o firmware do HomeKit.<\/p>\n<p><img decoding=\"async\" alt=\"Lytko integra\" src=\"\/wp-content\/uploads\/2020\/01\/79f55d4872f73a7c03a9f855be8089dc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDemonstra\u00e7\u00e3o de opera\u00e7\u00e3o com o display:<\/p>\n<p><img decoding=\"async\" alt=\"Lytko integra\" src=\"\/wp-content\/uploads\/2020\/01\/bf8ed3d7ae06b0364b393fc442e3556b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDesenvolvemos <noindex><a rel=\"nofollow\" href=\"http:\/\/demo.lytko.com\">uma p\u00e1gina de demonstra\u00e7\u00e3o<\/a><\/noindex> com tr\u00eas termostatos conectados.<\/p>\n<p>Voc\u00ea pode perguntar: \u201cQual \u00e9 a particularidade do seu termostato?\u201d Atualmente, existem muitos termostatos no mercado com fun\u00e7\u00e3o Wi-Fi, opera\u00e7\u00e3o programada e controle sens\u00edvel ao toque. E entusiastas desenvolveram m\u00f3dulos para interagir com a maioria dos sistemas populares de casa inteligente (Majordomo, HomeAssistant etc.). <\/p>\n<p>Nosso termostato \u00e9 compat\u00edvel com esses sistemas e possui todas as fun\u00e7\u00f5es mencionadas. Mas a caracter\u00edstica distintiva \u00e9 que o termostato est\u00e1 sempre sendo aprimorado, gra\u00e7as \u00e0 flexibilidade do sistema. A cada atualiza\u00e7\u00e3o, a funcionalidade ser\u00e1 expandida. Ao m\u00e9todo padr\u00e3o de controle do sistema (programa\u00e7\u00e3o), adicionaremos um adaptativo. O aplicativo permite obter a geolocaliza\u00e7\u00e3o do usu\u00e1rio. Gra\u00e7as a isso, o sistema mudar\u00e1 dinamicamente os modos de opera\u00e7\u00e3o de acordo com sua localiza\u00e7\u00e3o. E o m\u00f3dulo de clima permitir\u00e1 se adaptar \u00e0s condi\u00e7\u00f5es meteorol\u00f3gicas. <\/p>\n<p>E escalabilidade. Qualquer um poder\u00e1 substituir o termostato padr\u00e3o instalado por nosso modelo. Com um m\u00ednimo de esfor\u00e7o. Selecionamos os 5 sensores mais populares dispon\u00edveis no mercado e adicionamos suporte para eles. Mas mesmo nos casos de caracter\u00edsticas exclusivas de um sensor, o usu\u00e1rio poder\u00e1 conect\u00e1-lo ao nosso termostato. Para isso, ser\u00e1 necess\u00e1rio calibrar o termostato para trabalhar com o sensor espec\u00edfico. Forneceremos as instru\u00e7\u00f5es.<\/p>\n<p>Ao conectar o termostato ou qualquer outro dispositivo, ele aparece simultaneamente em todos os lugares: tanto na interface web quanto no aplicativo PWA. A adi\u00e7\u00e3o do dispositivo ocorre automaticamente: basta conect\u00e1-lo \u00e0 rede Wi-Fi. <\/p>\n<p>Nosso sistema n\u00e3o depende de um servidor, e em caso de falha, n\u00e3o se torna obsoleto. Mesmo com a falha de um dos componentes, o sistema n\u00e3o come\u00e7a a operar em modo de emerg\u00eancia. Controladores, sensores, dispositivos \u2014 cada elemento \u00e9 tanto servidor quanto cliente, portanto totalmente aut\u00f4nomo. <\/p>\n<p>Para aqueles interessados \u2014 nossas redes sociais: <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\">Telegram News<\/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>E-mail: shop@lytko.com<\/p>\n<p><b>P. S.<\/b> n\u00e3o estamos sugerindo abrir m\u00e3o do servidor. Tamb\u00e9m oferecemos suporte a servidores MQTT e temos nossa pr\u00f3pria nuvem. Nosso objetivo \u00e9 elevar a estabilidade e confiabilidade do sistema a um novo patamar. Para que o servidor n\u00e3o seja um ponto fraco, mas complemente a funcionalidade e torne o sistema mais conveniente.<br \/>\n<br \/>Fonte: <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.5 - 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\/pt\/blog\/news\/lytko-obedinyaet\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/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 | ProHoster","description":"H\u00e1 algum tempo, apresentamos a voc\u00ea o termostato inteligente.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/news\/lytko-obedinyaet","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/55356","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=55356"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/55356\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=55356"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=55356"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=55356"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}