Esphome esp8266: NodeMCU ESP8266 — ESPHome

Содержание

Использование ESPHome в связке с Home Assistant

ESPHome. Вникаем. Пользуемся.

Часть  I. Вводная.

Небольшое вступление

Полная и достаточно внятная поддержка ESPHome в Home Assistant пришла к нам с обновлением 0.85.

Что же такое ESPHome? 

Если коротко, то это инструмент, который позволяет интегрировать в Home Assistant устройства, созданные на базе ESP8266 / ESP32.

Конечно, есть масса других проектов для подобных задач, таких как Tasmota, ESPEasy, WifiIot, ESPUrna, но основное их отличие от  ESPHome заключается в том, что все они, для интеграции с любыми системами, используют MQTT, а вот ESPHome разрабатывался специально для Home Assistant и для интеграции используется Native API.

Я ни в коем случае не призываю отказываться от MQTT, но в связке ESPHome  Home Assistant он просто не нужен.

Так же, нужно добавить, что еще одним преимуществом является то, что здесь мы имеем для всех задач, в том числе и создании внутренних автоматизаций,  всего лишь один конфиг-файл, который использует YAML.

P.S. И в завершение краткого описания хочу сказать, если честно, проникся я этой системой, зацепила она меня. Вот уж действительно, в ней всё по-настоящему «Easy».

P.P.S. Статья будет большая, дабы не упустить важные моменты и показать максимум возможностей на старте.

Итак, в данной статье мы рассмотрим следующее:

  1. Установка ESPHome
  2. Создание файла конфигурации
  3. Прошивка платы
  4. Запуск
  5. Добавление датчиков

Приступим.

1. Установка ESPHome

Что использовал я?

У меня после переезда Home Assistant на Raspberry 3B остался не у дел Orange Pi LIte с 512 Мб и установленной DietPi на борту.

На этой плате и будем работать с ESPHome.

Следует заметить, что ESPHome может быть установлена на одном устройстве с Home Assistant. Но в моем случае обе системы находятся на разных устройствах. 

Так же есть возможность  работы системы в случае использования Hass. io . 

Для работы системы понадобится предустановленный Python 2.7 ибо система использует platformio.

Итак, установка:

pip install esphome

Надеюсь во время установки ошибок не возникло. Переходим к следующему этапу.

2. Создание файла конфигурации

В ESPHome есть 2 варианта создания основного файла конфигурации:

Создание файла в консолиСоздание файла в Dashboard

Я расскажу про оба эти варианта. 

Вариант первый. Создаем файл в консоли командой:

esphome test.yaml wizard

Где, test.yaml, это имя файла вашего проекта

Далее отвечаем на вопросы дружественного мастера установки:

Придумываем и указываем имя нашего проекта.Например, Test. Пишем с маленькой буквы. 

Теперь нужно выбрать и ввести тип нашей платформы. Я буду использовать ESP-01 с объемом памяти 1 Мб, по этому выбираю ESP8266.

Далее выбираем тип платы. У меня esp01_1m.

Теперь вводим имя нашей точки доступа, к которой будет подключаться наша плата.  Обратите внимание: и плата которую мы конфигурируем и сервер на котором сейчас создаем файл конфигурации должны находиться в одной сети.

Вводим пароль для указанной выше точки доступа.

Вводим пароль для последующего обновления прошивки по воздуху.

Итак, мы создали файл основной конфигурации.Теперь нужно его залить в плату.Сделаем это.

3. ПРОШИВКА ПЛАТЫ

Перед прошивкой подключаем TTL-конвертер к серверу, а плату к конвертеру. 

Не забываем перевести плату в режим прошивки — замыкаем GPIO-0 на землю и подаем питание.

Прошивка устройства осуществляется командой:

esphome test.yaml run

После запуска скачиваются недостающие библиотеки и компилируется проект. Это займет какое-то время.

Потом система пытается залить скомпилированный файл в нашу плату.

Далее нам нужно выбрать, через что мы будем шить нашу плату: через TTL-конвертер или через ОТА.Первая прошивка должна заливаться только через TTL-конвертер.

Вот так выглядит заливка конфигурационного файла.

Далее, перезагружаем плату и по идее мы должны увидеть лог старта нашей платы.

На этом месте я прервусь, дабы перейти ко второму варианту создания конфигурационного файла.

Вариант второй. Создаем файл в Dashboard.

Для работы в Dashboard нам сначала нужно ее установить.

Сделаем это командой:

pip2 install tornado esptool

И запустим командой:

esphome config/ dashboard

После этого в браузере перейдем по адресу:

localhost:6052

Где, «localhost», это адрес сервера, на котором мы работаем с ESPHome

В браузере нас встречает вот такая форма:

Нажимаем на » » что бы создать конфиг-файл.

Вводим имя проекта

Выбираем тип нашей платы

