Anwesenheit erkennen mit FHEM über WLAN

UPDATE: Die unten beschriebene Methode funktioniert seit dem Update der Fritzbox nicht mehr, da FHEM nicht mehr auf der Fritzbox läuft.

 

 

Um verschiedene Abläufe im Haus oder der Wohnung automatisch ablaufen zu lassen, ist es erforderlich das die Haussteuerung weiß, ob überhaupt jemand zu Hause ist.

Es gibt unterschiedliche Wege dies zu realisieren:

  1. Man drückt einen Taster beim verlassen oder ankommen im Haus
  2. Ausschließlich Zeitgesteuert
  3. Erkennung über Bewegungsmelder
  4. Erkennung über Bluetooth
  5. Erkennung über WLAN

Bei den ersten 3 Möglichkeiten ist eine zuverlässige Erkennung ausgeschlossen, da man z.B. vergessen könnte den Taster zu betätigen, ändert sich etwas im Tagesablauf funktioniert es Zeitgesteuert auch nicht mehr oder man schläft auf dem Sofa ein dann bringt der Bewegungsmelder auch nichts.

Die Bluetooth Variante ist die edelste der Lösungen, da damit sogar eine raumbezogene Steuerung möglich ist. Allerdings auch die teuerste, da in jeden Raum ein RaspberryPI muss.

Die Erkennung über WLAN ist die einfachste, zuverlässige Lösung die sich direkt nutzen lässt um zu überprüfen ob jemand zu Hause ist oder nicht.

Voraussetzungen:

  • Funktionierender FHEM auf Fritzbox
  • Smartphone mit aktiviertem WLAN
  • Grundverständnis über FHEM und Begriffe wie Dummy-Device, notify, Watchdog, etc.

 

Da wir zwei Personen im Haushalt sind, wäre es zu umständlich in sämtlichen Kommandos immer die Anwesenheit von dem einen oder dem anderen abzufragen. Daher läuft diese Überprüfung in einem AT-Skript, welches dann einen Dummy auf „1“ für Anwesend oder „0“ für Abwesend schaltet. Dieser Wert „Anwesenheit“ lässt sich dann später in anderen Skripten auswerten.

Zuerst muss jedes Smartphone einzeln über das PRESENCE Modul von FHEM abgefragt werden. Dies geht entweder über ein Ping an die IP-Adresse des jeweiligen Smartphones, oder direkt über die angemeldeten WLAN-Geräte auf der Fritzbox. Letztere Methode ist zuverlässiger, da z.B. iPhones nach einer gewissen Zeit der inaktivität nicht mehr auf Ping-Anfragen antworten und damit als „Abwesend“ gekennzeichnet werden.

Über folgenden Befehl wird das Presence-Device mit dem Namen „Jan“ in FHEM angelegt:

Was geschieht hier?

FHEM fragt auf der Fritzbox alle 180 Sekunden ab ob das WLAN Gerät mit dem Namen „HTCOne“ wieder anwesend ist. Wenn das Gerät anwesend ist, wird nur alle 360 Sekunden geschaut ob es noch da ist.

Das gleiche machen wir mit dem zweiten Gerät.

Nun haben wir zwei PRESENCE-Geräte in FHEM die den Wert „present“ oder „absent“ haben können.

Anwesenheit der Geräte
Anwesenheit der Geräte

Als nächstes brauchen wir das Dummy Device „Anwesenheit“ welches den Wert 1 für anwesend oder 0 für abwesend einnimmt.

Nun kommt das Skript welches überprüft ob eines oder beide Geräte anwesend sind. Ist Jan oder Kristina anwesend, wird der Dummy „Anwesenheit“ auf 1 gesetzt. Ist niemand anwesend wird der Wert auf 0 gesetzt.

Dies habe ich über ein AT-Device gelöst, welches im Minutentakt überprüft ob Jan oder Kristina „present“ oder „absent“ sind.

Die geschweifte Klammer am Ende der Zeile ist wichtig, da wir gleich PERL-Code einfügen. Dazu einfach nach dem Anlegen auf das „DEF“ Feld klicken um weiteren Code einzufügen.

DEF-Button klicken
DEF-Button klicken

Da bei mir dieses Skript noch weitere Aufgaben übernimmt, habe ich das für diese Aufgabe nicht erforderlich mal raußgeschwärzt.

Im DEF-Feld muss nun folgendes stehen:

Was geschieht hier?

Jede Minute läuft der Perl-Code und macht folgendes:

Wenn die Geräte „Jan“ und „Kristina“ den Wert „absent“ haben wird der Dummy „Anwesenheit“ auf „0“ gesetzt, aber nur wenn der Wert nicht bereits „0“ ist. Letzteres verhindert das der Wert jede Minute erneut auf 0 gesetzt wird und später vorhandene Notifys auf die Wertänderung im Minutentakt mitreagieren.

Sollten nicht beide Geräte „absent“ sein, läuft der else-Befehl ab. Dieser setzt den Dummy „Anwesenheit“ auf „1“, allerdings nur wenn dieser vorher auf „0“ war. Auch hier soll verhindert werden, dass der Dummy jede Minute wieder den Wert 1 bekommt, obwohl er vorher schon 1 war.

 

