Хочу собрать всю сопутствующую теме информацию в одном месте, ибо разбросанное по разным местам теряется, забывается...
Приехала вот PZEM 6L24 - ка... пока курю бамбук на предмет как подружить её с проектом. Хочу иметь график мгновенного потребления электричества домом. Для оптимизации стратегии отопления.
Документашка на железку: PZEM_6L24_Manual.pdf там есть описалово всех параметров, что можно вытянуть с этой железки.
Есть на гитхабе такой вот проект https://github.com/lucashudson-eng/PZEMPlus - PZEMPlus is an Arduino/ESP32 library to read data from Peacefair energy monitoring devices. - поддерживает несколько разных моделей, в том числе и эту.
Ссылки на различные полезные статейки, мои и не мои:
16.01.2026Главный термостат. Как то руки не доходили до его внедрения, хотя силовая часть собрана и запущена давно.
База на ESP-07 просто потому что достаточно и платка валялась давно. Естественно, использован конструктор wifi-iot.com Для задействования синего светодиода на плате используется GPIO2, впрошивке применено как индикация Wi-Fi.
Распиновка колодки, поставленно вместо переключателя, справа, сверху вниз:
1- GPIO 4 Между этим выводом и платой ESP-07 добавлен резистор 27 Ом
2- GPIO 5 Между этим выводом и платой ESP-07 добавлен резистор 27 Ом
3- GND
4- GPIO 0 Между этим выводом и +5V добавлен резистор 2,7 кОм. Используется для AM2321
5- +5V
6- GPIO 13 Между этим выводом и +5V добавлен резистор 2,7 кОм. Используется для DS18b20
При необходимости программирования поставить перемычку между 3 и 4 пинами. Программирование производится через штатные пины TxD RxD штатного разъёма. Однако, в плате удалены транзисторы согласования уровней COM порта и вместо них поставлены SMD резисторы 22 Ом.
Программирование производить с логическими уровнями +3,3 V !!!!!
АХТУНГ !!! для ее прошивки режим работы flash ставим QIO!
При прошивке с другими режимами доступа к памяти есть вероятность, что прошивка прошьется, но настроечные параметры в памяти сохранятся не будут!!!
Использована переходная платка с винтовыми клеммами. Ноги платки расписаны на одной из фоток.
Важная для меня информация:
Управление и доступ к GPIO через HTTP GET запрос
Для установки значения через GET запрос требуется подать команду вида http:///gpio?st=1&pin=12 , где st - необходимое состояние, значение равное 2 будет происходить инвертирование выхода. pin - номер GPIO, которым требуется управлять.
Дополнительные параметры для локальных GPIO:
&flash=1 - настройка запишется в энергонезависимую память.
&click=10 - инвертирует состояние через указанный промежуток времени в секундах, &mclick=10 - аналогично в миллисекундах.
Просмотреть состояние GPIO можно по адресу http:///gpioprint.
Силовой блок управления отоплением. Это уже лютый самопал, но инфу решил добавить в эту статейку - пусть все в одном месте копиться. Заодно и дополнительный источник питания (5V) для некоторых Sonoff как резервный. Предусмотрено включение принудительного охлаждения по датчику температуры радиатора - твёрдотелки довольно заметно греются. Ну и аварий блок ручного управления авто-off-on.
Применены 40-амперные реле с коммутацией в момент перехода напряжения через ноль. На больших токах они довольно сильно греются, поэтому посажены на радиатор с принудительным обдувом вентилятором. Пол-дня теста под нагрузкой показали лишь незначительный нагрев, самый большой ток в моем случае не превышает 5 ампер. Но рисковать не стал, включил вентилятор пока на постоянку, позже будет включаться от температуры. Ну и поздно пришедшаа мысль - надо было сделать индикатор вращения вентилятора, ибо его не видно и проверить работу сложно, лишь косвенно - по температуре блока.
Плата питания и силовых ключей. Трассировка и фотка в работе. Фотка печатки более старой версии, пины подключения на ней не соответсвуют окончательному варианту. Готовая печатная плата - правильная!
Правильные пины подключения колодок, слева направо:
Первый блок:
Второй блок:
Третий блок:
1- GND
2- +5V
3- GND
4- +5V
5- +8V
1- DATA DS18b20
2- 1 Channel Power Rele
3- 2 Channel Power Rele
4- 3 Channel Power Rele
5- 4 Channel Power Rele
6- Ключ вентилятора +5V
1- 220V
2- 220V
8-релейный модуль с расширителем I2C Последнее время стало лениво делать печатные платы под свои устройства. Хотя даже страссировал переходную платку с расширителем I2C на борту для 8 релейного ардуинного модуля. Год прошёл, наступил сезон полива, а я так и несподобился эту разработанную платку воплотить в жизнь, а без нее некому дёргать 12 вольтовые клапаны, подающие воду на сплинкеры газона. Поэтому воспользовался "помощью друга" прикупив пару таких платок. Поменяв 10пиновые штырьки на 9 пиновые мамки и подпаяв подогнутую крайнюю ножку (GND) можно будет эту платку просто надеть на плату реле, подключив 4мя проводками к разьёму программирования SONOFF. Питание платы реле - от отдельного 5Вольтового блока питания. Сама же платка питаться будет 3,3 вольтами от штатного блока питания SONOFF, потребление расширителем мизерное. Таким образом, отпажет необходимость в преобразовании логических уровней I2C.
Табличка настройки VSENS на мониторинге. Для работы VSENS на источниках должен быть включен режим чтения GET запросом. (можно проверить так: http://ip_address/sensors)
nn
ip address
data1
data2
data3
data4
data5
data6
1
1.23
2
3
4
5
0
0
2
1.21
2
3
4
5
0
0
3
1.25
2
0
0
0
0
0
4
1.26
2
0
0
0
0
0
5
1.28
2
4
0
0
0
0
6
1.27
not work
not work
not work
not work
not work
not work
7
1.
not used
not used
not used
not used
not used
not used
Подключение датчика SHT30 для получения погодных данных в посёлке. Данный датчик придет на смену связке BME280 + DS18B20. Скорее всего в итоге останется связка SHT30 для температуры и влажности на улице и BME280 как датчик давления для размещения на narodmon.ru и температуру и влажность внутри. Дело в том, что выносить BME280 на улицу сильно не рекомендуют, он очень быстро умирает, поэтому на улице для температуры стоит DS18B20, а давление берется внутри дома. Но существующая связка не дает информацию о влажности на улице. А хочется.
конфиг 1.25 (Sonoff POW R2, новый)
Программка для interpreter для контроля старта погружного насоса. При нормальной работе насос потребляет примерно 2,5 ампера, при нестарте - около 4,5 ампера. Понятно, все комменты и лишние пробелы после кода в самом интерпретере надо тщательно удалить. В процессе отладки обнаруженные приколы: переменные имеют тип int32 т.е. могут быть только целыми числами. С датчика тока значение считывается похоже, тоже в таком формате, но для достоверности при выводе в веб и наружу делится на 1000, чтобы значения были в Амперах. на сайте конструктора такой инфы нет, выяснено методом "научного тыка" при тестах! Дана только для примера
:loop
intval1=3700 ## ток срабатывания контроля в миллиамерах
if(gpio12==1) ## если реле насоса включено
if(hlwc>intval1) ## Проверяем ток через насос
gpioset(15,1) ## включаем синий лед превышения тока
printw(current= _HLWC_ A _INTVAL1_) ## строка чисто отладочная, можно снести
delay(2000) ## Ждем 2 секунды для исключения попадания на стартовый ток
if(hlwc>intval1) ## Проверяем ток еще раз. Если ток превышает нормальный,
gpioset(12,0) ## то выключаем реле насоса
delay(1000) ## Ждем 1 секунду
gpioset(12,1) ## опять включаем реле насоса
endif
gpioset(15,0) ## выключаем синий лед превышения тока
endif
endif
delay(2000) ## обязательная задержка при цикле, до следующей проверки
goto loop
В проге есть пока не обнаруженный на практике косяк - если отключить с веб морды или с кнопки реле насоса в момент, когда протекает пауза сброса, то есть риск что насос продолжит работу. Меня не напрягает, но думаю, после тестового прогона в натуральных условиях позже исправлю.
Подправленная и отлаженная версия (05.04.2024). добавлен VGPIO client для возможности читать состояние этого модуля с других модулей. Контроль только скважинного насоса, фекальный вынесен на отдельный сонофф.
code:
ntval1=3700
intval2=500
intval3=0
intval4=0
:loop
if(gpio12==1)
if(csec>intval1)
delay(2000)
if(csec>intval1)
intval4=(csec/1000)
gpioset(12,0)
delay(1000)
intval3=intval3+1
gpioset(12,1)
endif
endif
endif
printw(Water Pump _INTVAL3_ Err. Last error current _INTVAL4_ A)
delay(2000)
goto loop
конфиг 1.27 (Sonoff POW , старый) (Fecal Pump) Временная рабочая версия (29.05.2024). Пока модуль только контроллирует по току включение фекального насоса и отображает в WEBе день и время последнего включения насоса. Во время работы насоса мигает синий светодиод. В будущем надо сделать таймаут работы насоса (нормальный цикл длится примерно 28 сек.) секунд 40, отключать насос и выводить аларм при его превышении, а так-же сделать автоотключение через час после выключения скважинного насоса.
intval1=0
intval2=0
intval3=0
intval4=0
:loop
if(hlwc>0.2)
intval1=hlwc
gpioset(15,1)
intval2=mday
intval3=hour
intval4=minute
endif
delay(500)
gpioset(15,0)
delay(500)
printw(Pump last worked _INTVAL2_ d. _INTVAL3_:_INTVAL4_ current _INTVAL1_ A. )
goto loop
обновленная версия 03.04.2025 добавлен VGPIO. gpio21- берет cостояние реле с 1.25. сделана зависимость включения/отключения с задержкой фекального насоса от состояния водяного насоса. нажатие кнопки при выключенном водяном насосе запускает фекальный насос на время задержки отключения. При отсчете времени отключения в веб окно выводится количество оставшихся секунд и происходит мигание синим светодиодом раз в секунду. В включенном ведомом состоянии мигание синего светодиода - непосредственная работа насоса по откачке (насос имеет встроенный датчик уровня)
intval1=0
intval2=0
intval3=0
intval4=0
intval5=0
:loop
if(gpio21==1||gpio0==0)
intval5=600
gpioset(12,1)
else
if(intval5>1)
gpioset(15,1)
endif
intval5=intval5-1
if(intval5<0)
intval5=0
gpioset(12,0)
endif
endif
if(gpio12==1)
if(hlwc>0.2)
intval1=hlwc
gpioset(15,1)
intval2=mday
intval3=hour
intval4=minute
endif
endif
delay(500)
gpioset(15,0)
delay(500)
printw(v.R0 Pump last worked _INTVAL2_ d. _INTVAL3_:_INTVAL4_ current _INTVAL1_ A. Delay Off: _INTVAL5_)
goto loop
переменные
надо поправить дурость с центровкой по вертикали, чтобы добавить комментарии к коду
в коде надо переделать относящееся к миганию светодиодов в обоих режимах с разными скоростями, перенеся разные задержки в соответствующие циклы.
и еще более обновленная версия от 3 мая 25 года с раздельной индикацией синим светодиодом работы фекального насоса и отсчета времени тайм-айта на отключение.