Abwesenheitsregel in Openhab

Allgemeine Fragen rund um die "Smart Home" Hardware/Komponenten

Moderatoren: seppy, udo1toni

HeHa
Beiträge: 50
Registriert: 13. Nov 2019 17:41
Answers: 1

Abwesenheitsregel in Openhab

Beitrag von HeHa »

Hallo,

also eigentlich möchte ich gerne das Regelwerk verstehen ...
weil die Logic die ich hab funktioniert nicht :=)

wenn ich im Log ermittelt habe:
2020-01-17 18:13:03.338 [vent.ItemStateChangedEvent] - HenningsAHandy changed from OPEN to CLOSED
und
2020-01-17 18:15:00.814 [ome.event.ItemCommandEvent] - Item 'Buero_S' received command OFF
2020-01-17 18:15:00.819 [nt.ItemStatePredictedEvent] - Buero_S predicted to become OFF
2020-01-17 18:15:00.853 [vent.ItemStateChangedEvent] - Buero_S changed from ON to OFF
und meine erste Regel wie folgt aussieht:

Code: Alles auswählen

rule "Abwesenheit Ausschalten"
when
  Item HenningsAHandy changed to CLOSED
then
Buero_S.sendCommand(OFF)
end
Mein Hintergedanken ... wenn mein Arbeits Handy (HenningsAHandy) nicht mehr in der Fritz Box erkannt wird, dann Soll die Lampe im Büro (Buero_S) ausgehen...

Wenn ich mir das Regelwek so ansehe denke ich müsste die erste Regel funktionieren ..

Bah denkste tut Sie aber nicht
Regel Aktiv - Handy CLOSED - Licht bleibt an

ich arbeite mit einer presence.map:

OPEN=Anwesend
CLOSED= Abwesend
NULL=unbekannt

Aber wenn ich versuchsweise Abwesend setze in die Regel passiert auch nix

Somit denke ich stimmt was am Regel-Werk nicht.

Kann mir jemand helfen ..

Gruß Henning

Benutzeravatar
peter-pan
Beiträge: 2568
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Abwesenheitsregel in Openhab

Beitrag von peter-pan »

... wie sehen denn deine Items aus ? Switch oder String ?
Reagiert deine Regel überhaupt bei dem Trigger-Event ? Das kannst einfach nachprüfen, wenn du nach "then" eine "logInfo("meine Regel"," triggert") einbaust.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

Benutzeravatar
udo1toni
Beiträge: 13931
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Abwesenheitsregel in Openhab

Beitrag von udo1toni »

Die Regel sieht auf den ersten Blick gut aus.

Gibt es denn in openhab.log zum Zeitpunkt des Speicherns der *.rules Datei Meldungen? (Notfalls Datei neu speichern)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

HeHa
Beiträge: 50
Registriert: 13. Nov 2019 17:41
Answers: 1

Re: Abwesenheitsregel in Openhab

Beitrag von HeHa »

Hallo,

also beine ITEMS sehen wie folgt aus dazu:

Handy:

Code: Alles auswählen

Contact HenningsHandy   "Henning [MAP(presence.map):%s]"            (gfritzbox) {fritzboxtr064="maconline:CE-BF-65-43-5C-03"}
und die Lampe:

Code: Alles auswählen

Switch  Buero_S  "Schalter im Büro" (GF_Office) { channel="homematic:HM-LC-Sw1PBU-FM:3014F711A061A7D7098E1690:OEQ0475368:1#STATE" }
Regel habe ich nach langem studieren der Logs nochmals umgebaut .. nicht viel verändert ..

Code: Alles auswählen

rule "Abwesenheit Ausschalten"
when
  Item HenningsAHandy changed from OPEN to CLOSED
then
Buero_S.sendCommand(OFF)
end
Jetzt funktioniert es. Hinzugefügt habe ich

Code: Alles auswählen

from OPEN
Deshalb nun meine Fragen ...

Muss ich den Wechsel immer angeben also

Code: Alles auswählen

from ON to OFF
oder

Code: Alles auswählen

from OPEN to CLOSED
.. ? und wer weiß was noch für Zustände gibt

und ich kann nur die Zustände Verwenden die das Gerät selber produziert ... nicht die von mir umgewandelten (in meinem Fall mit einer presence.map) ?

Vielen Dank für Eure Hilfe werde weiter in das Regelwerk einsteigen ...

Gibt es irgendwo gute Erläuterungen mit Beispielen .. und Verschachtelungen ?

Grüße und nochmals vielen lieben Dank

Henning

Benutzeravatar
udo1toni
Beiträge: 13931
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Abwesenheitsregel in Openhab

Beitrag von udo1toni »

Nein, beide Parameter sind optional, also sind alle Varianten erlaubt:

Code: Alles auswählen

when
       Item myItem changed
    or Item myItem changed from ON
    or Item myItem changed from ON to OFF
    or Item myItem changed to OFF
then
und natürlich auch mit allen anderen möglichen Status wie OPEN, CLOSED, 0, 100, PLAYING, PAUSED,.. halt abhängig vom Itemtyp.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

HeHa
Beiträge: 50
Registriert: 13. Nov 2019 17:41
Answers: 1

Re: Abwesenheitsregel in Openhab

