{"id":470115,"date":"2025-08-08T21:01:49","date_gmt":"2025-08-08T21:01:49","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=470115"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=470115","title":{"rendered":"<span>\u0427\u0430\u0441\u0442\u044c 3: \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0435 Guition \u0441 ESPHome \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 LVGL<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<h2>\u041f\u0440\u0438\u0432\u0435\u0442 Habr! \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u0441\u0442\u0430\u0442\u0435\u0439 \u043e LVGL \u0432 ESPHome. \u0412 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0432\u0438\u0434\u0436\u0435\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0443. \u0418 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043a \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0443, \u0430 \u0432\u043e\u043e\u0431\u0449\u0435 \u0434\u0430\u0441\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u0430\u043a \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0432 ESPHome. \u0418\u0442\u0430\u043a, \u0421\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0431\u0443\u0434\u0435\u043c \u0432\u0438\u0434\u0436\u0435\u0442 \u0443\u043c\u043d\u043e\u0439 \u0440\u043e\u0437\u0435\u0442\u043a\u0438 \u0441 \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438, \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f \u0438 \u0441\u0438\u043b\u044b \u0442\u043e\u043a\u0430. \u041f\u043e\u0435\u0445\u0430\u043b\u0438&#8230;<\/h2>\n<h3>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0432\u0438\u0434\u0436\u0435\u0442\u0430<\/h3>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0432 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0432 \u043f\u0430\u043f\u043a\u0435 <code>widgets<\/code> \u043f\u0430\u043f\u043a\u0443 <code>socket<\/code>, \u0430 \u0432 \u043d\u0435\u0439 \u0444\u0430\u0439\u043b <code>socket.yaml<\/code>.<br \/> \u0412 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u0438\u0434\u0436\u0435\u0442 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 4 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432:<\/p>\n<pre><code class=\"yaml\"> substitutions:     # \u0417\u0430\u043c\u0435\u043d\u044b, \u043f\u043e\u043f\u0440\u043e\u0441\u0442\u0443 \u0433\u043e\u0432\u043e\u0440\u044f, \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b sensor:            # \u0427\u0438\u0441\u043b\u043e\u0432\u044b\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u0438 \u043e\u0442 Home Assistant text_sensor:       # \u0422\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u0438 \u043e\u0442 Home Assistant lvgl:              # \u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 <\/code><\/pre>\n<h3>Substitutions &#8212; \u0437\u0430\u043c\u0435\u043d\u044b\/\u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438\/\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b<\/h3>\n<p><strong>\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/strong>: \u0414\u0435\u043b\u0430\u044e\u0442 \u0432\u0438\u0434\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u043c \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438.<\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0432 \u043a\u043e\u0434\u0435 \u043c\u044b \u043c\u043d\u043e\u0433\u043e \u0433\u0434\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435\u0436\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043f\u0440\u043e\u0449\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0443 \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0435\u0451 \u0434\u0430\u043b\u0435\u0435 \u0432\u0435\u0437\u0434\u0435 \u0432 \u043a\u043e\u0434\u0435.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0438\u0437 Home Assistant. \u0412 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435\u0442 \u044d\u0442\u043e <code>switch.rozetka_test_socket<\/code>, \u0430 \u0442\u0430\u043a\u0436\u0435 3 \u0441\u0435\u043d\u0441\u043e\u0440\u0430 \u0441 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c\u044e, \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435\u043c \u0438 \u0441\u0438\u043b\u043e\u0439 \u0442\u043e\u043a\u0430. \u0412 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e:<\/p>\n<pre><code class=\"yaml\">sensor.rozetka_test_power   # \u041c\u043e\u0449\u043d\u043e\u0441\u0442\u044c sensor.rozetka_test_voltage # \u041d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435 sensor.rozetka_test_current # \u0421\u0438\u043b\u0430 \u0442\u043e\u043a\u0430 <\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>socket_entity<\/code> \u0447\u0442\u043e\u0431\u044b \u0434\u0430\u043b\u044c\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0451 \u0432\u043c\u0435\u0441\u0442\u043e <code>switch.rozetka_test_socket<\/code> \u0438 \u0442\u0440\u0438 \u043d\u0430\u0448\u0438\u0445 \u0441\u0435\u043d\u0441\u043e\u0440\u0430<\/p>\n<pre><code class=\"yaml\">substitutions:    socket_entity:  \"switch.rozetka_test_socket\"   socket_power:   \"sensor.rozetka_test_power\"   # \u041c\u043e\u0449\u043d\u043e\u0441\u0442\u044c   socket_voltage: \"sensor.rozetka_test_voltage\" # \u041d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435   socket_current: \"sensor.rozetka_test_current\" # \u0421\u0438\u043b\u0430 \u0442\u043e\u043a\u0430 <\/code><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f 4 \u0438\u043a\u043e\u043d\u043a\u0438 \u0438\u0437 \u043d\u0430\u0431\u043e\u0440\u0430 MDI \u0438 \u043d\u0430\u0448 \u0431\u043b\u043e\u043a <code>substitutions<\/code> \u0443\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"yaml\">substitutions:    socket_entity:  \"switch.rozetka_test_socket\"   socket_power:   \"sensor.rozetka_test_power\"   # \u041c\u043e\u0449\u043d\u043e\u0441\u0442\u044c   socket_voltage: \"sensor.rozetka_test_voltage\" # \u041d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435   socket_current: \"sensor.rozetka_test_current\" # \u0421\u0438\u043b\u0430 \u0442\u043e\u043a\u0430    socket_icon:          \"\\U000F1107\"   socket_current_icon:  \"\\U000F1480\"   socket_voltage_icon:  \"\\U000F095B\"   socket_power_icon:    \"\\U000F0241\" <\/code><\/pre>\n<p>\u0427\u0442\u043e\u0431\u044b \u0438\u043a\u043e\u043d\u043a\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u0438\u0441\u044c \u0438\u0445 \u043d\u0430\u0434\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0448\u0440\u0438\u0444\u0442\u044b <code>fonts.yaml<\/code><\/p>\n<pre><code class=\"yaml\">- file: \"fonts\/materialdesignicons-webfont.ttf\"   id: mdi_icons_40   size: 40   bpp: 4   glyphs: [     \"\\U000F1107\", # socket     \"\\U000F1480\", # current     \"\\U000F095B\", # voltage     \"\\U000F0241\", # power     \"\\U000F068A\", # shield home     \"\\U000F1828\", # shield moon     \"\\U000F099D\", # shield lock     \"\\U000F06BB\", # shield plane     \"\\U000F099E\", # shield off     \"\\U000F0498\", # shield   ]  - file: \"fonts\/materialdesignicons-webfont.ttf\"   id: mdi_icons_160   size: 160   bpp: 4   glyphs: [     \"\\U000F1107\", # socket   ] <\/code><\/pre>\n<h3>Text Sensors &#8212; \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u0438<\/h3>\n<p><strong>\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/strong>: \u041f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442 Home Assistant.<\/p>\n<p>\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441 <code>\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445<\/code> \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 Home Assistant \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u0438 <code>text_sensor<\/code>.<br \/> \u041d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430<\/p>\n<\/li>\n<li>\n<p>\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430<\/p>\n<\/li>\n<li>\n<p>\u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438, \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f \u0438 \u0441\u0438\u043b\u044b \u0442\u043e\u043a\u0430<\/p>\n<\/li>\n<\/ul>\n<h4>\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430<\/h4>\n<pre><code class=\"yaml\">text_sensor:    # \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0440\u043e\u0437\u0435\u0442\u043a\u0438   - platform: homeassistant        # \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 Home Assistant     id: socket_sensor_state        # \u041f\u0440\u0438\u0434\u0443\u043c\u044b\u0432\u0430\u0435\u043c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0434\u043b\u044f \u0441\u0432\u044f\u0437\u0438 \u0432 \u043a\u043e\u0434\u0435     entity_id: \"${socket_entity}\"  # \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0443 \u043d\u0430\u0448\u0435\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0438\u0437 substitutions <\/code><\/pre>\n<h4>\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430<\/h4>\n<pre><code class=\"yaml\">  # \u0418\u043c\u044f \u0440\u043e\u0437\u0435\u0442\u043a\u0438   - platform: homeassistant     id: socket_sensor_name     entity_id: \"${socket_entity}\"     attribute: friendly_name      # \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 <\/code><\/pre>\n<h4>\u0415\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438, \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f \u0438 \u0441\u0438\u043b\u044b \u0442\u043e\u043a\u0430<\/h4>\n<pre><code class=\"yaml\">    # \u0415\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438   - platform: homeassistant     id: socket_sensor_power_uom     entity_id: \"${socket_power}\"     attribute: unit_of_measurement      # \u0415\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f   - platform: homeassistant     id: socket_sensor_voltage_uom     entity_id: \"${socket_voltage}\"     attribute: unit_of_measurement      # \u0415\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0441\u0438\u043b\u044b \u0442\u043e\u043a\u0430   - platform: homeassistant     id: socket_sensor_current_uom     entity_id: \"${socket_current}\"     attribute: unit_of_measurement <\/code><\/pre>\n<p>\u0418\u0442\u0430\u043a, \u0443 \u043d\u0430\u0441 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u043e\u0442 \u0442\u0430\u043a\u0430\u044f \u0441\u0435\u043a\u0446\u0438\u044f <code>text_sensor<\/code> (\u043d\u043e \u043c\u044b \u043a \u043d\u0435\u0439 \u0435\u0449\u0451 \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f):<\/p>\n<pre><code class=\"yaml\">text_sensor:    # \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0440\u043e\u0437\u0435\u0442\u043a\u0438   - platform: homeassistant     id: socket_sensor_state     entity_id: \"${socket_entity}\"    # \u0418\u043c\u044f \u0440\u043e\u0437\u0435\u0442\u043a\u0438   - platform: homeassistant     id: socket_sensor_name     entity_id: \"${socket_entity}\"     attribute: friendly_name    # \u0415\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438   - platform: homeassistant     id: socket_sensor_power_uom     entity_id: \"${socket_power}\"     attribute: unit_of_measurement    # \u0415\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f   - platform: homeassistant     id: socket_sensor_voltage_uom     entity_id: \"${socket_voltage}\"     attribute: unit_of_measurement    # \u0415\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0441\u0438\u043b\u044b \u0442\u043e\u043a\u0430   - platform: homeassistant     id: socket_sensor_current_uom     entity_id: \"${socket_current}\"     attribute: unit_of_measurement <\/code><\/pre>\n<h3>Sensors &#8212; \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u0438<\/h3>\n<p><strong>\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/strong>: \u041f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442 Home Assistant.<\/p>\n<p>\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441 <code>\u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0445<\/code> \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 Home Assistant \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u0438 <code>sensor<\/code><br \/> \u041d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c <code>\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f<\/code> \u0441 \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438, \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f \u0438 \u0441\u0438\u043b\u044b \u0442\u043e\u043a\u0430:<\/p>\n<pre><code class=\"yaml\">sensor:     # \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438   - platform: homeassistant     id: socket_sensor_power     entity_id: \"${socket_power}\"      # \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f   - platform: homeassistant     id: socket_sensor_voltage     entity_id: \"${socket_voltage}\"      # \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u043b\u044b \u0442\u043e\u043a\u0430   - platform: homeassistant     id: socket_sensor_current     entity_id: \"${socket_current}\" <\/code><\/pre>\n<p>\u041a \u043d\u0438\u043c \u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0437\u0436\u0435 \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c <code>\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f<\/code> \u043f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0441 \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432.<\/p>\n<h3>LVGL \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/h3>\n<p><strong>\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/strong>: \u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432\u0438\u0434\u0436\u0435\u0442\u0430.<\/p>\n<h4>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:<\/h4>\n<p>\u0427\u0442\u043e\u0431\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0434\u0438\u0437\u0430\u0439\u043d\u0443 \u043d\u0430\u0448\u0435\u0439 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438, \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 7 \u0431\u043b\u043e\u043a\u043e\u0432:<\/p>\n<pre><code class=\"yaml\">lvgl:   pages:     - id: socket_page                 # \u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b       bg_color: color_slate_blue_gray # \u0426\u0432\u0435\u0442 \u0444\u043e\u043d\u0430       widgets:                        # \u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432          # \u041e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c         - obj:             id: socket_state             x: 20             y: 20             width: 440             height: 60             align: top_left             pad_all: 0             bg_color: color_steel_blue             bg_opa: 20%             border_opa: transp             border_width: 0             shadow_opa: transp             radius: 10          # \u041e\u0431\u044a\u0435\u043a\u0442 \u0441 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\/\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u043e\u0437\u0435\u0442\u043a\u0438          - obj:             id: socket_icon_bg             x: 20             y: 100             width: 210             height: 280             align: top_left             pad_all: 0             bg_color: color_steel_blue             bg_opa: 20%             border_opa: transp             border_width: 0             shadow_opa: transp             radius: 10          # \u041e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0438\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438         - obj:             id: socket_power_bg             x: 250             y: 100             width: 210             height: 80             align: top_left             pad_all: 0             bg_color: color_steel_blue             bg_opa: 20%             border_opa: transp             border_width: 0             shadow_opa: transp             radius: 10          # \u041e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0438\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f         - obj:             id: socket_voltage_bg             x: 250             y: 200             width: 210             height: 80             align: top_left             pad_all: 0             bg_color: color_steel_blue             bg_opa: 20%             border_opa: transp             border_width: 0             shadow_opa: transp             radius: 10          # \u041e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0438\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u0441\u0438\u043b\u044b \u0442\u043e\u043a\u0430         - obj:             id: socket_current_bg             x: 250             y: 300             width: 210             height: 80             align: top_left             pad_all: 0             bg_color: color_steel_blue             bg_opa: 20%             border_opa: transp             border_width: 0             shadow_opa: transp             radius: 10          # \u041a\u043d\u043e\u043f\u043a\u0430 \u0432\u044b\u0445\u043e\u0434\u0430         - obj:             id: socket_back_bg             x: 20             y: 400             width: 60             height: 60             align: top_left             pad_all: 0             bg_color: color_steel_blue             bg_opa: 20%             border_opa: transp             border_width: 0             shadow_opa: transp             radius: 10          # \u0418\u043c\u044f         - obj:             id: socket_name_bg             x: 100             y: 400             width: 360             height: 60             align: top_left             pad_all: 0             bg_color: color_steel_blue             bg_opa: 20%             border_opa: transp             border_width: 0             shadow_opa: transp             radius: 10 <\/code><\/pre>\n<p>\u0412\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438\u043c\u0435\u044e\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u043d\u043e \u0440\u0430\u0437\u043d\u044b\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"yaml\">- obj:     id: socket_state             # \u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0432\u0438\u0434\u0436\u0435\u0442\u0430     x: 20                        # \u041a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 X     y: 20                        # \u041a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 Y     width: 440                   # \u0428\u0438\u0440\u0438\u043d\u0430 \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u0432 \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u0445     height: 60                   # \u0412\u044b\u0441\u043e\u0442\u0430 \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u0432 \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u0445     align: top_left              # \u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 (\u0432\u0432\u0435\u0440\u0445\u0443 \u0441\u043b\u0435\u0432\u0430)     pad_all: 0                   # \u0423\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u0441\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u044b     bg_color: color_steel_blue   # \u0426\u0432\u0435\u0442 \u0444\u043e\u043d\u0430     bg_opa: 20%                  # \u041f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u0444\u043e\u043d\u0430     border_opa: transp           # \u041f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u0432\u043e\u0434\u043a\u0438 (\u043f\u043e\u043b\u043d\u0430\u044f)     border_width: 0              # \u0422\u043e\u043b\u0449\u0438\u043d\u0430 \u043e\u0431\u0432\u043e\u0434\u043a\u0438     shadow_opa: transp           # \u041f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u0442\u0435\u043d\u0438 (\u043f\u043e\u043b\u043d\u0430\u044f)     radius: 10                   # \u0421\u043a\u0440\u0443\u0433\u043b\u044f\u0435\u043c \u043a\u0440\u0430\u044f <\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u043d\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043d\u0430\u0448\u0438 \u0431\u043b\u043e\u043a\u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u043e\u043c<\/p>\n<h4>\u0411\u043b\u043e\u043a \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f<\/h4>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043d\u0430\u0448 \u0431\u043b\u043e\u043a \u0442\u0435\u043a\u0441\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0440\u043e\u0437\u0435\u0442\u043a\u0438 (\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u0438\u043b\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0430):<\/p>\n<pre><code class=\"yaml\"># \u041e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c - obj:     id: socket_state     x: 20     y: 20     width: 440     height: 60     align: top_left     pad_all: 0     bg_color: color_steel_blue     bg_opa: 20%     border_opa: transp     border_width: 0     shadow_opa: transp     radius: 10     widgets:       - label:                           # \u0412\u0438\u0434\u0436\u0435\u0442 \u0442\u0435\u043a\u0441\u0442           id: socket_state_label         # \u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440           align: center                  # \u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0448\u0435\u0433\u043e \u0431\u043b\u043e\u043a\u0430, \u0430 \u043d\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b           text_font: nunito_18           # \u0428\u0440\u0438\u0444\u0442 (\u0440\u0430\u0437\u043c\u0435\u0440)           text_color: color_misty_blue   # \u0426\u0432\u0435\u0442 \u0448\u0440\u0438\u0444\u0442\u0430           text: \" \"                      # \u0422\u0435\u0441\u0442 (\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0443\u0441\u0442\u044b\u043c, \u043f\u0435\u0440\u0435\u0434\u0430\u0434\u0438\u043c \u0447\u0435\u0440\u0435\u0437 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435) <\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044f \u043a \u0441\u0435\u043d\u0441\u043e\u0440\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u043c\u0443 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 (\u0447\u0442\u043e \u043d\u0430\u0434\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0441\u0435\u043d\u0441\u043e\u0440):<\/p>\n<pre><code class=\"yaml\">text_sensor:    # \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0440\u043e\u0437\u0435\u0442\u043a\u0438   - platform: homeassistant     id: socket_sensor_state     entity_id: \"${socket_entity}\"     on_value:       - lvgl.label.update:           id: socket_state_label           text: !lambda return x;        - if:           condition:             lambda: 'return x == \"on\";'           then:             - lvgl.label.update:                 id: socket_icon_label                 text_color: color_yellow           else:             - lvgl.label.update:                 id: socket_icon_label                 text_color: color_misty_blue <\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c <code>on_value<\/code> (\u043f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f), \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0432\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:<\/p>\n<ul>\n<li>\n<p>\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0438\u0434\u0436\u0435\u0442 \u0441 id <code>socket_state_label<\/code>. \u041f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0435\u043c\u0443 \u0432 <code>text<\/code> \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>x<\/code> (\u0441\u044b\u0440\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0435\u043d\u0441\u043e\u0440\u0430) \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0443\u0441\u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438<\/p>\n<\/li>\n<li>\n<p>\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0438\u0434\u0436\u0435\u0442 \u0441 id <code>socket_icon_label<\/code>. \u041f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0435\u043c\u0443 \u0446\u0432\u0435\u0442 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0442\u0443\u0442 \u0443\u0441\u043b\u043e\u0432\u0438\u0435, \u0435\u0441\u043b\u0438 \u0441\u0435\u043d\u0441\u043e\u0440 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>on<\/code>, \u0442\u043e \u0437\u043d\u0430\u0447\u043e\u043a \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0436\u0435\u043b\u0442\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0446\u0432\u0435\u0442 \u0431\u0443\u0434\u0435\u0442 <code>color_misty_blue<\/code><\/p>\n<\/li>\n<\/ul>\n<h4>\u0411\u043b\u043e\u043a-\u043a\u043d\u043e\u043f\u043a\u0430 \u0441 \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u0435\u0439<\/h4>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043d\u0430\u0448 \u0431\u043b\u043e\u043a \u0442\u0435\u043a\u0441\u0442 (\u0437\u043d\u0430\u0447\u043e\u043a), c \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0440\u043e\u0437\u0435\u0442\u043a\u0438 (\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u0438\u043b\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0430):<\/p>\n<pre><code class=\"yaml\"># \u041e\u0431\u044a\u0435\u043a\u0442 \u0441 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\/\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u043e\u0437\u0435\u0442\u043a\u0438  - obj:     id: socket_icon_bg     x: 20     y: 100     width: 210     height: 280     align: top_left     pad_all: 0     bg_color: color_steel_blue     bg_opa: 20%     border_opa: transp     border_width: 0     shadow_opa: transp     radius: 10     widgets:       - label:           id: socket_icon_label            align: center           text_font: mdi_icons_160           text_color: color_misty_blue           text: \"${socket_icon}\" <\/code><\/pre>\n<p>\u0414\u0435\u043b\u0430\u0435\u043c \u0438\u0437 \u0431\u043b\u043e\u043a\u0430 \u043a\u043d\u043e\u043f\u043a\u0443, \u0432\u044b\u0437\u044b\u0432\u0430\u044f \u0441\u043b\u0443\u0436\u0431\u0443 home assistant <code>switch.toggle<\/code><\/p>\n<pre><code class=\"yaml\"># \u041e\u0431\u044a\u0435\u043a\u0442 \u0441 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\/\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u043e\u0437\u0435\u0442\u043a\u0438  - obj:     id: socket_icon_bg     x: 20     y: 100     width: 210     height: 280     align: top_left     pad_all: 0     bg_color: color_steel_blue     bg_opa: 20%     border_opa: transp     border_width: 0     shadow_opa: transp     radius: 10     widgets:       - label:           id: socket_icon_label           align: center           text_font: mdi_icons_160           text_color: color_misty_blue           text: \"${socket_icon}\"     on_click:                               # \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043f\u043e \u043a\u043b\u0438\u043a\u0443       - homeassistant.action:               # \u0412\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u043b\u0443\u0436\u0431\u0443 Home Assistant           action: switch.toggle             # \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u043b\u0443\u0436\u0431\u044b (\u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f)           data:             entity_id: \"${socket_entity}\".  # \u041d\u0430\u0448\u0430 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c <\/code><\/pre>\n<p>\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043c\u044b \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u044d\u0442\u043e\u043c\u0443 \u0432\u0438\u0434\u0436\u0435\u0442\u0443 \u0441\u043e \u0441\u043c\u0435\u043d\u043e\u0439 \u0446\u0432\u0435\u0442\u0430 \u0437\u043d\u0430\u0447\u043a\u0430.<\/p>\n<h4>\u0411\u043b\u043e\u043a\u0438 \u0441 \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438, \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f \u0438 \u0441\u0438\u043b\u044b \u0442\u043e\u043a\u0430<\/h4>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043d\u0430\u0448 \u0431\u043b\u043e\u043a \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438 3 \u0442\u0435\u043a\u0441\u0442\u0430:<\/p>\n<ul>\n<li>\n<p>\u0437\u043d\u0430\u0447\u043e\u043a<\/p>\n<\/li>\n<li>\n<p>\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/p>\n<\/li>\n<li>\n<p>\u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"yaml\"># \u041e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0438\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438 - obj:     id: socket_power_bg     x: 250     y: 100     width: 210     height: 80     align: top_left     pad_all: 0     bg_color: color_steel_blue     bg_opa: 20%     border_opa: transp     border_width: 0     shadow_opa: transp     radius: 10     widgets:       - label:           id: socket_power_icon_label           x: 10                             # \u0414\u0435\u043b\u0430\u0435\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u0442\u0441\u0442\u0443\u043f \u0441\u043b\u0435\u0432\u0430           align: left_mid           text_font: mdi_icons_40           # \u0418\u043a\u043e\u043d\u043e\u0447\u043d\u044b\u0439 \u0448\u0440\u0438\u0444\u0442           text_color: color_misty_blue           text: \"${socket_power_icon}\"      # \u0418\u043a\u043e\u043d\u043a\u0430 \u0438\u0437 substitutions       - label:           id: socket_power_state_label           x: 70                             # \u0414\u0435\u043b\u0430\u0435\u043c \u043e\u0442\u0441\u0442\u0443\u043f \u043e\u0442 \u0437\u043d\u0430\u0447\u043a\u0430           align: left_mid           text_font: nunito_18           text_color: color_misty_blue           text: \" \"                         # \u041f\u0443\u0441\u0442\u043e\u0435 \u043f\u043e\u043b\u0435, \u043f\u0435\u0440\u0435\u0434\u0430\u0434\u0438\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043c       - label:           id: socket_power_state_uom_label           x: 140                            # \u0414\u0435\u043b\u0430\u0435\u043c \u043e\u0442\u0441\u0442\u0443\u043f \u043e\u0442 \u0437\u043d\u0430\u0447\u043a\u0430           align: left_mid           text_font: nunito_18           text_color: color_misty_blue           text: \" \"                         # \u041f\u0443\u0441\u0442\u043e\u0435 \u043f\u043e\u043b\u0435, \u043f\u0435\u0440\u0435\u0434\u0430\u0434\u0438\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043c <\/code><\/pre>\n<p>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043a \u043d\u0430\u0448\u0438\u043c \u0441\u0435\u043d\u0441\u043e\u0440\u0430\u043c \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0438\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:<\/p>\n<pre><code class=\"yaml\">text_sensor:   # \u0415\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438   - platform: homeassistant     id: socket_sensor_power_uom     entity_id: \"${socket_power}\"     attribute: unit_of_measurement     on_value:       - lvgl.label.update:           id: socket_power_state_uom_label           text: !lambda return x; sensor:     # \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438   - platform: homeassistant     id: socket_sensor_power     entity_id: \"${socket_power}\"     on_value:       - lvgl.label.update:           id: socket_power_state_label           text: !lambda |-             if (isnan(x)) return \"N\/A\";             char buf[16];             snprintf(buf, sizeof(buf), \"%.1f\", x);             return buf; <\/code><\/pre>\n<p>\u0418 \u0435\u0441\u043b\u0438 \u0441 \u043f\u0435\u0440\u0432\u044b\u043c \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u043c \u0432\u0441\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0442\u043e \u0441\u043e \u0432\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u043f\u043e\u044f\u0441\u043d\u044e \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442:<\/p>\n<pre><code class=\"cpp\">if (isnan(x)) return \"N\/A\"; char buf[16]; snprintf(buf, sizeof(buf), \"%.1f\", x); return buf; <\/code><\/pre>\n<ol>\n<li>\n<p><strong>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u043d\u0435\u0447\u0438\u0441\u043b\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/strong>:<\/p>\n<pre><code class=\"cpp\">if (isnan(x)) return \"N\/A\"; <\/code><\/pre>\n<ul>\n<li>\n<p><code>isnan(x)<\/code> &#8212; \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>x<\/code> \u043d\u0435\u0447\u0438\u0441\u043b\u043e\u0432\u044b\u043c (NaN)<\/p>\n<\/li>\n<li>\n<p><code>return \"N\/A\"<\/code> &#8212; \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 &#171;N\/A&#187; \u0435\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0435<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0431\u0443\u0444\u0435\u0440\u0430<\/strong>:<\/p>\n<pre><code class=\"cpp\">char buf[16]; <\/code><\/pre>\n<ul>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u0451\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u0431\u0443\u0444\u0435\u0440 \u043d\u0430 16 \u0431\u0430\u0439\u0442<\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0447\u0438\u0441\u0435\u043b \u0444\u043e\u0440\u043c\u0430\u0442\u0430 <code>-123456.789<\/code><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>\u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434<\/strong>:<\/p>\n<pre><code class=\"cpp\">snprintf(buf, sizeof(buf), \"%.1f\", x); <\/code><\/pre>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>buf<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0411\u0443\u0444\u0435\u0440 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>sizeof(buf)<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 (16 \u0431\u0430\u0439\u0442)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>\"%.1f\"<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0428\u0430\u0431\u043b\u043e\u043d \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (1 \u0437\u043d\u0430\u043a \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0447\u043a\u0438)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>x<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412\u0445\u043e\u0434\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0435\u043d\u0441\u043e\u0440\u0430<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/li>\n<li>\n<p><strong>\u0412\u043e\u0437\u0432\u0440\u0430\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430<\/strong>:<\/p>\n<pre><code class=\"cpp\">\/\/ \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0442\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 return buf; <\/code><\/pre>\n<\/li>\n<\/ol>\n<p>\u0414\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0435\u043d\u0441\u043e\u0440\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435:<\/p>\n<pre><code class=\"cpp\">\/\/ \u0414\u043b\u044f \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438 \u0438 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f (1 \u0437\u043d\u0430\u043a) snprintf(buf, sizeof(buf), \"%.1f\", x);  \/\/ \u0414\u043b\u044f \u0441\u0438\u043b\u044b \u0442\u043e\u043a\u0430 (3 \u0437\u043d\u0430\u043a\u0430) snprintf(buf, sizeof(buf), \"%.3f\", x); <\/code><\/pre>\n<h3>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f<\/h3>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0412\u0445\u043e\u0434\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0424\u043e\u0440\u043c\u0430\u0442<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>23.456789<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>%.1f<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>23.5<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>0.123456<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>%.3f<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>0.123<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>NaN<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>N\/A<\/code><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0421 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435\u043c \u0438 \u0441\u0438\u043b\u043e\u0439 \u0442\u043e\u043a\u0430 \u0432\u0441\u0435 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e<\/p>\n<h4>\u0411\u043b\u043e\u043a \u0441 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0432 \u043c\u0435\u043d\u044e<\/h4>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0435\u043a\u0441\u0442 \u0441 \u0438\u043a\u043e\u043d\u043a\u043e\u0439 \u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438:<\/p>\n<pre><code class=\"yaml\"># \u041a\u043d\u043e\u043f\u043a\u0430 \u0432\u044b\u0445\u043e\u0434\u0430 - obj:     id: socket_back_bg     x: 20     y: 400     width: 60     height: 60     align: top_left     pad_all: 0     bg_color: color_steel_blue     bg_opa: 20%     border_opa: transp     border_width: 0     shadow_opa: transp     radius: 10     widgets:       - label:           id: socket_back_label           align: center           text_font: icons_28           text_color: color_misty_blue           text: \"${exit_icon}\"     on_press:       - lvgl.page.show: devices_page           # \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 Devices \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0439       - lvgl.widget.show: menu_controls_main   # \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0438 \u043c\u0435\u043d\u044e <\/code><\/pre>\n<h4>\u0411\u043b\u043e\u043a \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438<\/h4>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0435\u043a\u0441\u0442:<\/p>\n<pre><code class=\"yaml\"># \u0418\u043c\u044f - obj:     id: socket_name_bg     x: 100     y: 400     width: 360     height: 60     align: top_left     pad_all: 0     bg_color: color_steel_blue     bg_opa: 20%     border_opa: transp     border_width: 0     shadow_opa: transp     radius: 10     widgets:       - label:           id: socket_name_label           align: center           text_font: nunito_18           text_color: color_misty_blue           text: \"friendly name\" <\/code><\/pre>\n<p>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043a \u0441\u0435\u043d\u0441\u043e\u0440\u0443 \u0438\u043c\u0435\u043d\u0438 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435:<\/p>\n<pre><code class=\"yaml\">  # \u0418\u043c\u044f \u0440\u043e\u0437\u0435\u0442\u043a\u0438   - platform: homeassistant     id: socket_sensor_name     entity_id: \"${socket_entity}\"     attribute: friendly_name     on_value:       - lvgl.label.update:           id: socket_name_label           text: !lambda return x; <\/code><\/pre>\n<h3>\u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u043a\u043e\u0434 \u043d\u0430\u0448\u0435\u0433\u043e \u0432\u0438\u0434\u0436\u0435\u0442\u0430<\/h3>\n<pre><code class=\"yaml\">substitutions:    socket_entity:  \"switch.rozetka_test_socket\"   socket_power:   \"sensor.rozetka_test_power\"   # \u041c\u043e\u0449\u043d\u043e\u0441\u0442\u044c   socket_voltage: \"sensor.rozetka_test_voltage\" # \u041d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435   socket_current: \"sensor.rozetka_test_current\" # \u0421\u0438\u043b\u0430 \u0442\u043e\u043a\u0430    socket_icon:          \"\\U000F1107\"   socket_current_icon:  \"\\U000F1480\"   socket_voltage_icon:  \"\\U000F095B\"   socket_power_icon:    \"\\U000F0241\"  text_sensor:    # \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0440\u043e\u0437\u0435\u0442\u043a\u0438   - platform: homeassistant     id: socket_sensor_state     entity_id: \"${socket_entity}\"     on_value:       - lvgl.label.update:           id: socket_state_label           text: !lambda return x;        - if:           condition:             lambda: 'return x == \"on\";'           then:             - lvgl.label.update:                 id: socket_icon_label                 text_color: color_yellow           else:             - lvgl.label.update:                 id: socket_icon_label                 text_color: color_misty_blue    # \u0418\u043c\u044f \u0440\u043e\u0437\u0435\u0442\u043a\u0438   - platform: homeassistant     id: socket_sensor_name     entity_id: \"${socket_entity}\"     attribute: friendly_name     on_value:       - lvgl.label.update:           id: socket_name_label           text: !lambda return x;    # \u0415\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438   - platform: homeassistant     id: socket_sensor_power_uom     entity_id: \"${socket_power}\"     attribute: unit_of_measurement     on_value:       - lvgl.label.update:           id: socket_power_state_uom_label           text: !lambda return x;    # \u0415\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f   - platform: homeassistant     id: socket_sensor_voltage_uom     entity_id: \"${socket_voltage}\"     attribute: unit_of_measurement     on_value:       - lvgl.label.update:           id: socket_voltage_state_uom_label           text: !lambda return x;    # \u0415\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0441\u0438\u043b\u044b \u0442\u043e\u043a\u0430   - platform: homeassistant     id: socket_sensor_current_uom     entity_id: \"${socket_current}\"     attribute: unit_of_measurement     on_value:       - lvgl.label.update:           id: socket_current_state_uom_label           text: !lambda return x;  sensor:   # \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438   - platform: homeassistant     id: socket_sensor_power     entity_id: \"${socket_power}\"     on_value:       - lvgl.label.update:           id: socket_power_state_label           text: !lambda |-             if (isnan(x)) return \"N\/A\";             char buf[16];             snprintf(buf, sizeof(buf), \"%.1f\", x);             return buf;    # \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f   - platform: homeassistant     id: socket_sensor_voltage     entity_id: \"${socket_voltage}\"     on_value:       - lvgl.label.update:           id: socket_voltage_state_label           text: !lambda |-             if (isnan(x)) return \"N\/A\";             char buf[16];             snprintf(buf, sizeof(buf), \"%.1f\", x);             return buf;    # \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u043b\u044b \u0442\u043e\u043a\u0430   - platform: homeassistant     id: socket_sensor_current     entity_id: \"${socket_current}\"     on_value:       - lvgl.label.update:           id: socket_current_state_label           text: !lambda |-             if (isnan(x)) return \"N\/A\";             char buf[16];             snprintf(buf, sizeof(buf), \"%.3f\", x);             return buf;   lvgl:   pages:     - id: socket_page       bg_color: color_slate_blue_gray       widgets:          # \u041e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c         - obj:             id: socket_state             x: 20             y: 20             width: 440             height: 60             align: top_left             pad_all: 0             bg_color: color_steel_blue             bg_opa: 20%             border_opa: transp             border_width: 0             shadow_opa: transp             radius: 10             widgets:               - label:                   id: socket_state_label                   align: center                   text_font: nunito_18                   text_color: color_misty_blue                   text: \" \"          # \u041e\u0431\u044a\u0435\u043a\u0442 \u0441 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\/\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u043e\u0437\u0435\u0442\u043a\u0438          - obj:             id: socket_icon_bg             x: 20             y: 100             width: 210             height: 280             align: top_left             pad_all: 0             bg_color: color_steel_blue             bg_opa: 20%             border_opa: transp             border_width: 0             shadow_opa: transp             radius: 10             widgets:               - label:                   id: socket_icon_label                   align: center                   text_font: mdi_icons_160                   text_color: color_misty_blue                   text: \"${socket_icon}\"             on_click:               - homeassistant.action:                   action: switch.toggle                   data:                     entity_id: \"${socket_entity}\"          # \u041e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0438\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438         - obj:             id: socket_power_bg             x: 250             y: 100             width: 210             height: 80             align: top_left             pad_all: 0             bg_color: color_steel_blue             bg_opa: 20%             border_opa: transp             border_width: 0             shadow_opa: transp             radius: 10             widgets:               - label:                   id: socket_power_icon_label                   x: 10                   align: left_mid                   text_font: mdi_icons_40                   text_color: color_misty_blue                   text: \"${socket_power_icon}\"               - label:                   id: socket_power_state_label                   x: 70                   align: left_mid                   text_font: nunito_18                   text_color: color_misty_blue                   text: \" \"               - label:                   id: socket_power_state_uom_label                   x: 140                   align: left_mid                   text_font: nunito_18                   text_color: color_misty_blue                   text: \" \"          # \u041e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0438\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f         - obj:             id: socket_voltage_bg             x: 250             y: 200             width: 210             height: 80             align: top_left             pad_all: 0             bg_color: color_steel_blue             bg_opa: 20%             border_opa: transp             border_width: 0             shadow_opa: transp             radius: 10             widgets:               - label:                   id: socket_voltage_icon_label                   x: 10                   align: left_mid                   text_font: mdi_icons_40                   text_color: color_misty_blue                   text: \"${socket_voltage_icon}\"               - label:                   id: socket_voltage_state_label                   x: 70                   align: left_mid                   text_font: nunito_18                   text_color: color_misty_blue                   text: \" \"               - label:                   id: socket_voltage_state_uom_label                   x: 140                   align: left_mid                   text_font: nunito_18                   text_color: color_misty_blue                   text: \" \"          # \u041e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0438\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u0441\u0438\u043b\u044b \u0442\u043e\u043a\u0430         - obj:             id: socket_current_bg             x: 250             y: 300             width: 210             height: 80             align: top_left             pad_all: 0             bg_color: color_steel_blue             bg_opa: 20%             border_opa: transp             border_width: 0             shadow_opa: transp             radius: 10             widgets:               - label:                   id: socket_current_icon_label                   x: 10                   align: left_mid                   text_font: mdi_icons_40                   text_color: color_misty_blue                   text: \"${socket_current_icon}\"               - label:                   id: socket_current_state_label                   x: 70                   align: left_mid                   text_font: nunito_18                   text_color: color_misty_blue                   text: \" \"               - label:                   id: socket_current_state_uom_label                   x: 140                   align: left_mid                   text_font: nunito_18                   text_color: color_misty_blue                   text: \" \"          # \u041a\u043d\u043e\u043f\u043a\u0430 \u0432\u044b\u0445\u043e\u0434\u0430         - obj:             id: socket_back_bg             x: 20             y: 400             width: 60             height: 60             align: top_left             pad_all: 0             bg_color: color_steel_blue             bg_opa: 20%             border_opa: transp             border_width: 0             shadow_opa: transp             radius: 10             widgets:               - label:                   id: socket_back_label                   align: center                   text_font: icons_28                   text_color: color_misty_blue                   text: \"${exit_icon}\"             on_press:               - lvgl.page.show: devices_page               - lvgl.widget.show: menu_controls_main          # \u0418\u043c\u044f         - obj:             id: socket_name_bg             x: 100             y: 400             width: 360             height: 60             align: top_left             pad_all: 0             bg_color: color_steel_blue             bg_opa: 20%             border_opa: transp             border_width: 0             shadow_opa: transp             radius: 10             widgets:               - label:                   id: socket_name_label                   align: center                   text_font: nunito_18                   text_color: color_misty_blue                   text: \"friendly name\" <\/code><\/pre>\n<h3>\u041a\u043d\u043e\u043f\u043a\u0430 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0436\u0435\u0442\u0430<\/h3>\n<p>\u0418\u0442\u0430\u043a, \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0432\u0438\u0434\u0436\u0435\u0442, \u043d\u043e \u043a\u0430\u043a \u0436\u0435 \u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443?<br \/> \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u0430\u0448 \u0432\u0438\u0434\u0436\u0435\u0442 \u0432 <code>devices.yaml<\/code> \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430.<\/p>\n<p><strong>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0432\u0438\u0434\u0436\u0435\u0442<\/strong><\/p>\n<pre><code class=\"yaml\">packages:   media_player: !include media_player\/media_player.yaml   vacuum: !include vacuum\/vacuum_widget.yaml   shutter: !include shutter\/shutter_config.yaml   thermostat: !include thermostat\/thermostat_widget.yaml   air_conditioner: !include air_conditioner\/air_conditioner_widget.yaml   alarm_panel: !include alarm_panel\/alarm_panel.yaml   socket: !include socket\/socket_widget.yaml <\/code><\/pre>\n<p><strong>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0443<\/strong><\/p>\n<pre><code class=\"yaml\">              - obj:                   y: 260                   width: 440                   height: 60                   pad_all: 0                   align: TOP_MID                   bg_opa: TRANSP                   shadow_opa: TRANSP                   border_opa: TRANSP                   border_width: 0                   radius: 10                   widgets:                     - button:                         id: socket_page_btn                         x: 35                         align: LEFT_MID                         width: 370                         height: 60                         radius: 10                         bg_color: color_slate_blue_gray                         shadow_opa: TRANSP                         widgets:                           - label:                               align: CENTER                               text_color: color_steel_blue                               text_font: mdi_icons_40                               text: \"${socket_icon}\"                         on_press:                           - lvgl.widget.hide: menu_controls_main                           - lvgl.page.show:                                id: socket_page                               animation: OUT_RIGHT                               time: 300ms <\/code><\/pre>\n<p>! \u0412\u0410\u0416\u041d\u041e \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0442\u0441\u0442\u0443\u043f\u043e\u0432<\/p>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>\u0414\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u043b\u0438\u0448\u044c \u043c\u0430\u043b\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 LVGL \u0432 ESPHome \u0438 \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u0443\u0436\u0438\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043e\u0439 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/935528\/\"> https:\/\/habr.com\/ru\/articles\/935528\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<h2>\u041f\u0440\u0438\u0432\u0435\u0442 Habr! \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u0441\u0442\u0430\u0442\u0435\u0439 \u043e LVGL \u0432 ESPHome. \u0412 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0432\u0438\u0434\u0436\u0435\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0443. \u0418 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043a \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0443, \u0430 \u0432\u043e\u043e\u0431\u0449\u0435 \u0434\u0430\u0441\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u0430\u043a \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0432 ESPHome. \u0418\u0442\u0430\u043a, \u0421\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0431\u0443\u0434\u0435\u043c \u0432\u0438\u0434\u0436\u0435\u0442 \u0443\u043c\u043d\u043e\u0439 \u0440\u043e\u0437\u0435\u0442\u043a\u0438 \u0441 \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438, \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f \u0438 \u0441\u0438\u043b\u044b \u0442\u043e\u043a\u0430. \u041f\u043e\u0435\u0445\u0430\u043b\u0438&#8230;<\/h2>\n<h3>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0432\u0438\u0434\u0436\u0435\u0442\u0430<\/h3>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0432 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0432 \u043f\u0430\u043f\u043a\u0435 <code>widgets<\/code> \u043f\u0430\u043f\u043a\u0443 <code>socket<\/code>, \u0430 \u0432 \u043d\u0435\u0439 \u0444\u0430\u0439\u043b <code>socket.yaml<\/code>.<br \/> \u0412 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u0438\u0434\u0436\u0435\u0442 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 4 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432:<\/p>\n<pre><code class=\"yaml\"> substitutions:     # \u0417\u0430\u043c\u0435\u043d\u044b, \u043f\u043e\u043f\u0440\u043e\u0441\u0442\u0443 \u0433\u043e\u0432\u043e\u0440\u044f, \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b sensor:            # \u0427\u0438\u0441\u043b\u043e\u0432\u044b\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u0438 \u043e\u0442 Home Assistant text_sensor:       # \u0422\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u0438 \u043e\u0442 Home Assistant lvgl:              # \u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 <\/code><\/pre>\n<h3>Substitutions &#8212; \u0437\u0430\u043c\u0435\u043d\u044b\/\u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438\/\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b<\/h3>\n<p><strong>\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/strong>: \u0414\u0435\u043b\u0430\u044e\u0442 \u0432\u0438\u0434\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u043c \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438.<\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0432 \u043a\u043e\u0434\u0435 \u043c\u044b \u043c\u043d\u043e\u0433\u043e \u0433\u0434\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435\u0436\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043f\u0440\u043e\u0449\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0443 \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0435\u0451 \u0434\u0430\u043b\u0435\u0435 \u0432\u0435\u0437\u0434\u0435 \u0432 \u043a\u043e\u0434\u0435.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0438\u0437 Home Assistant. \u0412 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435\u0442 \u044d\u0442\u043e <code>switch.rozetka_test_socket<\/code>, \u0430 \u0442\u0430\u043a\u0436\u0435 3 \u0441\u0435\u043d\u0441\u043e\u0440\u0430 \u0441 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c\u044e, \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435\u043c \u0438 \u0441\u0438\u043b\u043e\u0439 \u0442\u043e\u043a\u0430. \u0412 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e:<\/p>\n<pre><code class=\"yaml\">sensor.rozetka_test_power   # \u041c\u043e\u0449\u043d\u043e\u0441\u0442\u044c sensor.rozetka_test_voltage # \u041d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435 sensor.rozetka_test_current # \u0421\u0438\u043b\u0430 \u0442\u043e\u043a\u0430 <\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>socket_entity<\/code> \u0447\u0442\u043e\u0431\u044b \u0434\u0430\u043b\u044c\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0451 \u0432\u043c\u0435\u0441\u0442\u043e <code>switch.rozetka_test_socket<\/code> \u0438 \u0442\u0440\u0438 \u043d\u0430\u0448\u0438\u0445 \u0441\u0435\u043d\u0441\u043e\u0440\u0430<\/p>\n<pre><code class=\"yaml\">substitutions:    socket_entity:  \"switch.rozetka_test_socket\"   socket_power:   \"sensor.rozetka_test_power\"   # \u041c\u043e\u0449\u043d\u043e\u0441\u0442\u044c   socket_voltage: \"sensor.rozetka_test_voltage\" # \u041d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435   socket_current: \"sensor.rozetka_test_current\" # \u0421\u0438\u043b\u0430 \u0442\u043e\u043a\u0430 <\/code><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f 4 \u0438\u043a\u043e\u043d\u043a\u0438 \u0438\u0437 \u043d\u0430\u0431\u043e\u0440\u0430 MDI \u0438 \u043d\u0430\u0448 \u0431\u043b\u043e\u043a <code>substitutions<\/code> \u0443\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"yaml\">substitutions:    socket_entity:  \"switch.rozetka_test_socket\"   socket_power:   \"sensor.rozetka_test_power\"   # \u041c\u043e\u0449\u043d\u043e\u0441\u0442\u044c   socket_voltage: \"sensor.rozetka_test_voltage\" # \u041d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435   socket_current: \"sensor.rozetka_test_current\" # \u0421\u0438\u043b\u0430 \u0442\u043e\u043a\u0430    socket_icon:          \"\\U000F1107\"   socket_current_icon:  \"\\U000F1480\"   socket_voltage_icon:  \"\\U000F095B\"   socket_power_icon:    \"\\U000F0241\" <\/code><\/pre>\n<p>\u0427\u0442\u043e\u0431\u044b \u0438\u043a\u043e\u043d\u043a\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u0438\u0441\u044c \u0438\u0445 \u043d\u0430\u0434\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0448\u0440\u0438\u0444\u0442\u044b <code>fonts.yaml<\/code><\/p>\n<pre><code class=\"yaml\">- file: \"fonts\/materialdesignicons-webfont.ttf\"   id: mdi_icons_40   size: 40   bpp: 4   glyphs: [     \"\\U000F1107\", # socket     \"\\U000F1480\", # current     \"\\U000F095B\", # voltage     \"\\U000F0241\", # power     \"\\U000F068A\", # shield home     \"\\U000F1828\", # shield moon     \"\\U000F099D\", # shield lock     \"\\U000F06BB\", # shield plane     \"\\U000F099E\", # shield off     \"\\U000F0498\", # shield   ]  - file: \"fonts\/materialdesignicons-webfont.ttf\"   id: mdi_icons_160   size: 160   bpp: 4   glyphs: [     \"\\U000F1107\", # socket   ] <\/code><\/pre>\n<h3>Text Sensors &#8212; \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u0438<\/h3>\n<p><strong>\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/strong>: \u041f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442 Home Assistant.<\/p>\n<p>\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441 <code>\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445<\/code> \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 Home Assistant \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u0438 <code>text_sensor<\/code>.<br \/> \u041d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430<\/p>\n<\/li>\n<li>\n<p>\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430<\/p>\n<\/li>\n<li>\n<p>\u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438, \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f \u0438 \u0441\u0438\u043b\u044b \u0442\u043e\u043a\u0430<\/p>\n<\/li>\n<\/ul>\n<h4>\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430<\/h4>\n<pre><code class=\"yaml\">text_sensor:    # \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0440\u043e\u0437\u0435\u0442\u043a\u0438   - platform: homeassistant        # \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 Home Assistant     id: socket_sensor_state        # \u041f\u0440\u0438\u0434\u0443\u043c\u044b\u0432\u0430\u0435\u043c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0434\u043b\u044f \u0441\u0432\u044f\u0437\u0438 \u0432 \u043a\u043e\u0434\u0435     entity_id: \"${socket_entity}\"  # \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0443 \u043d\u0430\u0448\u0435\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0438\u0437 substitutions <\/code><\/pre>\n<h4>\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430<\/h4>\n<pre><code class=\"yaml\">  # \u0418\u043c\u044f \u0440\u043e\u0437\u0435\u0442\u043a\u0438   - platform: homeassistant     id: socket_sensor_name     entity_id: \"${socket_entity}\"     attribute: friendly_name      # \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 <\/code><\/pre>\n<h4>\u0415\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438, \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f \u0438 \u0441\u0438\u043b\u044b \u0442\u043e\u043a\u0430<\/h4>\n<pre><code class=\"yaml\">    # \u0415\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438   - platform: homeassistant     id: socket_sensor_power_uom     entity_id: \"${socket_power}\"     attribute: unit_of_measurement      # \u0415\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f   - platform: homeassistant     id: socket_sensor_voltage_uom     entity_id: \"${socket_voltage}\"     attribute: unit_of_measurement      # \u0415\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0441\u0438\u043b\u044b \u0442\u043e\u043a\u0430   - platform: homeassistant     id: socket_sensor_current_uom     entity_id: \"${socket_current}\"     attribute: unit_of_measurement <\/code><\/pre>\n<p>\u0418\u0442\u0430\u043a, \u0443 \u043d\u0430\u0441 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u043e\u0442 \u0442\u0430\u043a\u0430\u044f \u0441\u0435\u043a\u0446\u0438\u044f <code>text_sensor<\/code> (\u043d\u043e \u043c\u044b \u043a \u043d\u0435\u0439 \u0435\u0449\u0451 \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f):<\/p>\n<pre><code class=\"yaml\">text_sensor:    # \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0440\u043e\u0437\u0435\u0442\u043a\u0438   - platform: homeassistant     id: socket_sensor_state     entity_id: \"${socket_entity}\"    # \u0418\u043c\u044f \u0440\u043e\u0437\u0435\u0442\u043a\u0438   - platform: homeassistant     id: socket_sensor_name     entity_id: \"${socket_entity}\"     attribute: friendly_name    # \u0415\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438   - platform: homeassistant     id: socket_sensor_power_uom     entity_id: \"${socket_power}\"     attribute: unit_of_measurement    # \u0415\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f   - platform: homeassistant     id: socket_sensor_voltage_uom     entity_id: \"${socket_voltage}\"     attribute: unit_of_measurement    # \u0415\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0441\u0438\u043b\u044b \u0442\u043e\u043a\u0430   - platform: homeassistant     id: socket_sensor_current_uom     entity_id: \"${socket_current}\"     attribute: unit_of_measurement <\/code><\/pre>\n<h3>Sensors &#8212; \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u0438<\/h3>\n<p><strong>\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/strong>: \u041f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442 Home Assistant.<\/p>\n<p>\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441 <code>\u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0445<\/code> \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 Home Assistant \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u0438 <code>sensor<\/code><br \/> \u041d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c <code>\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f<\/code> \u0441 \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438, \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f \u0438 \u0441\u0438\u043b\u044b \u0442\u043e\u043a\u0430:<\/p>\n<pre><code class=\"yaml\">sensor:     # \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438   - platform: homeassistant     id: socket_sensor_power     entity_id: \"${socket_power}\"      # \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f   - platform: homeassistant     id: socket_sensor_voltage     entity_id: \"${socket_voltage}\"      # \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u043b\u044b \u0442\u043e\u043a\u0430   - platform: homeassistant     id: socket_sensor_current     entity_id: \"${socket_current}\" <\/code><\/pre>\n<p>\u041a \u043d\u0438\u043c \u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0437\u0436\u0435 \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c <code>\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f<\/code> \u043f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0441 \u0434\u0430\u0442\u0447\u0438\u043a\u043e\u0432.<\/p>\n<h3>LVGL \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/h3>\n<p><strong>\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/strong>: \u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432\u0438\u0434\u0436\u0435\u0442\u0430.<\/p>\n<h4>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:<\/h4>\n<p>\u0427\u0442\u043e\u0431\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0434\u0438\u0437\u0430\u0439\u043d\u0443 \u043d\u0430\u0448\u0435\u0439 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438, \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 7 \u0431\u043b\u043e\u043a\u043e\u0432:<\/p>\n<pre><code class=\"yaml\">lvgl:   pages:     - id: socket_page                 # \u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b       bg_color: color_slate_blue_gray # \u0426\u0432\u0435\u0442 \u0444\u043e\u043d\u0430       widgets:                        # \u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432          # \u041e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c         - obj:             id: socket_state             x: 20             y: 20             width: 440             height: 60             align: top_left             pad_all: 0             bg_color: color_steel_blue             bg_opa: 20%             border_opa: transp             border_width: 0             shadow_opa: transp             radius: 10          # \u041e\u0431\u044a\u0435\u043a\u0442 \u0441 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\/\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u043e\u0437\u0435\u0442\u043a\u0438          - obj:             id: socket_icon_bg             x: 20             y: 100             width: 210             height: 280             align: top_left             pad_all: 0             bg_color: color_steel_blue             bg_opa: 20%             border_opa: transp             border_width: 0             shadow_opa: transp             radius: 10          # \u041e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0438\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438         - obj:             id: socket_power_bg             x: 250             y: 100             width: 210             height: 80             align: top_left             pad_all: 0             bg_color: color_steel_blue             bg_opa: 20%             border_opa: transp             border_width: 0             shadow_opa: transp             radius: 10          # \u041e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0438\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f         - obj:             id: socket_voltage_bg             x: 250             y: 200             width: 210             height: 80             align: top_left             pad_all: 0             bg_color: color_steel_blue             bg_opa: 20%             border_opa: transp             border_width: 0             shadow_opa: transp             radius: 10          # \u041e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0438\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u0441\u0438\u043b\u044b \u0442\u043e\u043a\u0430         - obj:             id: socket_current_bg             x: 250             y: 300             width: 210             height: 80             align: top_left             pad_all: 0             bg_color: color_steel_blue             bg_opa: 20%             border_opa: transp             border_width: 0             shadow_opa: transp             radius: 10          # \u041a\u043d\u043e\u043f\u043a\u0430 \u0432\u044b\u0445\u043e\u0434\u0430         - obj:             id: socket_back_bg             x: 20             y: 400             width: 60             height: 60             align: top_left             pad_all: 0             bg_color: color_steel_blue             bg_opa: 20%             border_opa: transp             border_width: 0             shadow_opa: transp             radius: 10          # \u0418\u043c\u044f         - obj:             id: socket_name_bg             x: 100             y: 400             width: 360             height: 60             align: top_left             pad_all: 0             bg_color: color_steel_blue             bg_opa: 20%             border_opa: transp             border_width: 0             shadow_opa: transp             radius: 10 <\/code><\/pre>\n<p>\u0412\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438\u043c\u0435\u044e\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u043d\u043e \u0440\u0430\u0437\u043d\u044b\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"yaml\">- obj:     id: socket_state             # \u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0432\u0438\u0434\u0436\u0435\u0442\u0430     x: 20                        # \u041a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 X     y: 20                        # \u041a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 Y     width: 440                   # \u0428\u0438\u0440\u0438\u043d\u0430 \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u0432 \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u0445     height: 60                   # \u0412\u044b\u0441\u043e\u0442\u0430 \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u0432 \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u0445     align: top_left              # \u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 (\u0432\u0432\u0435\u0440\u0445\u0443 \u0441\u043b\u0435\u0432\u0430)     pad_all: 0                   # \u0423\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u0441\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u044b     bg_color: color_steel_blue   # \u0426\u0432\u0435\u0442 \u0444\u043e\u043d\u0430     bg_opa: 20%                  # \u041f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u0444\u043e\u043d\u0430     border_opa: transp           # \u041f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u0432\u043e\u0434\u043a\u0438 (\u043f\u043e\u043b\u043d\u0430\u044f)     border_width: 0              # \u0422\u043e\u043b\u0449\u0438\u043d\u0430 \u043e\u0431\u0432\u043e\u0434\u043a\u0438     shadow_opa: transp           # \u041f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u0442\u0435\u043d\u0438 (\u043f\u043e\u043b\u043d\u0430\u044f)     radius: 10                   # \u0421\u043a\u0440\u0443\u0433\u043b\u044f\u0435\u043c \u043a\u0440\u0430\u044f <\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u043d\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043d\u0430\u0448\u0438 \u0431\u043b\u043e\u043a\u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u043e\u043c<\/p>\n<h4>\u0411\u043b\u043e\u043a \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f<\/h4>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043d\u0430\u0448 \u0431\u043b\u043e\u043a \u0442\u0435\u043a\u0441\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0440\u043e\u0437\u0435\u0442\u043a\u0438 (\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u0438\u043b\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0430):<\/p>\n<pre><code class=\"yaml\"># \u041e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c - obj:     id: socket_state     x: 20     y: 20     width: 440     height: 60     align: top_left     pad_all: 0     bg_color: color_steel_blue     bg_opa: 20%     border_opa: transp     border_width: 0     shadow_opa:<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-470115","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/470115","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=470115"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/470115\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=470115"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=470115"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=470115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}