Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.concurrent.locks.ReentrantLock
- val String filename = "trockner_neu.rules"
- var ReentrantLock finishLock = new ReentrantLock()
- val Number MODE_OFF = 0
- val Number MODE_STANDBY = 1
- val Number MODE_ACTIVE = 2
- val Number MODE_FINISHED = 3
- rule "Trockner Überwachung: Init"
- when
- System started
- then
- createTimer(now.plusSeconds(170)) [|
- if (WK_Trockner_OpState == NULL) WK_Trockner_OpState.postUpdate(MODE_OFF)
- // if (WK_Trockner_OpState == NULL) WK_Trockner_OpState.postUpdate(MODE_OFF)
- ]
- end
- /**
- * Trockner
- * Aus: 0,05 - 0,07 W
- * Standby/Fertig: 4,3W
- * Aktiv: bis 2300W (bisher gesehener Mindestwert 4,55W)
- */
- rule "Trockner Überwachung: Verbrauchszuordnung"
- when
- Item WK_Trockner_Power changed
- then
- //logInfo(filename, "Trockner Überwachung: Verbrauchszuordnung")
- if (WK_Trockner_Power.state < 2.1) WK_Trockner_OpState.postUpdate(MODE_OFF)
- else if (WK_Trockner_Power.state > 50) {
- WK_Trockner_OpState.postUpdate(MODE_ACTIVE)
- trockner_dummy_status.sendCommand(ON)
- }
- else if (WK_Trockner_Power.state < 20) {
- if (WK_Trockner_OpState.state == MODE_OFF) WK_Trockner_OpState.postUpdate(MODE_STANDBY)
- else if (WK_Trockner_OpState.state == MODE_ACTIVE) {
- finishLock.lock()
- try {
- // Debounce for 30 seconds
- Thread::sleep(30000)
- if (WK_Trockner_Power.state < 20) WK_Trockner_OpState.postUpdate(MODE_FINISHED)
- } finally {
- finishLock.unlock()
- }
- }
- }
- end
- rule "Trockner Überwachung: Benachrichtigung"
- when
- Item WK_Trockner_OpState changed
- then
- if (WK_Trockner_OpState.state == MODE_FINISHED && trockner_dummy_status.state == ON) {
- pushover("asea77kmdhaaaiufkr47dfdcem722c", "upHCm2YPZbYs9MWVuBEXWPEBhkxfwK", "Trockner: Fertig !")
- trockner_dummy_status.sendCommand(OFF)
- }
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement