[GELÖST] Erkennung Fenster offen mit Benachrichtigung welches

Begonnen von CoolTux, 12 März 2015, 06:27:07

Vorheriges Thema - Nächstes Thema

CoolTux

Hallo und guten Morgen,

Da dies mein erster Post ist, werde ich mich mal kurz vorstellen. Ich bin der Leon und beschäftige mich seit 3 Wochen mit Heimautomatisierung im Allgemeinen und FHEM in Verbindung mit Homematic im Speziellen. Ein paar kleine Sachen habe ich auch schon am laufen. Sensorgesteuerter Luftbefeuchter (weil meine Frau gerne einen haben wollte), Anwesenheitserkennung (weil die Kinder stehts und ständig vergessen das Licht aus zu machen) und Erkennung ob die Waschmaschine fertig ist (weil ich das cool fand :-) ).

Wer sonst noch was wissen will kann mich gerne einfach fragen.



So und nun zu meiner Frage/Problem.

Voraussetzungen: Erkennung durch das Residenzmodul wenn keiner mehr zu Hause ist (läuft), daraus folgend wird geschaut ob die Eingangstür offen und oder ein Fenster offen ist durch das Structurmodul (läuft). Nun möchte ich das bei Status offen geschaut wird welches Device offen ist und wer als letztes gegangen ist und daraus soll eine Vernünftige Meldung über Pushover erfolgen.
Dabei ist darauf zu achten den Aufwand/die Unübersichtlichkeit/unnötige Dummy Devices so gering wie möglich zu halten. Hat da jemand einen Denkansatz für mich.

Meine Devices für die Fenster/Türenkontakte haben alle ein Kontakt im Namen. Es muss doch möglich sein in ein Notify eine Abfrage mit zu befüllender Variable ein zu bauen welches schaut wo ein Kontakt den Status Open hat.


{my $openDEV (Value(.*Kontakt.*:state.open))}


kann man das so nach einem if als weiteren Befehl in ein notify einbauen?
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

hexenmeister

Ich würde in einem Notify (Eingangstür) eine Perl-Routine aufrufen, die die in Frage kommende Devices durchgeht (ob dabei in eine Struktur, eine feste Liste, durch alle Gerätschaften geschaut wird, ist nebensächlich) und entsprechende Meldungen ausgibt.


CoolTux

Vielen Dank für die Antworten und Lösungsansätze. Scheint ja doch etwas komplexer zu sein. Werde mich die Tage mal damit auseinander setzen.   ;D


Grüße
Leon
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

Elektrolurch

Nicht komplex, nur eine Herausforderung...
Daher hier noch ein paar Tipps:

foreach my $d (keys %defs)
{
# lläuft durch alle fhem-Objekte durch

if($d->{NAME} =~m/ Kontakt oder was den Namen als Fenster kennzeichnet
{
# offen?
if($d->{STATE} eq 'offen')
oder
if(Value($d) eq 'offfen')
# habe kein HM und weiß daher nicht wie offen heißt

my $d->{NAME};
# Nenne das Fenster per alias sinnvoll...

my $klarnamen =  AttrVal($name,'alias','Name nicht gesetzt');
# Nun kann mit klarnamen die Mail oder sonst was gesendet werden.

} # if Fenster
} # end foreach

Viel Spaß

Elektrolurch
configDB und Windows befreite Zone!

justme1968

statt sich durch die fhem internas zu hangeln ist es manchmal sinnvoller sich mit einem list und passendem devspec/filter direkt die namen der devices geben zu lassen auf die die von dir gewünschte Bedingung zutrifft.

gruß
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Elektrolurch

Klar geht auch.

Wenn er aber devspec2array aufruft, bekommt er auch eine Liste und muss die mit foreach oder while aubarbeiten.
Ich wollte bei den internals auch nur mal zeigen, dass es die gibt.

configDB und Windows befreite Zone!

justme1968

er soll ja garnicht devspec2array aufrufen sondern das ganz normale list. da bekommt er einen string den er direkt mailen kann.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

CoolTux

@Elektrolurch
Vielen Dank für Dein Codebeispiel.

@all
Puh, mal langsam bitte. Bin doch etwas verwirrt. Bedeutet Eure Aussage mit den Internals das ich keine zusätzliche Perlroutine brauche? Wie gesagt am liebsten würde ich es mit vorhandenen FHEM Möglichkeiten lösen.

Habe nun schon so viel geschaft was ich an Anforderung hatte. Wahnsinn was FHEM von Hause aus durch die Community so kann.

@Elektrolurch
Ich glaube ich versteheh was Du meinst. Und das kann ich dich ohne zusätzliche Routine machen wenn ich das korrekt verstehe. Ich muß mal bisschen am WE rumprobieren.
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

Hallo und guten Morgen. Ja ja ich weiß, Ewigkeiten her und so  ;D , aber ich habe eine für mich befriedigende Lösung finden können. Hat nur etwas gedauert. Mann hat ja noch andere Baustellen.

99_myUtils.pm


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

}


Und ein entsprechendes Notify könnte so aussehen


my $condition=ReadingsVal("weatherStahnsdorfProplanta","fc1_weatherMorning","Weltuntergang");
my $fensterOffen=statusFensterOffen();

if ($fensterOffen eq "") {
     fhem "set FritzBoxTuxNetDSL01 ring 610 say:Hier gibt es nichts zu sehen bitte weiter gehen";
  } else {
     fhem "set FritzBoxTuxNetDSL01 ring 610 say:Achtung,$fensterOffen noch offen.";
  }


Thema für also abgeschlossen


LG
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