Вводим логин и пароль WiFi

В завершение видим сообщение, что у нас всё хорошо и мы готовы к прошивке устройства.

В выпадающем списке справа выбираем, через что будем шиться. Для первого раза выбираем TTL-конвертер

Итак, мы готовы шиться.

Но перед этим пару слов о кнопочках проекта:

UPLOAD — запускает процесс прошивки по выбранному интерфейсуEDIT — позволяет редактировать конфиг-файлSHOW LOGS — показывает лог работающего устройстваVALIDATE — проверяет на ошибки конфиг-файл после изменения.

Переводим плату в режим прошивки — замыкаем GPIO-0 на землю и подаем питание.

Жмем VALIDATE и если ошибок нет, жмем UPLOAD.

Все, что происходит далее, ничем не отличается от прошивки через консоль.

4. Запуск

После прошивки видим, что наш проект онлайн — это значит, что дальше мы можем прошивать устройство по ОТА. 

Можем нажать SHOW LOGS и посмотреть, что там пишет наше устройство

После успешного старта проекта, пусть даже с пустой конфигурацией предлагаю заглянуть в Home Assistant.

Заходим в Настройки/Интеграции/Создать новую интеграцию и напротив строки ESPHome нажимаем НАСТРОИТЬ.

Вводим адрес платы. Можно посмотреть в логе

Вводим пароль, который мы указывали при создании конфиг-файла

Видим пока что, вот такую картину. А чего мы хотели, мы же еще не добавили ни одного датчика…

5. Добавление датчиков

Теперь откроем конфиг-файл и добавим веб-сервер и какие-нибудь внутренние датчики.

В Dashboard нажмем на EDIT.

Добавляем веб-сервер:

web_server: port: 80

Добавляем датчик, который будет нам показывать статус подключения нашего устройства к сети

binary_sensor: — platform: status name: «Test»

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

sensor: — platform: uptime name: Test Uptime Sensor

Целиком конфиг-файл выглядит следующим образом:

esphome: name: test platform: ESP8266 board: esp01_1m wifi: ssid: ‘**********’ password: ‘********’ # Enable logging logger: # Enable Home Assistant API api: password: ‘*******’ ota: password: ‘*******’ web_server: port: 80 binary_sensor: — platform: status name: «Test» sensor: — platform: uptime name: Test Uptime Sensor

Сохраняем и нажимаем VALIDATE

Если ошибок нет, жмем UPLOAD для загрузки проекта в устройство.

После загрузки, система пытается подключиться к устройству и если подключение есть, то сразу же выводится в лог всевозможная информация, в том числе и статус подключения к Home Assistant.

Проверим, что там у нас в Home Assistant.

Ага. Отлично.

Теперь посмотрим на веб-сервер.

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

Ну, неплохо же!

Теперь можно добавлять в конфиг-файл различные сенсоры, бинарные сенсоры, Light-компоненты, свитчи, автоматизации и прочие фишечки…

Вот собственно и всё, что я хотел рассказать в первой части. Этого пожалуй достаточно для старта.

Во второй части я планирую рассказать уже о более конкретной задаче, которую я хочу реализовать на устройстве Sonoff Basic.

Ну и в завершение.

Хочу добавить. 

Если вдруг вы хотите перейти с уже существующего устройства в котором залита Tasmota

или ESPEasy или ESPurna, то создаете конфиг-файл, как описано выше, только не жмете UPLOAD, а нажимаете на три точки, справа от имени проекта. Затем на кнопку COMPILE

После того, как скомпилируется ваш конфиг-файл вы можете скачать его и подсунуть для обновления прошивки вашего устройства в настройках той системы, которая сейчас установлена.

Ну и в завершение 2.

Если у вас возникли проблемы еще на первом этапе заливки основного конфиг-файла в устройство и проблемы эти связаны с Linux-системами, то можно скомпилировать файл и залить его из Windows программой esphomeflasher

В программе выбираете com-порт, к которому подключен TTL-конвертер, выбираете скомпилированный файл и жмете кнопку FLASH ESP

После удачной прошивки, устройство видится в Dashboard и с ним можно уже работать по ОТА.

Ну и в завершение 3. Бонус

Для автоматического запуска Dashboard, можно создать сервис в SystemD, например:

[Unit] Description=Dashboard After=network-online.target [Service] Type=simple User=%i ExecStart=/root/config esphome dashboard [Install] WantedBy=multi-user.target

Или добавить строку в rc.local

/usr/local/bin/esphome /root/config/ dashboard

Важный момент — обращайте внимание на пути, указанные в коде. Вы должны указать свои пути расположения ESPHome.

Вот теперь точно — всё!

Всем спасибо, кто осилил текст и дочитал до конца!

P.S. Статья обновлена 8.04.19 по причине критичных изменений в самом проекте ESPHome.

