Esp8266 config. Настройка и конфигурирование ESP8266 для проектов умного дома

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

Что такое ESP8266 и почему он популярен для DIY проектов умного дома

ESP8266 — это недорогой Wi-Fi микроконтроллер, который стал очень популярным для самодельных проектов умного дома. Основные причины его популярности:

  • Низкая стоимость — от $2 за модуль
  • Встроенный Wi-Fi модуль
  • Достаточно мощный 32-битный процессор
  • Большое сообщество разработчиков и готовые библиотеки
  • Возможность программирования на Arduino IDE или MicroPython
  • Компактные размеры

Благодаря этим преимуществам ESP8266 можно использовать для создания различных устройств умного дома — от простых датчиков до более сложных контроллеров. Рассмотрим основные варианты настройки и конфигурирования ESP8266 для таких проектов.


Варианты прошивок для ESP8266

Существует несколько популярных вариантов прошивок для ESP8266, которые можно использовать в проектах умного дома:

1. Arduino для ESP8266

Позволяет программировать ESP8266 в привычной среде Arduino IDE. Преимущества:

  • Простота освоения для начинающих
  • Огромное количество готовых библиотек
  • Поддержка ООП

2. ESPHome

Специализированная прошивка для интеграции с Home Assistant. Особенности:

  • Настройка через файлы конфигурации YAML
  • Автоматическая интеграция с Home Assistant
  • Обновление по воздуху (OTA)

3. Tasmota

Прошивка с веб-интерфейсом для управления. Плюсы:

  • Готовый веб-интерфейс
  • Поддержка MQTT
  • Много готовых шаблонов для различных устройств

4. MicroPython

Позволяет программировать ESP8266 на Python. Преимущества:

  • Простой и понятный синтаксис Python
  • Интерактивная консоль REPL
  • Поддержка многопоточности

Конфигурирование ESP8266 для работы с Home Assistant

Home Assistant — одна из самых популярных систем умного дома для самостоятельной сборки. Рассмотрим, как настроить ESP8266 для работы с ней.


Вариант 1: ESPHome

ESPHome — наиболее простой способ интеграции ESP8266 с Home Assistant:

  1. Установите ESPHome через дополнения Home Assistant
  2. Создайте новое устройство в ESPHome и загрузите прошивку на ESP8266
  3. Настройте конфигурацию устройства в YAML файле
  4. ESPHome автоматически добавит устройство в Home Assistant

Пример простой конфигурации датчика температуры и влажности на ESP8266 для ESPHome:

«`yaml esphome: name: esp8266_sensor platform: ESP8266 board: nodemcuv2 wifi: ssid: «Название_вашей_сети» password: «пароль_от_wifi» # Включаем датчик DHT22 sensor: — platform: dht pin: D2 temperature: name: «Температура» humidity: name: «Влажность» update_interval: 60s «`

Вариант 2: MQTT

Если вы используете Arduino или другую прошивку, можно настроить интеграцию через MQTT:

  1. Установите и настройте MQTT брокер (например, Mosquitto) в Home Assistant
  2. Добавьте библиотеку PubSubClient в ваш Arduino скетч
  3. Настройте подключение к MQTT брокеру и отправку данных
  4. Добавьте MQTT сенсоры в конфигурацию Home Assistant

Пример Arduino скетча для отправки данных по MQTT:


«`cpp #include #include #include const char* ssid = «Название_вашей_сети»; const char* password = «пароль_от_wifi»; const char* mqtt_server = «IP_адрес_Home_Assistant»; WiFiClient espClient; PubSubClient client(espClient); DHT dht(D2, DHT22); void setup() { Serial.begin(115200); setup_wifi(); client.setServer(mqtt_server, 1883); dht.begin(); } void loop() { if (!client.connected()) { reconnect(); } client.loop(); float h = dht.readHumidity(); float t = dht.readTemperature(); if (!isnan(h) && !isnan(t)) { client.publish(«sensor/temperature», String(t).c_str()); client.publish(«sensor/humidity», String(h).c_str()); } delay(60000); } // Функции setup_wifi() и reconnect() опущены для краткости «`

Преимущества использования ESP8266 в проектах умного дома

Использование ESP8266 в DIY проектах умного дома дает ряд преимуществ:

  1. Низкая стоимость — позволяет создавать бюджетные решения
  2. Гибкость — можно программировать под свои конкретные задачи
  3. Открытость — полный контроль над устройством и его данными
  4. Возможность интеграции — легко подключается к популярным системам умного дома
  5. Расширяемость — можно добавлять новые функции по мере необходимости

