Visualisierung eines Fensters mit Doppelflügel

Begonnen von MrMaxy, 16 Dezember 2016, 11:47:57

Vorheriges Thema - Nächstes Thema

MrMaxy

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!
Raspberry Pi
CC1101-USB-Lite 868MHz (CUL)
Tür-/Fensterkontakte, optisch; Fenster-Drehgriffkontakt; Heizkörperthermostate; Wandthermostate; Schaltaktor 1-fach, Zwischenstecker; Schaltaktor 4-fach, Hutschienenmontage
(Alle HomeMatic)

DerFrickler

#1
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.

MrMaxy

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
Raspberry Pi
CC1101-USB-Lite 868MHz (CUL)
Tür-/Fensterkontakte, optisch; Fenster-Drehgriffkontakt; Heizkörperthermostate; Wandthermostate; Schaltaktor 1-fach, Zwischenstecker; Schaltaktor 4-fach, Hutschienenmontage
(Alle HomeMatic)

DerFrickler

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.

Wondermusic

#4
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
RPi 3B+ FHEM-Server mit HM-MOD-RPI-PCB
RPi2 mit HM-MOD-RPI-PCB
HM-CFG-LAN
RPi 4 mit ioBroker
>100 HM Sensoren & Aktoren, div. ESP8266 via mqtt, ems-esp

Wuppi68

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
FHEM unter Proxmox als VM

DerFrickler

ich würde mich freuen wenn Du uns dann an Deiner finalen Lösung teilhaben lässt.

Gruß!

MrMaxy

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
Raspberry Pi
CC1101-USB-Lite 868MHz (CUL)
Tür-/Fensterkontakte, optisch; Fenster-Drehgriffkontakt; Heizkörperthermostate; Wandthermostate; Schaltaktor 1-fach, Zwischenstecker; Schaltaktor 4-fach, Hutschienenmontage
(Alle HomeMatic)

JoeALLb

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
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Omega

Zitat...also ohne zusätzlichen Dummy!
Verstehe ich leider nicht wirklich, da im Device ja immer noch ein "og_Arbeitszimmer_Fensterdummy" gesetzt wird.
NUC6i3SYH (FHEM 5.8 in VM)
Homematic: HMLAN, HMUSB, HM-Sec-SD, HM-CC-RT-DN, HM-TC-IT, ... + diverse weitere
LaCrosseGateway, ESPEasy
ZWave