FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: FunkOdyssey am 25 November 2014, 20:22:14

Titel: SET devspec-Filter bei einem Structure
Beitrag von: FunkOdyssey am 25 November 2014, 20:22:14
Hallo miteinander,

ich habe ein Structure für meine Jalousien angelegt.


define alle_jalousien_ohne_tueren structure room wz_jal_ost wz_jal_sued wz_jal_tuer ku_jal_sued ku_jal_west diele_jal wc_jal buero_jal hwr_fenster
attr alle_jalousien_ohne_tueren userattr room_map structexclude
attr alle_jalousien_ohne_tueren alias Alle Jalousien ohne Seitentüren
attr alle_jalousien_ohne_tueren clientstate_behavior absolute
attr alle_jalousien_ohne_tueren clientstate_priority on off
attr alle_jalousien_ohne_tueren devStateIcon on:shutter_open off:shutter_closed Halb:shutter_halfopen Schatten:shutter_3
attr alle_jalousien_ohne_tueren eventMap 100:Offen 80:Schatten stop:Stop 60:Halb 0:Geschlossen
attr alle_jalousien_ohne_tueren group Alle
attr alle_jalousien_ohne_tueren icon fts_window_2w
attr alle_jalousien_ohne_tueren room Alle Jalousien
attr alle_jalousien_ohne_tueren webCmd Offen:Schatten:Stop:Halb:Geschlossen


Diese werden über einem DOIF hoch- und wieder runtergefahren.
Jeweils 10 Minuten vorher (auch eine eigene DOIF-Bedingung) sollen die Jalousien in der Structure jedoch in einen "Zwischendurchmodus" gehen.
- 10 Minuten vor dem Hochfahren werden die Jalousien zu 10% geöffnet
- 10 Minuten vor dem Schließen werden die Jalousien erst einmal nur 50% geschlossen.

Mein DOIF sieht folgendermaßen aus. Aber das spielt hier erst einmal keine Rolle. Eher nur das Filtering:


([{getJalTime("workdayOpenSoft")}|8] or [{getJalTime("weekendOpenSoft")}|7])
(
  IF ([auto_jal_open_mit_tueren] eq "ja")
  (set alle_jalousien_mit_tueren:FILTER=STATE!=on 10)
  ELSE
  (set alle_jalousien_ohne_tueren:FILTER=STATE!=on 10)
)
DOELSEIF
([{getJalTime("workdayOpen")}|8] or [{getJalTime("weekendOpen")}|7])
(
  IF ([auto_jal_open_mit_tueren] eq "ja")
  (set alle_jalousien_mit_tueren on)
  ELSE
  (set alle_jalousien_ohne_tueren on)
)
DOELSEIF
([{getJalTime("closeRealSoft")}])
(
  IF ([auto_jal_close_mit_tueren] eq "ja")
  (set alle_jalousien_mit_tueren:FILTER=STATE!=off 50)
  ELSE
  (set alle_jalousien_ohne_tueren:FILTER=STATE!=off 50)
)
DOELSEIF
([{getJalTime("closeReal")}])
(
  IF ([auto_jal_close_mit_tueren] eq "ja")
  (set alle_jalousien_mit_tueren off)
  ELSE
  (set alle_jalousien_ohne_tueren off)
)


Ich möchte beim (ich nenne es mal) "Soft-Modus" nur die Jalousien angepackt werden, die noch komplett "off" oder "on" sind. Hat also ein Bewohner die Jalousien bereits manuell geschlossen, so sollen diese nicht 10min vor dem "off" wieder auf 50% hochgefahren werden.

Ich hatte mich dann gefreut, den Parameter "FILTER" gefunden zu haben. Vom Grundsatz her funktionieren die Zeilen oben auch perfekt.

Aber:
- Arbeite ich mit clientstate_behavior absolute, so fahren bereits geschlossene Jalousien wieder hoch, da das Structure halt nicht vollständig auf "off" steht.
- Arbeite ich mit clientstate_behavior relative, so fahren absolut keine Jalousien auf 50%, wenn auch nur eine Jalousie manuell geschlossen wurde.

Hat jemand einen Tipp, wie man das lösen kann?
Oder bleibt mir nichts anderes übrig, als jede Jalousie einzeln anzusteuern und somit einzeln zu filtern?

Danke.
Titel: Antw:SET devspec-Filter bei einem Structure
Beitrag von: justme1968 am 26 November 2014, 00:15:26
du musst den filter so anwenden das er nicht auf die structure selber greift sondern einzeln auf jeden rolladen in der structure. dazu musst du den parameter in [] nach den namen der structure setzen.

hier findest du ein beispiel dazu: http://forum.fhem.de/index.php/topic,28951.msg218085.html#msg218085

gruß
  andre
Titel: Antw:SET devspec-Filter bei einem Structure
Beitrag von: FunkOdyssey am 26 November 2014, 08:11:07
Oh, geil. Danke.