Full version site RM9WY.RU Menu mobile version
      Мой "полоумный" дом.

Хочу собрать всю сопутствующую теме информацию в одном месте, ибо разбросанное по разным местам теряется, забывается...

Приехала вот 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

переменные

надо поправить дурость с центровкой по вертикали, чтобы добавить комментарии к коду

 

в коде надо переделать относящееся к миганию светодиодов в обоих режимах с разными скоростями, перенеся разные задержки в соответствующие циклы.

intval1=0
intval2=0
intval3=0
intval4=0
intval5=0
:loop
if(gpio21==1||gpio0==0)
intval5=3600
gpioset(12,1)
else
if(intval5>1)
delay(300)
gpioset(15,1)
delay(200)
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)
delay(500)
intval2=mday
intval3=hour
intval4=minute
endif
endif
gpioset(15,0)
delay(500)
printw(v.R0 Pump last worked  _INTVAL2_ d. _INTVAL3_:_INTVAL4_ I= _INTVAL1_ A. Delay Off: _INTVAL5_)
goto loop
и еще более обновленная версия от 3 мая 25 года с раздельной индикацией синим светодиодом работы фекального насоса и отсчета времени тайм-айта на отключение.

 

      25 Dec 2023 by RM9WY        
Powered by CuteNews