Типичные применения ESP8266 в умном доме

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


  • Датчики температуры, влажности, движения
  • Умные розетки и выключатели
  • Контроллеры светодиодных лент
  • Управление моторами и сервоприводами
  • Метеостанции
  • Системы полива растений

Советы по настройке ESP8266 для проектов умного дома

Несколько рекомендаций по эффективной настройке ESP8266:

  1. Используйте режим глубокого сна для экономии энергии в автономных устройствах
  2. Настройте OTA обновления для удобства прошивки
  3. Добавьте веб-сервер для локальной настройки параметров
  4. Используйте библиотеку ArduinoJson для работы с JSON данными
  5. Настройте логирование для отладки

Пример настройки глубокого сна и OTA обновлений в ESP8266:

«`cpp #include #include #include const char* ssid = «Название_вашей_сети»; const char* password = «пароль_от_wifi»; const char* update_url = «http://example.com/firmware.bin»; void setup() { Serial.begin(115200); WiFi.begin(ssid, password); // Ждем подключения к WiFi while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print(«.»); } // Проверяем обновления checkForUpdates(); // Выполняем основную работу устройства // Уходим в глубокий сон на 10 минут ESP.deepSleep(600e6); } void loop() { // В режиме глубокого сна loop не выполняется } void checkForUpdates() { WiFiClient client; t_httpUpdate_return ret = ESPhttpUpdate.update(client, update_url); switch (ret) { case HTTP_UPDATE_FAILED: Serial.println(«HTTP_UPDATE_FAILED»); break; case HTTP_UPDATE_NO_UPDATES: Serial.println(«HTTP_UPDATE_NO_UPDATES»); break; case HTTP_UPDATE_OK: Serial.println(«HTTP_UPDATE_OK»); break; } } «`

Заключение

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



2 релейных модуля с esp8266. Конфиг для ESPHome — kvvhost

Попали мне в руки два модуля с esp8266, поделюсь конфигами для ESPHome

DC 7-32V Pro

Первый модуль — DC 7-32V Pro, по крайней мере так указано в названии.


Ссылка на модуль: https://aliexpress.ru/item/32934827507.html


Питается либо от обычного БП на через разъем microUSB, либо через дополнительный клеммный разъем, на который можно подать от 7В до 32В

постоянного тока.

Реле на 10А переменного 125/250В или постоянного тока 30В. Маркировка SRD-05VDC-SL-C

За WiFi и логику отвечает модуль esp8285

По дефолту залита прошивка eWelink, что позволяется использовать плату с соответствующим приложением прямо из коробки. Да и добавить в какой-нибудь Google Assistant. Я уже проходился бегло по этому приложению в своем обзоре Sonoff SV:

Sonoff SV Safe Voltage. Прошивка ESPHome

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

Кнопка, что ближе к кондеру, включает и выключает реле с прошивкой eWelink. Она  же GPIO0. Чтобы прошить эту платку достаточно подпаять только контакты TX RX к самому esp8285.

Земля есть в любых местах на плате, я припаялся вот в этом месте:

Питание 3.3V я не подключал. Чтобы перевести плату в режим прошивки нужно зажать кнопку GPIO0, не отпуская ее подключить питание через microUSB, затем отпускаем кнопку GPIO0 и подключаем uart адаптер к usb.

Для ESPHome конфиг следующий:

esphome:
  name: dc7_32v_pro
  platform: esp8266
  board: esp8285

wifi:
  ssid: 'youwifi'
  password: 'youwifipass'

logger:

api:
  password: "dc7_32v_pro"

ota:
  password: "dc7_32v_pro"

# Светодиод
status_led:
 pin: 13

binary_sensor:
# Кнопка
  - platform: gpio
    pin:
      number: 0
      mode: INPUT_PULLUP
      inverted: true
    name: "button"
    id: button

switch:
# Реле
  - platform: gpio
    name: "relay"
    pin: GPIO12
    id: relay


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

id: button следующее:

# Нажатие кнопки переключает реле
    on_click:
      min_length: 50ms
      max_length: 350ms
      then:
        - switch. toggle: relay

Теперь о следующей плате.

 

2CH Smart Switch

Двухканальный релейный модуль с RF приемником на 433,92 MHz и соответствующим пультом.


Ссылка на модуль: https://aliexpress.ru/item/32933362215.html


В комплекте идет радиопульт на 4 кнопки

