Главная  /  Программа «Smacont-ESP»  /  Обмен данными с устройством по протоколу ESP-NOW

Обмен данными с устройством
по протоколу ESP-NOW


Содержание

Общие данные
Односторонняя связь
Двухсторонняя связь
Настройки для работы по протоколу ESP-NOW
Шифрование данных
Действие «send_ESP_NOW()»
Информация о текущем состоянии ESP-NOW



Общие данные

Технология ESP-NOW — это упрощенный протокол связи WiFi с передачей коротких пакетов между парами сопряженных устройств, разработанный и выпущенный Espressif в 2016 для микроконтроллеров ESP8266 и ESP32. При этом дополнительные процедуры, связанные с поддержкой протокола WiFi не используются, что ускоряет процесс обмена пакетами.

Прошивка «Smacont-ESP» является первой подобной прошивкой, в которой реализован протокол ESP-NOW, в удобном для пользователя виде.

Применение протокола ESP-NOW в прошивке «Smacont-ESP», совместно со sleep-режимом, является идеальным решением для создания автономных устройств с питанием от батареек, аккумуляторов или ионисторов.

Экономия энергии происходит за счет уменьшения времени передачи данных, а именно, за счет быстрого соединения и быстрой передачи небольшого объема данных. В среднем, передача пакета из 250 байт, занимаем 10-20мс. Время передачи зависит от «загруженности» принимающей стороны при работе по WiFi с другими устройствами.

Еще одним достоинством применения протокола ESP-NOW является отсутствие применения дополнительного шлюза, например, шлюза Zigbee-WiFi. В данном случае, в качестве шлюза выступает любое устройство на микроконтроллере esp8266 (esp8285) с прошивкой «Smacont-ESP». При этом, устройство будет работать в штатном режиме, выполняя свои функции, в том числе полноценно обмениваться информацией по WiFi-сети.

Под управлением прошивки «Smacont-ESP», с применением протокола ESP-NOW уже реализованы и работают следующие устройства с автономным питанием:
ИК-датчик движения.
• ИК-датчик движения с датчиком температуры, влажности и давления (BME280).
Выключатель освещения. Выключатель (кнопка) управляет работой покупного устройства Sonoff mini R2 (c прошивкой «Smacont-ESP»), которое расположено в корпусе потолочной люстры.
• Кнопка звонка.
• Датчик температуры с питанием от ионисторов и зарядом от солнечной панели.
• Датчик открывания входной двери (геркон + магнит).
• Датчик протечки воды.
• Датчик влажности почвы.
Ссылки на статьи будут выкладываться по мере описания конструкции устройств.

В качестве управляющего модуля автономных устройств, в основном, используется Wi-Fi модуль ESP-01/ESP-01S, который отличается малыми габаритами и низкой ценой.

Благодаря своей универсальности, протокол ESP-NOW позволяет организовывать односторонний или двусторонний вариант связи с разными настройками.



Односторонняя связь

Прошивка «Smacont-ESP» позволяет реализовать три способа односторонней связи.

Один ведущий, один ведомый (минимальная конфигурация)

В данной конфигурации используется два модуля, один из них сконфигурирован как «Controller», второй модуль сконфигурирован как «Slave».


Smacont-ESP. ESP-NOW. Один ведущий, один ведомый

ESP-NOW. Один ведущий, один ведомый

Данным способом можно, например, отправлять команду на включение/отключение нагрузки (см. Выключатель освещения) или передавать показания датчиков (см. ИК-датчик движения).

Один ведущий, несколько ведомых

В данной конфигурации используется несколько модулей, один из них сконфигурирован как «Controller», остальные модули сконфигурированы как «Slave».


Smacont-ESP. ESP-NOW. Один ведущий, несколько ведомых

ESP-NOW. Один ведущий, несколько ведомых

Данным способом можно реализовать передачу команд от пульта (ведущего) на разные модули (ведомые).

Несколько ведущих, один ведомый

В данной конфигурации используется несколько модулей, один из них сконфигурирован как «Slave», остальные модули сконфигурированы как «Controller».


Smacont-ESP. ESP-NOW. Несколько ведущих, один ведомый

