FHEM Forum

FHEM => Automatisierung => Thema gestartet von: ronzo am 09 Januar 2021, 09:14:40

Titel: [gelöst] Korrekte Syntax für logisches Oder in Sequence
Beitrag von: ronzo am 09 Januar 2021, 09:14:40
Ich hätte es mal so probiert in der DEF der sequence probiert:

(ArbeitsbeleuchtungKueche_Btn_02:Short.* || LichtFernbedienungWohnzimmer_Btn_02:Short.*)  1 (ArbeitsbeleuchtungKueche_Btn_02:Short.* || LichtFernbedienungWohnzimmer_Btn_02:Short.*)

Auch ein "or" hatte ich schon stehen. Leider ist beides falsch...

Ist an dieser Stelle eine logische Verknüpfung überhaupt möglich?
Titel: Antw:Korrekte Syntax für logisches Oder in Sequence
Beitrag von: ronzo am 16 Februar 2021, 16:20:17
Habe dieses Thema von Anfängerfragen hierher verschoben. Nun reihte es sich aber relativ weit hinten ein... (Gibt es die Möglichkeit ein Thema beim Verschieben nochmal kurz vorne zu platzieren, damit es auch von Wissenden gelesen wird - von diesem Versuch hier mal abgesehen?)
Titel: Antw:Korrekte Syntax für logisches Oder in Sequence
Beitrag von: Beta-User am 16 Februar 2021, 16:36:31
Es ist trotzdem eine Anfängerfrage...

Da muss eine regex stehen, kein "Pseudeo-Perl-Code", und vermutlich soll es dann auch einfach 2* dieselbe Taste sein, oder?... Ungetestet:ArbeitsbeleuchtungKueche_Btn_02:Short.*|LichtFernbedienungWohnzimmer_Btn_02:Short.* 1 SAME
(Die regex ist übrigens mit Bedacht nicht "tiefer gelegt"!)
Titel: Antw:Korrekte Syntax für logisches Oder in Sequence
Beitrag von: TomLee am 16 Februar 2021, 17:06:28
Das mit SAME klappt bei meinem ersten Versuch nicht ?

defmod lampseq sequence du_t1:.* 1 SAME

defmod lampseq sequence du_t1:on 1 SAME




Mein Gedanke war die Geräte entsprechend zu benennen:

defmod lampseq sequence du_t([1-2]):.* 1 du_t([1-2]):.*

reagiert bei du_t1 und du_t2

Gruß

Thomas
Titel: Antw:Korrekte Syntax für logisches Oder in Sequence
Beitrag von: TomLee am 16 Februar 2021, 18:24:19
Ich kann gar nix zu SAME finden, woher kommt das ?
Titel: Antw:Korrekte Syntax für logisches Oder in Sequence
Beitrag von: Beta-User am 16 Februar 2021, 18:28:26
Ups, Fehler... War gedanklich bei watchdog....
Titel: Antw:Korrekte Syntax für logisches Oder in Sequence
Beitrag von: ronzo am 17 Februar 2021, 12:17:07
Zitat von: Beta-User am 16 Februar 2021, 16:36:31
...
ArbeitsbeleuchtungKueche_Btn_02:Short.*|LichtFernbedienungWohnzimmer_Btn_02:Short.* 1 SAME
(Die regex ist übrigens mit Bedacht nicht "tiefer gelegt"!)

Aus Anwendersicht ist das so natürlich nicht ganz logisch korrekt, da hier eine Kombination aus Wandschalter-Remote und Fernbedienung möglich wäre
ArbeitsbeleuchtungKueche_Btn_01:Short.*|LichtFernbedienungWohnzimmer_Btn_07:Short.* 1 ArbeitsbeleuchtungKueche_Btn_01:Short.*|LichtFernbedienungWohnzimmer_Btn_07:Short.*