Пластиковые заглушки по бокам снимаются для доступа к силовым клеммам питания и разъему microUSB с одной стороны

И для доступа к подключению управляемой нагрузкой с другой стороны

Что интересно, microUSB кабель вставить не получится, пока плата в корпусе. Мешает сам корпус)

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

Тут так же, как и в первой плате, стоит модуль esp8285

Внешне плата очень схожа с вот этой платой, найденной мной в репозитории устройств Тасмота:

Отличия в питании — на плате из репо тасмоты все компоненты отдельным модулем припаяны к плате, тогда как на моей все находится на самой плате. Так же на моей нет контактов с дополнительными gpio, но присутствует модуль приемника RF на 433,92 MHz и разъем microUSB

Реле точно такие же — на 10А с маркировкой SRD-05VDC-SL-C

С обратной стороны платы ничего необычного — все чисто, силовые контакты реле разделены друг от друга.

Для перепрошивки я подключился таким же способом, как и в случае с первой платой — подпаял к esp8285 только контакты TX RX

Землю взял с microUSB, так удобнее

И так же зажал кнопку GPIO0, не отпуская ее подключил питание через microUSB, затем отпустил кнопку GPIO0 и подключил uart адаптер к usb.

Конфиг прошивки для ESPHome:

esphome:
  name: 2ch_relay_rf_switch
  platform: esp8266
  board: esp8285


wifi:
  ssid: 'youwifi'
  password: 'youwifipass'

logger:

api:
  password: "2ch_relay_rf_switch"

ota:
  password: "2ch_relay_rf_switch"

status_led:
 pin: 13

binary_sensor:

# Кнопка 1
  - platform: gpio
    pin:
      number: 9
      mode: INPUT_PULLUP
      inverted: true
    name: "button1"
    id: button1

# Нажатие кнопки1 переключает реле1
    on_click:
      min_length: 50ms
      max_length: 350ms
      then:
        - switch. toggle: relay1

# Кнопка 2
  - platform: gpio
    pin:
      number: 0
      mode: INPUT_PULLUP
      inverted: true
    name: "button2"
    id: button2

# Нажатие кнопки2 переключает реле2
    on_click:
      min_length: 50ms
      max_length: 350ms
      then:
        - switch.toggle: relay2

switch:
# Реле 1
  - platform: gpio
    name: "relay1"
    pin: GPIO12
    id: relay1

# Реле 2
  - platform: gpio
    name: "relay2"
    pin: GPIO5
    id: relay2

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

Чтобы привязать пульт нужно зажать кнопку RF, после жмем любую кнопку на пульте и отпускаем кнопку RF. Все, пульт привязан. Кнопки A и B управляют первым и вторым реле, кнопки C, D ничего не делают, кроме активации синего светодиода около RF модуля

Чтобы отвязать пульт, нужно зажать кнопку RF на 15 секунд, после отпускаем и синий светодиод около RF модуля замигает. Пульт будет отвязан.

Так же никто не мешает выпаять RF модуль, точнее только управляющий пин, и припаять напрямую к любому свободному gpio esp8285. Тогда можно будет использовать стандартные средства ESPHome для RF приемника

5 2 голоса

Рейтинг статьи

Использование микросхемы криптозащиты ATECC508A от Microchip совместно с ОС Mongoose + ESP8266 + Google IoT Core

Настройка макета
Далее следует установить Google IoT Core, следуя инструкциям в руководстве.
В этом же руководстве описан процесс создания проектов и реестров устройств (device registry). На данном этапе настройки пока не следует генерировать ключи или создавать проект устройства.

Инициализация устройства

Запускаем команду «mos flash esp8266» для установки Mongoose OS на плату NodeMCU.
Запускаем команду «mos wifi SSID PASS» для включения WiFi.

Настройка
ECC508A
Запускаем команду «mos config-set sys.atca.enable=true»
Убеждаемся, что криптографическая микросхема успешно обнаружена:
$ mos -X atca-get-config
Using port /dev/ttyUSB0
AECC508A rev 0x5000 S/N 0x012352aad1bbf378ee, config is locked, data is locked
0x01, 0x23, 0x52, 0xaa,

Если разделы памяти устройства с настройками и данными автоматически не перешли в защищенное состояние «locked», то следует выполнить настройку криптографического чипа перед продолжением дальнейших операций. В дальнейшем примере будем считать, что slot 0 задействован для хранения приватных ключей ECC, а генерация ключей активирована.