ESP-NOW. Несколько ведущих, один ведомый

Данным способом можно реализовать сеть датчиков (ведущих), передающих информацию на модуль сбора информации (ведомый).



Двухсторонняя связь

Прошивка «Smacont-ESP» позволяет реализовать несколько способов двухсторонней связи. Каждый модуль может быть отправителем и получателем одновременно. Таким образом, можно устанавливать двустороннюю связь между модулями.

Один «Combo», один «Combo» (минимальная конфигурация)


Smacont-ESP. ESP-NOW. Один «Combo», один «Combo»

ESP-NOW. Один «Combo», один «Combo»

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

Несколько «Combo»


Smacont-ESP. ESP-NOW. Несколько «Combo»

ESP-NOW. Несколько «Combo»

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



Настройки для работы по протоколу ESP-NOW

Для работы устройства по протоколу ESP-NOW необходимо задать соответствующий режим работы в соответствии с ролью устройства при обмене информацией.

Режим работы задается на вкладке «WiFi».


Smacont-ESP. ESP-NOW. Режим работы

ESP-NOW. Режим работы

В прошивке «Smacont-ESP» предусмотрены следующие режимы для работы устройства по протоколу ESP-NOW (в скобках указаны возможные режимы работы WiFi-соединения):
1. ESP-NOW CONTROLLER
2. ESP-NOW CONTROLLER (STA)
3. ESP-NOW CONTROLLER (AP)
4. ESP-NOW CONTROLLER (AP+STA)
5. ESP-NOW SLAVE (AP)
6. ESP-NOW SLAVE (AP+STA)
7. ESP-NOW COMBO (AP)
8. ESP-NOW COMBO (AP+STA)

«CONTROLLER»

В данном режиме устройство (ведущий) может только передавать данные на другое устройство, предварительно сконфигурированное в режиме:
• «SLAVE» (ведомый);
• «COMBO» (ведущий+ведомый).

Режим «ESP-NOW CONTROLLER» предпочтительно использовать для устройств с автономным питанием.

«SLAVE»

В данном режиме устройство (ведомый) может только принимать данные от другого устройства, предварительно сконфигурированного в режиме:
• «CONTROLLER» (ведущий);
• «COMBO» (ведущий+ведомый).

«COMBO»

В данном режиме устройство (ведущий+ведомый) может как принимать, так и передавать данные на другое устройство, предварительно сконфигурированное в режиме:
• «CONTROLLER» (ведущий);
• «SLAVE» (ведомый);
• «COMBO» (ведущий+ведомый).



Шифрование данных

В прошивке «Smacont-ESP» предусмотрено шифрование данных при передаче данных по протоколу ESP-NOW.

Разрешение шифрования данных осуществляется на вкладке «WiFi», в окне «Изменение режима работы».


Smacont-ESP. ESP-NOW. Шифрование данных

ESP-NOW. Шифрование данных

Шифрование данных подразумевает под собой использование ключей:
• «PMK_KEY» - основной мастер-ключ, который используется для ключа на присоединенном устройстве;
• «LMK_KEY» - локальный мастер-ключ, который используется для ключа полезной информации во время связи в данной паре.

Ключи «PMK_KEY» и «LMK_KEY» хранятся в текстовых шаблонах. Для ключа «PMK_KEY» резервируется шаблон «Т34», Для ключа «LMK_KEY» резервируется шаблон «Т35».


Smacont-ESP. ESP-NOW. Ключи «PMK_KEY» и «LMK_KEY» в текстовых шаблонах

ESP-NOW. Ключи «PMK_KEY» и «LMK_KEY» в текстовых шаблонах

Длина ключей «PMK_KEY» и «LMK_KEY» составляет 16 символов. В качестве символов допускается использовать:
• заглавные латинские буквы: от A до Z (26 символов);
• строчные латинские буквы: от a до z (26 символов);
• цифры от 0 до 9 (10 символов);
• символы: (пробел) ! " # $ & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _` { } ~ (33 символа).

Ключи «PMK_KEY» и «LMK_KEY» ДОЛЖНЫ СОВПАДАТЬ на ВСЕХ сопрягаемых УСТРОЙСТВАХ.