Korrekterweise müsste es etwas wie
(ArbeitsbeleuchtungKueche_Btn_01:Short.* 1 ArbeitsbeleuchtungKueche_Btn_01:Short.*)|(LichtFernbedienungWohnzimmer_Btn_07:Short.* 1 LichtFernbedienungWohnzimmer_Btn_07:Short.*)
sein. Wie schreibt man das korrekt?
Titel: Antw:Korrekte Syntax für logisches Oder in Sequence
Beitrag von: TomLee am 18 Februar 2021, 12:02:15
Zitat von: ronzo am 17 Februar 2021, 12:17:07
Korrekterweise müsste es etwas wie
(ArbeitsbeleuchtungKueche_Btn_01:Short.* 1 ArbeitsbeleuchtungKueche_Btn_01:Short.*)|(LichtFernbedienungWohnzimmer_Btn_07:Short.* 1 LichtFernbedienungWohnzimmer_Btn_07:Short.*)
sein. Wie schreibt man das korrekt?

Doofe Frage, auch nach einmal darüber schlafen verstehe ich nicht warum das in einer Definition umzusetzen sein soll :-[

Sind das dann nicht ganz einfach zwei separate Definitionen die du benötigst ?
Titel: Antw:Korrekte Syntax für logisches Oder in Sequence
Beitrag von: ronzo am 18 Februar 2021, 12:12:19
Ich wollte vermeiden zwei Sequences zu haben, die dasselbe tun. Nämlich im notify die komplette Wohnzimmerbeleuchtung ausschalten.
Titel: Antw:Korrekte Syntax für logisches Oder in Sequence
Beitrag von: Beta-User am 18 Februar 2021, 12:16:25
Zitat von: TomLee am 18 Februar 2021, 12:02:15
Sind das dann nicht ganz einfach zwei separate Definitionen die du benötigst ?
Sehe ich auch so, aber mal abgesehen davon: Das ist eher ein theoretisches Problem, das ich da aufgegriffen hatte... Es wäre ein ziemlicher Zufall, wenn tatsächlich die sequence bei Tastendrücken an zwei Tastern (mehr oder weniger zugleich) "zuschlagen" würde, das sollte vernachlässigbar sein.
Es wäre aber auch kein Problem, das notify für zwei sequence-Devices passend zu definieren, das "regex-or" ist ja jetzt hoffentlich soweit klar ;) .


Was ich noch nicht verstehe (auch wenn ich selbst vorübergehen "kreativ" war ::) ):
Wie kommt man auf die Idee, dass die in der cref als define vorgestellten Optionen so großzügig zu verstehen sein könnte?

Bitte beachten: Grade, wenn es um regex und Klammern geht, sind die Möglichkeiten in der Regel sehr beschränkt, und man bekommt häufig "seltsame" Ergebnisse, wenn man die einfach so irgendwie mehr oder weniger wild in der Gegend verteilt...
Titel: Antw:Korrekte Syntax für logisches Oder in Sequence
Beitrag von: ronzo am 18 Februar 2021, 13:22:54
Zitat von: Beta-User am 18 Februar 2021, 12:16:25
Sehe ich auch so, aber mal abgesehen davon: Das ist eher ein theoretisches Problem, das ich da aufgegriffen hatte... Es wäre ein ziemlicher Zufall, wenn tatsächlich die sequence bei Tastendrücken an zwei Tastern (mehr oder weniger zugleich) "zuschlagen" würde, das sollte vernachlässigbar sein.
Es stört micht trotzdem etwas anzulegen von dem ich schon beim Anlegen weiß, dass es nicht ganz korrekt ist.

Zitat von: Beta-User am 18 Februar 2021, 12:16:25
Was ich noch nicht verstehe (auch wenn ich selbst vorübergehen "kreativ" war ::) ):
Wie kommt man auf die Idee, dass die in der cref als define vorgestellten Optionen so großzügig zu verstehen sein könnte?
Ich wollte nur wissen ob ich in der DEF einer Sequence sagen kann, nimm DEF A oder DEF B. Darauf hat mir noch niemand eine vernünftige Antwort gegeben. (Aufgrund eurer Reaktionen tippe ich jedoch auf ein "Nein".)