Da wir nun eine funktionierende Anwesenheitserkennung haben, können wir diesen Wert in allen späteren Skripten verwenden um verschiedene Aktionen bei Anwesenheit ausführen zu lassen.

Ich lasse z.B. meine Heizkörperthermostate damit bei „Anwesenheit = 0“ auf 17 Grad herunterregeln und bei „Anwesenheit = 1 „auf 21 Grad heraufregeln. Auch schließt das Keymatic die Haustür automatisch ab, wenn der Wert Anwesenheit auf 0 gesetzt wird.

Ich hoffe der erste Beitrag hat euch gefallen und war verständlich. Solltet Ihr Fragen oder Anregungen haben, schreibt mir diese doch bitte in die Kommentare!

VN:F [1.9.22_1171]
Rating: 4.6/5 (8 votes cast)
Anwesenheit erkennen mit FHEM über WLAN, 4.6 out of 5 based on 8 ratings

12 Kommentare

  1. Das funktionierende Script:

    +*00:01:00 {
    if (Value(„Handy1“) eq „absent“ && Value(„Handy2“) eq „absent“) {
    fhem(„set Anwesenheit 0“) if (Value(„Anwesenheit“) ne „0“);;
    }
    else {
    fhem(„set Anwesenheit 1“) if (Value(„Anwesenheit“) eq „0“);;
    }
    }

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  2. Hallo,
    hab jetzt eine ganze Zeit gespielt, ich suche nach dem Befehl wie ich mit dem jetzigen Wert ( 0 / 1) auch etwas schalten kann.

    z.b. meinen Onkyo Receiver. Die Erkennung funktioniert super über WLan, möchte jetzt nur ein on oder off senden.
    Ein Beispiel wäre super.

    Gruß
    Roland

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  3. Läuft bei mir jetzt auch. Vielen Dank.
    An drei Dingen musste ich schrauben:
    1. Es fehlten zwei Semikolon in der dritten Zeile
    2. Die Anführungszeichen löschen und neu setzen.
    3. Der Dummy ändert seinen Wert nur in 0 oder 1, wenn er vorher auch auf 0 oder 1 steht. Nach dem Anlegen hat er aber keinen dieser Werte (weder 0 noch 1). Daher funktionierte das bei mir erst nach „set Anwesenheit 1“

    Danke für die Anleitung

    VA:F [1.9.22_1171]
    Rating: +3 (from 3 votes)
  4. Hallo,

    durch die Videos bin ich doch schon ein gutes Stück in Fhem weitergekommen Danke !!! nur mit der Anwesenheitserkennung habe ich so meine Probleme. Das Handy wird zuverlässig erkannt nur der Dummy Anwesenheit zeigt nur drei ??? ich steh auf dem Schlauch.

    Gruß Michael

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  5. Hallo Jan,

    Bei mir läuft FHEM auf einem Raspberry Pi.
    Kann dieses Projekt auch mit dieser Konfiguration durchgeführt werden?
    LG
    Charly

    VA:F [1.9.22_1171]
    Rating: +1 (from 1 vote)
    1. Jein. Wenn du noch eine Fritz Box hast auf der FHEM laufen kann, kannst du die beiden FHEM Instanzen (Auf RPI und auf Fritzbox) mit dem FHEM2FHEM Modul verbinden.

      Ob die 7270 dazu gehört weiß ich leider nicht.

      Für das oben genannte Senario gibt es hier ein Tutorial: http://www.meintechblog.de/2013/11/zwei-fhem-server-verbinden-fritzbox-anwesenheitserkennung-auf-dem-raspberry-pi-nutzen/

      Auf der Fritzbox läuft dann tatsächlich nur die Anwesenheitserkennung über das Presence Modul. Der Rest passiert auf dem Raspberry.

      VN:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
  6. Hallo,
    Hab es auch ausprobiert…und Läuft nicht .
    Es liegt an den „Anführungszeichen“ die sind (UNICODE Formatiert)du musst alles Kopieren, und im Texteditor bearbeiten.

    mfg Marcel

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Hallo Marcel.

      Danke für den Hinweis.
      Kannst du mir einen Tipp geben wie ich das hier auf der Seite bearbeiten kann, damit es „Out-Of-The-Box“ mit Copy & Paste funktioniert?

      VN:F [1.9.22_1171]
      Rating: 0 (from 0 votes)
  7. Hallo.
    Ich hab das ausprobiert.
    Das Script läuft auch jede Minute, aber der Wert des Dummies verändert sich nicht. Weder von 0 auf 1 bei einem „present“, noch von 1 auf 0 bei zwei „absent“.
    Dabei werden die Devices je nach Anwesenheit zuverlässig gefunden, bzw. nicht gefunden.

    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
    1. Das ist nun zwar schon lange her, aber du musst die & durch ein & ersetzen, dann läuft auch die Anwesenheitserkennung. Außerdem ist da ein Leerzeichen zu viel vor dem unteren fhem (; ich habe jetzt nicht nachgeprüft, ob das was ausmacht.

      VA:F [1.9.22_1171]
      Rating: 0 (from 0 votes)

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.