Пример записи ключа:
«PMK_KEY» Kjlsd$@id86*Io:T
«LMK_KEY» Luiio^)5)8LJIds4



Действие «send_ESP_NOW()»

Для передачи данных по протоколу ESP-NOW предусмотрено действие «send_ESP_NOW()» (обмен данными по протоколу ESP-NOW).


Smacont-ESP. ESP-NOW. Действие «send_ESP_NOW()»

ESP-NOW. Действие «send_ESP_NOW()»

В качестве параметров задаются:
• MAC-адрес принимающей стороны;
• Номер канала;
• Адрес первой переменной «Vx»;
• Количество переменных.


Smacont-ESP. ESP-NOW. Действие «send_ESP_NOW()»

ESP-NOW. Действие «send_ESP_NOW()»

При работе по протоколу ESP_NOW, ВСЕ устройства должны работать на ОДНОМ НОМЕРЕ КАНАЛА.

«MAC-адрес принимающей стороны» и «Номер канала» можно получить НА ВКЛАДКЕ «WiFi» ПРИНИМАЮЩЕЙ СТОРОНЫ.


Smacont-ESP. ESP-NOW. Вкладка «WiFi»

ESP-NOW. Вкладка «WiFi»

На принимающей стороне данные будут сохраняться в ПЕРЕМЕННЫХ, КОТОРЫЕ УКАЗАНЫ в действии «send_ESP_NOW()» ПЕРЕДАЮЩЕЙ СТОРОНЫ.

Действие «send_ESP_NOW()» может выполняться периодически по таймеру, либо по определенному событию.



Информация о текущем состоянии ESP-NOW

В прошивке «Smacont-ESP» предусмотрена возможность отслеживания информация о текущем состоянии ESP-NOW. Контроль данного состояния позволяет, например, получать статус передачи данных на приемную сторону и в случае неудачной передачи, либо повторить передачу, либо выдать предупреждающий сигнал.

Разрешение отслеживания информация о текущем состоянии ESP-NOW осуществляется на вкладке «INFO/CONF».


Smacont-ESP. ESP-NOW. Вкладка «INFO/CONF»

ESP-NOW. Вкладка «INFO/CONF»

Доступны следующие коды состояния ESP-NOW:
0 – ошибка, ESP-NOW не в режиме «CONTROLLER/COMBO»;
1 – успешная передача данных;
2 – ошибка, передать данные не удалось;
3 – ошибка регистрации пира;
4 – ошибка начала передачи данных;
5 – в процессе передачи данных;
7 – ошибка инициализации;
8 – ошибка, неверная длина принятых данных;
9 – ошибка при дешифровке (ключи не совпадают);
10 – ESP-NOW отключен (в режиме «ESP_NOW_ROLE_IDLE»);
14 – ESP-NOW включен (CONTROLLER / SLAVE / COMBO);
15 – ошибка, полученные данные зашифрованы;
255 – неизвестная ошибка.



Программы

Прошивка «Smacont-ESP»:
скачать

«Программа Настройки»:
запусить (только браузер Firefox)
скачать zip-архив

Телеграм канал

Новости

Действие «wifi_CheckConn()». После подключения к WiFi-сети, выполнить действие с задержкой

Обмен данными. Open Monitoring

Датчики температуры и влажности AHT10/AHT15/AHT20/AHT21/AHT25

Датчик температуры и влажности SHT30 (SHT31/SHT35)

Действие «valueToVx()», «valueToArrVx()». Отслеживание заданного уровня в диапазоне значений

Действие «termostat()». Термостат

ESP-NOW. Датчик температуры и влажности с питанием от батареек

Последовательные интерфейсы (UART, I2C, SPI)

Управление одноканальным модулем реле

Протокол MQTT

Обмен данными. NarodMon

Обмен данными. ioControl

Обмен данными. WhatsApp

Обмен данными. Telegram

Текстовые шаблоны



Программы для модулей ESP     Программы     Применения     Справочник         Контакты     SMACONT. Напишите нам smacont@ya.ru