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
ja das geht so
Dankeschön für die schnelle Antwort!!!
Gruß
Andreas
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
FILTER kann nur = und !=, ich wuerde fuer alle betroffenen Geraete ein userReading setzen, falls die Bedingung erfuellt ist, und nach diesen filtern.
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
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
Also dann so?
DOELSE ((set ez_105_rollo.*,wz_105_rollo.*,ku_104_rollo,gb_103_rollo:[FILTER=level>0] zu))
Gruß
Andreas
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
@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
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
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
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
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.
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
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.
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>
Hmm. Stimmt. Sorry.
Dann habe ich wohl falsch gesucht.
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
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.
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...
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.
Danke für den Link.