FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Superposchi am 16 Mai 2021, 17:27:39

Titel: Vereinigung mehrere Fensterkontakte
Beitrag von: Superposchi am 16 Mai 2021, 17:27:39
Hallo, ich habe an einem zweiflügligen Fenster zwei Fensterkontakte die für jeden Fensterflügel open/closed melden.

Für die Darstellung in FTUI brauche ich aber ein Device mit einem Reading, das alle möglichen Zustände abbilden kann, also close/close, close/open, open/close, open/open. Später auch erweiterbar auf tilt-Zustände wenn mal Fenstergriffkontakte eingesetzt werden.

Hatte mir zu dem Zweck ein Structur-Device angelegt und dort per Userreadings die Zustände der einzelnen Kontakte "importiert". Damit habe ich ein Reading das mir den Gesamtzustand meldet, ein Reading für den rechten Fensterflügel und ein Reading für den linken Fensterflügel. Aber eben nicht ein Reading, dass alles abbildet.

Gibt es einen Trick oder gar ein anderes Modul das man benutzen kann um dieses Ziel zu erreichen?
Titel: Antw:Vereinigung mehrere Fensterkontakte
Beitrag von: eurofinder am 16 Mai 2021, 17:32:32
Ich habe das mit zwei Kontakten wie folgt gelöst:
Gesamtsruktur:
defmod Fenster_EG_WZ structure structureFenster Structure_WZOben Structure_WZUnten
attr Fenster_EG_WZ alias Wohnzimmer-Schiebetür
attr Fenster_EG_WZ clientstate_behavior relative
attr Fenster_EG_WZ clientstate_priority open tilted closed
attr Fenster_EG_WZ devStateIcon open:fts_window_1w_open@red tilted:fts_window_1w_tilt@red closed:fts_window_1w@green
attr Fenster_EG_WZ devStateStyle style="text-align:right"
attr Fenster_EG_WZ event-on-change-reading .*
attr Fenster_EG_WZ group Structure,Fenster
attr Fenster_EG_WZ room EG,EG->Wohnzimmer,Fenster,Homematic

setstate Fenster_EG_WZ closed
setstate Fenster_EG_WZ 2021-05-16 16:54:00 LastDevice Structure_WZUnten
setstate Fenster_EG_WZ 2021-05-16 16:54:00 LastDevice_Abs Structure_WZUnten
setstate Fenster_EG_WZ 2021-05-16 16:54:00 state closed


Kontakt unten:
defmod Structure_WZUnten HMCCUCHN 0000DA499258CD:1
attr Structure_WZUnten userattr structexclude structureFenster structureFenster_map
attr Structure_WZUnten IODev CCU3
attr Structure_WZUnten alias Schiebetürkontakt Unten
attr Structure_WZUnten devStateIcon open:fts_window_1w_open@red closed:fts_window_1w@green
attr Structure_WZUnten devStateStyle style="text-align:right"
attr Structure_WZUnten event-on-change-reading .*
attr Structure_WZUnten group Structure
attr Structure_WZUnten room EG,EG->Wohnzimmer,Fenster,Homematic

setstate Structure_WZUnten closed
setstate Structure_WZUnten 2021-05-16 16:54:00 .CONFIG_PENDING false
setstate Structure_WZUnten 2021-05-16 16:54:00 .DUTY_CYCLE false
setstate Structure_WZUnten 2021-05-16 16:54:00 .ERROR_CODE 0
setstate Structure_WZUnten 2021-05-10 11:50:42 .INSTALL_TEST true
setstate Structure_WZUnten 2021-05-16 16:54:00 .LOW_BAT ok
setstate Structure_WZUnten 2021-05-16 16:54:00 .OPERATING_VOLTAGE 1.3
setstate Structure_WZUnten 2021-05-16 16:54:00 .OPERATING_VOLTAGE_STATUS NORMAL
setstate Structure_WZUnten 2021-05-16 16:54:00 .RSSI_DEVICE -92
setstate Structure_WZUnten 2021-05-10 11:50:42 .RSSI_PEER 0
setstate Structure_WZUnten 2021-05-16 16:54:00 .SABOTAGE false
setstate Structure_WZUnten 2021-05-16 16:54:00 .UNREACH alive
setstate Structure_WZUnten 2021-05-10 11:50:42 .UPDATE_PENDING false
setstate Structure_WZUnten 2021-05-10 11:49:39 IODev CCU3
setstate Structure_WZUnten 2021-05-16 16:54:00 STATE closed
setstate Structure_WZUnten 2021-05-16 16:54:00 activity alive
setstate Structure_WZUnten 2021-05-16 16:54:00 battery ok
setstate Structure_WZUnten 2021-05-16 16:54:00 devstate ok
setstate Structure_WZUnten 2021-05-16 16:54:00 hmstate closed
setstate Structure_WZUnten 2021-05-16 16:54:00 rssidevice -92
setstate Structure_WZUnten 2021-05-16 16:54:00 rssipeer 0
setstate Structure_WZUnten 2021-05-16 16:54:00 state closed


Kontakt oben:
defmod Structure_WZOben HMCCUCHN 0000DA498D1EDE:1
attr Structure_WZOben userattr structexclude structureFenster structureFenster_map
attr Structure_WZOben IODev CCU3
attr Structure_WZOben alias Schiebetürkontakt Oben
attr Structure_WZOben devStateIcon open:fts_window_1w_open@red closed:fts_window_1w@green
attr Structure_WZOben devStateStyle style="text-align:right"
attr Structure_WZOben event-on-change-reading .*
attr Structure_WZOben group Structure
attr Structure_WZOben room EG,EG->Wohnzimmer,Fenster,Homematic
attr Structure_WZOben structureFenster_map open:tilted

setstate Structure_WZOben closed
setstate Structure_WZOben 2021-05-16 16:24:15 .CONFIG_PENDING false
setstate Structure_WZOben 2021-05-16 16:24:15 .DUTY_CYCLE false
setstate Structure_WZOben 2021-05-16 16:24:15 .ERROR_CODE 0
setstate Structure_WZOben 2021-05-10 11:50:41 .INSTALL_TEST true
setstate Structure_WZOben 2021-05-16 16:24:15 .LOW_BAT ok
setstate Structure_WZOben 2021-05-16 16:24:15 .OPERATING_VOLTAGE 1.2
setstate Structure_WZOben 2021-05-16 16:24:15 .OPERATING_VOLTAGE_STATUS NORMAL
setstate Structure_WZOben 2021-05-16 16:24:15 .RSSI_DEVICE -58
setstate Structure_WZOben 2021-05-10 11:50:41 .RSSI_PEER 0
setstate Structure_WZOben 2021-05-16 16:24:15 .SABOTAGE false
setstate Structure_WZOben 2021-05-16 16:24:15 .UNREACH alive
setstate Structure_WZOben 2021-05-10 11:50:41 .UPDATE_PENDING false
setstate Structure_WZOben 2021-05-10 11:49:39 IODev CCU3
setstate Structure_WZOben 2021-05-16 15:45:10 PRESS_SHORT 1
setstate Structure_WZOben 2021-05-16 16:24:15 STATE closed
setstate Structure_WZOben 2021-05-16 16:24:15 activity alive
setstate Structure_WZOben 2021-05-16 16:24:15 battery ok
setstate Structure_WZOben 2021-05-16 16:24:15 devstate ok
setstate Structure_WZOben 2021-05-16 16:24:15 hmstate closed
setstate Structure_WZOben 2021-05-16 16:24:15 rssidevice -58
setstate Structure_WZOben 2021-05-16 16:24:15 rssipeer 0
setstate Structure_WZOben 2021-05-16 16:24:15 state closed


Läuft ohne Komplikationen.

Gruß
eurofinder
Titel: Antw:Vereinigung mehrere Fensterkontakte
Beitrag von: Superposchi am 16 Mai 2021, 17:52:09
Puh, das ist etwas zu hoch für mich.
Speziell mit den setstate Befehlen komme ich nicht klar.

Soweit ich verstehe ist das oberste ein structure-Device. Das andere Modul in den beiden Devices sagt mir gar nichts.

Könntest du dazu etwas ausführlicher Erklären was genau das ganze bewirken soll?
Titel: Antw:Vereinigung mehrere Fensterkontakte
Beitrag von: betateilchen am 16 Mai 2021, 19:48:51
Zitat von: Superposchi am 16 Mai 2021, 17:52:09
Speziell mit den setstate Befehlen komme ich nicht klar.

Die kannst Du ignorieren, die stehen da nur, weil jemand die vollständige raw-Definition kopiert und gepostet hat.

Zitat von: Superposchi am 16 Mai 2021, 17:52:09
Soweit ich verstehe ist das oberste ein structure-Device.

Korrekt. Entscheidend sind nur die drei Zeilen:


defmod Fenster_EG_WZ structure structureFenster Structure_WZOben Structure_WZUnten
attr Fenster_EG_WZ clientstate_behavior relative
attr Fenster_EG_WZ clientstate_priority open tilted closed


Die structure umfasst die Status der beiden Fensterkontakte (bei Bedarf kann man so beliebig viele Kontakte zusammenfassen)
Und nur der Status dieser structure wird irgendwo (z.B. in FTUI) dargestellt.

Zitat von: Superposchi am 16 Mai 2021, 17:52:09
Das andere Modul in den beiden Devices sagt mir gar nichts.

Das andere sind die beiden Fensterkontakte selbst. Dabei ist prinzipiell egal, von welchem Typ diese Kontakte selbst sind, die structure muss das nicht wissen.
Titel: Antw:Vereinigung mehrere Fensterkontakte
Beitrag von: Superposchi am 17 Mai 2021, 11:19:25
ZitatDie structure umfasst die Status der beiden Fensterkontakte (bei Bedarf kann man so beliebig viele Kontakte zusammenfassen)
Und nur der Status dieser structure wird irgendwo (z.B. in FTUI) dargestellt.
Das war mir bewusst und habe ich auch, sowohl mit relative als auch absolut erstellt. Aber es löst ja nicht das Problem, das ich die beiden Fensterflügel von mit unterschiedlichen Stellungen abbilden kann.

Im FTUI gibt es schöne Symbole für zweiflügelige Fenster, aber die werden ja über ein Reading gesteuert. Dieses Reading muss also mindestens 4 Zustände annehmen. Jeweils einen für open/oben open/closed closed/open und closed/closed.

Das Structure-Device vereint doch lediglich die genannten Einzeldevices und nimmt open oder closed an wenn alle oder mindestens eins (je nach Einstellung der Atribute) entsprechend geschaltet und Priorisierung ist.

Was übersehe ich?
Titel: Antw:Vereinigung mehrere Fensterkontakte
Beitrag von: betateilchen am 17 Mai 2021, 11:38:17
Wenn Du es so kompliziert haben willst, kannst Du das über ein userreading lösen und im perl Code die Sensoren entsprechend auswerten.

Mir reicht es völlig aus, zu wissen, ob ein zweiflügeliges Fenster geschlossen ist oder nicht.
Ob der linke Flügel, der rechte Flügel oder beide offen sind, ist mir völlig egal.
Ebenso wie es mir egal ist, ob ein Flügel gekippt oder aufgeschwenkt ist (das sind ja nochmal multiplikative Fälle)

Fakt ist: das Fenster ist nicht geschlossen.
Titel: Antw:Vereinigung mehrere Fensterkontakte
Beitrag von: Superposchi am 17 Mai 2021, 15:31:20
Also in meinen Augen macht es schon einen Unterschied ob die Alarmanlage Nachts ein gekipptes Fenster im Schlafzimmer ignorieren soll weil gelüftet wird, ein geöffnetes Fenster aber einbeziehen soll, weil es vergessen wurde.

Aber wenn ich dich richtig verstehe, hast du auch keine Idee für eine Lösung.
Titel: Antw:Vereinigung mehrere Fensterkontakte
Beitrag von: betateilchen am 17 Mai 2021, 15:51:48
Zitat von: Superposchi am 17 Mai 2021, 15:31:20
Aber wenn ich dich richtig verstehe, hast du auch keine Idee für eine Lösung.

Dann hast Du mich offenbar nicht richtig verstanden.
Mein Lösungsvorschlag steht in meinem vorherigen Text.

Zitat von: betateilchen am 17 Mai 2021, 11:38:17
über ein userreading lösen und im perl Code die Sensoren entsprechend auswerten.
Titel: Antw:Vereinigung mehrere Fensterkontakte
Beitrag von: DrBasch am 17 Mai 2021, 17:19:51
Hi,

wir haben in unserer Wohnung auch 3 Fenster mit Doppelflügeln die über Drehgriffsensoren die Zustände melden. Zur Visualisierung habe ich auf dummies und notifies zurückgegriffen:

define du_ki_window dummy
attr du_ki_window devStateIcon closed-closed:fts_window_2w\
closed-tilted:fts_window_2w_tilt\
closed-open:fts_window_2w_open\
tilted-closed:fts_window_2w_tilt_l\
tilted-tilted:fts_window_2w_tilt_lr\
tilted-open:fts_window_2w_tilt_l_open_r\
open-closed:fts_window_2w_open_l\
open-tilted:fts_window_2w_open_l_tilt_r\
open-open:fts_window_2w_open_lr
attr du_ki_window room Küche


define no_ki_window notify ki_left_window|ki_right_window { my $state = Value("ki_left_window")."-".Value("ki_right_window");; fhem "set du_ki_window $state";;}
attr no_ki_window room Küche


Titel: Antw:Vereinigung mehrere Fensterkontakte
Beitrag von: Superposchi am 17 Mai 2021, 17:35:46
Zitatkannst Du das über ein userreading lösen und im perl Code die Sensoren entsprechend auswerten
Das mit dem userreading habe ich bereits probiert, doch damit bekomme ich ebenfalls kein vereintes Reading der einzelnen Fensterkontakte.

@DrBasch
Wenn ich das richtig verstehe, benutzt du kein structure sondern stattdessen ein Dummy-Device, das 'manuell' durch ein notify gesetzt wird.
Titel: Antw:Vereinigung mehrere Fensterkontakte
Beitrag von: DrBasch am 17 Mai 2021, 18:23:11
Zitat... benutzt du kein structure sondern stattdessen ein Dummy-Device, das 'manuell' durch ein notify gesetzt wird

Korrekt... Das stammt noch aus meiner FHEM-Anfangszeit.
Mit structure alleine hab ich damals die defStateIcon-Visualisierung nicht so hinbekommen wie ich wollte.
Ein anderer Ansatz, das Doppelfenster mit einem DOIF abzubilden, hat - glaube ich - zwar prinzipiell funktioniert, mich aber ob der Syntax in den Wahnsinn getrieben. Nach diesen "persönlichen Niederlagen" hab ich versucht dass Problemchen mit einer "keep it simple and stupid" Lösung in den Griff zu bekommen. Dabei bin ich dann geblieben.
Titel: Antw:Vereinigung mehrere Fensterkontakte
Beitrag von: betateilchen am 18 Mai 2021, 19:57:52
Zitat von: Superposchi am 17 Mai 2021, 17:35:46
Das mit dem userreading habe ich bereits probiert, doch damit bekomme ich ebenfalls kein vereintes Reading der einzelnen Fensterkontakte.

Natürlich bekommst Du das, im perl Teil des userreadings kannst Du doch auswerten und ins reading schreiben was immer Du möchtest.
Titel: Antw:Vereinigung mehrere Fensterkontakte
Beitrag von: Superposchi am 19 Mai 2021, 02:33:05
ZitatNatürlich bekommst Du das, im perl Teil des userreadings kannst Du doch auswerten und ins reading schreiben was immer Du möchtest.
Das mag sein, aber dafür sind meine Perl Kenntnisse einfach noch nicht ausgeprägt genug.

Die Lösung von DrBasch hat aber wunderbar funktioniert. So bekomme ich das Fenster mit beiden Flügeln sowohl in Fhem als auch in FTUI wunderbar abgebildet.