Компьютерный мастер

Адрес:
Сочи, ул.Роз, 37

Телефон: +7 (918) 614-88-20,
WhatsApp: +7 (918) 614-88-20

Режим работы:
Без выходных: с 9:00 до 19:00

Умный дом Своими руками. Энергомонитор на PZEM-004T. Часть 3.

Умный дом, учет электроэнергии

PZEM-004T - универсальный модуль контроля электропитания. Делаем на нем энергомонитор.В прошлой статье мы определились что программное обеспечение будем писать в программе FLProg. Данные получаемые с энергомонитора на PZEM-004T будем передавать на сервер по протоколу MQTT, доступ к этим данным будем иметь на различных мобильных устройствах (смартфоне, планшете) а также сможем получать на другие устройства умного дома. Для дальнейшей комфортной работы должны предусмотреть следующее:
- возможность быстро поменять настройки WIFI сети без снятия ESP8266 или ESP-1.
- возможность быстро подключиться к другому серверу MQTT также без снятия контролера с платы.
- получение постоянного и легкого контроля за подключением к сети и серверу в WEB интерфейсе

Выглядить это будет примерно так



Главная страница
Стрелками указаны ссылки для перехода на другие страницы

Настройки MQTT
Настройки WiFi



Стрелками указаны кнопки сохранить и перегрузить. Как это работает. На главной страницы мы видим статус подключения к WiFi сети и серверу. С главной страницы мы можем перейти на страницы настроек сети и соединения с сервером. Если например в настройках сервера изменить в текстовых полях параметры сервера, а после нажать на кнопки "сохранить" и перегрузить" то в дальнейшем наш энергомонитор будет работать с новым сервером. Прошивка устройства изменится. При новой загрузке он будет брать именно эти данные для соединения. Точно также и с локальной сетью. Что это нам дает? По какой либо причине вы хотите работать с новым сервером (старый не работает, нашли более выгодный ресурс, подняли свой локальный) в течение 30 секунд вы перенастроите свое устройство. Нет необходимости снимать его и перепрограммировать. Идею Вы поняли а теперь перейдем непосредственно к программе.

Думаю с момента публикации второй части Вы успели ознакомиться с программой FLProg. Открываем ее и нажав на вкладку "файл", Новый, на контролере - создаем новый проект. Выбираем контроллер - ESP8266 и сохраняемся. Теперь нам надо установить базовый пользовательский блок для соединения с сервером MQTT. С правой стороны экрана заходим в пользовательские блоки и выбираем "MQTT ESP Main v6.8". Многие могут сказать что у них такого блока нет. Пользовательские блоки можно получить несколькими способами:
- скачать на сайте программы или моем сайте
- при помощи FLProg загружаем скетч (скачать можно также у меня на сайте по ссылке в конце статьи.) После загрузки выделяем нужный пользовательский блок, щелкая по нему правой кнопкой мыши и в выпадающем меню выбираем пункт - добавить в библиотеку. Данный блок в программе может быть только один. Кроме всего - он будет работать с блоками только той версии, что и сам, в нашем случае 6.8. Работа с пользовательскими блоками разных версий довольно распространенная ошибка.


Выбор ESP8266 Основной блок

Переходим в левую часть экрана и начинаем настраивать соединение по WiFi. Щелкаем по настройке модуля и включаем "Клиент". Прописываем в настройках данные нашей локальной сети. В получении IP адреса по DHCP я прописываю конкретный адрес например 192.168.1.20. Почему? Чтобы не делать лишнюю работу и не искать модуль в настройках роутера или при помощи утилиты сканирования. Ну тут каждый поступает как ему удобнее.


Настройка соединения Параметры сети

После настройки переходим к вкладке пользовательские параметры и начинаем их прописывать


Добавление параметра Статус соединения

Статус соединения с сервером. Имя - можно на русском "Статус соединения с MQTT", тип "Booalean", галочку сохранения в EEPROM убираем.

Следующий параметр - адрес сервера в интернете. Название -Адрес, тип String, значение по умолчанию, у меня M4.WQTT.RU. У вас может быть другое.



Адрес сервера

Далее -прописываем порт соединения. Название - порт, тип - Integer, значение по умолчанию 2710, обычно 1883.



Порт сервера

Следующий - логин для входа. Наименование Логин, тип - String, значение по умолчанию - прописываем логин который предоставлен вам на MQTT сервере.



Логин

Аналогично создаем пользовательские параметры Пароль и наименование устройства (можно задать любое). Тип - String. В этих параметрах а также в параметрах адреса, порта и логина ставим галочку сохранять в EEPROM, чтобы при включении происходило автоматическое считывание и подключение.

Переходим в основное поле и начинаем настраивать наше соединение. Для этого в правой колонке выбираем блок "Чтение системного параметра". Нам их надо пять штук добавить.



Чтение системного параметра
>

Открываем блок и при помощи кнопки выбираем нужный нам параметр, в данном случае "Сервер MQTT", где у нас прописан его адрес в интернете. Сохраняемся


Выбор параметра Выбор параметра2

