{"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\/en\/blog\/news\/lytko-obedinyaet","title":{"rendered":"Lytko unites","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Some time ago, we introduced you to <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/474420\/\">a smart thermostat<\/a><\/noindex>. This article was initially intended to demonstrate its firmware and control system. However, to explain the thermostat's functionality and what we have implemented, it is necessary to outline the entire concept as a whole.<\/p>\n<p><img decoding=\"async\" alt=\"Lytko unites\" 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>About automation<\/h3>\n<p>\nGenerally, all automation can be divided into three categories:<br \/>\n<u>Category 1<\/u> \u2014 separate 'smart' devices. You purchase bulbs, kettles, etc., from different manufacturers. Pros: each device expands functionality and increases comfort. Cons: each new manufacturer requires its application. Device protocols from different manufacturers are often incompatible with one another.<\/p>\n<p><u>Category 2<\/u> \u2014 installation of a single-board PC or x86 compatible system. This removes limits on computing power, and you can install MajorDoMo or any other server distribution to manage your smart home. Thus, devices from most manufacturers are connected in a unified information space. That is, you have your own server for the smart home. Pros: compatibility under a single center provides expanded management capabilities. Cons: if the server fails, the whole system reverts to phase 1, meaning it becomes fragmented or useless.<\/p>\n<p><u>Category 3<\/u> \u2014 the most hardcore option. During the renovation phase, all communications are laid out and all systems are duplicated. Pros: everything is perfected to an ideal level, making the home truly smart. Cons: extreme cost compared to categories 1 and 2, requiring thorough planning of all details in advance.<\/p>\n<p>Most users choose option one and then gradually transition to option two. Eventually, the most persistent reach option three. <\/p>\n<p>However, there is an option that can be called a distributed system: each individual device will act as both a server and a client. Essentially, this is an attempt to combine option 1 with option 2. To take all their pros and eliminate the cons, finding a middle ground. <\/p>\n<p>Some might say that such an option has already been developed. However, these solutions are narrow-focused; intended for those well-versed in programming. Our goal is to lower the entry barriers for such distributed systems, both in terms of end devices and in integrating existing devices into our system. With a thermostat, for example, the user simply removes their old thermostat, installs a smart one, and connects their existing sensors to it. No additional actions are required.<\/p>\n<p>Let's consider the integration into our system using an example. <\/p>\n<p>Imagine we have 8 Sonoff modules in our network. Some users may find cloud control via Sonoff sufficient (category 1). Others will opt for third-party firmware and gradually transition to category 2. Most third-party firmware works on the same principle: data transmission to an MQTT server. OpenHub, Majordomo, or any other serve the same purpose \u2013 to unify disparate devices into a single informational space, located either on the Internet or within a local network. Consequently, having a server is mandatory. Hence, the main problem arises \u2013 if the server fails, the entire system stops functioning autonomously. To prevent this, systems become more complex, adding manual control methods that duplicate automatics in case of server failure. <\/p>\n<p>We, however, took a different approach, where each device is self-sufficient. Thus, the server does not play a crucial role, merely expanding functionality.<\/p>\n<p>Let's return to our thought experiment. Again, we will take the same 8 Sonoff modules and install Lytko firmware on them. All Lytko firmware implementations feature a function <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Simple_Service_Discovery_Protocol\">SSDP<\/a><\/noindex>. SSDP is a network protocol based on a set of Internet protocols used for announcing and discovering network services. A response to a request can be either standard or extended. In addition to standard functions, we have incorporated the creation of a list of devices on the network. Thus, the devices find each other on their own, and each will have such a list. An example of an SSDP list:<\/p>\n<pre><code class=\"json\">\"ssdpList\": \n\t{\n\t\t\"id\": 94967291,  \n\t\t\"ip\": \"192.168.x.x\",\n                \"type\": \"thermostat\"\n\t}, \n\t{\n\t\t\"id\": 94967282,\n\t\t\"ip\": \"192.168.x.x\",\n                \"type\": \"thermostat\"\n\t}<\/code><\/pre>\n<p>\nAs seen in the example, the list includes device IDs, IP addresses in the network, and the type of block (in our case, a thermostat based on Sonoff). This list is updated every two minutes (this interval is sufficient to respond to dynamic changes in the number of devices in the network). Thus, we track the addition, modification, and disconnection of devices without any action from the user. This list is sent to the browser or mobile app, and the script generates a page with the specified number of blocks. Each block corresponds to one device\/sensor\/controller. Visually, the list looks like this:<\/p>\n<p><img decoding=\"async\" alt=\"Lytko unites\" src=\"\/wp-content\/uploads\/2020\/01\/743abfe57e451aac901db58ed5d81a00.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBut what if other radio sensors are connected to the esp8266\/esp32 via cc2530 (ZigBee) or nrf24 (MySensors)? <\/p>\n<h3>About projects<\/h3>\n<p>\nThere are various distributed systems on the market. Our system allows integration with the most popular ones. <\/p>\n<p>Below are projects that in one way or another aim to change the situation with incompatibility between different manufacturers. These include, for example, <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> or <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/zesp32\">ZESP32<\/a><\/noindex>. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.zigbee2mqtt.io\/\">ZigBee2MQTT <\/a><\/noindex> is tied to the MQTT server, so it does not fit the example. <\/p>\n<p>One of the implementations of MySensors is a gateway based on ESP8266. The other examples are on ESP32. In them, we can implement our principle of device detection and list creation. <\/p>\n<p>Let's conduct another thought experiment. We have a ZESP32 or SLS Gateway or MySensors gateway. How can we unify them in a single information space? We will add the SSDP protocol library to the standard functions of these gateways. When accessing this controller via SSDP, it will add a list of devices connected to it to the standard response. Based on this information, the browser will generate a page. In general, it will look like this:<\/p>\n<p><img decoding=\"async\" alt=\"Lytko unites\" src=\"\/wp-content\/uploads\/2020\/01\/8fba0ebb6be1ee35db010a819e87425c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Web Interface<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Lytko unites\" src=\"\/wp-content\/uploads\/2020\/01\/627baaf58524b92261c55408479606d1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>PWA application<\/i><\/p>\n<pre><code class=\"json\">\"ssdpList\": \n{\n   \"id\": 94967291, \/\/ unique device identifier\n   \"ip\": \"192.168.x.x\", \/\/ IP address in the network\n   \"type\": \"thermostat\" \/\/ device type\n},\n{\n   \"id\": 94967292,\n   \"ip\": \"192.168.x.x\",\n   \"type\": \"thermostat\"\n},\n{\n   \"id\": 94967293,\n   \"ip\": \"192.168.x.x\",\n   \"type\": \"thermostat\"\n},\n{  \n   \"id\": 13587532, \n   \"type\": \"switch\"  \n},\n{  \n   \"id\": 98412557, \n   \"type\": \"smoke\"\n},\n{  \n   \"id\": 57995113, \n   \"type\": \"contact_sensor\"\n},\n{  \n   \"id\": 74123668,\n   \"type\": \"temperature_humidity_pressure_sensor\"\n},\n{\n    \"id\": 74621883, \n    \"type\": \"temperature_humidity_sensor\"\n}\n<\/code><\/pre>\n<p>\nThe example shows that devices are added independently of each other. Three thermostats with their own IP addresses and five different sensors with unique IDs are connected. If a sensor is connected to the Wi-Fi network, it will have its own IP; if connected to a gateway, the device's IP address will be that of the gateway.<\/p>\n<p>We use WebSocket for communication with devices. This minimizes resource consumption compared to GET requests and allows for dynamic information updates upon connection or changes. <\/p>\n<p>Data is taken directly from the device that owns the block, bypassing the server. Thus, if any device fails, the system continues to operate. The web interface simply does not display the missing device from the list. However, a notification about the loss will be sent to the user's application if necessary. <\/p>\n<p>The first attempt to implement such an approach was a PWA application. This allows for storing the block database on the user's device and requesting only the necessary data. However, due to structural features, this option is incomplete. The only solution is a native application for Android and iOS, which is currently in active development. By default, the application will only work in the internal network. If needed, everything can be switched to external management. Thus, when the user leaves the local network, the application automatically switches to the cloud. <\/p>\n<p>External management is a complete duplication of the page. When the page is activated, the user can log in to the server and control the devices through their personal account. Thus, the server expands functionality, enabling users to manage devices while away from home and not being tied to port forwarding or a static IP.<\/p>\n<p>Thus, the aforementioned option lacks the shortcomings of the server approach and has several advantages, such as flexibility in connecting new devices.<\/p>\n<h3>About the thermostat<\/h3>\n<p>\nLet's consider the control system using our thermostat as an example.<\/p>\n<p>Features include:<\/p>\n<ol>\n<li>Temperature regulation for each thermostat (displayed as a separate block);<\/li>\n<li>Scheduling the operation of the thermostat (morning, day, evening, night);<\/li>\n<li>Selecting the Wi-Fi network and connecting the device to it;<\/li>\n<li>Airborne device updates;<\/li>\n<li>MQTT configuration;<\/li>\n<li>Configuring the network to which the device is connected.<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Lytko unites\" src=\"\/wp-content\/uploads\/2020\/01\/a25f2a8daeabdeba36aa11557eacab0e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn addition to controlling via a web interface, we have provided a classic option \u2014 pressing on the display. It features a 2.4-inch Nextion NX3224T024 monitor. This choice was made due to the ease of use with the device. However, we are developing our own monitor based on STM32. Its functionality is just as good as that of the Nextion but will cost less, which will positively affect the final price of the device.<\/p>\n<p><img decoding=\"async\" alt=\"Lytko unites\" src=\"\/wp-content\/uploads\/2020\/01\/ad98f51863dce7cbee1f1ea88891599f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLike any respectable thermostat screen, our Nextion can:<\/p>\n<ul>\n<li>set the required temperature for the user (using the buttons on the right);<\/li>\n<li>turn the operation mode on and off according to a schedule (N button);<\/li>\n<li>display the relay operation (left arrow);<\/li>\n<li>has child protection (physical presses are blocked while the lock is engaged);<\/li>\n<li>display the WiFi signal level.<\/li>\n<\/ul>\n<p>\nAdditionally, with the monitor, you can:<\/p>\n<ul>\n<li>select the type of sensor installed by the user;<\/li>\n<li>manage the child protection feature;<\/li>\n<li>update the firmware.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Lytko unites\" src=\"\/wp-content\/uploads\/2020\/01\/efe3a84ba7e8c95212323ad1370550e0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBy clicking on the WiFi bar, the user can learn information about the connected network. A QR code is used for pairing the device in the HomeKit firmware.<\/p>\n<p><img decoding=\"async\" alt=\"Lytko unites\" src=\"\/wp-content\/uploads\/2020\/01\/79f55d4872f73a7c03a9f855be8089dc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDemo of working with the display:<\/p>\n<p><img decoding=\"async\" alt=\"Lytko unites\" src=\"\/wp-content\/uploads\/2020\/01\/bf8ed3d7ae06b0364b393fc442e3556b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWe developed <noindex><a rel=\"nofollow\" href=\"http:\/\/demo.lytko.com\">a demo page<\/a><\/noindex> with three connected thermostats.<\/p>\n<p>You may ask: \u201cWhat is special about your thermostat?\u201d Currently, there are many thermostats on the market with Wi-Fi capabilities, scheduled operation, and touch control. Enthusiasts have written modules for integration with most popular smart home systems (Majordomo, HomeAssistant, etc.). <\/p>\n<p>Our thermostat is compatible with such systems and possesses all the aforementioned features. However, the distinguishing factor is that the thermostat is constantly being improved, thanks to the flexibility of the system. With each update, the functionality will expand. In addition to the standard mode of system management (by schedule), we will add adaptive control. The application allows for obtaining the user's geolocation. Because of this, the system will dynamically change operational modes based on their location. The weather module will enable it to adapt to weather conditions. <\/p>\n<p>And scalability. Anyone can easily replace their existing thermostat with ours with minimal effort. We've selected the five most popular sensors available on the market and added support for them. However, even in the case of exclusive sensor features, users will be able to connect it to our thermostat. Calibration of the thermostat for use with a specific sensor will be required. We will provide instructions.<\/p>\n<p>When connecting a thermostat or any other device, it appears everywhere: both in the web interface and in the PWA application. Adding a device happens automatically: you just need to connect it to the Wi-Fi network. <\/p>\n<p>Our system does not rely on a server, and in case of its failure, it does not turn into a pumpkin. Even if one of the components fails, the system does not enter a fallback state. Controllers, sensors, devices \u2014 each element acts as both a server and a client, making it fully autonomous. <\/p>\n<p>For those interested \u2014 our social media: <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>Email: shop@lytko.com<\/p>\n<p><b>P. S.<\/b> We do not advocate for abandoning the server. We also support MQTT servers and have our own cloud. Our goal is to elevate the stability and reliability of the system to a qualitatively new level. So that the server is not a weak point, but complements functionality and makes the system more user-friendly.<br \/>\n<br \/>Source: <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\/en\/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=\"en_US\" \/>\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\/en\/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 combines | ProHoster","description":"Some time ago, we introduced you to the smart thermostat.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/news\/lytko-obedinyaet","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","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\/en\/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\/en\/wp-json\/wp\/v2\/posts\/55356","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=55356"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/55356\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=55356"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=55356"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=55356"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}