FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Eddy am 08 November 2017, 09:09:49

Titel: Prüfen der Türen und Fenster
Beitrag von: Eddy am 08 November 2017, 09:09:49
Hallo Leute,

ich bin seit einigen Wochen dabei mein SmartHome weiter auszubauen und habe mittlerweile eine eigene kleine Alarmanlage am laufen. Jetzt im täglichen Betrieb fallen natürlich viele Verbesserungsmöglichkeiten auf. Aktuell möchte ich beim aktivieren alle Türen und Fenster auf deren Status abfragen und dies per Pushover an mein Smartphone schicken. Aktuell geht es hier ledeglich um die Routine zur Ermittlung der Türen und Fenster. Den Rest bekomme ich hin.

Alle states die nicht "closed" entsprechen sollen per Pushover gesendet werden.
Mein Beispiel schreibt erstmal nur in die Log Datei damit ich sehe, dass das ganze Konstrukt funktioniert.

sub validateDoorAndWindow(){
#my @devices = devspec2array("TYPE=CUL_HM");
my @devices = devspec2array("TYPE=CUL_HM");
#my $msgText = "";
#my $numberOfDevices = 0;

foreach(@devices)
{
my $name .= AttrVal($_,"NAME",$_)." ";
my $state .= ReadingsVal($_,"state",$_)." ";
if ($name =~ /^Fenster/ or $name =~/^Tuer/){
if ($state =~ /open/){
Log 1, ("Name: ($name), Value: ($state)");
}
}
}


Folgende Fragen:
1. kann ich hier weitere Bedingungen mitgeben?
my @devices = devspec2array("TYPE=CUL_HM");

2. Ich finde leider keine Beschreibung der Funktionen. Kann mir jemand im Detail die einzelnen Parameter erklären?
my $name .= AttrVal($_,"NAME",$_)." ";

In meiner Logdatei sind aktuell von jeder Tür und von jedem Fenster 3 Einträge. Das kann ich mir nicht erklären. Weiß jemand warum?
Titel: Antw:Prüfen der Türen und Fenster
Beitrag von: CoolTux am 08 November 2017, 09:18:38
Du kannst das ganze in der Commandline von FHEMWEB testen. Eine Funktionsbeschreibung brauch es, die Funktion beschreibt sich selbst anhand des Codes.


{ devspec2array("TYPE=CUL_HM") }

Gibt die Anzahl der Arrayeinträge an und somit die Anzahl gefundener Geräte vom TYPE CUL_HM
Das sind aber eine Menge.
Versuche mal nach model zu suchen

{ devspec2array("model=HM-SEC-SC:FILTER=STATE!=closed") }

Gibt eine Anzahl aller Fensterkontakte mit dem Status ungleich closed
Titel: Antw:Prüfen der Türen und Fenster
Beitrag von: DeeSPe am 08 November 2017, 09:31:22
Du könntest Dir auch mal das Modul HOMEMODE (https://fhem.de/commandref.html#HOMEMODE) ansehen, dort ist auch eine solche Funktion bereits integriert.

Ansonsten, wie schon gesagt, kann man über die Angabe der richtigen devspec alles vorfiltern.

Gruß
Dan
Titel: Antw:Prüfen der Türen und Fenster
Beitrag von: Eddy am 08 November 2017, 10:31:28
Ok, funktioniert super. Vielen Dank erstmal!

HomeMode werde ich mir bei Gelegenheit mal genauer ansehen. Scheint recht mächtig zu sein.
Titel: Antw:Prüfen der Türen und Fenster
Beitrag von: skydns am 12 November 2017, 00:27:12
Bei mir sieht das ganze so aus:

sub FHTTK_status {
my @fhttks = devspec2array("TYPE=CUL_HM");
my @wopen = ();
foreach(@fhttks) {
  my $fhttk_window = ReadingsVal($_, "state", "nA");
  push (@wopen,$_) if ($fhttk_window eq "open" );
}
my $num_wopen = @wopen;
my $resultstring='';
if ( $num_wopen gt 0 ) {
  $resultstring="Folgende Türen sind noch offen:\n\n";
  foreach(@wopen) {
  my $ALIASNAMEPUSH = AttrVal($_ ,'alias',$_ );
   $resultstring.="- ".$ALIASNAMEPUSH."\n";
   Log 3, "TÜRKONTAKTSTATUS: ". $ALIASNAMEPUSH ." ist noch offen";
  }
} else {
  $resultstring="Alle Türen sind derzeit geschlossen.";
}
return $resultstring;
}



Du kannst mal nach FHTTK im FHEM-Wiki suchen, das Skript habe ich dann an meine Bedürfnisse angepasst.
Funktioniert einwandfrei.

In Verbindung mit Anwesenheitserkennung und dem Modul Roommates kannst du dann den Status auch noch mal prüfen lassen, wenn alle das Haus verlassen haben.

Gruß Marco