FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: MrMaxy am 16 Dezember 2016, 11:47:57

Titel: Visualisierung eines Fensters mit Doppelflügel
Beitrag von: MrMaxy am 16 Dezember 2016, 11:47:57
Hallo liebe Gemeinde,
derzeit verwende ich an jedem Flügel des Fensters jeweils einen HM-SEC-SCo Sensor, der mir anzeigt, ob der jeweilige Flügel geöffnet oder geschlossen ist. Diesen Zustand kann ich pro Flügel auch recht gut visualisieren.
Da ich aber diverse Doppelflügel-Fenster habe, ist die Liste recht lang.

Es wäre also schön, wenn man es irgendwie realisieren kann, den Zustand des gesamten Fensters mit einem Icon darzustellen. In der Liste der zur Verfügung stehenden Icons gibt es diverse, die darstellen, das ein Flügel links, oder rechts, oder eben beide geöffnet sind.
Mir ist jedoch nicht ganz klar, wie ich eine solche logische Verknüpfung von verschiedenen Sensoren in einem Icon zusammenfassen kann.

Ich hoffe ihr könnt mir hier, eventuell mit konkreten Beispielen, weiterhelfen.

Vielen Dank!
Titel: Antw:Visualisierung eines Fensters mit Doppelflügel
Beitrag von: DerFrickler am 16 Dezember 2016, 13:19:14
mal einen spontanen Ansatz in die Runde geworfen....

beide Sensoren in einer "structure" zusammenfassen als ein Einzelnes Fenster. Den "state" dann jeweils nach geöffnetem Fenster anpassen. Ob das dann über clientstate_priority zu handhaben ist, darüber kann ich jetzt nur spekulieren.

_____________________

z.B. für das schlafzimmer mit

eine structure mit dem Namen WindowSensorSchlafzimmer mit folgender Definition structWindowSensor windowSensorSchlafzimmerLeftCasement windowSensorSchlafzimmerRightCasement

das clientstate_behavior auf relative setzen
das clientstate_priority auf allOpen|open <hier fehlt jetzt die Unterscheidug der beiden Flügel> allClosed|closed

bei mir spielt es aktuell keine Rolle welcher Flügel geöffnet ist demnach kann ich bei <hier fehlt jetzt die Unterscheidug der beiden Flügel> mit anyTilted|tilted arbeiten.
Titel: Antw:Visualisierung eines Fensters mit Doppelflügel
Beitrag von: MrMaxy am 16 Dezember 2016, 13:28:54
Ok, wenn ich dann beide Flügel in ein structure packe, wie kann ich dann die Icons zuordnen, welche den jeweiligen Zustand darstellen?
Im Prinzip benötige ich hier doch 4 Icons um alle möglichen Zustände abzufangen.
- beide Flügel geschlossen
- linker Flügel geöffnet
- rechter Flügel geöffnet
- beide Flügel geöffnet
Titel: Antw:Visualisierung eines Fensters mit Doppelflügel
Beitrag von: DerFrickler am 16 Dezember 2016, 13:31:41
Zitat von: MrMaxy am 16 Dezember 2016, 13:28:54
Ok, wenn ich dann beide Flügel in ein structure packe, wie kann ich dann die Icons zuordnen, welche den jeweiligen Zustand darstellen?
Im Prinzip benötige ich hier doch 4 Icons um alle möglichen Zustände abzufangen.
- beide Flügel geschlossen
- linker Flügel geöffnet
- rechter Flügel geöffnet
- beide Flügel geöffnet

die Icons können dann über devStateIcon zugewiesen werden, 4 Zustände, 4 Icons

wie oben noch mal eingefügt, fehlt halt lediglich die Unterscheidung zwischen dem linken und rechten Flügel.
Titel: Antw:Visualisierung eines Fensters mit Doppelflügel
Beitrag von: Wondermusic am 16 Dezember 2016, 14:14:59
Ich weiß nicht ob es falsch ist, aber ich habe das mit einem DOIF und einem Dummy realisiert...

DOIF