Beitrag von HeHa »

Hallo

udo1toni ich verstehe.... nächster Step:

auf der HP von openhab wird in einem Abschnitt der Regel folgendes erkläer:

Code: Alles auswählen

rule "<RULE_NAME>"
when
    <TRIGGER_CONDITION> [or <TRIGGER_CONDITION2> [or ...]]
then
    <SCRIPT_BLOCK>
end
OR = ODER

Bedeutet ... wenn ich drei Items habe:

Code: Alles auswählen

Contact RitasHandy      "Rita [MAP(presence.map):%s]"               (gfritzbox) {fritzboxtr064="maconline:40-B8-37-B7-6F-43"}
Contact HenningsHandy   "Henning [MAP(presence.map):%s]"            (gfritzbox) {fritzboxtr064="maconline:CE-BF-65-43-5C-03"}
Contact HenningsAHandy  "Henning Arbeit [MAP(presence.map):%s]"     (gfritzbox) {fritzboxtr064="maconline:C4-61-8B-77-13-34"}
wenn eins davon aktiviert wird egal welches dann wird der <Script_Block> ausgeführt ......

Was ist, wenn ich nur möchte, dass wenn alle drei Handies den Status CLOSED erhalten der <Script_Block> ausgeführt wird ? Darf ich OR durch AND ersetzen oder wie wird das realisiert:

Code: Alles auswählen

rule "Abwesenheit Ausschalten"
when
  Item HenningsAHandy changed from OPEN to CLOSED AND
  Item RitasHandy changed from OPEN to CLOSED AND
  Item HenningsHandy changed from OPEN to CLOSED
then
Buero_S.sendCommand(OFF)
end
Oder muss ich einen ganz anderen Ansatz finden weil es kein AND gibt ???

ZIEL: Wenn alle drei Handies von OPEN to CLOSED wechseln egal wann .. also nur wenn ALLE drei Handies CLOSED haben wird die Bürolampe ausgeschaltet .....

Gruß Henning

violine21
Beiträge: 589
Registriert: 20. Sep 2019 05:49
Answers: 7

Re: Abwesenheitsregel in Openhab

Beitrag von violine21 »

Das sollte so funktionieren

Code: Alles auswählen

rule "Abwesenheit Ausschalten"
when
  Item HenningsAHandy changed or
  Item RitasHandy changed or
  Item HenningsHandy changed or
then
if(HenningsAHandy.state == CLOSED && RitasHandy.state == CLOSED && HenningsHandy.state == CLOSED)
Buero_S.sendCommand(OFF)
end

Benutzeravatar
udo1toni
Beiträge: 13931
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Abwesenheitsregel in Openhab

Beitrag von udo1toni »

Typisches Missverständnis.

Die Rules arbeiten eventbasiert. Im when-Teil der Rule werden alle Trigger der Rule aufgeführt. Eine Rule kann belieibg viele Trigger haben. Es ist aber nicht möglich, die Trigger per AND zu verbinden, denn das würde ja bedeuten, dass mehrere Trigger exakt zeitgleich auftreten müssten.
Was Du möchtest, ist hingegen, dass die Rule von mehreren Triggern ausgelöst wird, der Code, der dort (nach dem then) hinterlegt ist, aber nur ausgeführt wird, wenn mehrere Items zu diesem Zeitpunkt einen bestimmten Status haben.
Man muss unbedingt verstehen, dass Trigger (oder Events) und Status zwei komplett verschiedene Dinge sind. Es gibt Events, die auf Status basieren (Item changed oder Item received update), aber die basieren nicht auf dem Status, sondern auf dem Zeitpunkt der Änderung oder des Updates.
Es gibt weiterhin Trigger, die auf dem Empfang von Commands basieren (welche wieder nichts mit Status zu tun haben müssen) oder auch zeitbasierte Trigger (Time cron), aber auch hier geht es um das Eintreten eines Zeitpunkts (Event), während man innerhalb des Codes auf einen Zeitraum prüft
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

HeHa
Beiträge: 50
Registriert: 13. Nov 2019 17:41
Answers: 1

Re: Abwesenheitsregel in Openhab

Beitrag von HeHa »

Hallo udo1toni

Ja .. jetzt leuchtet das natürlich mir ein ..... absolut .... oben sammeln unten auswerten und Aktion.
Oh man... dan nwerde ich mal weiter basteln ...

Gruß und wiedermal Danke

Henning

HeHa
Beiträge: 50
Registriert: 13. Nov 2019 17:41
Answers: 1

Re: Abwesenheitsregel in Openhab

Beitrag von HeHa »

Hallo violine21

vielen Dank für Deinen Hinweis / Tipp / Regel:
violine21 hat geschrieben: 19. Jan 2020 15:31 Das sollte so funktionieren

Code: Alles auswählen

rule "Abwesenheit Ausschalten"
when
  Item HenningsAHandy changed or
  Item RitasHandy changed or
  Item HenningsHandy changed or
then
if(HenningsAHandy.state == CLOSED && RitasHandy.state == CLOSED && HenningsHandy.state == CLOSED)
Buero_S.sendCommand(OFF)
end
Ich habe Sie so übernommen nur ein or hinter dem dritten Item habe ich weggelassen

Danke Gruß Henning

Antworten