Изменения коснулись смены имени проекта. Раньше было ESPHomeLib, а теперь просто ESPHome.

Соответственно изменились основные команды и пути расположения файлов. 

Знакомство с ESPHome. Пишем первую программу. — Home Server

Здравия всем! Что же, пришло время познакомится с ESPHome. В этой статье я расскажу как настроить ESPHome после установки, как создать новую прошивку и залить её в устройство как по USB, так и по воздуху. Как подключить наше устройство к Home Assistant. Что же начнем!

Введение

Свои первые устройства для автоматизации я собирал на контроллерах Arduino Uno и Arduino Mega теперь уже в далеких 2011-2013 годах. С тех времен утекло много воды. Когда появился теперь уже народный чудо контроллер ESP8266, мир поменялся. Он сразу на борту имел WiFi и Flash память на 512кб — 4мб. И практически сразу был портирован на Arduino SDK.

Главная прелесть ESP8266, в том, что его один раз нужно прошить прошивкой через USB подключение к компьютеру, а последующие изменения можно вносить по воздуху с так называемым OTA режимом.

Первые прошивки для ESP8266 я писал на Arduino SDK. Но после перехода на Home Assistant, я перешел на ESPHome, который разрабатывается специально для подключения к Home Assistant, через API. По этому добавление любого датчика и исполняющего устройства в Home Assistant стало очень просто. Я практически не использую MQTT брокера. Который раньше был узким местом в системе, если MQTT брокер падал вместе с сервером умного дома, происходил коллапс. И приходилось делать прошивки, которые продолжали работать без MQTT брокера.

ESPHome это система для создания прошивок (Firmware) с помощью конфигурационных файлов, написанных на языке Yaml. После освоения его в Home Assistant, написание прошивок на ESPHome дело очень легкое. Для конфигурирования, компиляции и управления ESPHome использует понятный Web интерфейс. Давайте же разберемся с ним

Знакомство с интерфейсом ESPHome

После установки ESPHome, описанной в этой статье, откроем наш web интерфейс.

Как видим из приведенного изображения, вначале у нас список устройств пуст. Но есть 2 функциональные кнопки: NEW DEVICE и SECRET.

Файл

secrets

Щелкнем сверху на кнопку SECRET

Откроется редактор файла secrets.yaml. Этот файл, аналогичен файлу secrets. yaml в Home Assistant. Он нужен для хранения персональной информации, к примеру, название WiFI сети и паролем доступа к ней.

Заполним поля wifi_ssid и wifi_password своими данными. И нажмем кнопку SAVE, чтобы применить настройки.

Создание первого устройства

Щелкнем по кнопке NEW DEVICE, откроется мастер создания нового устройства.

Мастер приветствие, он говорит, что первый раз нужно залить прошивку, подключив устройство через USB к компьютеру.Выбираем тип, в моем случае это ESP8266Выбираем имя устройства, по опыту, лучше без подчеркивания _ и тире Мастер сразу предложить скомпилировать и залить прошивку, но мы пропустим этот пункт, нажмем кнопку Skip

Редактор конфигурации

У нас появится первое устройство. Откроем редактор конфигурации, нажав кнопку EDIT

Откроется редактор нашего устройства в файле конфигурации esptest. yaml

Как видно из изображения, используется язык разметки YAML. В редакторе встроена проверка синтаксиса. И если мы что то не правильно ввели, редактор нам сразу же об этом скажет красным квадратом в правом верхнем углу. Если на него навести курсор мыши, всплывет подсказка в какой строке у нас ошибка.

Не забывайте сохранять изменения перед выходом, автоматически они не сохраняются.

Первая программа на ESPHome

Тип устройства

Под общим названием ESP8266 скрывается обширный набор устройств, отличающихся количеством памяти, тактовой частотой процессора и количеством портов, доступных пользователю.

ESPHome работает на основе фраймворка PlatformIO, соответственно какие платы поддерживаются размещены на сайте. Посмотрев таблицу, понимаем, что большинство плат на чипе ESP-12E и ESP-12F идут под общим названием nodemcuv2.

Я в своих тестах использую плату Nodemcu V3 на чипе ESP-12F

Откроем снова редактор нашего нового устройства и отредактируем нашу конфигурацию и изменим плату на nodemcuv2

esp8266:
  board: nodemcuv2

Если в WiFi сети, где будет расположено устройство работает DHCP Server, то можно компилировать прошивку.

Компиляция прошивки

Скомпилируем прошивку, нажав кнопку Install

Откроется мастер создания прошивок

Нажмем Manual download Нажмем Legacy format

Откроется окно в котором будет вестись лог компиляции прошивки. После завершения компиляции появится кнопка Download, и файл сам начнет скачиваться.

Заливаем первую прошивку через USB