Соединяем этот блок с входом основного блока "MQTTServer", аналогично настраиваем и подключаем остальные блоки (порт к mqttPort и т.д.). В конце окультуриваем наши соединения преобразовывая их в текст. Добавляем блок аналогового выключателя, блок сравнения строк и блок записи системного параметра. На выходе основного блока "mqttConnectod" при установке соединения с сервером появляется логическая единица. Используем это для получения статуса соединения с сервером. В аналоговом выключателе прописываем две константы типа String -"ON" и "Off", в блоке сравнения строк прописываем константу String "ON" и ставим в настройках S1=S2. В блоке записи системного параметра кнопкой выбираем "Подключение к MQTT (Boolean)". На этом настройка блока MQTT ESP Main v6.8 завершена и нам остается создать web интерфейс. Так как PZEM представляет собой многофункциональный датчик определяемся какие его параметры (напряжение, потребляемый ток, частота, мгновенная мощность, коэфицент мощности и сколько израсходовано электроэнергии) хотим видеть.


Приведение в порядок добавление блоков

И так переходим к веб интерфейсу, для этого включаем его в левой колонке щелчком мышки.



Web интерфейс

Переходим на главную страницу и добавляем в нее нужное содержание. Щелкаем по пункту добавить параметр и выбираем нужный нам в открывшемся окне - состояние Wifi соединения, тип параметра - чек бокс, делаем надпись я написал "Статус соединения", Вы можете написать что то свое. Сохраняемся. Точно также прописываем статус соединения с сервером MQTT. Я больше на главную страницу ничего не добавлял, но при желании Вы можете добавить нужную вам информацию


Web интерфейс

Добавляем две страницы настроек щелкая по позиции меню "Добавить страницу", одну обзовем "Настройки MQTT", на другую будем выводить параметры WIFI. В тех параметрах, которые Вы будете изменять в значении тип прописываем - поле ввода. Например IP адрес у Вас был 192.168.1.20 а вы его изменили на 192.168.1.25 сохранились и перегрузили страницу. Тогда по первому адресу веб интерфейса не будет. Вам придется зайти на страницу по новому адресу. Точно также как выше добавляете в них нужные вам данные. По шаблону интерфейса на канале Яндекс Дзен есть видео

Добавляем новую плату в нашем проекте. Заходим в правую колонку программы и в вкладке другие находим блок PZEM (специально сделанный для работы с ним), который добавляем в основное поле. Открываем блок и ставим галочки напротив тех пунктов, с которых хотим получать данные. Также ставим галочку на вход сброса счетчика киловатт-часов. Выбираем UART порт. Можно выбрать серийный, но в таком случае про обновления по "воздуху" (WiFi) можно забыть. Поэтому выбираем SoftwareSerial и прописываем на каких pin Я прописал 8 и 7.


PZEM блок

Добавляем вход для кнопки сброса, тип цифровой, ставим галочки включить подтягивающий резистор и защита от дребезга. В принципе блок нами настроен. Осталось настроить передачу с него информации. Создаем переменные для вывода информации по количеству выходов на блоке. У меня их 6, тип всех переменных Float, название прописываете как вам удобно, например Напряжение, Ток. Подсоединяем переменные к соответствующим выходам блока.


Кнопка сброса Переменная Плата

Создаем еще одну плату, на нее помещаем 6 пользовательских блоков MQTT ESP Pub версии 6.8 а также блок генератора. В блоке генератора в окне тип ставим симметричный мультивибратор, а в константе выставляем передавать данные раз в две секунды. На вход разрешения мультивибратора устанавливаем константу Boolean и ставим галочку напротив True. Выход генератора подсоединяем к входу Send всех пользовательских блоков. На плате PZEM копируем все переменные и переносим их на новую плату. Через блоки конвертации строк подсоединяем их к соответствующим входам Message пользовательских блоков. Должна получиться вот такая картина



Блоки передачи данных

Прописываем константы на входах Topic, например "/tok", "/power". На сервере MQTT создаем точно такие топики для приема и передачи информации. На этом настройка энергомонитора закончена.



MQTT сервер

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



Прием данных Внешний вид энергомонитора в сборе Вид энергомонитора спереди Клемы для подключения датчика и питания Блок в сборе

При желании можно подключить экран для вывода на него информации. Успехов Вам в освоении и изготовлении подобных устройств. Сделать его в Ваших силах. На снимках выше собранное на заказ устройство. Для подключения трансформатора тока и питания использовал вот такие разъемы. Их можно использовать только в случае небольшой токовой нагрузки. На переднюю панель выведен разъем для кнопки сброса показаний. Само устройство будет располагаться в шкафу, а кнопка сброса будет выведена наружу для удобства эксплуатации. Светодиод показывает есть ли соединение с сервером MQTT. Корпус пластиковый ВК-11 размерами 110 х 89 х 34 мм. Схему блока не публикую, так как все соединения видны из программы FLProg. Компоненты для сборки мною были указаны в предыдущих публикациях.

Предлагаю помощь в проектировании и изготовлении элементов для Вашего проекта умного дома. Опыт работы в сфере IT у меня более 20 лет. В наличие имеются все необходимые приборы и оборудование. При обращении окажу всю необходимую помощь по ремонту настройке оборудования. Консультации бесплатно. Обратиться ко мне можно по телефону или форму обратной связи на сайте.