Zitat von: Beta-User am 18 Februar 2021, 12:16:25
Bitte beachten: Grade, wenn es um regex und Klammern geht, sind die Möglichkeiten in der Regel sehr beschränkt, und man bekommt häufig "seltsame" Ergebnisse, wenn man die einfach so irgendwie mehr oder weniger wild in der Gegend verteilt...
Ich weiß. "(DEF A|DEF B)" wäre aber nun keine exotische Regex. Vorstellbar ist so ein Konstrukt jedenfalls für mich...
Titel: Antw:Korrekte Syntax für logisches Oder in Sequence
Beitrag von: Beta-User am 18 Februar 2021, 13:41:58
Zitat von: ronzo am 18 Februar 2021, 13:22:54
Ich wollte nur wissen ob ich in der DEF einer Sequence sagen kann, nimm DEF A oder DEF B. Darauf hat mir noch niemand eine vernünftige Antwort gegeben. (Aufgrund eurer Reaktionen tippe ich jedoch auf ein "Nein".)
"vernünftige Antwort": Nein! Die Frage ist einfach aus Sicht eines geübten Lesers so verquer gestellt, dass sie gar nicht als Frage erkannt wurde.

ZitatIch weiß. "(DEF A|DEF B)" wäre aber nun keine exotische Regex. Vorstellbar ist so ein Konstrukt jedenfalls für mich...
Jein. Als regex ginge es, aber dir geht es nicht um die regex, sondern um eine "alternative DEF", und das geht eben nicht (in deiner Klammer ist ja auch die "1" mit drin, und das ist ein anderer Parameter in der DEF wie "<re1>").

Wenn eine "alternative DEF" vorgesehen wäre, würde es in der cref stehen, aber sowas habe ich (und vermutlich nicht nur ich) bisher noch in keinem Modul gesehen, jedenfalls, wenn meine Erinnerung mich nicht trügt. Daher die obige etwas kantige Aussage, die Frage wäre verquer gestellt...
Titel: Antw:Korrekte Syntax für logisches Oder in Sequence
Beitrag von: ronzo am 18 Februar 2021, 14:01:54
Zitat von: Beta-User am 18 Februar 2021, 13:41:58
Wenn eine "alternative DEF" vorgesehen wäre, würde es in der cref stehen, aber sowas habe ich (und vermutlich nicht nur ich) bisher noch in keinem Modul gesehen, jedenfalls, wenn meine Erinnerung mich nicht trügt. Daher die obige etwas kantige Aussage, die Frage wäre verquer gestellt...

Das lass ich gelten. Ich hätte gleich direkt fragen sollen ob man irgendwie DEF A oder DEF B schreiben kann. Vermutlich habt ihr auch beide vom logischen Standpunkt her recht. Es sind ja im Grunde zwei verschiedene Sequences, die ein und dasselbe notify auslösen sollen. Somit wäre es in der DEF des Notifys wohl besser aufgehoben. So z.B.:

SequenceA:trigger|SequenceB:trigger set WohnzimmerBeleuchtung on


Seht ihr das auch so?
Titel: Antw:Korrekte Syntax für logisches Oder in Sequence
Beitrag von: Beta-User am 18 Februar 2021, 14:09:03
Zitat von: ronzo am 18 Februar 2021, 14:01:54
[...] Es sind ja im Grunde zwei verschiedene Sequences, die ein und dasselbe notify auslösen sollen. Somit wäre es in der DEF des Notifys wohl besser aufgehoben. So z.B.:

SequenceA:trigger|SequenceB:trigger set WohnzimmerBeleuchtung on


Seht ihr das auch so?
Ja. Hatte ich ja auch schon geschrieben:
Zitat von: Beta-User am 18 Februar 2021, 12:16:25
[...] Es wäre aber auch kein Problem, das notify für zwei sequence-Devices passend zu definieren
2 sequence-Devices + 1 notify sind m.E. die "100% logisch saubere Lösung".
Ob du das ob der geringen Wahrscheinlichkeit von Überlappungen "brauchst", mußt du selbst wissen, aber es ging ja hier dann wohl auch um's Lernen, oder?
Titel: Antw:Korrekte Syntax für logisches Oder in Sequence
Beitrag von: ronzo am 18 Februar 2021, 14:12:42
Danke für eure Hilfe!

Ja, es es geht mir ums Verstehen und Lernen. Vor allem auch Hinweise wie "Mach das so nicht!". Stehe immer noch am Anfang...
Titel: Antw:Korrekte Syntax für logisches Oder in Sequence
Beitrag von: Beta-User am 18 Februar 2021, 14:30:25
Bzgl.: "so wird's gemacht": Markierst du den Thread bitte als [gelöst], wenn das aus deiner Sicht zutrifft?