Per Pushnachricht mitteilen, welches Fenster noch geöffnet ist ?

Begonnen von visionsurfer, 04 November 2016, 23:24:56

Vorheriges Thema - Nächstes Thema

visionsurfer

Hallo,

ich stehe wieder vor einer etwas für mich zumindest komplexeren Aufgabe.

Ich habe eine structure fenster_alle angelegt. In dieser structure sind alle Sensoren meiner Fenster. Die structure kennt nur open oder closed. Das heißt, wenn alle Fenster geschlossen sind, ist automatisch closed. Ist nur ein Fenster aus der Gruppe geöffnet, kommt open.
Das klappt alles perfekt.

Ich lasse mir dann wenn ich das Haus verlasse, eine Pushnachricht schicken. Alle Fenster geschlossen, oder Fenster noch geöffnet. Das klappt auch soweit wunderbar.

Funktioniert es irgendwie das man die Nachricht auch so bauen kann, dass einem geschrieben wird, welches Fenster noch geöffnet ist ? Also nicht nur "Fenster noch geöffnet", sondern genau welches, bzw. falls mehrere welche alle.

Meine List von der structure sieht so aus:


Internals:
   ATTR       room
   DEF        room fensterstatus_buero fensterstatus_helene fensterstatus_lounge fensterstatus_kueche fensterstatus_essen1 fensterstatus_essen2 fensterstatus_tv fensterstatus_schlafen_fenster fensterstatus_schlafen_tuer
   NAME       fenster_alle
   NR         383
   NTFY_ORDER 50-fenster_alle
   STATE      closed
   TYPE       structure
   Content:
     fensterstatus_buero closed
     fensterstatus_essen1 closed
     fensterstatus_essen2 closed
     fensterstatus_helene closed
     fensterstatus_kueche closed
     fensterstatus_lounge closed
     fensterstatus_schlafen_fenster closed
     fensterstatus_schlafen_tuer closed
     fensterstatus_tv closed
   Readings:
     2016-11-04 23:19:01   LastDevice      fensterstatus_helene
     2016-11-04 23:19:01   LastDevice_Abs  fensterstatus_helene
     2016-11-04 23:19:01   state           closed
Attributes:
   clientstate_behavior relative
   clientstate_priority open|open closed|closed
   room       Gruppen


Würde das mit FHEM Boardmittel gehen oder müsste da aufwendig Perl geschrieben werden um das alles zu verarbeiten ?

Grüße,
Visionsurfer


CoolTux


sub statusFensterOffen() {

my @monitored=devspec2array("(FensterKontakt.*):FILTER=STATE!=closed");
my $cnt_devs=@monitored;
my $i = 0;
my $msgtext = "";
foreach(@monitored) {
$msgtext .= AttrVal($_,"alias",$_);
if ($i < $cnt_devs - 2) {
  $msgtext .= ", ";
}
if ($i == $cnt_devs - 2) {
  $msgtext .= " und ";
}
$i++;
}

return $msgtext if ($cnt_devs > 0);
}


Das schreibst du in eine 99_myUtils. Voraussetzung ist das Deine Fenster alle mit eindeutig gleichen Namen anfangen oder enden oder was auch immer. Es muss eindeutig sein. Bei mir ist das FensterKontakt.
Du kannst nun nach dem gehen prüfen lassen ob Deine Structure open ist und wenn ja startest Du die Sub.

my $openWindow = statusFensterOffen();
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

visionsurfer

Vielen Dank.

Also doch programmieren. Soweit bin ich noch nicht.
Ich habe auch noch keine 99_myUtils.
Ich werde hier aber drauf zurück kommen.


Benni

Zitat von: CoolTux am 04 November 2016, 23:41:06
Es muss eindeutig sein. Bei mir ist das FensterKontakt.

Da die betroffenen Fenster ja bereits in einer Structure zusammengefasst sind, könnte man als eindeutiges Kriterium auch das Attibut der Structure nehmen, dass bei der DEF angegeben wird (struct_type) und in allen enthaltenen Devices eingetragen wird und wiederum den Namen der Structure enthält:

Zitat
define <name> structure <struct_type> <dev1> <dev2> ...

Mit dem Device "Structure" werden Strukturen/Zusammenstellungen von anderen Devices erstellt um sie zu Gruppen zusammenzufassen. (Beispiel: im Haus alles ausschalten)
Die Liste der Devices die einer Struktur zugeordnet sind kann duch das Kommando addstruct / delstruct im laufenden Betrieb verändert werden. Es können sowohl einzelne Devices als auch Gruppen von Devices (TYPE=FS20) zugefügt werden. Jedes zugefügt Device erhält zwei neue Attribute <struct_type>=<name> sowie <struct_type>_map wenn es zu einer Struktur zugefügt wurde. Diese Attribute werden wieder automatisch entfernt, sobald das Device von der Struktur entfernt wird.

CoolTux

Hallo Benni,

Hast Recht. Danach habe ich gar nicht geschaut. Ist auch ein interessanter Ansatz. Behalte ich mal im Kopf.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Gerade mal geschaut. Geht nicht immer. Ich habe z.B bei Fenstern Verschachtelte Structure. Jedes Fenster eines Raumes in eine FensterRaum Structure und die Structure dann in alleFensterWohnung Structure. Nun werden nicht nur alle Fenster bei Deiner Idee aufgelistet sondern auch die Structuren.

Aber für eine einfache alle Fenster in einer Structure Lösung ist die Idee super.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Benni

Bei verschachtelten Structures haut das natürlich so nicht hin. Aber man kann ja ein Fenster auch in mehreren Structures haben ;)

Yil

Sehr hübsche Funktion! Hat bei mir einen 20-Zeiler abgelöst.

Beißt sich allerdings mit der globalen Fenster- und Türensteuerung: https://forum.fhem.de/index.php/topic,36504.msg287778.html#msg287778 und den Timern, die dort erzeuigt werden. Wenn man beides hat, kommt die Zählung durcheinander. Da hilft am schnellsten die Umbenennung des dortigen Timers.
HM CCU3 und HCU mit ca. 50 HM-Komponenten inkl. Bausätzen
fhem auf RPi mit Sonos, EnOcean-CUL, ZWAVE-CUL und Bluetooth,
HUE, UniFi