https://smacont.ru/wiki/040/ Перспектива развития протокола «MODBUS» Беспроводной Wi-Fi модуль ESP-01 ESP8266 & Контролер последовательного порта приемопередатчика дальней связи Универсальная программа (прошивка) «Smacont-ESP» для модулей ESP8266/ESP8285 «Smacont-ESP» — это децентрализованная система, которой не требуются сервер или центральный контроллер управления. Каждое устройство может работать как самостоятельно, так и в связи с другими устройствами. Каждое устройство, под управлением прошивки «Smacont-ESP», выполняет свои задачи, а также может общаться между собой через WiFi-сеть или по протоколу «MODBUS» и в случае необходимости, устройство может выполнить действия по изменению состояния другого устройства. Прошивка «Smacont-ESP», является первой подобной прошивкой, с поддержкой протокола ESP-NOW, что позволяет создавать автономные устройства с питанием от батарей, аккумуляторов или ионисторов. Беспроводной Wi-Fi модуль ESP-01 ESP8266 & Контролер последовательного порта приемопередатчика дальней связи Обмен данными с устройством по протоколу 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 является отсутствие применения дополнительного шлюза, например, шлюза ZigbeeWiFi. В данном случае, в качестве шлюза выступает любое устройство на микроконтроллере esp8266 (esp8285) с прошивкой «Smacont-ESP». При этом, устройство будет работать в штатном режиме, выполняя свои функции, в том числе полноценно обмениваться информацией по WiFi-сети. Под управлением прошивки «Smacont-ESP», с применением протокола ESPNOW уже реализованы и работают следующие устройства с автономным питанием: • ИК-датчик движения. • ИК-датчик движения с датчиком температуры, влажности и давления (BME280). • Выключатель освещения. Выключатель (кнопка) управляет работой покупного устройства Sonoff mini R2 (c прошивкой «Smacont-ESP»), которое расположено в корпусе потолочной люстры. • Кнопка звонка. • Датчик температуры с питанием от ионисторов и зарядом от солнечной панели. • Датчик открывания входной двери (геркон + магнит). • Датчик протечки воды. • Датчик влажности почвы. Ссылки на статьи будут выкладываться по мере описания конструкции устройств. В качестве управляющего модуля автономных устройств, в основном, используется Wi-Fi модуль ESP-01/ESP-01S, который отличается малыми габаритами и низкой ценой. Благодаря своей универсальности, протокол ESP-NOW позволяет организовывать односторонний или двусторонний вариант связи с разными настройками. Односторонняя связь Прошивка «Smacont-ESP» позволяет реализовать три способа односторонней связи. Один ведущий, один ведомый (минимальная конфигурация) В данной конфигурации используется два модуля, один из них сконфигурирован как «Controller», второй модуль сконфигурирован как «Slave». ESP-NOW. Один ведущий, один ведомый Данным способом можно, например, отправлять команду на включение/отключение нагрузки (см. Выключатель освещения) или передавать показания датчиков (см. ИК-датчик движения). Один ведущий, несколько ведомых В данной конфигурации используется несколько модулей, один из них сконфигурирован как «Controller», остальные модули сконфигурированы как «Slave». ESP-NOW. Один ведущий, несколько ведомых Данным способом можно реализовать передачу команд от пульта (ведущего) на разные модули (ведомые). Несколько ведущих, один ведомый В данной конфигурации используется несколько модулей, один из них сконфигурирован как «Slave», остальные модули сконфигурированы как «Controller». ESP-NOW. Несколько ведущих, один ведомый Данным способом можно реализовать сеть датчиков (ведущих), передающих информацию на модуль сбора информации (ведомый). Двухсторонняя связь Прошивка «Smacont-ESP» позволяет реализовать несколько способов двухсторонней связи. Каждый модуль может быть отправителем и получателем одновременно. Таким образом, можно устанавливать двустороннюю связь между модулями. Один «Combo», один «Combo» (минимальная конфигурация) ESP-NOW. Один «Combo», один «Combo» Данным способом можно, например, отправлять команду на включение/отключение нагрузки или передавать показания датчиков и при этом, получать подтверждение об успешном приеме. Несколько «Combo» ESP-NOW. Несколько «Combo» Данным способом можно реализовать сеть датчиков (ведущих), передающих информацию на модуль сбора информации (ведомый), с подтверждением об успешном приеме или просто обмениваться информацией между модулями. Настройки для работы по протоколу ESP-NOW Для работы устройства по протоколу ESP-NOW необходимо задать соответствующий режим работы в соответствии с ролью устройства при обмене информацией. Режим работы задается на вкладке «WiFi». 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», в окне «Изменение режима работы». ESP-NOW. Шифрование данных Шифрование данных подразумевает под собой использование ключей: • «PMK_KEY» - основной мастер-ключ, который используется для ключа на присоединенном устройстве; • «LMK_KEY» - локальный мастер-ключ, который используется для ключа полезной информации во время связи в данной паре. Ключи «PMK_KEY» и «LMK_KEY» хранятся в текстовых шаблонах. Для ключа «PMK_KEY» резервируется шаблон «Т34», Для ключа «LMK_KEY» резервируется шаблон «Т35». 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). ESP-NOW. Действие «send_ESP_NOW()» В качестве параметров задаются: • MAC-адрес принимающей стороны; • Номер канала; • Адрес первой переменной «Vx»; • Количество переменных. ESP-NOW. Действие «send_ESP_NOW()» При работе по протоколу ESP_NOW, ВСЕ устройства должны работать на ОДНОМ НОМЕРЕ КАНАЛА. «MAC-адрес принимающей стороны» и «Номер канала» можно получить НА ВКЛАДКЕ «WiFi» ПРИНИМАЮЩЕЙ СТОРОНЫ. ESP-NOW. Вкладка «WiFi» На принимающей стороне данные будут сохраняться в ПЕРЕМЕННЫХ, КОТОРЫЕ УКАЗАНЫ в действии «send_ESP_NOW()» ПЕРЕДАЮЩЕЙ СТОРОНЫ. Действие «send_ESP_NOW()» может выполняться периодически по таймеру, либо по определенному событию. Информация о текущем состоянии ESP-NOW В прошивке «Smacont-ESP» предусмотрена возможность отслеживания информация о текущем состоянии ESP-NOW. Контроль данного состояния позволяет, например, получать статус передачи данных на приемную сторону и в случае неудачной передачи, либо повторить передачу, либо выдать предупреждающий сигнал. Разрешение отслеживания информация о текущем состоянии 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 – неизвестная ошибка.