За силова комутация в началото залитнах по твърдотелно реле заради тишината.
Ролята прехвърлих на контактор 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"
Публикуване на коментар