FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Vize am 28 Juli 2015, 17:06:11

Titel: [Gelöst] Zustand von mehreren devices mit FILTER abfragen
Beitrag von: Vize am 28 Juli 2015, 17:06:11
Hallo zusammen,

in meiner Beschattungssteuerung für Jalousien steht u.a. folgendes im Ausführungsteil:
set wz_105_rollo_2:FILTER=level>20,ez_105_rollo_2:FILTER=level>20 20

Kann ich das so zusammenfassen/vereinfachen?
set wz_105_rollo_2,ez_105_rollo_2 [FILTER=level>20] 20

Wenn nein, wie müsste es richtigerweise aussehen?

Danke schonmal für eure Hilfe!

Gruß
Andreas
Titel: Antw:Zustand von mehreren devices mit FILTER abfragen
Beitrag von: Loredo am 28 Juli 2015, 17:56:17
ja das geht so
Titel: Antw:Zustand von mehreren devices mit FILTER abfragen
Beitrag von: Vize am 28 Juli 2015, 18:21:56
Dankeschön für die schnelle Antwort!!!

Gruß
Andreas
Titel: Antw:Zustand von mehreren devices mit FILTER abfragen
Beitrag von: Vize am 28 Juli 2015, 22:59:19
Hallo nochmal,

hat leider doch nicht funktioniert...

Im Log folgende Meldung, und Rollos sind nicht zugefahren:
2015.07.28 22:13:42 2: di_eg_rollos_zeitautomatik: set ez_105_rollo.*,wz_105_rollo.*,ku_104_rollo,gb_103_rollo [FILTER=level>0] zu: Unknown argument [FILTER=level>0], choose one of assignHmKey clear:readings,trigger,register, usw...

Hier noch der Auszug aus dem DOIF, der scheitert:
DOELSE ((set ez_105_rollo.*,wz_105_rollo.*,ku_104_rollo,gb_103_rollo [FILTER=level>0] zu))

Wo liegt der Fehler?

Dank und Gruß
Andreas
Titel: Antw:Zustand von mehreren devices mit FILTER abfragen
Beitrag von: rudolfkoenig am 29 Juli 2015, 07:25:15
FILTER kann nur = und !=, ich wuerde fuer alle betroffenen Geraete ein userReading setzen, falls die Bedingung erfuellt ist, und nach diesen filtern.
Titel: Antw:Zustand von mehreren devices mit FILTER abfragen
Beitrag von: Vize am 29 Juli 2015, 08:06:25
Sorry, versteh ich grad nicht...

Wenn ich :[FILTER=level>0] hinter jedes device einzeln setzte, funktioniert es ja...und
ZitatFILTER kann nur =
passt doch damit auch, oder?

Ich würd es halt gern vereinfachen, um nicht hinter jedes device [FILTER=bla] schreiben zu müssen...

Gruß
Andreas
Titel: Antw:Zustand von mehreren devices mit FILTER abfragen
Beitrag von: justme1968 am 29 Juli 2015, 08:11:14
seit einiger zeit sind auch die anderen vergleichsoperatoren eingebaut.

aber im zweiten fall fehlt der : zwischen device namen und filter. da darf kein leerzeichen sein.

gruss
  andre
Titel: Antw:Zustand von mehreren devices mit FILTER abfragen
Beitrag von: Vize am 29 Juli 2015, 10:19:01
Also dann so?

DOELSE ((set ez_105_rollo.*,wz_105_rollo.*,ku_104_rollo,gb_103_rollo:[FILTER=level>0] zu))

Gruß
Andreas
Titel: Antw:Zustand von mehreren devices mit FILTER abfragen
Beitrag von: FunkOdyssey am 29 Juli 2015, 10:57:48
Ich klink mich hier mal rein.
Mir ist aufgefallen, dass ich bei einem gefiltertem SET auf ein Structure, das Feld STATE (welches auch in der Übersicht beim DevStateIcon angezeigt wird) den Wert "[FILTER=state!=off] off" annimmt. Ich meine, dass dies vor vielen Wochen nicht der Fall war. Sollte das STATE des Structures nicht eigentlich auch einfach nur "off" annehmen?

set struct_lampen [FILTER=state!=off] off
Titel: Antw:Zustand von mehreren devices mit FILTER abfragen
Beitrag von: justme1968 am 29 Juli 2015, 11:58:50
@Vieze: wie kommst du eigentlich auf die eckigen klammern? kann es sein das irgendwo fhem und DOIF vermischt wird?

