За силова комутация в началото залитнах по твърдотелно реле заради тишината.
Ролята прехвърлих на контактор EARU EACT25 ~230V 2x25A. Всяко зло за добро и с контактора се получи по-добре. Той е съвместим с DIN рейка в електрическото табло. Зае достойно свободно място до автоматите предпазители. Включвайки контактора дистанционно получаваме релевантно управление над бойлера. Отлично!
Натрупах запаси от всевъзможни модули с esp8266. Късата клечка изтегли ESP-01S. Kупих Tosling 5V 1A arduino реле и набавих 2N7002 транзистор. Това е логически транзистор и без конкурент за целта. Разбира се и традиционните донори като: адаптер от стар телефон, съпротивления, кондензатори, бутон, диоди.
Цялостно схематично изпълнение на идеята.
Светодиодът е зелен на 3V 2mA. Адаптерът е нестабилизиран импулсен токоизправител от samsung GSM телефон, заради което въведох допълнително DC-DC модул на 5V изходно напрежение. Бутонът изпадна от UPS и импровизацията му отне много време. Таблото се намира в коридора и телефона не всеки път е под ръка. В такъв случай натискам физическия бутон, за да включа бойлера.
Ако започвате от нулата реле Sonoff Basic R2 идеално замества моята схема и в допълнение разполагате с GPIO1, GPIO2, GPIO3. Те са изведени и незаети в Basic R2. Отворите за радиомодул са свободни. Използвайте ги, като добавете електролитен кондензатор >= 330uF нa 3.3V линия. Говоря от личен опит.
Главна страница.
Извеждам статуса: включен или изключен. Не е проблем, чрез карта, да се преведе на български или на друг език.
Съответно влизам в секцията (frame) и по височина на рафтовете разполагам включвател, таймер, паметка, кога последно е включван бойлера. В отделна секция Cron timer, разглеждан в посветена тема. Вечер преди лягане включвам Cron timer и на сутринта в 5:30ч бойлерът се включва. В 6:00ч изключва. Изключването съпровождам с известие в телефона.
Три правила следят логиката за управление на бойлера.
- Cron Timer Boiler
- Boiler OFF after X minutes
- Boiler last switch date+time
var Timer stopBOILER = null
// вкл в 05:30 всеки ден
rule "Cron Timer Boiler"
when
Time cron "0 30 05 * * ?"
then
if(BoilerSunrise.state == ON && BoilerPower.state == OFF){
BoilerPower.sendCommand(ON)
createTimer(now.plusMinutes(30))[|
BoilerPower.sendCommand(OFF)
BoilerSunrise.sendCommand(OFF)
sendNotification("user@domain.com", "Бойлер изключен в 6:00")
]
}
end
//--------------------------------
rule "Boiler OFF after X minutes"
when
Item BoilerPower changed
then
if ( BoilerTimer.state > 0 ){
if (Boiler_power.state==OFF) {
stopBOILER?.cancel
stopBOILER = null
}
else if (BoilerPower.state==ON) {
if (stopBOILER!==null) {
stopBOILER.cancel
stopBOILER = null
}
stopBOILER = createTimer(now.plusMinutes((BoilerTimer.state as DecimalType).intValue)) [ |
BoilerPower.sendCommand(OFF)
sendNotification("user@domain.com", "Бойлер изключен")
]
}
}
end
//--------------------------------
rule "Boiler last switch date+time"
when
Item BoilerPower changed or
Item BoilerPower received command ON
then
if(Boiler_power.state == ON){
postUpdate(BoilerLast, new DateTimeType())
}
end
И за яснота на картината добавям файл items.
/////////////// ITEMS ////////////////////////
// Boiler-Power-Switch
Switch BoilerPower "Бойлер" <boiler> {channel="mqtt:topic:espboiler:switch"}
// Boiler-Setpoint
Number BoilerTimer "минути [%d]" <timerc>
// Boiler-Last_Switch
DateTime BoilerLast "последно [%1$td.%1$tm.%1$tY %1$tH:%1$tM:%1$tS]" <heating>
// Boiler-Sunrise
Switch BoilerSunrise "Sunrise" <boiler>

до нови срещи ^.^



0 Response to "boiler.rules в openHAB 2"
Публикуване на коментар