define og_Arbeitszimmer_Fensterstand DOIF ([og_Arbeitszimmer_re_Fensterkontakt] eq "open" and [og_Arbeitszimmer_li_Fensterkontakt] eq "open") (set og_Arbeitszimmer_Fensterdummy tilt_lr) \
DOELSEIF ([og_Arbeitszimmer_re_Fensterkontakt] eq "closed" and [og_Arbeitszimmer_li_Fensterkontakt] eq "open") (set og_Arbeitszimmer_Fensterdummy tilt_l) \
DOELSEIF ([og_Arbeitszimmer_re_Fensterkontakt] eq "closed" and [og_Arbeitszimmer_li_Fensterkontakt] eq "closed") (set og_Arbeitszimmer_Fensterdummy lr) \
DOELSEIF ([og_Arbeitszimmer_re_Fensterkontakt] eq "open" and [og_Arbeitszimmer_li_Fensterkontakt] eq "closed") (set og_Arbeitszimmer_Fensterdummy tilt_r)


Dummy

define og_Arbeitszimmer_Fensterdummy dummy
attr og_Arbeitszimmer_Fensterdummy alias Fensterstand Arbeitszimmer
attr og_Arbeitszimmer_Fensterdummy devStateIcon tilt_l:fts_window_2w_tilt_l@red tilt_lr:fts_window_2w_tilt_lr@red lr:fts_window_2w@green tilt_r:fts_window_2w_tilt_r@red
attr og_Arbeitszimmer_Fensterdummy group Fenster
attr og_Arbeitszimmer_Fensterdummy room Arbeitszimmer
attr og_Arbeitszimmer_Fensterdummy setList state:tilt_lr,tilt_l,lr,tilt_r


Funktioniert auch einwandfrei. :)

Gruß,
Richy
Titel: Antw:Visualisierung eines Fensters mit Doppelflügel
Beitrag von: Wuppi68 am 16 Dezember 2016, 15:23:20
noch eine Lösung:

Annahme:
Fenster Links = Bit 1
Fenster Rechts = Bit 0
Offen = gesetzt = 1
Closed = 0

notify auf beide Fenster (DeviceLinks|DeviceRechts):(open|closed)

jetzt bekommst Du in diesem Notify jedes Öffnen und schließen mit

dann

my $Spezialstate = ReadingsVal(DeviceLinks, Spezialstate, 0);

if ($NAME eq DeviceLinks>) {
   if ($EVENT eq 'open') { $Spezialstate |= 2 } else { $Spezialstate &= 1 }
elseif $NAME eq DeviceRechts) {
  if ($EVENT eq 'open') { $Spezialstate |= 1 } else { $Spezialstate &= 2 }
else
  # das sollte nicht vorkommen :-)

fhem ("setreading DeviceLinks Spezialstate $Spezialstate");
fhem ("setreading DeviceRechts Spezialstate $Spezialstate");


Jetzt hast Du in beiden Flügeln ein Reading Spezialstate
und es gilt

0 = beide Fenster zu
1 = Rechtes Fenster offen
2 = linkes Fenster offen
3 = beide Fenster offen
Titel: Antw:Visualisierung eines Fensters mit Doppelflügel
Beitrag von: DerFrickler am 17 Dezember 2016, 21:08:39
ich würde mich freuen wenn Du uns dann an Deiner finalen Lösung teilhaben lässt.

Gruß!
Titel: Antw:Visualisierung eines Fensters mit Doppelflügel
Beitrag von: MrMaxy am 18 Dezember 2016, 09:34:11
Hallo Zusammen.

vielen Dank für eure zahlreichen Lösungsvorschläge und die Hilfe.
Ich habe es jetzt so gelöst:

Zitat von: Wondermusic am 16 Dezember 2016, 14:14:59
Ich weiß nicht ob es falsch ist, aber ich habe das mit einem DOIF und einem Dummy realisiert...

DOIF

define og_Arbeitszimmer_Fensterstand DOIF ([og_Arbeitszimmer_re_Fensterkontakt] eq "open" and [og_Arbeitszimmer_li_Fensterkontakt] eq "open") (set og_Arbeitszimmer_Fensterdummy tilt_lr) \
DOELSEIF ([og_Arbeitszimmer_re_Fensterkontakt] eq "closed" and [og_Arbeitszimmer_li_Fensterkontakt] eq "open") (set og_Arbeitszimmer_Fensterdummy tilt_l) \
DOELSEIF ([og_Arbeitszimmer_re_Fensterkontakt] eq "closed" and [og_Arbeitszimmer_li_Fensterkontakt] eq "closed") (set og_Arbeitszimmer_Fensterdummy lr) \
DOELSEIF ([og_Arbeitszimmer_re_Fensterkontakt] eq "open" and [og_Arbeitszimmer_li_Fensterkontakt] eq "closed") (set og_Arbeitszimmer_Fensterdummy tilt_r)


Dummy

define og_Arbeitszimmer_Fensterdummy dummy
attr og_Arbeitszimmer_Fensterdummy alias Fensterstand Arbeitszimmer
attr og_Arbeitszimmer_Fensterdummy devStateIcon tilt_l:fts_window_2w_tilt_l@red tilt_lr:fts_window_2w_tilt_lr@red lr:fts_window_2w@green tilt_r:fts_window_2w_tilt_r@red
attr og_Arbeitszimmer_Fensterdummy group Fenster
attr og_Arbeitszimmer_Fensterdummy room Arbeitszimmer
attr og_Arbeitszimmer_Fensterdummy setList state:tilt_lr,tilt_l,lr,tilt_r


Funktioniert auch einwandfrei. :)