@FunkOdyssey: dazu gab es schon mal etwas in einem thread. ich kann mich aber gerade nicht an das ergebnis erinnern.

gruss
  andre
Titel: Antw:Zustand von mehreren devices mit FILTER abfragen
Beitrag von: Vize am 29 Juli 2015, 13:23:48
Zitat von: justme1968 am 29 Juli 2015, 11:58:50
@Vieze: wie kommst du eigentlich auf die eckigen klammern? kann es sein das irgendwo fhem und DOIF vermischt wird?

Puh, ich meine, das mal irgendwo im Zusammenhang mit structure gesehen zu haben, aber ich weiß leider nicht mehr wo...Moment...
hier http://forum.fhem.de/index.php?topic=37023.0 (http://forum.fhem.de/index.php?topic=37023.0) ist ein Beispiel...und hier http://forum.fhem.de/index.php?topic=26025.0 (http://forum.fhem.de/index.php?topic=26025.0)...

Aber ist es denn nun möglich, mehrere devices gleichzeitig mit FILTER anzusprechen? Und wie sieht denn nun die korrekte Syntax für meinen Fall aus?

Gruß
Andreas
Titel: Antw:Zustand von mehreren devices mit FILTER abfragen
Beitrag von: justme1968 am 29 Juli 2015, 14:37:02
also....

die [] schreibweise ist nur für structure relevant. hier musst du ja unterscheiden ob der filter auf die auswahl der structue wirken soll oder ob sie an die jeweiligen set der einzelnen devices durchgereicht wird. der filter mit leerzeichen und [] is der der an die set der einzelnen devices weiter gereicht wird. je nach anwendung kannst du sogar beides kombiniert haben.
set meineStructure:FILTER=... [FILTER=...] abc

du hast aber keine structure. als ist diese variante nicht relevant für dich.


du musst unterscheiden ob du deine devices anhand einer regex auswählst der ob du eine mit komma getrennte liste hast. der filter ist immer teil *einer* device auswahl. also:set meinDevice:FILTER=...

die variante von oben:set <device1>,<device2>:FILTER=...ist eine liste aus device1 und gefiltertem device2. d.h. der filter wirkt sich nur auf device2 aus. das ist ziemlich sicher nicht was du möchtest.

was du möchtest ist vermutlich das folgende. hier greift der filter zusätzlich zur regex:set (ez|wz)105_rollo_2:FILTER=level>20 20

gruss
  andre
Titel: Antw:Zustand von mehreren devices mit FILTER abfragen
Beitrag von: Vize am 29 Juli 2015, 17:12:44
Hallo Andre,

erstmal vielen Dank für deine ausführlichen Erklärungen...das meiste verstehe sogar ich als Anfänger...  :D

Zu der regex Geschichte noch folgendes. Ich hoffe, ich hab das richtig verstanden:
Mit set .*:FILTER=level>20 20
würde ich alles mit level>20 auf 20 setzen?

Mit set .*rollo.*:FILTER=level>20 20
würde ich alles mit rollo im Namen und level>20 auf 20 setzen?

Mit set (ez|wz).*rollo.*:FILTER=level>20 20
würde ich alles mit ez und rollo oder wz und rollo im Namen und level>20 auf 20 setzen?

Würde in meinem Fall dann auch sowas funktionieren?
DOELSE (set (ez_105_|wz_105_|ku_104_|gb_103_)rollo.*:FILTER=level>0 zu)

