FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: ZeitlerW am 12 Januar 2016, 18:33:56

Titel: Escapen von Befehen in DOIF (structure - Soll nur devices ausschalten, die ein sind)
Beitrag von: ZeitlerW am 12 Januar 2016, 18:33:56
Hallo zusammen,

ich habe hier viele Devices in verschiedenen structures zusammengefügt, die wiederum teilweise kaskadiert sind. - so weit so gut -

Wenn ich nun zentral - aus gebe, also ein set off auf höchste Kaskade gebe, werden alle darunter liegenden Devices mit off getriggert.

Gibt es eine Möglichkeit nur Devices mit dem Status on auszuschalten?

lG
Wolfgang
Titel: Antw:Escapen von Befehen in DOIF (structure - Soll nur devices ausschalten, die ein sind)
Beitrag von: justme1968 am 12 Januar 2016, 18:52:07
schau dir an was zu FILTER bei devspec und bei structure steht. etwas so: [FILTER=state=on]

gruss
  andre

ps: die devices werden nicht getriggert sondern geschaltet.
Titel: Antw:Escapen von Befehen in DOIF (structure - Soll nur devices ausschalten, die ein sind)
Beitrag von: ZeitlerW am 13 Januar 2016, 19:34:06
Hallo Andre,

erst mal vielen Dank, commandref lesen bildet :)

Ja, klar, werden die geschaltet. Da habe ich mich falsch ausgedrückt.

Allerdings habe ich jetzt eine kleine Kollision mit dem DOIF mit dem ich die Structure ausschalte:
Hintergrund: Es gibt in EIB einen alles Aus Taster. Das Problem ist nun, daß die eckige Klammer des Filters mit der Terminologie von DOIF kollidiert.
... klar man könnte das mit notify lösen.

Gibt es in DOIF eine Option, die eckige Klammer zu escapen?
Mit set ST_Buero_Licht \[FILTER=state=on\] off funktioniert es leider nicht.

lG
Wolfgang
Titel: Antw:Escapen von Befehen in DOIF (structure - Soll nur devices ausschalten, die ein sind)
Beitrag von: Puschel74 am 13 Januar 2016, 19:35:52
DOIF ist Damians "Baustelle".
Ich denke er wird sich melden wenn er den Beitrag sieht - besser wäre es Fragen zu DOIF unter Automatisierung zu posten.
Diese sollte er lt. Maintainer.txt abboniert haben.

Edith: Danke fürs verschieben aber der Maintainer bekommt so leider keine Nachricht.
Der Beitrag ist aber schon im richtigen Unterforum und Damian wird ihn sicher sehen.
Titel: Antw:Escapen von Befehen in DOIF (structure - Soll nur devices ausschalten, die ein sind)
Beitrag von: Damian am 13 Januar 2016, 20:04:00
Zitat von: ZeitlerW am 13 Januar 2016, 19:34:06
Hallo Andre,

erst mal vielen Dank, commandref lesen bildet :)

Ja, klar, werden die geschaltet. Da habe ich mich falsch ausgedrückt.

Allerdings habe ich jetzt eine kleine Kollision mit dem DOIF mit dem ich die Structure ausschalte:
Hintergrund: Es gibt in EIB einen alles Aus Taster. Das Problem ist nun, daß die eckige Klammer des Filters mit der Terminologie von DOIF kollidiert.
... klar man könnte das mit notify lösen.

Gibt es in DOIF eine Option, die eckige Klammer zu escapen?
Mit set ST_Buero_Licht \[FILTER=state=on\] off funktioniert es leider nicht.

lG
Wolfgang

Im DOIF-Modul erkenne ich, dass die Angabe keine DOIF-spezifische Angabe ist und reiche es an set weiter. Diese Filterangabe ist   also kein Problem und man muss nichts escapen.

Gruß