Gruß,
Richy

Funktioniert bei mir ebenfalls einwandfrei.   :)

Vielen Dank noch einmal - tolles Forum hier!

Grüße,
Lars
Titel: Antw:Visualisierung eines Fensters mit Doppelflügel
Beitrag von: JoeALLb am 20 Dezember 2016, 09:12:53
Das geht auch nur mit einem DOIF-DEVICE, also ohne zusätzlichen Dummy!
Macht es einfacher und übersichtlicher ;-)


defmod og_Arbeitszimmer_Fensterstand DOIF ([og_Arbeitszimmer_re_Fensterkontakt] eq "open" and [og_Arbeitszimmer_li_Fensterkontakt] eq "open") (set og_Arbeitszimmer_Fensterdummy tilt_lr) \
DOELSEIF ([og_Arbeitszimmer_re_Fensterkontakt] eq "closed" and [og_Arbeitszimmer_li_Fensterkontakt] eq "open") (set og_Arbeitszimmer_Fensterdummy tilt_l) \
DOELSEIF ([og_Arbeitszimmer_re_Fensterkontakt] eq "closed" and [og_Arbeitszimmer_li_Fensterkontakt] eq "closed") (set og_Arbeitszimmer_Fensterdummy lr) \
DOELSEIF ([og_Arbeitszimmer_re_Fensterkontakt] eq "open" and [og_Arbeitszimmer_li_Fensterkontakt] eq "closed") (set og_Arbeitszimmer_Fensterdummy tilt_r)
attr og_Arbeitszimmer_Fensterstand devStateIcon tilt_l:fts_window_2w_tilt_l@red tilt_lr:fts_window_2w_tilt_lr@red lr:fts_window_2w@green tilt_r:fts_window_2w_tilt_r@red
attr og_Arbeitszimmer_Fensterstand readingList window
attr og_Arbeitszimmer_Fensterstand setList window:tilt_lr,tilt_l,lr,tilt_r
attr og_Arbeitszimmer_Fensterstand stateFormat window

setstate og_Arbeitszimmer_Fensterstand tilt_r
setstate og_Arbeitszimmer_Fensterstand 2016-12-20 09:06:08 cmd 0
setstate og_Arbeitszimmer_Fensterstand 2016-12-20 09:06:08 state initialized
setstate og_Arbeitszimmer_Fensterstand 2016-12-20 09:11:16 window tilt_r
Titel: Antw:Visualisierung eines Fensters mit Doppelflügel
Beitrag von: Omega am 20 Dezember 2016, 09:53:17
Zitat...also ohne zusätzlichen Dummy!
Verstehe ich leider nicht wirklich, da im Device ja immer noch ein "og_Arbeitszimmer_Fensterdummy" gesetzt wird.