Генерируем ключ:
$ mos -X atca-gen-key 0 ec_public.pem —dry-run=false
Using port /dev/ttyUSB0
AECC508A rev 0x5000 S/N 0x012352aad1bbf378ee, config is locked, data is locked
Generated new ECC key on slot 0
Wrote ec_public. pem

Создаем объект GCP-устройства (GCP — Google Cloud Platform):
$ gcloud beta iot devices create $DEVICE_ID —project=$PROJECT —region=$REGION —registry=$REGISTRY —public-key path=ec_public.pem,type=es256

Конфигурируем настройки GCP-устройства:
mos config-set mqtt.enable=true mqtt.server=mqtt.googleapis.com:8883 mqtt.ssl_ca_cert=ca.pem sntp.enable=true gcp.enable=true gcp.project=$PROJECT gcp.region=$REGION gcp.registry=$REGISTRY gcp.device=$DEVICE_ID device.id=$DEVICE_ID gcp.key=ATCA:0 sys.atca.enable=true debug.stderr_topic=/devices/$DEVICE_ID/events/log debug.stdout_topic=/devices/$DEVICE_ID/events/log

Тестирование
Запускаем команду «mos ui» для получения доступа к пользовательскому Web-интерфейсу. Указываем адрес устройства (последовательный порт) для подключения и выполняем перезагрузку устройства. В окне пользовательского интерфейса должны появиться сообщения:

mgos_wifi_setup_sta WiFi STA: Connecting to SSID
mgos_i2c_create I2C GPIO init ok (SDA: 12, SCL: 14)
mgos_atca_init ATECC508 @ 0x60: rev 0x5000 S/N 0x12352aad1bbf378ee, zone lock status: yes, yes; ECDH slots: 0x0c
. ..
mgos_gcp_init GCP client for my-project/us-central1/my-registry/my-es256-device, EC(ATCA) key in ATCA:0

mgos_mqtt_ev MQTT Connect (1)
ATCA:0 ECDSA sign ok
mgos_mqtt_ev MQTT CONNACK 0
mgos_mqtt_ev Subscribing to ‘my-es256-device/rpc’
mgos_mqtt_ev Subscribing to ‘my-es256-device/rpc/#’

Здесь «EC(ATCA) key in ATCA:0 part» означает, что slot 0 криптографического чипа ATECC508A задействован.
«ATCA:0 ECDSA sign ok» означает ,что ATCA:0 используется для авторизации доступа в ходе рукопожатия в протоколе MQTT.
Далее, прошивка, загруженная в устройство по умолчанию, каждый раз при нажатии пользователем кнопки «Flash» будет выводить в пользовательский интерфейс MQTT-сообщение:
Published: yes topic: /devices/my-es256-device/events message: {«free_ram»:30080,»total_ram»:51912}

типов конфигурации — 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. yml]
    обновить: 1d # необязательно
  # Один файл может быть выражен с помощью `file` или `files` в виде строки
  удаленный_пакет_два:
    URL-адрес: https://github.com/esphome/non-existant-repo
    файл: file1.yml # нельзя комбинировать с `files`
    # файлы: file1.yml
  # сокращенная форма github://username/repository/[folder/]file-path.yml[@branch-or-tag]
  remote_package_three: github://esphome/non-existant-repo/[электронная почта защищена]
 

См. также

  • Индекс ESPHome

  • Начало работы с командной строкой ESPHome

  • Часто задаваемые вопросы

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

NodeMCU 1.0 (модуль ESP-12E) — документация PlatformIO v6.1

Содержимое

  • NodeMCU 1.0 (модуль ESP-12E)

    • Оборудование

    • Конфигурация

    • Загрузка

    • Отладка

    • Каркасы

Платформа

Espressif 8266: Espressif Systems — частная полупроводниковая компания, не имеющая производственных мощностей. Они обеспечивают беспроводную связь и чипы Wi-Fi, которые широко используются в мобильных устройствах и приложениях Интернета вещей.

Микроконтроллер

ЭСП8266

Частота

80 МГц

Вспышка

4 МБ

ОЗУ

80КБ

Поставщик

УзелMCU

Используйте идентификатор nodemcuv2 для опции платы в «platformio.ini» (файл конфигурации проекта):

 [env:nodemcuv2]
платформа = espressif8266
доска = nodemcuv2
 

Вы можете переопределить настройки NodeMCU 1.0 (модуль ESP-12E) по умолчанию для каждой среды сборки, используя board_*** вариант, где *** — путь к объекту JSON из манифест платы nodemcuv2.

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

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