• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to secondary sidebar
  • Skip to footer

У Павла!

  • Контроллеры
    • Arduino
      • Приборы
      • Музыка
      • Проекты Arduino
      • Уроки Arduino
      • Игры на Arduino
      • Роботы на Ардуино
      • FLProg
    • Одноплатные ПК
      • Orange pi
      • Raspberry pi
        • Raspberry pi pico
        • Raspberry pi server
        • Проекты Raspberry pi
    • ESP
      • ESP8266
        • NodeMCU
      • ESP32
      • M5stack
    • Другие контроллеры
      • STM32
  • Умный дом
    • Home Assistant
      • Автоматизации
    • Tuya
    • Bluetooth
    • ESPHome
    • Frigate
    • Telegram
    • Яндекс
  • ЧПУ
  • 3d печать
  • Об авторе

Получение реального времени из Home Assistant в ESPHome

15 января, 2022

Контроллеры работающие с ESPHome:

ESP32: http://alii.pub/67hfo2

ESP8266: http://alii.pub/67hfq7

M5stack из фото в начале статьи: http://ali.pub/4snj9n

Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.

 

Сейчас будет короткая статья на тему получения времени с сервера Home Assitant в ESPHome.

Речь пойдет вот о чем. В одной из прошлых статей, я описал как получать информацию с сервера Home Assitant в ESPHome ( хотя обычно происходит на оборот). Эту статью можно прочесть тут:

Вывод информации из Home Assistant на дисплей контроллера esp8266/esp32 в ESPHome.

Я рассказал там, как получить информацию с разных сенсоров. Которые имеются в Home Assitant.

Но вот со временем немного по другому все и не так очевидно. Опять же когда я узнал способ вывода информации из Home Assitant на дисплей ESPHome, я первым же делом попытался вывести время и у меня не получилось.

И информацию подходящую в интернатах не нашел. Потом случайно наткнулся на один проект и оттуда это подчеркнул.

В общем делается это так:



time:
  - platform: homeassistant
    id: ntp

Согласитесь, все очень просто. Но не очевидно совершенно.

причем id здесь используется, чтоб дальше по этому id выводить значение на дисплей. например.

А если зять строчку, которая будет выводить время на дисплей, то она уже будет выглядеть так ( на примере дисплея illi9143 m5stack):



      it.strftime(it.get_width() / 2, 11, id(font_roboto_medium22), WHITE, TextAlign::CENTER, "%X", id(ntp).now());
 

Где “&X” – это как-раз вывод времени в формате часы/минуты/сеунды. Но так-же можно выводить и число месяц год и дни недели. Все обозначения можно увидеть в таблице:

Директива Значение Пример
%a Сокращенное название дня недели Понедельник
%A Полное название дня недели Суббота
%w День недели в виде десятичного числа, где 0 — воскресенье, а 6 — суббота. 6
%d День месяца в виде десятичного числа, дополненного нулями 01, 02, …, 31
%b Сокращенное название месяца авг
%B Полное название месяца август
%m Месяц как десятичное число с нулями 01, 02, …, 12
%y Год без века в виде десятичного числа с нулями 00, 01, …, 99
%Y Год с веком в виде десятичного числа 2018
%H Час (24-часовой формат) в виде десятичного числа, дополненного нулями. 00, 01, …, 23
%I Час (12-часовой формат) в виде десятичного числа, дополненного нулями. 00, 01, …, 12
%p обозначение AM или PM ДО ПОЛУДНЯ ПОСЛЕ ПОЛУДНЯ
%M Минуты в виде десятичного числа с нулями 00, 01, …, 59
%S Секунда как десятичное число с нулями 00, 01, …, 59
%j День года в виде десятичного числа с нулями 001, 002, …, 366
%U Номер недели года (воскресенье как первый день недели) в виде десятичного числа, дополненного нулями. Все дни нового года, предшествующие первому воскресенью, считаются нулевой неделей. 00, 01, …, 53
%W Номер недели года (понедельник как первый день недели) в виде десятичного числа, дополненного нулями. Все дни нового года, предшествующие первому понедельнику, считаются нулевой неделей. 00, 01, …, 53
%c Представление даты и времени Сб Авг 18 16:31:42 2018
%x Представление даты 18.08.18
%X Представление времени 16:31:42
%% Буквальный %персонаж %