Осталось залить прошивку в наше устройство. Подключим нашу плату по USB к компьютеру. Для прошивки будем использовать утилиту ESPHome Flasher. Скачаем её с гитхаба и запустим.

С недавних пор Windows 10 ужесточило запуск программ. По этому может вылезти такое предупреждение.

Нажмем ПодробнееНажмем Выполнить в любом случае

Откроется главное окно программы

Выберим нужный Serial Port, на котором весит наше устройство. Нажмем кнопку Browse и выберим нашу прошивку. Осталось нажать кнопку Flash ESP. Начнется проверка и заливка прошивки.

После удачной заливки, наше устройство перезагрузится и выведет информацию о текущем подключении

Можно закрывать приложение. Дальнейшая настройка будет происходить на web интерфейсе ESPHome.

Настройка нового устройства

После тога, как мы залили прошивку в наше устройство и оно перезагрузилось, поменялся интерфейс ESPHome

Как видим, наше устройство поменяло статус с OFFLINE на ONLINE. Кнопка LOGS стала информативной, при ее нажатии происходит коннект к устройству и забирается последний лог

На каждой ESP12 есть распаянный светодиод на 2 порту. Давайте его сделаем аналогом лампы.

esphome:
  name: esptest
esp8266:
  board: nodemcuv2
# Enable logging
logger:
# Enable Home Assistant API
api:
  encryption:
    key: "ONenF3FmMEBZD0V5u15E+wp4rNoN3RfqZ3cPJtl10D4="
ota:
  password: "1bcebac7181111892d02a04ea4867d3b"
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esptest Fallback Hotspot"
    password: "p1Tkhye6thDA"
captive_portal:
    
output:
  - platform: gpio
    id: led
    pin: GPIO02
    inverted: true
light:
  - platform: binary
    id: in_led
    output: led
    name: Test Lamp

Сохраним настройки и скомпилируем прошивку. Но в этот раз прошьем по воздуху. Для этого нажмем кнопку Wirelessly

Сразу же откроется окно компиляции и загрузки прошивки по воздуху

Дождемся загрузки новой прошивки

Видим, что наш новый светильник появился в логе.

Интеграция в Home Assistant

Подготовка

Для добавления устройства на ESPHome, нам нужны 2 вещи. Это IP адрес устройства и ключ шифрования, указанный в конфигурации. Чтобы узнать IP, если он не был указан в конфигурации, откроем окно лога устройства. Находим поле IP Address и записываем его

Теперь идем в редактор конфигурации и ищем поле key: в подразделе encryption: раздела api: и записываем наш ключ шифрования

Подключение интеграции

Как я раньше говорил, прошивки на основе ESPHome легко интегрируются в Home Assistant. Откроем в web интерфейсе Home Assistant Настройки -> Устройства и службы

Нажимаем кнопку ДОБАВИТЬ ИНТЕГРАЦИЮ

Откроется мастер добавления интеграции

Набираем в поиске первые буквы ESPHome и выбираем нашу интеграциюПишем наш IP и нажимаем подтвердитьВводим наш ключ шифрования Устройство подключено

Управление устройством

На этом интеграция устройства на ESPHome закончена. Данные теперь прилетают по API в наш Home Assistant. Перейдем на вкладку Устройства и выберем наше устройство esptest

Как видим, наша лампа появилась в интерфейсе и ей можно сразу же и управлять и настраивать.

Заключение

В этой статье я рассказал как настроить ESPHome после установки, как создать новую прошивку и залить её в устройство как по USB, так и по воздуху. Как подключить наше устройство к Home Assistant. Как понятно из статьи делать это очень легко и просто. В дальнейшем я покажу различные свои устройства, которые я использую в повседневной работе.

Платформа

ESP8266 — ESPHome

Этот компонент содержит специфичные для платформы параметры для платформы ESP8266.

 # Пример записи конфигурации
esp8266:
  доска: nodemcuv2
  рамки:
    версия: рекомендуется
 