So langsam beginnt mein Hirn sich zu verknoten...  :-[

Danke nochmal und Gruß
Andreas
Titel: Antw:Zustand von mehreren devices mit FILTER abfragen
Beitrag von: marvin78 am 29 Juli 2015, 17:15:22
Du kannst solche "Regexe" immer leicht mit einem list testen. Also mache mal


list (ez_105_|wz_105_|ku_104_|gb_103_)rollo.*:FILTER=level>0


Wenn dann die zu dem Zeitpunkt richtigen Devices gelistet werden, sollte auch dein Regex funktionieren.
Titel: Antw:Zustand von mehreren devices mit FILTER abfragen
Beitrag von: Vize am 29 Juli 2015, 17:28:08
Danke Marvin!

Dein list-Befehl zeigt mir alle geöffneten Rollos aus meiner Auswahl...

ez_105_rollo_1
ez_105_rollo_2
ez_105_rollo_3
gb_103_rollo
ku_104_rollo
wz_105_rollo_1
wz_105_rollo_2

Dann werd ich das mal so testen.

Gruß
Andreas
Titel: Antw:Zustand von mehreren devices mit FILTER abfragen
Beitrag von: FunkOdyssey am 29 Juli 2015, 18:39:47
Am Rande: Ich such mir jedesmal nen Wolf nach dem Filtern bei Structures. Ich fände es super, wenn man diese Möglichkeit auch in der CommandRef aufnehmen könnte. Gerne helfe ich mit, wenn man mir erklärt wie.
Titel: Antw:Zustand von mehreren devices mit FILTER abfragen
Beitrag von: justme1968 am 29 Juli 2015, 22:01:48
es steht doch direkt bei structure:
ZitatSet
Every set command is propagated to the attached devices. Exception: if an attached device has an attribute structexclude, and the attribute value matches (as a regexp) the name of the current structure.
If the set is of the form set <structure> [FILTER=<filter>] <type-specific> then :FILTER=<filter> will be appended to the device name in the propagated set for the attached devices like this: set :FILTER=<filter> <type-specific>
Titel: Antw:Zustand von mehreren devices mit FILTER abfragen
Beitrag von: FunkOdyssey am 29 Juli 2015, 22:14:19
Hmm. Stimmt. Sorry.
Dann habe ich wohl falsch gesucht.
Titel: Antw:Zustand von mehreren devices mit FILTER abfragen
Beitrag von: Vize am 30 Juli 2015, 07:43:26
Guten Morgen,

wollte nur kurz Erfolg melden:

set (ez|wz|ku|gb).*rollo.*:FILTER=level>0 zu

hat funktioniert...

Vielen Dank nochmal an alle für die Hilfe!

Gruß
Andreas
Titel: Antw:Zustand von mehreren devices mit FILTER abfragen
Beitrag von: FunkOdyssey am 31 Juli 2015, 17:33:24
Zitat von: FunkOdyssey am 29 Juli 2015, 10:57:48
Mir ist aufgefallen, dass ich bei einem gefiltertem SET auf ein Structure, das Feld STATE (welches auch in der Übersicht beim DevStateIcon angezeigt wird) den Wert "[FILTER=state!=off] off" annimmt. Ich meine, dass dies vor vielen Wochen nicht der Fall war. Sollte das STATE des Structures nicht eigentlich auch einfach nur "off" annehmen?

set struct_lampen [FILTER=state!=off] off

Zitat von: justme1968 am 29 Juli 2015, 11:58:50
@FunkOdyssey: dazu gab es schon mal etwas in einem thread. ich kann mich aber gerade nicht an das ergebnis erinnern.

Ich such' mir hier nen Wolf. :-)
Du hast nicht zufällig einen Tipp, wie lange das her ist oder worum es evtl. speziell ging?

Mich wundert es halt, dass der gefilterte Status nicht "aufgelöst" wird. Dies war definitiv mal der Fall.
Titel: Antw:Zustand von mehreren devices mit FILTER abfragen
Beitrag von: Loredo am 02 August 2015, 01:10:47
Zitat von: FunkOdyssey am 29 Juli 2015, 10:57:48
Mir ist aufgefallen, dass ich bei einem gefiltertem SET auf ein Structure, das Feld STATE (welches auch in der Übersicht beim DevStateIcon angezeigt wird) den Wert "[FILTER=state!=off] off" annimmt. Ich meine, dass dies vor vielen Wochen nicht der Fall war. Sollte das STATE des Structures nicht eigentlich auch einfach nur "off" annehmen?

set struct_lampen [FILTER=state!=off] off


Das ist korrekt. Nach meiner Beobachtung passiert das immer dann, wenn keines der zur Structure gehörenden Geräte geschaltet werden muss (in diesem Beispiel alle also bereits off sind) und somit dann kein Event generieren, woraufhin sich die Structure wieder updaten kann. Man muss in diesem Fall leider zur Sicherheit ein "setstate struct_lampen off" nachschieben...
Titel: Antw:[Gelöst] Zustand von mehreren devices mit FILTER abfragen
Beitrag von: Loredo am 02 August 2015, 11:20:13
Ich denke ihr meint diesen Fred:


http://forum.fhem.de/index.php/topic,35382.msg276999.html#msg276999


In der Tat lief das IIRC mal ohne ein explizites setstate.
Titel: Antw:[Gelöst] Zustand von mehreren devices mit FILTER abfragen
Beitrag von: FunkOdyssey am 02 August 2015, 17:20:27
Danke für den Link.