Skip to content

Latest commit

 

History

History
94 lines (61 loc) · 9.32 KB

Readme.md

File metadata and controls

94 lines (61 loc) · 9.32 KB

ESP32-MQTT_2xCounter

Firware for ESP32s module with AC power-in sensor. Module count incoming pulses in 2 counters and storing this values for external access. For access to counters value you can use MQTT and HTTP. Initial settings and counters start value set via built-in WEB server. Module have AC power-in sensor and save data in FLASH memory if his cut off.

Common view of ESP32-MQTT_2xCounter module rev1

Модуль счётчиков внешних импульсов на ESP32s с датчиком отключения питания.


Данный модуль может использоватся для подсчёта внешних импульсов от счётчиков тепла/электричества/воды. Подсчёт ведется путем замыкания входных клемм [INP1] и [INP2]. Замыкание соответсвующего вывода индицируется светодиодом LED1 и LED2. Переход от не замкнутого положения к замкнутому добавляет один импульс в значению соответсвующего счётчика.
При этом на входах счетчиков предусмотрена защита от дребезга контактов, что позволяет подключать релейные и герконовые датчики. Задержка составляет 50ms (граничная частота регистрации импульсов < 10 Гц). Модуль имеет детектор пропадания питания, при этом энергии в накопительных конденсаторах хватает для записи значения счётчиков в энергонезависимую FLASH память . Это сохраняет значения и минимизирует потери импульсов при перезагрузке устройства по питанию. При этом есть есть отдельный счётчик, который ведет подсчёт количества пропаданий питания со времени своего последнего сброса.

При старте устройства текущие значения счётчиков вычитываются их FLASH памяти. Значения счётчиков могут быть сброшены принудительно, нажатием на кнопку CLEAR на плате. Однократное нажатие сбрасывает счётчик 01, двойное - счётчик 02. Для полного сброса всех настроек модуля к базовым, необходимо более чем на 1 секунду нажать одновременно кнопки CLEAR и FLASH.

По умолчанию, модуль подключается к WiFi сети с настройками прошитыми в FLASH памяти. Там же хранятся настройки подключения и описания топиков MQTT сервера, через которые можно получить доступ к значениям счётчиков.

Коммуникация с модулем

WiFi & WEB

Если при старте модуля он не смог установить соединение с WiFi сетью вашего роутера, то будет поднята собственная точка доступа с именем CNTR_xxxx, где хххх - последние цифры MAC адреса ESP32s. После поднятия точки доступа, можно соединится со страницей настроек модуля, которая будет доступна по адресу default gateway точки доступа. Эти же настройки доступны и при успешном подключении модуля к WiFi сети по адресу, который будет получен динамически от вашего маршрутизатора.

!!! Поддерживается только сеть 2.4МГц (это ограничение самого ESP32).

Общий вид страниц работы со значениями счётчиков и с общей конфигурацией модуля приведены ниже. Доступ через эти страницы позволяет полностью настроить доступ как к WiFi сети, так и к MQTT серверу.

Page for counters valuePage for module configuration

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

Для этого нужно:

  • для получения данных обратится по адресу: [адрес_модуля]/get_data?cntr=х

где х - номер счётчика, значение которого мы хотим получить 0..2 (0 - счётчик перезагрузок).

  • для задания значений счётчиков обратится по адресу: [адрес_модуля]/set_data?cntr=х&value=nnn

где х - номер счётчика, значение которого мы хотим установить 0..2 (0 - счётчик перезагрузок), а nnn - новое значение этого счётчика 1;

MQTT

Доступ к модулю через MQTT возможен при правильной настройке параметров подключения. При этом это может быть как локальный, так и глобальный MQTT сервер. Если по каким либо причинам MQTT сервер не доступен, то через 100 попыток подключения (~300 секунд), попытки подключения к MQTT прекращаются и модуль работает только с подключением к WiFi и доступен только через WEB.

При работе с MQTT, работа с сервером идет через три топика:

  • топик команд [SET] ;
  • топик состояния подключения устройства [LWT];
  • топик рапортов о текущих заначениях [STATUS];

Если модуль получает в топике [SET] команду {report}, то сразу публикует в топике [STATUS] своё текущее состояние. Иначе, своё текущее состояние модуль публикует каждые 60 минут.

Команды и статусы

Ниже приведены команды, которые будут исполнены при помещении их в топик [SET]:

Команда Действие
{"report"} команда немедленной генерации отчёта в топик [STATUS]
{"reboot"} команда перезагрузки модуля с сохранением текущих счётчиков
{"clear":"config"} cброс текущей конфигурации до начальной и перезагрузки
{"clear":"cnt01"} сброс счётчика №1
{"clear":"cnt02"} сброс счётчика №2
{"clear":"reboot"} сброс счётчика перезагрузок (считает от момента прошлого сброса)
{"set_value_1":<значение>} установка значения счётчика 01 1
{"set_value_2":<значение>} установка значения счётчика 02 1

Ниже приведен пример отчета в JSON формате, генерируемого модулем в топик [STATUS]:


{"cnt01":<значение1>,"cnt02":<значение2>,"cnt_reboot":<значение3>,"ip":<xx.xx.xx.xx>} 

где:

  • <значение1>, <значение2> - текущие значения счётчиков №1 и №2;
  • <значение3> - значение счётчика перезагрузок;
  • <xx.xx.xx.xx> - текущий IP модуля для облегчения доступа к его текущим страницам настроек; 2


Hardware часть

Общая принципиальная схема модуля представлена ниже.

Schematic of ESP32-MQTT_2xCounter rev1

Footnotes

  1. допустимое значение счётчика от 0 до 4 294 967 295 (0xFFFFFFFF); 2 3

  2. для удобства работы с модулем, рекомендую закрепить постоянный IP адрес за модулем, ассоциировав его с MAC адресом модуля;