Ну и так-же это описано на официальном сайте ESPHome: https://esphome.io/components/time.html#strftime

Ну вот и все. А если Вам интересен код из скрина который в начале статьи. Там у меня вывод температуры и влажности из датчика температуры и влажности xIaomi взятые с сервера Home Assitant. Так-же построены 2 графика один показывает изменения температуры, второй влажности. Ну и собственно время показывается в самом верху. Вобщем этот код оставлю тут. Вдруг кому-то пригодится. И он переделает под себя. Ведь в ESPHome переделать все очень просто.


captive_portal:
time:
  - platform: homeassistant
    id: ntp
spi:
  clk_pin: 18
  mosi_pin: 23
  miso_pin: 19

i2c:
  sda: 21
  scl: 22
  scan: true

  
sensor:
  - platform: homeassistant   # Cpu temperature
    id: temp_balkon
    entity_id: sensor.ble_temperature_balkon
  - platform: homeassistant   # Cpu temperature
    id: humidity_balkon
    entity_id: sensor.ble_humidity_balkon
  - platform: homeassistant   # Cpu temperature
    id: esptime
    entity_id: sensor.time
    
font:
  - file: "fonts/Roboto-Medium.ttf"
    id: font_roboto_medium22
    size: 22
color:
  - id: RED
    red: 100%
    green: 0%
    blue: 0%
  - id: BLUE
    red: 0%
    green: 0%
    blue: 100%
  - id: WHITE
    red: 100%
    green: 100%
    blue: 100%
graph:
  # Show bare-minimum auto-ranged graph
  - id: single_temperature_graph
    sensor: temp_balkon
    duration: 8h
    width: 151
    height: 51
  # Show multi-trace graph
  - id: single_temperature_humidity
    sensor: humidity_balkon
    duration: 8h
    width: 151
    height: 51
 
display:
  - platform: ili9341
    id: m5stack_display
    model: M5Stack
#    model: TFT 2.4
    cs_pin: 14
    dc_pin: 27
    led_pin: 32
    reset_pin: 33
    rotation: 0
    lambda: |-
      it.rectangle(0,  0, it.get_width(), it.get_height(), WHITE);
      it.rectangle(0, 22, it.get_width(), it.get_height(), WHITE);   // header bar
      it.print(11,  33, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "Temperature");
      it.print(11,  55, id(font_roboto_medium22), WHITE, TextAlign::LEFT, "Pressure");
      it.printf(it.get_width() - 11,  33, id(font_roboto_medium22), WHITE, TextAlign::RIGHT, "%.1f°C ", id(temp_balkon).state);
      it.printf(it.get_width() - 11,  55, id(font_roboto_medium22), WHITE, TextAlign::RIGHT, "%.1f%% ", id(humidity_balkon).state);
      it.graph(11, 99, id(single_temperature_graph));
      it.graph(11, 160, id(single_temperature_humidity));
      it.strftime(it.get_width() / 2, 11, id(font_roboto_medium22), WHITE, TextAlign::CENTER, "%X", id(ntp).now());

Primary Sidebar

Поиск

Новые записи

  • Автоматизация перезагрузки устройства по команде Ping.
  • Разблокирование и добавление шлюза Xiaomi gateway 3 в Home Assistant для управления Bluetooth устройствами из экосистемы Xiaomi Home (mihome)
  • Интеграция для локального управления (без интернета) ик пультом Tuya работающим по wifi из Home Assistant
  • Транслируем показания с Уличного Bluetooth Датчика температуры по BTHome на дисплей датчика температуры XIaomi LYWSD03MMC
  • Заставляем Bluetooth датчики температуры tuya и xiaomi отправлять данные по Zigbee в Home Assistant.

Официальный YouTube Канал M5Stack:

Подписывайтесь на Телеграм канал

https://t.me/ypavla

Подписаться на YouTube!

Secondary Sidebar




Подписывайтесь на Telegram Канал!

У Павла!

Footer

Copyright_У Павла! © 2025 ·