Anzahl offener Fenster

Begonnen von Murphycss, 14 Oktober 2015, 15:48:36

Vorheriges Thema - Nächstes Thema

Murphycss

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

Ellert

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

rapster

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

CoolTux

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
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

marvin78

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

CoolTux

#5
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
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

Mitch

Nachdem ich FHT und HM gemischt habe, trigger ich auf window

my @@monitored=devspec2array("window=open");
FHEM im Proxmox Container

marvin78

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.

Mitch

Ich habe auch einen FS20 Türkontakt, der hat nur on/off.
Ich gebe ihm einfach mit setreading das Reading window open/closed
FHEM im Proxmox Container

CoolTux

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
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

marvin78

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.

Sirel

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

Benni

Zitat von: Sirel am 29 November 2016, 03:40:32
Ich erhalte immer eine Fehlermeldung beim abspeichern.

Die da lautet?

Sirel

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

frank

Zitatmy @monitored=devspec2array("NAME=FTK_.*:FILTER=room=ReadingsVal("test","Etage","na"):FILTER=STATE!=open");
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html