Hi Leute,
da ich in diesem Forum schon einiges an Infos gefunden habe die mir sehr weitergeholfen haben, dachte ich mir das ich der Community auch mal was zurück gebe.
Hier also eine Sache nach der ich schon länger gesucht habe, aber irgendwie nie im Netz eine Lösung gefunden habe. Vermutlich weil es einfach so einfach ist :-) (Java Programmier Basics)
Es geht also um Schleifen bzw Loops in Regeln (Rules)
Ihr habt bestimmt schon mal die Anforderung gehabt das etwas passieren soll, solange etwas anderes passiert.
Zum Beispiel:
Es Klingelt das Telefon. Nun hört ihr es aber nicht da die Musik so laut ist, ihr seit in der Garage oder im Garten. Ihr wollt aber optisch ein Signal bekommen das es klingelt.
Regel:
Wenn es Klingelt, schalte das Licht ein und aus bis es aufgehört hat zu klingeln.
Das ganze sieht dann als Rule im openhab wie folgt aus:
Benötigte Items:
Zusammenfassung:
Erfolgt ein Anruf, greift die Regel.
Zuerst wird dann geprüft ob das Licht Ein oder Ausgeschaltet ist. Nun wird im Wechsel geschaltet bis man abgenommen hat oder der Anrufer aufgibt ;-)
Im Prinzip ist es ganz einfach - man muss halt nur die Syntax kennen ;-)
Ich hoffe das hilft dem einem oder anderem weiter.
Blöd gelöst? Bessere Lösung gefunden? Dann lasst es mich wissen!
Grüße
da ich in diesem Forum schon einiges an Infos gefunden habe die mir sehr weitergeholfen haben, dachte ich mir das ich der Community auch mal was zurück gebe.
Hier also eine Sache nach der ich schon länger gesucht habe, aber irgendwie nie im Netz eine Lösung gefunden habe. Vermutlich weil es einfach so einfach ist :-) (Java Programmier Basics)
Es geht also um Schleifen bzw Loops in Regeln (Rules)
Ihr habt bestimmt schon mal die Anforderung gehabt das etwas passieren soll, solange etwas anderes passiert.
Zum Beispiel:
Es Klingelt das Telefon. Nun hört ihr es aber nicht da die Musik so laut ist, ihr seit in der Garage oder im Garten. Ihr wollt aber optisch ein Signal bekommen das es klingelt.
Regel:
Wenn es Klingelt, schalte das Licht ein und aus bis es aufgehört hat zu klingeln.
Das ganze sieht dann als Rule im openhab wie folgt aus:
Code:
rule Bei_Telefonanruf_Lichtsignal /* Name der Regel */ when Item Eingehender_Anruf received update ON /* Regel reift wenn das Item Eingehender_Anruf auf ON steht */ then if (STEHLEUCHTE_WOHNZIMMER.state == ON) /* Prüft erst mal ob das Licht vielleicht schon eingeschaltet ist. Wenn ja mache weiter. */ { while (Eingehender_Anruf.state == ON) /* Hier beginnt die Schleife. Die Bedingung ist das der Status des Switch Items Eingehender_Anruf gleich ON ist */ { sendCommand(STEHLEUCHTE_WOHNZIMMER, OFF) /* das gewuenste Licht ausschalten */ Thread::sleep(500) /* 500 Millisekunden warten bis es weitergeht */ sendCommand(STEHLEUCHTE_WOHNZIMMER, ON) /* das gewuenste Licht wieder einschalten */ Thread::sleep(500) /* 500 Millisekunden warten bis es weitergeht */ } } else /* Sollte das das Licht ausgeschaltet sein mache hier weiter */ { while (Eingehender_Anruf.state == ON) /* Hier beginnt wieder die Schleife. Die Bedingung ist das der Status des Switch Items Eingehender_Anruf gleich ON ist */ { sendCommand(STEHLEUCHTE_WOHNZIMMER, ON) /* das gewuenste Licht einschalten */ Thread::sleep(500) /* 500 Millisekunden warten bis es weitergeht */ sendCommand(STEHLEUCHTE_WOHNZIMMER, OFF) /* das gewuenste Licht ausschalten */ Thread::sleep(500) /* 500 Millisekunden warten bis es weitergeht */ } } end
Code:
Switch Eingehender_Anruf "Es klingelt" <in_call> (GRP_TELEFON) { fritzbox="inbound" } /* Syntax - Item Typ - Item Name - "Beschriftung" - <Icon bzw. Symbol> - (Gruppenzugehoerigkeit) - {openhab binding. Hier das Fritzbox binding} Switch STEHLEUCHTE_WOHNZIMMER "Stehleuchte - Wohnen" (GRP_RAUM_WOHNEN, GRP_BELEUCHTUNG; GRP_EG) { knx = "1/0/20+<1/3/20" } /* Syntax - Item Typ - Item Name - "Beschriftung" - <Icon bzw. Symbol> - (Gruppenzugehoerigkeit) - {openhab binding. Hier das KNX binding mit}
Erfolgt ein Anruf, greift die Regel.
Zuerst wird dann geprüft ob das Licht Ein oder Ausgeschaltet ist. Nun wird im Wechsel geschaltet bis man abgenommen hat oder der Anrufer aufgibt ;-)
Im Prinzip ist es ganz einfach - man muss halt nur die Syntax kennen ;-)
Ich hoffe das hilft dem einem oder anderem weiter.
Blöd gelöst? Bessere Lösung gefunden? Dann lasst es mich wissen!
Grüße
Kommentar