/* * dla gdańska * shortest day (Dec 21): 8.04 - 15:22 * longest day (Jun 21): 4:10 - 21:23 */ rule "Zapal stółlampkę rano" when Time cron "0 47 5 ? * MON-FRI *" /* Time cron "0 33 6 ? * MON-FRI *" */ then sSONOFF02.sendCommand(ON) /* balkon */ sSHELLY01.sendCommand(ON) end rule "Zgaś stółlampkę rano" when Time cron "0 50 6 * * ?" then sSONOFF02.sendCommand(OFF) /* balkon */ sSHELLY01.sendCommand(OFF) end /* TODO: w okresie kwiecien-pazdziernik na dwie godziny przed? */ rule "Zapal sufitowe przed zachodem" when Item sSunset_Event_in_hour received update ON /* Item sSunset_Event_in_twohours received update ON */ then if (sHolidayVacancy.state == ON) { return; } /* drobna przerwa bo cottonballs tez sie zapalaja teraz */ Thread::sleep(1000) sSONOFF05.sendCommand(ON) /* balkon */ Thread::sleep(1000) sSHELLY01.sendCommand(ON) end rule "Zapal lampkę i kanapowe przez zmierzchem gdy pochmurno" when Item sSunset_Event_in_twohours received update ON then var Number hours = now.getHourOfDay if (sHolidayVacancy.state == ON) { return; } /* more than 90% cloud cover && not before 14:00 hour && TODO: only april-october */ if (wClouds.state > 90.0 && hours >= 14 && true) { logInfo("stollampka", "Powyżej 90% chmur, zapalam") /* sSONOFF02.sendCommand(ON) */ sSONOFF02_expected.postUpdate(ON) sSONOFF09a.sendCommand(ON) sSONOFF09b.sendCommand(ON) } end /* TODO: przerobic na espeasy pulse command. pulse 500ms, thread sleep 1s*/ rule "Zapal lampkę i kanapowe przed zmierzchem" when /* Item sSunset_Event_in_halfhour received update ON*/ Item sSunset_Event_in_hour received update ON then if (sHolidayVacancy.state == ON) { return; } dSONOFF02LED.sendCommand(0) Thread::sleep(500) dSONOFF02LED.sendCommand(1023) Thread::sleep(500) dSONOFF02LED.sendCommand(0) Thread::sleep(500) dSONOFF02LED.sendCommand(1023) Thread::sleep(500) dSONOFF02LED.sendCommand(0) Thread::sleep(500) dSONOFF02LED.sendCommand(1023) Thread::sleep(500) /* sSONOFF02.sendCommand(ON) */ sSONOFF02_expected.postUpdate(ON) /* kanapa */ sSONOFF09b.sendCommand(ON) Thread::sleep(1000) sSONOFF09a.sendCommand(ON) end rule "Przedzgaś stółlampkę wieczorem" when Time cron "0 12 22 * * ?" then dSONOFF02LED.sendCommand(0) end rule "Zgaś stółlampkę, sufitowe i nablatowe wieczorem" when Time cron "0 15 22 * * ?" then /* lampka nad stołem */ sSONOFF02.sendCommand(OFF) sSONOFF02_expected.postUpdate(OFF) dSONOFF02LED.sendCommand(1023) /* sufitowe gasimy tylko jak nikogo nie ma w domu, cottonbalsy tez, bo nie ma kto powiedziec goodnight */ if (sHolidayVacancy.state == ON) { /* kanapa */ sSONOFF05.sendCommand(OFF) /* cottonballs / krzak */ sOWFS01.sendCommand(OFF) } Thread::sleep(2000) /* kanapowe */ sSONOFF09b.sendCommand(OFF) Thread::sleep(2000) sSONOFF09a.sendCommand(OFF) Thread::sleep(2000) /* blat */ sD1MINI02MOS.sendCommand(OFF) end /* na wypadek rebootów sonoffa */ rule "Synchronizuj balkon & lampka po restarcie" when Item rSHELLY01 received update ON or Item rSONOFF02 received update ON then logInfo("S02,SH01", "Reappeared, applying state balkon {}, lampka {}", sSHELLY01.state, sSONOFF02.state) sSONOFF02.sendCommand(sSONOFF02.state.toString) sSHELLY01.sendCommand(sSHELLY01.state.toString) end /* 1 Seconds 2 Minutes 3 Hours 4 Day-of-Month 5 Month 6 Day-of-Week 7 Year (optional field) */