Guten Morgen,
ich möchte bei Abwesenheit gerne per Persistence Lampen vom Vortag schalten lassen.
Eine mySQL DB macht auch offenbar was sie soll (siehe: http://pastebin.com/jxRniafH).
Wenn die Rule aber ausgeführt wird, bekomme ich Fehlermeldungen und die Rule wird auch nicht ausgeführt (http://pastebin.com/DGm5pULQ)
Anbei noch die relevanten Dateiinhalte:
mySQL.persist:
default.rules:
Das Schalten der Balkonbeleuchtung funktioniert. Die Items und Sitemap scheint ok zu sein, denn die Zwave Komponenten verrichten Ihren Dienst ansonsten.
Vielen Dank für Tips und Hinweise, wo der Denkfehler liegt.
System:
openHAB 1.8.0
Ubuntu 14.04. java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)
(Edit: Könnte es hiermit zu tun haben? https://github.com/openhab/openhab/issues/2586)
ich möchte bei Abwesenheit gerne per Persistence Lampen vom Vortag schalten lassen.
Eine mySQL DB macht auch offenbar was sie soll (siehe: http://pastebin.com/jxRniafH).
Wenn die Rule aber ausgeführt wird, bekomme ich Fehlermeldungen und die Rule wird auch nicht ausgeführt (http://pastebin.com/DGm5pULQ)
Anbei noch die relevanten Dateiinhalte:
mySQL.persist:
Code:
[COLOR=#931A68][FONT=Monaco][SIZE=11px]Strategies[COLOR=#000000] {[/COLOR][/SIZE][/FONT][/COLOR] [FONT=Monaco][SIZE=11px] everyMinute : [COLOR=#3933ff]"0 * * * * ?"[/COLOR][/SIZE][/FONT] [FONT=Monaco][SIZE=11px] everyHour : [COLOR=#3933ff]"0 0 * * * ?"[/COLOR][/SIZE][/FONT] [FONT=Monaco][SIZE=11px] everyDay : [COLOR=#3933ff]"0 0 0 * * ?"[/COLOR][/SIZE][/FONT] [FONT=Monaco][SIZE=11px] [COLOR=#931a68]default[/COLOR] = everyChange[/SIZE][/FONT] [FONT=Monaco][SIZE=11px] }[/SIZE][/FONT] [COLOR=#931A68][FONT=Monaco][SIZE=11px]Items[COLOR=#000000] {[/COLOR][/SIZE][/FONT][/COLOR] [COLOR=#4E9072][FONT=Monaco][SIZE=11px]// persist all items once a day and on every change and restore them from the [U]db[/U] at startup[/SIZE][/FONT][/COLOR] [FONT=Monaco][SIZE=11px] Lights* : [COLOR=#931a68]strategy[/COLOR] = everyChange, everyDay[/SIZE][/FONT] [FONT=Monaco][SIZE=11px] Restore* : [COLOR=#931a68]strategy[/COLOR] = everyChange, everyDay, restoreOnStartup[/SIZE][/FONT] [FONT=Monaco][SIZE=11px]}[/SIZE][/FONT]
Code:
[FONT=Monaco][SIZE=11px][COLOR=#931a68]import[/COLOR] org.openhab.core.library.types.*[/SIZE][/FONT] [FONT=Monaco][SIZE=11px][COLOR=#931a68]import[/COLOR] org.openhab.core.persistence.*[/SIZE][/FONT] [FONT=Monaco][SIZE=11px][COLOR=#931a68]import[/COLOR] org.openhab.model.script.actions.*[/SIZE][/FONT] [FONT=Monaco][SIZE=11px][COLOR=#931a68]import[/COLOR] java.util.Date[/SIZE][/FONT] [FONT=Monaco][SIZE=11px][COLOR=#931a68]import[/COLOR] java.text.SimpleDateFormat[/SIZE][/FONT] [FONT=Monaco][SIZE=11px][COLOR=#931a68]import[/COLOR] org.openhab.core.library.types.PercentType[/SIZE][/FONT] [FONT=Monaco][SIZE=11px][COLOR=#931a68]import[/COLOR] org.openhab.core.library.items.SwitchItem[/SIZE][/FONT] [FONT=Monaco][SIZE=11px][COLOR=#931a68]import[/COLOR] org.openhab.model.script.actions.Timer[/SIZE][/FONT] [FONT=Monaco][SIZE=11px][COLOR=#931a68]import[/COLOR] java.util.HashMap[/SIZE][/FONT] [FONT=Monaco][SIZE=11px][COLOR=#931a68]import[/COLOR] java.util.LinkedHashMap[/SIZE][/FONT] [FONT=Monaco][SIZE=11px][COLOR=#931a68]import[/COLOR] java.util.ArrayList[/SIZE][/FONT] [FONT=Monaco][SIZE=11px][COLOR=#931a68]import[/COLOR] java.util.Map[/SIZE][/FONT] [FONT=Monaco][SIZE=11px][COLOR=#931a68]import[/COLOR] java.util.concurrent.locks.Lock[/SIZE][/FONT] [FONT=Monaco][SIZE=11px][COLOR=#931a68]import[/COLOR] java.util.concurrent.locks.ReentrantLock[/SIZE][/FONT] [FONT=Monaco][SIZE=11px][COLOR=#931a68]var[/COLOR] Integer Absent_offset = [COLOR=#909090]1[/COLOR][/SIZE][/FONT] [FONT=Monaco][SIZE=11px][COLOR=#931a68]var[/COLOR] java.util.Map AA_initial[/SIZE][/FONT] [COLOR=#4E9072][FONT=Monaco][SIZE=11px]// [U]Balkonlicht[/U] [U]wird[/U] [U]bei[/U] [U]Sonnenuntergang[/U] [U]eingeschaltet[/U][/SIZE][/FONT][/COLOR] [COLOR=#3933FF][FONT=Monaco][SIZE=11px][COLOR=#931a68]rule[/COLOR]"[U]Balkonbeleuchtung[/U] an"[/SIZE][/FONT][/COLOR] [COLOR=#931A68][FONT=Monaco][SIZE=11px]when[/SIZE][/FONT][/COLOR] [FONT=Monaco][SIZE=11px] [COLOR=#931a68]Item[/COLOR] Sunset_Event [COLOR=#931a68]received update[/COLOR] ON[/SIZE][/FONT] [COLOR=#931A68][FONT=Monaco][SIZE=11px]then[/SIZE][/FONT][/COLOR] [FONT=Monaco][SIZE=11px] sendCommand(Socket_FF_Balcony, ON)[/SIZE][/FONT] [COLOR=#3933FF][FONT=Monaco][SIZE=11px][COLOR=#000000] logInfo([/COLOR]"[U]Regel[/U] [U]Balkonbeleuchtung[/U]"[COLOR=#000000], [/COLOR]"[U]Balkonbeleuchtung[/U] an"[COLOR=#000000])[/COLOR][/SIZE][/FONT][/COLOR] [COLOR=#931A68][FONT=Monaco][SIZE=11px]end[/SIZE][/FONT][/COLOR] [COLOR=#4E9072][FONT=Monaco][SIZE=11px]// [U]Balkonlicht[/U] [U]wird[/U] [U]um[/U] 23:30 [U]wieder[/U] [U]ausgeschaltet[/U][/SIZE][/FONT][/COLOR] [COLOR=#3933FF][FONT=Monaco][SIZE=11px][COLOR=#931a68]rule[/COLOR]"[U]Balkonbeleuchtung[/U] [U]aus[/U]"[/SIZE][/FONT][/COLOR] [COLOR=#931A68][FONT=Monaco][SIZE=11px]when[/SIZE][/FONT][/COLOR] [COLOR=#3933FF][FONT=Monaco][SIZE=11px][COLOR=#931a68]Time[/COLOR][COLOR=#931a68]cron[/COLOR]"0 30 23 * * ?"[/SIZE][/FONT][/COLOR] [COLOR=#931A68][FONT=Monaco][SIZE=11px]then[/SIZE][/FONT][/COLOR] [FONT=Monaco][SIZE=11px] sendCommand(Socket_FF_Balcony, OFF)[/SIZE][/FONT] [COLOR=#3933FF][FONT=Monaco][SIZE=11px][COLOR=#000000] logInfo([/COLOR]"[U]Regel[/U] [U]Balkonbeleuchtung[/U]"[COLOR=#000000], [/COLOR]"[U]Balkonbeleuchtung[/U] [U]aus[/U]"[COLOR=#000000])[/COLOR][/SIZE][/FONT][/COLOR] [COLOR=#931A68][FONT=Monaco][SIZE=11px]end[/SIZE][/FONT][/COLOR] [COLOR=#4E9072][FONT=Monaco][SIZE=11px]// [U]Systeminitialisierung[/U] [U]beim[/U] Start [U]von[/U] openHAB[/SIZE][/FONT][/COLOR] [COLOR=#3933FF][FONT=Monaco][SIZE=11px][COLOR=#931a68]rule[/COLOR]"Initialize item Presence at startup"[/SIZE][/FONT][/COLOR] [COLOR=#931A68][FONT=Monaco][SIZE=11px]when[/SIZE][/FONT][/COLOR] [COLOR=#931A68][FONT=Monaco][SIZE=11px]Systemstarted[/SIZE][/FONT][/COLOR] [COLOR=#931A68][FONT=Monaco][SIZE=11px]then[/SIZE][/FONT][/COLOR] [FONT=Monaco][SIZE=11px] Alarm.members.[COLOR=#bb4300]forEach[/COLOR](alarm| postUpdate(alarm, CLOSED))[/SIZE][/FONT] [COLOR=#931A68][FONT=Monaco][SIZE=11px]end[/SIZE][/FONT][/COLOR] [COLOR=#4E9072][FONT=Monaco][SIZE=11px]// [U]Bei[/U] [U]Beginn[/U] [U]der[/U] [U]Abwesenheit[/U] [U]wir[/U] [U]ein[/U] [U]Wert[/U] [U]für[/U] die [U]Verschiebung[/U] [U]bei[/U] [U]historischer[/U] Simulation [U]generiert[/U]; [U]ausserdem[/U] [U]werden[/U] die [U]Lichtzustände[/U] [U]gesichert. Wenn auf "Abwesenheit" geschaltet wird und die zWave-geschalteten Lampen sind noch an, dann geht zur Warnung das Flurlicht an[/U][/SIZE][/FONT][/COLOR] [COLOR=#3933FF][FONT=Monaco][SIZE=11px][COLOR=#931a68]rule[/COLOR]"Initialize light states for absence"[/SIZE][/FONT][/COLOR] [COLOR=#931A68][FONT=Monaco][SIZE=11px]when[/SIZE][/FONT][/COLOR] [FONT=Monaco][SIZE=11px] [COLOR=#931a68]Item[/COLOR] Presence [COLOR=#931a68]changed[/COLOR] [COLOR=#931a68]to[/COLOR] OFF[/SIZE][/FONT] [COLOR=#931A68][FONT=Monaco][SIZE=11px]then[/SIZE][/FONT][/COLOR] [FONT=Monaco][SIZE=11px] AA_initial = storeStates(Lights)[/SIZE][/FONT] [FONT=Monaco][SIZE=11px] [COLOR=#931a68]if[/COLOR] (Zwave_FK_1.state==OPEN || Zwave_FK_2.state==OPEN || Zwave_FK_3.state==OPEN)[/SIZE][/FONT] [FONT=Monaco][SIZE=11px] postUpdate(Light_GF_Corridor_LED,ON)[/SIZE][/FONT] [COLOR=#931A68][FONT=Monaco][SIZE=11px]end[/SIZE][/FONT][/COLOR] [COLOR=#4E9072][FONT=Monaco][SIZE=11px]// [U]Lichtzustände[/U] [U]werden[/U] [U]bei[/U] [U]Rückkehr[/U] auf !Anwesenheit" auf den [U]Ursprungswert[/U] bei Verlassen der Wohnung [U]gesetzt[/U][/SIZE][/FONT][/COLOR] [COLOR=#3933FF][FONT=Monaco][SIZE=11px][COLOR=#931a68]rule[/COLOR]"Switch Lights at return"[/SIZE][/FONT][/COLOR] [COLOR=#931A68][FONT=Monaco][SIZE=11px]when[/SIZE][/FONT][/COLOR] [FONT=Monaco][SIZE=11px] [COLOR=#931a68]Item[/COLOR] Presence [COLOR=#931a68]changed[/COLOR] [COLOR=#931a68]to[/COLOR] ON[/SIZE][/FONT] [COLOR=#931A68][FONT=Monaco][SIZE=11px]then[/SIZE][/FONT][/COLOR] [FONT=Monaco][SIZE=11px] restoreStates(AA_initial)[/SIZE][/FONT] [COLOR=#931A68][FONT=Monaco][SIZE=11px]end[/SIZE][/FONT][/COLOR] [COLOR=#4E9072][FONT=Monaco][SIZE=11px]// [U]Lampen[/U] [U]werden[/U] [U]bei[/U] [U]Abwesenheit[/U] [U]aus[/U] [U]der[/U] Persistence [U]geschaltet (zum Test im 15sek. Takt)[/U][/SIZE][/FONT][/COLOR] [COLOR=#3933FF][FONT=Monaco][SIZE=11px][COLOR=#931a68]rule[/COLOR]"Update light states during absence"[/SIZE][/FONT][/COLOR] [COLOR=#931A68][FONT=Monaco][SIZE=11px]when[/SIZE][/FONT][/COLOR] [COLOR=#3933FF][FONT=Monaco][SIZE=11px][COLOR=#931a68]Time[/COLOR][COLOR=#931a68]cron[/COLOR]"0/15 * * * * ?"[/SIZE][/FONT][/COLOR] [COLOR=#931A68][FONT=Monaco][SIZE=11px]then[/SIZE][/FONT][/COLOR] [FONT=Monaco][SIZE=11px] [COLOR=#931a68]if[/COLOR] (Presence.state==OFF) {[/SIZE][/FONT] [FONT=Monaco][SIZE=11px] Lights.members.[COLOR=#bb4300]forEach[/COLOR](lampe | [/SIZE][/FONT] [FONT=Monaco][SIZE=11px] [COLOR=#931a68]if[/COLOR] (lampe.state != lampe.[COLOR=#bb4300]historicState[/COLOR](now.minusMinutes(Absent_offset).plusSeconds([COLOR=#909090]2[/COLOR])).state)[/SIZE][/FONT] [FONT=Monaco][SIZE=11px] postUpdate(lampe, lampe.[COLOR=#bb4300]historicState[/COLOR](now.minusMinutes(Absent_offset).plusSeconds([COLOR=#909090]2[/COLOR])).state)[/SIZE][/FONT] [FONT=Monaco][SIZE=11px] )[/SIZE][/FONT] [FONT=Monaco][SIZE=11px] }[/SIZE][/FONT] [COLOR=#931A68][FONT=Monaco][SIZE=11px]end[/SIZE][/FONT][/COLOR]
Vielen Dank für Tips und Hinweise, wo der Denkfehler liegt.
System:
openHAB 1.8.0
Ubuntu 14.04. java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)
(Edit: Könnte es hiermit zu tun haben? https://github.com/openhab/openhab/issues/2586)
Kommentar