Умный дом Своими руками. Энергомонитор на PZEM 004T. Часть 3.
Григорий
PZEM-004T - универсальный модуль контроля электропитания. Делаем на его базе энергомонитор. В прошлой статье мы определились что программное обеспечение будем писать в программе FLProg. Данные получаемые с энергомонитора на PZEM 004T будем передавать на сервер по протоколу MQTT, доступ к ним будут иметь различные мобильные устройства (смартфоне, планшете). Для комфортной работы должны предусмотреть следующее:
- возможность быстро поменять настройки WIFI сети без снятия ESP8266 или ESP-01. Возможно применение Arduino в связке с указанными контроллерами.
- возможность подключиться к другому серверу MQTT, также без снятия контролера с платы.
- получение постоянного и легкого контроля за подключением к сети и серверу в WEB интерфейсе
Смотреться это будет примерно так
Стрелками указаны ссылки для перехода на другие страницы
Стрелками указаны кнопки сохранить и перегрузить. На главной страницы видим статус подключения к WiFi сети и серверу. С главной страницы мы можем перейти на страницы настроек сети и соединения с сервером. Если в настройках сервера изменить в текстовых полях параметры сервера, а после нажать на кнопки "сохранить" и перегрузить" то в дальнейшем наш энергомонитор на PZEM 004T будет работать с новым сервером. Прошивка устройства изменится. При новой загрузке он будет брать именно эти данные для соединения. Точно также и с локальной сетью. Что это дает? По какой либо причине вы хотите работать с новым сервером то в течение 30 секунд вы перенастроите свое устройство. Нет необходимости снимать его и перепрограммировать. Перейдем непосредственно к программе.
С момента публикации второй части Вы ознакомились с программой FLProg. Открываем ее и нажав на вкладку "файл", Новый, на контролере - создаем новый проект. Выбираем контроллер - ESP8266 и сохраняемся. Нам надо установить базовый пользовательский блок для соединения с сервером MQTT. С правой стороны экрана заходим в пользовательские блоки и выбираем "MQTT ESP Main v6.8". Многие могут сказать что у них такого блока нет. Пользовательские блоки можно получить несколькими способами:
- скачать на сайте программы или моем сайте
- при помощи FLProg загружаем скетч (скачать можно также у меня на сайте по ссылке в конце статьи.) После загрузки выделяем нужный пользовательский блок, щелкая по нему правой кнопкой мыши и в выпадающем меню выбираем пункт - добавить в библиотеку. Данный блок в программе может быть только один. Он будет работать с блоками только той версии, что и сам, у нас 6.8. Блоки разных версий работать не будут.
Переходим в левую часть экрана, настраиваем соединение по WiFi. Необходимо войти в настройки модуля и включаем "Клиент". Прописываем в настройках данные локальной сети. В получении IP адреса по DHCP я прописываю конкретный адрес например 192.168.1.20. Почему? Чтобы не делать лишнюю работу и не искать модуль в настройках роутера.
После настройки переходим к вкладке пользовательские параметры и начинаем их прописывать
Статус соединения с сервером. Имя - можно на русском "Статус соединения с MQTT", тип "Booalean", галочку сохранения в EEPROM убираем.
Следующий параметр - адрес сервера в интернете. Название -Адрес, тип String, значение по умолчанию, у меня M4.WQTT.RU. У вас может быть другое.
Далее -прописываем порт соединения. Название - порт, тип - Integer, значение по умолчанию 2710, обычно 1883.
Следующий - логин для входа. Наименование Логин, тип - String, значение по умолчанию - прописываем логин предоставленный вам на MQTT сервере.
Аналогично создаем пользовательские параметры Пароль и наименование устройства. Тип - String. В параметрах адреса, порта, пароля и логина ставим галочку сохранять в EEPROM, чтобы при включении происходило автоматическое считывание и подключение.
Переходим в основное поле и настраиваем наше соединение. Для этого в правой колонке выбираем блок "Чтение системного параметра". Их надо пять штук добавить.
Открываем блок и при помощи кнопки выбираем нужный нам параметр, в данном случае "Сервер MQTT", где у нас прописан его адрес в интернете. Сохраняемся
Соединяем этот блок с входом основного блока "MQTTServer", аналогично настраиваем и подключаем остальные блоки. После окультуриваем наши соединения преобразовывая их в текст. Добавляем блок аналогового выключателя, блок сравнения строк и блок записи системного параметра. На выходе основного блока "mqttConnectod" при установке соединения с сервером появляется логическая единица. Используем это для получения статуса соединения с сервером. В аналоговом выключателе прописываем две константы типа String -"ON" и "Off", в блоке сравнения строк прописываем константу String "ON" и ставим в настройках S1=S2. В блоке записи системного параметра кнопкой выбираем "Подключение к MQTT (Boolean)". На этом настройка блока MQTT ESP Main v6.8 завершена и нам остается создать web интерфейс. Модуль представляет собой многофункциональный датчик. Определяемся какие параметры (напряжение, потребляемый ток, частота, мгновенная мощность, коэфициент мощности и сколько израсходовано электроэнергии) хотим видеть.
Переходим к веб интерфейсу, для этого включаем его в левой колонке щелчком мышки.
На главной странице добавляем нужное содержание. Щелкаем по пункту добавить параметр и выбираем нужный нам в открывшемся окне - состояние Wifi соединения, тип параметра - чек бокс, делаем надпись "Статус соединения", Вы можете написать свое. Сохраняемся. Точно также прописываем статус соединения с сервером MQTT.
Добавляем две страницы настроек щелкая по позиции меню "Добавить страницу", одну обзовем "Настройки MQTT", на другую будем выводить параметры WIFI. В тех параметрах, которые Вы будете изменять в значении тип прописываем - поле ввода. Например IP адрес у Вас был 192.168.1.20 а вы его изменили на 192.168.1.25 сохранились и перегрузили страницу. Тогда по первому адресу веб интерфейса не будет. Вам придется зайти на страницу по новому адресу. Точно также как выше добавляете в них нужные вам данные. По шаблону интерфейса на канале Яндекс Дзен есть видео
Добавляем новую плату в нашем проекте. В правой колонке программы и в вкладке другие находим блок PZEM , который добавляем в основное поле. Открываем блок и ставим галочки напротив тех пунктов, с которых хотим получать данные. Ставим галочку на вход сброса счетчика киловатт-часов. Выбираем UART порт. Можно выбрать серийный, но в таком случае про обновления по "воздуху" (WiFi) забудьте. Выбираем SoftwareSerial и прописываем на каких pin Я прописал 8 и 7.
Добавляем вход для кнопки сброса, тип цифровой, ставим галочки включить подтягивающий резистор и защита от дребезга. Блок нами настроен. Осталось настроить передачу с него информации. Создаем переменные для вывода информации по количеству выходов на блоке. У меня их 6, тип всех переменных Float, название прописываете как вам удобно, например Напряжение, Ток. Подсоединяем переменные к соответствующим выходам блока.
Создаем еще одну плату, на нее помещаем 6 пользовательских блоков MQTT ESP Pub версии 6.8 а также блок генератора. В блоке генератора в окне тип ставим симметричный мультивибратор, а в константе выставляем передавать данные раз в пару секунд. На вход разрешения мультивибратора устанавливаем константу Boolean и ставим галочку напротив True. Выход генератора подсоединяем к входу Send всех пользовательских блоков. На плате PZEM копируем все переменные и переносим их на новую плату. Через блоки конвертации строк подсоединяем их к соответствующим входам Message пользовательских блоков. Получится так
Прописываем константы на входах Topic, например "/tok", "/power". На сервере MQTT создаем точно такие топики для приема и передачи информации. На этом настройка энергомонитора закончена.
Для приема использую вот такую комбинацию. Исходники можно скачать на моем сайте по ссылке
К энергомонитору на PZEM 004T можно подключить экран для вывода информации. Успехов Вам в освоении и изготовлении подобных устройств. Сделать его в Ваших силах. На снимках выше собранное на заказ устройство. Для подключения трансформатора тока и питания использовал вот такие разъемы. Их можно использовать только в случае небольшой токовой нагрузки. На переднюю панель выведен разъем для кнопки сброса показаний. Само устройство располагается в шкафу, а кнопка сброса выведена наружу для удобства эксплуатации. Светодиод показывает есть ли соединение с сервером MQTT. Корпус пластиковый ВК-11 размерами 110 х 89 х 34 мм. Схему блока не публикую, так как все соединения видны из программы FLProg. Компоненты для сборки мною были указаны в предыдущих публикациях. Энергомонитор готов, потребление самим прибором минимально, параметры электрической энергии теперь будут на контроле. Если есть вопросы задавайте их через форму обратной связи. Ответ обязательно дам.