Damian
Titel: Antw:Escapen von Befehen in DOIF (structure - Soll nur devices ausschalten, die ein sind)
Beitrag von: Ellert am 13 Januar 2016, 20:25:03
Mit anderen Worten die eckigen Klammern um [FILTER=state=on], wie in der Commandref zu structure erwähnt, kennzeichnen die optionale Verwendung des Filters im set-Befehl. Im DOIF haben die Klammern nicht zu erscheinen, also
set ST_Buero_Licht:FILTER=STATE=on off
Die knappen kryptischen Erläuterungen zu manchen Modulen, sind oft nur mit Übung umzusetzen. Insbesondere, wenn zur Kennzeichnung von Optionen Zeichen verwendet werden, die in anderen Modulen, wie z.B. dem DOIF Befehlsbestandteile sind ;)
Titel: Antw:Escapen von Befehen in DOIF (structure - Soll nur devices ausschalten, die ein sind)
Beitrag von: Damian am 13 Januar 2016, 20:50:19
Zitat von: Ellert am 13 Januar 2016, 20:25:03
Mit anderen Worten die eckigen Klammern um [FILTER=state=on], wie in der Commandref zu structure erwähnt, kennzeichnen die optionale Verwendung des Filters im set-Befehl. Im DOIF haben die Klammern nicht zu erscheinen, also
set ST_Buero_Licht:FILTER=STATE=on off
Die knappen kryptischen Erläuterungen zu manchen Modulen, sind oft nur mit Übung umzusetzen. Insbesondere, wenn zur Kennzeichnung von Optionen Zeichen verwendet werden, die in anderen Modulen, wie z.B. dem DOIF Befehlsbestandteile sind ;)

ja, normalerweise bedeuten in Dokumentationen Angaben in eckigen Klammern "optional". Bei der Entwicklung des DOIF musste ich zwischen zwei Welten hineinpassen. Auf der einen Seite möglichst kompatibel zu FHEM sein auf der anderen weitgehend Perl unterstützen. Da muss man schon viel Gehirnschmalz investieren, um dieser Sache einigermaßen gerecht zu werden - herausgekommen sind eckige Klammern als fester Bestand der Syntax. Übrigens wird ab 5.7 die Klammer-Syntax auch vom set-Befehl weitgehend unterstützt.

Gruß

Damian
Titel: Antw:Escapen von Befehen in DOIF (structure - Soll nur devices ausschalten, die ein sind)
Beitrag von: justme1968 am 13 Januar 2016, 20:52:47
achtung:

die eckigen klammern sind in diesem fall der structure auszuschreiben und kennzeichnen nicht einen optionalen parameter.

im structure fall gibt es zwei FILTER. einen der teil der devspec ist und einen der ein parameter für die structure ist und der an die einzelnen beteiligten devices durchgereicht wird.

die komplette syntax schaut so aus:set <devspec> [FILTER=state=on] offwobei <devspec> in deinem fall nur der name der structure ist. wenn du mehr als eine structure hättest könntest du auch bei devspec einen filter setzen der dann aus allen structures diejenigen auswählt überhaupt in frage kommen. das würde dann so aussehen:set ST.*Licht:FILTER=room=x.*  [FILTER=state=on] off[/code

der erste filter wählt nur alle ST.*Licht structures aus die zu räumen gehören die mit x anfangen und ruft jede mit dem zweiten filter und dem kommando als parameter auf. jede structure nimmt dann den filter aus dem paramter und steck ihn für jedes beteiligte device in ein set <device>:FILTER... off.

die syntax mit den eckigen klammern um den zweiten filter ist nicht ganz optimal aber aus gründen der kompatibilität nicht anders möglich.

gruss
  andre
Titel: Antw:Escapen von Befehen in DOIF (structure - Soll nur devices ausschalten, die ein sind)
Beitrag von: ZeitlerW am 14 Januar 2016, 08:56:31
Hallo zusammen,
Zitat
Im DOIF-Modul erkenne ich, dass die Angabe keine DOIF-spezifische Angabe ist und reiche es an set weiter. Diese Filterangabe ist   also kein Problem und man muss nichts escapen.

Danke funktioniert.

Vielen Dank
LG Wolfgang