Переменные конфигурации:

  • board ( Required , string): идентификатор платы PlatformIO, который должен
    использоваться. Выберите подходящую доску из
    этот список (значок рядом с
    имя можно использовать для копирования идентификатора платы). Это влияет только на псевдонимы контактов, размер флэш-памяти и некоторые внутренние настройки , если вы не уверены
    выберите универсальную плату от Espressif, например esp01_1m .

  • framework ( Необязательный ): параметры базовой платформы, используемой ESPHome.

    • версия ( Необязательный , строка): Номер версии базовой платформы, начиная с
      релизы Arduino esp8266. По умолчанию рекомендуется . Дополнительные значения

      • dev : используйте последнюю фиксацию с https://github.com/esp8266/Arduino, обратите внимание, что это может сломаться в любое время

      • последний : Используйте последнюю версию с https://github.com/esp8266/Arduino/releases, даже если она еще не рекомендована.

      • рекомендуется : Используйте рекомендуемую версию платформы.

    • источник ( Необязательный , строка): пакет или репозиторий PlatformIO, который будет использоваться для платформы. Это можно использовать для использования пользовательской или исправленной версии фреймворка.

    • platform_version ( Необязательный , строка): Используемая версия пакета platformio/espressif8266.

  • restore_from_flash ( Необязательный , логическое значение): следует ли сохранять некоторые постоянные настройки во флэш-памяти. По умолчанию false .

  • board_flash_mode ( Опционально , строка): режим SPI микросхемы флэш-памяти. Один из QIO , qout , dio и dout . По умолчанию или для совместимости со всеми чипами. Примечание: при следующем обновлении OTA фактический режим прошивки автоматически определяется и изменяется на соответствующий.

  • Early_pin_init ( Необязательный , логическое значение): указывает, следует ли как можно раньше инициализировать выводы известными значениями. Рекомендуемое значение — false , если задействованы переключатели, поскольку они будут переключаться при обновлении прошивки или при перезапуске устройства. По умолчанию верно .

Нумерация контактов GPIO

Многие платы имеют нумерацию открытых контактов, которая отличается от внутренней.
те. ESPHome пытается сопоставить номера контактов шелкографии с внутренними номерами контактов с помощью нескольких
платы, но для общих плат ESP8266 часто требуется просто использовать внутренние номера контактов.
Для этого просто добавьте ко всем контактам префикс GPIO , например GPIO0 для контакта с внутренним контактом.
число 0.

Некоторые примечания по контактам:

часто уже используются внутренними
флэш-интерфейс и определение режима загрузки. Так что лучше не использовать эти булавки.

  • GPIO17 дополнительно подключен АЦП. См. аналого-цифровой датчик
    считывать напряжения (в диапазоне от 0 до 1,0 В) на этом выводе.

  •  # Пример записи конфигурации
    эсфома:
      название: гостиная
    esp8266:
      доска: nodemcuv2
    бинарный_сенсор:
      - платформа: gpio
        имя: "Контакт GPIO17"
        вывод: GPIO17
     

    Специальные штифты

    GPIO0

    Управление режимом загрузки

    GPIO1

    Контакт UART TX

    GPIO2

    Управление режимом загрузки

    GPIO3

    Контакт UART RX

    GPIO6

    Разъем SDIO/Flash CLK

    GPIO7

    SDIO/Flash Data 0 контакт

    GPIO8

    SDIO/Flash Data 1 контакт

    GPIO9

    SDIO/Flash Data 2 контакта (только qio/qout)

    GPIO10

    SDIO/Flash Data 3-контактный (только qio/qout)

    GPIO11

    Разъем SDIO/Flash CMD

    GPIO12

    Подключен к аппаратному контроллеру SPI MISO

    GPIO13

    Подключен к аппаратному контроллеру SPI MOSI

    GPIO14

    Подключен к аппаратному контроллеру SPI CLK

    GPIO15

    Управляет режимом загрузки; Подключен к аппаратному SPI
    контроллер CS

    GPIO16

    Специальный контакт, доступный из RTC,
    и это PIN-код

    9 для пробуждения в глубоком сне. 0164

    TOUT, также известный как GPIO17

    Вывод АЦП для измерения напряжения, может быть только
    используется как аналоговый входной контакт

    Это означает, что в качестве GPIO общего назначения можно эффективно использовать только следующие контакты:

    Штифт

    Ограничения

    Состояние после сброса

    GPIO0

    Если высокий уровень при загрузке

    Слабое подтягивание

    GPIO2

    Если высокий уровень при загрузке

    Слабое подтягивание

    GPIO4

    Высокий импеданс

    GPIO5

    Высокий импеданс

    GPIO6

    Слабое подтягивание

    GPIO12

    Слабое подтягивание

    GPIO13

    Слабое подтягивание

    GPIO14

    Слабое подтягивание

    GPIO15

    Если низкий уровень при загрузке

    Слабое подтягивание

    GPIO16

    Имеет опускающийся (но не подтягивающий)
    резистор

    Слабая тяга вниз

    Режимы загрузки

    При каждой загрузке ESP8266 будет проверять три контакта, чтобы определить, в какой режим загрузки следует войти.
    Есть три режима загрузки:

    Режим

    GPIO0

    GPIO2

    GPIO15

    режим загрузки:

    Загрузка с флэш-памяти (обычная)

    ВЫСОКИЙ

    ВЫСОКИЙ

    НИЗКИЙ

    3

    Код загрузки с UART

    НИЗКИЙ

    ВЫСОКИЙ

    НИЗКИЙ

    1

    Загрузка с SD-карты

    ЛЮБОЙ

    ЛЮБОЙ

    ВЫСОКИЙ

    4-7

    Вы можете определить их при загрузке, посмотрев на вывод UART, первый номер
    в режиме загрузки : строка сообщает какой режим был выбран

     ets 8 января 2013, первая причина: 4, режим загрузки: (3,6)
     

    Первые строки при просмотре журналов UART могут содержать нераспознанные символы. Это
    потому что эффективная скорость загрузчика ESP8266 составляет 74800, тогда как программа использует 115200.

    Причины сброса

    Кроме того, первая строка также содержит причину сброса .
    Эти причины сброса задокументированы:

    0

    Не определено

    1

    Перезагрузка при включении

    2

    Внешний сброс или пробуждение из глубокого сна

    4

    Аппаратный сброс WDT

    После программного сброса причина сброса не изменится.

    Электрические характеристики

    Параметр

    Мин.

    Типовой

    Макс.

    Блок

    Рабочая температура

    -40

    125

    °С

    Рабочее напряжение V_IO

    2,5

    3,3

    3,6

    В

    V_IL — Уровень входного напряжения следует считать НИЗКИМ

    -0,3

    0,25*V_IO

    В

    V_IH — Уровень ВХОДНОГО напряжения следует считать ВЫСОКИМ

    0,75*V_IO

    3,6

    В

    V_OL — Уровень выходного напряжения для НИЗКОГО

    0,1*V_IO

    В

    V_OH — Уровень выходного напряжения для ВЫСОКОГО

    0,8*V_IO

    В

    I_MAX — Максимальный ток для GPIO

    12

    мА

    Энергопотребление в режиме глубокого сна

    20

    мкА

    Энергопотребление в активном режиме

    120

    мА

    Источник: спецификация ESP8266EX

    Внутренние подтягивающие вверх/вниз резисторы имеют значения от 30 кОм до 100 кОм.
    (источник).

    См. также

    • Основная конфигурация ESPHome

    • Редактировать эту страницу на GitHub

    типов конфигурации — ESPHome

    Файлы конфигурации ESPHome имеют несколько типов конфигурации. Этот
    страница описывает их.

    ID

    Весьма важным аспектом ESPHome являются «ID». Они привыкли
    соединять компоненты из разных доменов. Например, вы определяете
    выходной компонент вместе с идентификатором, а затем указать тот же идентификатор
    в легкой составляющей. Идентификаторы всегда должны быть уникальными в
    конфигурации и ESPHome предупредит вас, если вы попытаетесь использовать тот же
    удостоверение личности дважды.

    Поскольку ESPHome преобразует вашу конфигурацию в код C++, а
    Идентификаторы на самом деле являются просто именами переменных C++, они также должны соответствовать
    Соглашения об именах C++. С++ переменная
    имена

    • … должен начинаться с буквы и может заканчиваться цифрами.

    • … в имени не должно быть пробела.

    • … не может содержать специальные символы, кроме нижнего подчеркивания («_»).

    • … не должно быть ключевым словом.

    Примечание

    Эти идентификаторы используются только в ESPHome и не преобразуются в идентификатор объекта Home Assistant.

    Пин

    ESPHome всегда использует внутренние номера GPIO чипа . Эти
    внутренние номера всегда являются целыми числами, такими как 16 , и могут иметь префикс
    GPIO . Например, чтобы использовать контакт с внутренним GPIO номер 16,
    вы можете ввести GPIO16 или просто 16 .

    Однако большинство досок имеют псевдонимы для определенных контактов. Например, NodeMCU.
    ESP8266 использует имена выводов D0 D8 как псевдонимы для внутреннего GPIO
    номера пинов. Каждая доска (определена в разделе ESPHome)
    имеет свои собственные псевдонимы, поэтому пока не все из них поддерживаются. Например,
    для контакта D0 (как напечатано на шелкографии печатной платы) на NodeMCU ESP8266
    имеет внутреннее имя GPIO GPIO16 , но также имеет псевдоним D0 . Итак, используя
    любое из этих имен в вашей конфигурации приведет к тому же результату.

     некоторая_конфигурация_опция:
      вывод: GPIO16
    some_config_option:
      # псевдоним на NodeMCU ESP8266:
      вывод: D0
     

    Схема контактов

    В некоторых местах ESPHome также поддерживает более продвинутую «схему контактов».

     некоторая_конфигурация_опция:
      # Базовый:
      вывод: D0
      # Передовой:
      приколоть:
        номер: Д0
        перевернуто: правда
        режим:
          ввод: правда
          подтягивание: правда
     

    Переменные конфигурации:

    • номер ( Требуется , пин): номер пин-кода.

    • инвертированный ( Необязательный , логическое значение): Если все считанные и записанные значения
      следует рассматривать как перевернутую. По умолчанию ложь .

    • режим ( Необязательный , строка или сопоставление): настраивает вывод на различные
      режимы, такие как ввод или вывод. Значение по умолчанию зависит от контекста.
      Принимает либо сокращенную строку, либо сопоставление, где каждая функция может быть индивидуально
      включено/выключено:

      • вход ( Необязательный , логическое значение): если true, настройте контакт как вход.

      • выход ( Необязательный , логическое значение): Если true, настройте контакт как выход.

      • pullup ( Опционально , логическое значение): Активируйте внутренние подтягивающие резисторы на контакте.

      • pulldown ( Дополнительно , логическое значение): активируйте внутренние резисторы pulldown на контакте.

      • open_drain ( Необязательный , логическое значение): Установите вывод на открытый сток (в отличие от двухтактного).
        Затем активное состояние вывода приведет к состоянию высокого импеданса.

      Для совместимости также могут использоваться некоторые сокращенные режимы.

    Дополнительные параметры:

    • drive_strength ( Необязательный , строка): На ESP32 с платформой esp-idf сила привода колодки,
      т.е. максимальное значение тока может быть дополнительно установлено. По умолчанию 20 мА .
      Возможные варианты: 5 мА , 10 мА , 20 мА , 40 мА .

    Время

    Во многих местах в ESPHome вам нужно определить периоды времени.
    Есть несколько способов сделать это. См. примеры ниже, чтобы увидеть, как вы можете указать периоды времени:

     некоторая_конфигурация_опция:
      some_time_option: 1000us # 1000 микросекунд = 1 мс
      some_time_option: 1000 мс # 1000 миллисекунд
      some_time_option: 1.5s # 1.5 секунды
      some_time_option: 0.5min # полминуты
      some_time_option: 2h # 2 часа
      # Убедитесь, что вы заключили их в кавычки
      some_time_option: '2:01' # 2 часа 1 минута
      some_time_option: '2:01:30' # 2 часа 1 минута 30 секунд
      # 10 мс + 30 с + 25 мин + 3 ч
      some_time_option:
        миллисекунды: 10
        секунды: 30
        минут: 25
        часов: 3
        дней: 0
      # для всех опций 'update_interval' также
      update_interval: никогда # никогда не обновлять
      update_interval: 0ms # обновление в каждой итерации цикла()
     

    Замены

    Начиная с версии 1. 10.0, в ESPHome появился новый мощный способ уменьшить количество повторений в файлах конфигурации:
    Замены. С помощью замен вы можете иметь один общий исходный файл для всех узлов одного типа и
    подставить выражения в.

     замены:
      имя устройства: гостиная
      upper_devicename: Гостиная
    эсфома:
      имя: $ имя_устройства
      # ...
    датчик:
    - платформа: ДХТ
      # ...
      температура:
        имя: ${upper_devicename} Температура
      влажность:
        имя: ${upper_devicename} Влажность
     

    В разделе верхнего уровня замен вы можете поместить столько пар ключ-значение, сколько хотите. До
    подтвердив вашу конфигурацию, ESPHome автоматически заменит все вхождения замен
    по их стоимости. Синтаксис замены основан на bash и чувствителен к регистру: $substitution_key или
    ${substitution_key} (то же самое).

    Выполняются два прохода замены, позволяющие заменять составные части.

     замены:
      фу: желтый
      bar_yellow_value: !секрет yellow_secret
      bar_green_value: !секрет green_secret
    что-нибудь:
      тест: ${bar_${foo}_value}
     

    Оператор вставки YAML

    Кроме того, вы можете использовать синтаксис оператора вставки YAML << для создания одного файла YAML, из которого
    узлов наследует:

     # Общий. yaml
    эсфома:
      имя: $ имя_устройства
      # ...
    датчик:
    - платформа: ДХТ
      # ...
      температура:
        имя: ${upper_devicename} Температура
      влажность:
        имя: ${upper_devicename} Влажность
     
     # В файле nodemcu1.yaml
    замены:
      имя устройства: nodemcu1
      upper_devicename: NodeMCU 1
    <<: !include common.yaml
     

    Подсказка

    Чтобы скрыть эти базовые файлы с панели управления, вы можете

    Заменить переменные !include

    ESPHome !include принимает список переменных, которые можно заменить во включаемом файле.

     двоичный_сенсор:
      - платформа: gpio
        идентификатор: кнопка1
        вывод: GPIO16
        on_multi_click: !include { file: on-multi-click.yaml, vars: { id: 1 } } # встроенный синтаксис
      - платформа: gpio
        идентификатор: кнопка2
        вывод: GPIO4
        on_multi_click: !include
          # многострочный синтаксис
          файл: on-multi-click.yaml
          вары:
            идентификатор: 2
     

    on-multi-click.yaml :

     — время: !include click-single. yaml
      затем:
        - mqtt.publish:
            тема: ${device_name}/button${id}/status
            полезная нагрузка: одиночная
    - время: !include click-double.yaml
      затем:
        - mqtt.publish:
            тема: ${device_name}/button${id}/status
            полезная нагрузка: двойная
     

    Замены командной строки

    Вы можете определить или переопределить замены из командной строки, добавив, например, -s КЛЮЧ ЗНАЧЕНИЕ
    который отменяет подстановку KEY и присваивает ей значение VALUE. Это может быть выпущено несколько раз,
    так например со следующими пример.yaml файл:

     замены:
      имя: по умолчанию
      платформа: ESP8266
    эсфома:
      имя: $имя
      платформа: $платформа
      доска: $board
     

    и следующую команду:

     esphome -s name device01 -s board esp01_1m example.yaml config
     

    Вы получите что-то вроде следующего вывода (обратите внимание на неизменную платформу ,
    добавлено доска и переопределено имя замен):

     замены:
      имя: устройство01
      платформа: ESP8266
      плата: esp01_1m
    эсфома:
      имя: устройство01
      платформа: ESP8266
      плата: esp01_1m
      включает в себя: []
      библиотеки: []
      esp8266_restore_from_flash: ложь
      путь_сборки: устройство01
      Platformio_options: {}
      arduino_version: [электронная почта защищена]
     

    Здесь мы можем заметить, что подстановки в командной строке имеют приоритет над подстановками в
    ваш конфигурационный файл. Это можно использовать для создания общей конфигурации «шаблона».
    файлы (например, example.yaml выше), которые можно использовать для нескольких устройств,
    используя замены, которые предоставляются в командной строке.

    Пакеты

    Еще один способ модульности и повторного использования конфигурации — использование пакетов. Эта функция позволяет
    вам поместить общие части конфигурации в отдельные файлы и оставить только уникальные части вашего
    config в основном файле yaml. Все определения из пакетов будут объединены с вашим основным
    config неразрушающим образом, чтобы вы всегда могли переопределить некоторые биты и части пакета
    конфигурация.

    Словари объединяются по ключу. Списки компонентов объединены по компонентам
    ID, если указан. Другие списки объединяются конкатенацией. Все остальные конфиги
    значения заменяются более поздним значением.

    Локальные пакеты

    Рассмотрим следующий пример, в котором автор поместил общие элементы конфигурации, такие как Wi-Fi и
    I²C в базовые файлы и расширяет его некоторыми специфическими для устройства конфигурациями в основной конфигурации.

    Обратите внимание, как часть конфигурации, описывающая компонент API в device_base.yaml получает
    объединены с определениями служб из основного файла конфигурации.

     # В config.yaml
    замены:
      node_name: мое устройство
      device_verbose_name: "Мое устройство"
    пакеты:
      Wi-Fi: !include common/wifi.yaml
      device_base: !include common/device_base.yaml
    API:
      услуги:
        - сервис: start_laundry
          затем:
            - switch.turn_on: реле
            - задержка: 3 часа
            - switch.turn_off: реле
    датчик:
      - платформа: mhz19
        со2:
          название: "СО2"
        температура:
          Название: "Температура"
        update_interval: 60 сек.
        автоматическая_базовая_калибровка: ложь
     
     # В wifi.yaml
    Wi-Fi:
      ssid: !секрет wifi_ssid
      пароль: !secret wifi_password
      домен: .yourdomain.lan
      fast_connect: правда
     
     # В device_base.yaml
    эсфома:
      имя: ${имя_узла}
      платформа: ESP32
      доска: wemos_d1_mini32
      build_path: ./build/${node_name}
    # Шина I²C
    i2c:
      СДА: GPIO21
      СЦЛ: GPIO22
      сканирование: правда
      частота: 100 кГц
    # Включить ведение журнала
    регистратор:
      уровень: ${log_level}
    API:
      шифрование:
        ключ: !secret api_encryption_key
      reboot_timeout: 1 час
    датчик:
      - <<: !include common/sensor/uptime. config.yaml
      - <<: !include common/sensor/wifi_signal.config.yaml
    бинарный_сенсор:
      - <<: !include common/binary_sensor/connection_status.config.yaml
    выключатель:
      - <<: !include common/switch/restart_switch.config.yaml
     

    Пакеты Remote/git

    Пакеты также можно загружать из репозитория git, используя правильный синтаксис конфигурации.
    Замены могут использоваться внутри удаленных пакетов, что позволяет пользователям переопределять
    их локально с их собственным значением замены.

    Примечание

    Удаленные пакеты не могут содержать секретных поисковых запросов. Вместо этого они должны использовать замены с
    необязательное значение по умолчанию в упакованном YAML, которое YAML локального устройства может установить, используя значения из локальных секретов.

     упаковки:
    # Примеры Git-репозитория
    удаленный_пакет:
    URL-адрес: https://github.com/esphome/non-existant-repo
    ссылка: основной # необязательный
    файлы: [file1.yml, file2.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *