FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: Murphycss am 14 Oktober 2015, 15:48:36

Titel: Anzahl offener Fenster
Beitrag von: Murphycss am 14 Oktober 2015, 15:48:36
Hallo,

hoffe das ich hier grundsätzlich richtig bin. Ich würde gerne um mein Gesamtsystem aus Therme (UVR Geregelt) und inzwischen 12 Homematic Kombinationen aus Fensterkontakt/Wandthermostat/Diversen Antrieben noch ein bisschen zu optimieren beides mehr "Verzahnen"..

Hatte nun die Idee Über die "Anzahl offener Fenster" ggfs meine Therme über einen aktor an der UVR abzuschalten bzw. den Heizkreis zu sperren wenn "genug" Fenster geöffnet sind.

Habe nun schon überlegt wie man das zählen könnte.. Aber so einen richtigen Ansatz hab ich nicht.

Hätte da jemand eine Idee/Tip?

Gruß
Henning
Titel: Antw:Anzahl offener Fenster
Beitrag von: Ellert am 15 Oktober 2015, 00:01:20
Du nimmst ein Dummy und setzt es auf 0, wenn alle Fenster geschlossen sind. Dann triggerst Du mit einem DOIF oder notify auf "Fenster offen" bei jedem Fenster open erhöhst Du den Wert des Dummys um 1. Gleichfalls triggerst Du auf "Fenster geschlossen" und verkleinerst den Wert des Dummys um 1, bei jedem Trigger. Der Wert des Dummys zeigt Dir dann immer die Zahl der offenen Fenster.

Mit DOIF geht es auch über das Attribut state:
define mydi DOIF
attr mydi state {([Fenster1] eq "open" *1 + [Fenster2] eq "open" *1 + ... + [FensterX] eq "open" *1 )}

Ungetestet, Syntax unvollständig und verkürzt, schau einfach mal in die Commandref http://fhem.de/commandref_DE.html#DOIF (http://fhem.de/commandref_DE.html#DOIF)
Titel: Antw:Anzahl offener Fenster
Beitrag von: rapster am 15 Oktober 2015, 00:38:23
Hatte mal letztes Jahr eine myUtils Funktion gebaut, welche dir unter anderem im Ergebnis das zurückliefert was du haben möchtest.

Optional kannst du in der Funktion einen Befehl ausführen mit der Variablen %contacts% welche die entsprechenden Kontakte (geschlossen oder offen) enthält.
Habe mit der Funktion damals beim gotoSleep geprüft ob(wieviele) Fenster noch offen waren, und mir die entsprechenden Namen durch Sonos-Speak durchgeben lassen.

Verwende zwar selber i.M. eine deutlich umgebaute Version (die gepostete hatte ich in meiner fhem-Anfangszeit gebastelt), sollte allerdings für deinen Einsatzzweck funktionieren oder zumindest als Bastelvorlage dienen können.

http://forum.fhem.de/index.php?topic=29684.0

Gruß
  Claudiu
Titel: Antw:Anzahl offener Fenster
Beitrag von: CoolTux am 15 Oktober 2015, 08:03:05
99_myUtils_offeneFenster.pm
Voraussetzung ist das alle Fensterkontakte einen ähnlichen Namen haben
devspec2array("(FensterKontakt.*)
In meinem Fall fangen alle Namen mit FensterKontakt an.
Zürückgegeben werden Dir die Namen der offenen Fenster als Text. Kann man aber entsprechend umbauen das Du die Anzahl erhälst


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);
}





Grüße
Titel: Antw:Anzahl offener Fenster
Beitrag von: marvin78 am 15 Oktober 2015, 08:13:03
Das mit dem Namen ist gut, Fensterkontakte haben jedoch in der Regel einen identischen TYPE oder zumindest subType. Dann geht, geht auch ohne ähnliche Namen, sowas:


my @monitored=devspec2array("subType=threeStateSensor:FILTER=STATE!=closed");
Titel: Antw:Anzahl offener Fenster
Beitrag von: CoolTux am 15 Oktober 2015, 08:33:47
He, das ist ja noch besser. Danke Dir Marvin. Leider habe ich noch einen Türkontakt als Fensterkontakt für mein Dachfenster. Daher muß ich leider bei Namen bleiben.


Grüße
Titel: Antw:Anzahl offener Fenster
Beitrag von: Mitch am 15 Oktober 2015, 10:17:15
Nachdem ich FHT und HM gemischt habe, trigger ich auf window

my @@monitored=devspec2array("window=open");
Titel: Antw:Anzahl offener Fenster
Beitrag von: marvin78 am 15 Oktober 2015, 10:20:29
Zitat von: CoolTux am 15 Oktober 2015, 08:33:47
Türkontakt
Was ist das für ein Türkontakt? Meine HM-Türkontakte haben auch den subType threeStateSensor.

Zur not kann man sich aber auch ein userAttr basteln und das in devspec abfragen.
Titel: Antw:Anzahl offener Fenster
Beitrag von: Mitch am 15 Oktober 2015, 10:23:28
Ich habe auch einen FS20 Türkontakt, der hat nur on/off.
Ich gebe ihm einfach mit setreading das Reading window open/closed
Titel: Antw:Anzahl offener Fenster
Beitrag von: CoolTux am 15 Oktober 2015, 10:31:04
Zitat von: marvin78 am 15 Oktober 2015, 10:20:29
Was ist das für ein Türkontakt? Meine HM-Türkontakte haben auch den subType threeStateSensor.

Zur not kann man sich aber auch ein userAttr basteln und das in devspec abfragen.

Haha, jetzt wo Du es erwähnst. Das hat meiner in der Tat auch. Aber geht dennoch nicht, habe noch einen Türkontakt als Türkontakt   ;D
Titel: Antw:Anzahl offener Fenster
Beitrag von: marvin78 am 15 Oktober 2015, 10:34:34
Naja. Mann kann ja zum einen den Regex erweitern

my @monitored=devspec2array("(subType=threeStateSensor|NAME=TUERKONTAKT):FILTER=STATE!=closed|");
oder, wie schon erwähnt, für solche Devices eigene userAttribute definieren. Gute Namensgebung ist natürlich aber auch nicht falsch.
Titel: Antw:Anzahl offener Fenster
Beitrag von: Sirel am 29 November 2016, 03:40:32
Hallo zusammen,
ich möchte dieses Thema noch einmal wiederbeleben.
Ich möchte ein alle geschlossenen Fenster in einem Raum herausfinden. Der zu durchsuchende Raum soll aus einem Dummy entnommen werden. Es sollen auch 2 Räume durchsucht werden können.
Ich scheitere jetzt an meiner Abfrage:

sub statusFensterOffen() {
my @monitored=devspec2array("NAME=FTK_.*:FILTER=room=ReadingsVal("test";"Etage","na"):FILTER=STATE!=open");
my $cnt_devs=@monitored;
my $i = 0;
my $msgtext = "";
foreach(@monitored) {
        $msgtext .= ReadingsVal($_,"Fenster",$_);
if ($i <= $cnt_devs - 2) {
  $msgtext .= ",";
}

$i++;
fhem ("set $msgtext Runter") if ($cnt_devs > 0);
}

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

Ich erhalte immer eine Fehlermeldung beim abspeichern.

Hat jemand eine Idee, wie ich das lösen kann?

Vielen Dank und Grüße,
Max
Titel: Antw:Anzahl offener Fenster
Beitrag von: Benni am 29 November 2016, 04:59:01
Zitat von: Sirel am 29 November 2016, 03:40:32
Ich erhalte immer eine Fehlermeldung beim abspeichern.

Die da lautet?
Titel: Antw:Anzahl offener Fenster
Beitrag von: Sirel am 29 November 2016, 08:04:55
Hi Benni,
die Meldung lautet:
Zitatsyntax error at ./FHEM/99_fenster_check_myUtils.pm line 21, near ""NAME=FTK_.*:FILTER=room=ReadingsVal("test" Global symbol "@monitored" requires explicit package name at ./FHEM/99_fenster_check_myUtils.pm line 22.

Viele Grüße,

Max
Titel: Antw:Anzahl offener Fenster
Beitrag von: frank am 29 November 2016, 09:10:41
Zitatmy @monitored=devspec2array("NAME=FTK_.*:FILTER=room=ReadingsVal("test","Etage","na"):FILTER=STATE!=open");
Titel: Antw:Anzahl offener Fenster
Beitrag von: Sirel am 29 November 2016, 19:32:41
Hi Frank,

danke für die Korrektur. Das hat das Problem jedoch nicht gelöst. Ich erhalte weiterhin die gleiche Fehlermeldung.

Irgndwas habe ich noch falsch eingetippt... Hast Du noch eine Idee?

Viele Grüße,
Max

PS:
Stelle die Frage auch noch mal bei Anfängerfragen ein!
Titel: Antw:Anzahl offener Fenster
Beitrag von: Sirel am 29 November 2016, 20:07:30
So funktioniert es:

my @monitored=devspec2array("NAME=FTK_.*:FILTER=room=(Erdgeschoss||Obergeschoss):FILTER=STATE!=open");

Komisch...

Max
Titel: Antw:Anzahl offener Fenster
Beitrag von: stromer-12 am 29 November 2016, 20:09:28
my @monitored=devspec2array("NAME=FTK_.*:FILTER=room=".ReadingsVal("test","Etage","na").":FILTER=STATE!=open") ;
Titel: Antw:Anzahl offener Fenster
Beitrag von: Benni am 29 November 2016, 20:57:56
https://forum.fhem.de/index.php/topic,61660.msg530896.html#msg530896