Ankündigung

Einklappen
Keine Ankündigung bisher.

Anwesenheitserkennung per WLAN

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Anwesenheitserkennung per WLAN

    Hallo!

    Ich habe mittlerweile meine Anwesenheitserkennung per WLAN realisiert, dabei gab es bei mir das Problem, dass sporadisch die Funktion sh.tools.ping() false lieferte, obwohl das Gerät im Netz aktiv war.

    Gelöst hab ich das indem ich den aktuellen Wert abfrage und beim Wechsel von An- zu Abwesenheit den Ping mit einer kurzen Pause nochmal ausführe, beim Großteil der Wiederholungen kommt die Antwort dann beim 2. Versuch, spätestens jedoch beim 3. Versuch (ausser man ist natürlich wirklich weg).

    Zusätzlich wird noch eine Statusnachricht verschickt, wenn der letzte das Haus verläßt und noch Licht an oder die Fenster auf sind (Auszug).

    Die IP und Rufnummern hab ich in der items.conf hinterlegt. Wir nutzen ausschliesslich Telefone mit Android, ich habe gelesen, dass das Ganze mit Iphones nicht funktioniert, da diese im Standby das WLAN (zwischenzeitlich) deaktivieren, müsste man halt probieren.

    Bei mir funktioniert es damit sehr gut, vielleicht hilft es ja noch jemanden.

    Grüße
    David

    Code:
    #!/usr/bin/env python3
    
    #Statusnachricht zusammensetzen
    def statusmessage(sh):
        antwort = ""
    
        if sh.Fenster() == 1:
            antwort += "Fenster offen, "
    
        if sh.Licht() == 1:
            antwort += "Licht an, "
    
        return antwort;
    
        pingCarla = sh.tools.ping(sh.Anwesenheit.Carla.ip())
    
        #Carla war da und ist jetzt weg
        if sh.Anwesenheit.Carla() == 1 and pingCarla == 0:
            i = 0
            while i <= 3:
                pingCarla = sh.tools.ping(sh.Anwesenheit.Carla.ip())
                logger.info("Ping Carla {0}/3 - result {1}.".format(i, pingCarla ))
    
                if pingCarla == 1:
                    logger.warn("Ping Carla {0}/3 - result {1}.".format(i, pingCarla ))
                    break
                else:
                    i = i + 1 
                    time.sleep(5)
    
            sh.Anwesenheit.Carla(pingCarla )
            if pingCarla == 0:
                logger.warn("Carla war da und ist jetzt weg.")
    
                #wenn Carla als letztes geht, 
                #Warnung verschicken, bei offenen Fenster bzw Licht an
                message = statusmessage(sh)
                if sh.Anwesenheit() == 0 and message != "":
                    #Alarm Meldung per Whatsapp absetzen
                    sh.whatsapp(message, sh.Anwesenheit.Carla.whatsapp())
    Grüße
    David

    #2
    Hallo David,

    danke für das Beispiel.
    Wie sind deine Erfahrungen hiermit? Funktioniert die Erkennung zuverlässig?
    Ich hätte jetzt Sorgen, dass die Geräte sich nach einer Weile in den Standby verabschieden und dann auch nicht mehr auf einen Ping reagieren?

    Gruß,
    Hendrik

    Kommentar


      #3
      Hallo Hendrik,

      beim Android kannst Du einstellen, dass das WLAN immer an bleibt. Dann funktioniert das auch zuverlässig.

      Gruß, Waldemar
      OpenKNX www.openknx.de

      Kommentar


        #4
        Hallo Hendrik,

        beim iPhone war es früher so (ob es heute noch so ist, habe ich nicht getestet), dass WLAN auch immer erreichbar war, wenn man unter iTunes einstellte, dass das Smartphone über WLAN gesynced werden kann.

        Gruss Andreas

        Kommentar


          #5
          Zitat von henfri Beitrag anzeigen
          Hallo David,

          danke für das Beispiel.
          Wie sind deine Erfahrungen hiermit? Funktioniert die Erkennung zuverlässig?
          Ich hätte jetzt Sorgen, dass die Geräte sich nach einer Weile in den Standby verabschieden und dann auch nicht mehr auf einen Ping reagieren?

          Gruß,
          Hendrik

          Insgesamt bin ich sehr zufrieden mit der Lösung, ich habe anfangs relativ lange mit Totzeiten experimentiert, es dauert von Handy zu Handy unterschiedlich lange, bis es sich im WLAN einbucht. Mittlerweile schalte ich den Alarm beim Zugang durch die Haustür eine gewisse Zeit aus und pinge währenddessen öfters die angelegten Handies an, damit vermeide ich früher oft aufgetretene Fehlalarme.

          Die Statusbenachrichtigung per Whatsapp funktioniert super, nachdem ich das Whatsapp Plugin zweimal eingefügt habe, einmal direkt und einmal per CLI, weil bei CLI das senden zuverlässiger klappt.

          Grüße
          David

          Kommentar

          Lädt...
          X