Anwesenheitskontolle mit Gen2 Shelly (fertige Lösung)

There are 20 replies in this Thread which has previously been viewed 2,229 times. The latest Post (June 12, 2024 at 7:38 AM) was by Brendianer.

  • Ich habe mal ein Skript gebaut, welches eine funktionierende Anwesenheitserkennung auf einem beliebigen Gen 2 Shelly realisiert.

    Die Erkennung basiert darauf, dass die Geräte (z.B. Handys) sich im Wlan ein/ausloggen, in dem sich der Shelly mit dem Skript befindet.

    Das Skript ist getestet und macht genau, was es soll. Sollte es Probleme geben, basiert das auf Fehlern in eurem Netz, oder falschen Eintragungen in der Config.

    Z.B. brachte bei mir in einem AVM-Netz mit vielen Mesh-Repeatern das Update auf FRITZOS 7.57 eine entscheidende Verbesserung des Netzwerkes.

    Voraussetzung ist ein Gen2 Shelly mit guter Wlan/Lan Versorgung und (WICHTIG) der FW 1.0.3.

    Ich erkläre mal die Funktions- und Vorgehensweise:

    Als erstes sollte man dafür sorgen, dass die Handys eine feste IP im Netz haben und das Wlan fehlerfrei funktioniert.

    Alle Ips der Handys werden in der Config unter ips in den eckigen Klammern und in Anführungszeichen durch Kommata getrennt eingetragen. Als nächstes werden exakt gleich viele Namen, nach dem selben Schema in names eingetragen.

    (Die Anzahl muss unbedingt gleich der Anzahl der IP-Adressen sein.)

    Die Reihenfolge bestimmt die Zuordnung Ip zu Name. (Je mehr Ips, desto träger funktioniert die Erkennung)

    Das Skript gibt in der Konsole die An/Abwesenheiten der Handys im Netz mit den Namen aus.

    Außerdem reagiert das Skript auf zwei verschiedene Arten:

    1.) Jemand oder keiner zu Hause.
    Wenn das letzte im Wlan eingebuchte Handy das Netz verlässt, wird die unter last_user_out_action angegebene URL (einmalig) aufgerufen.
    Umgekehrt wird, wenn sich das erste Handy wieder in das Wlan einbucht, die URL unter first_user_in_action (einmalig) aufgerufen.
    Für einen ersten Test, können dort erst einmal leere Anführungszeichen angegeben werden.

    Code
    last_user_out_action : "",
    first_user_in_action : "",

    2.) Individueller User kommt / geht.
    Jedem Handy kann eine individuell URL zugeordnet werden, die ausgelöst wird, wenn das Handy sich ein-, bzw. ausbucht. Die Anzahl MUSS genau
    so groß sein, wie die Anzahl der in ips angegebenen Ips. Die Reihenfolge bestimmt die Zuordnung.

    Für den ersten Test kann man auch hier leere Anführungszeichen verwenden.

    Hier ein Beispiel der Config für einen ersten Test mit 3 Usern:

    So startet man dann einen ersten Test und schaut, ob An/Abwesenheiten richtig erkannt werden.

    timeout gibt an, wie lange auf eine Antwort vom Handy gewatet wird, verbose bestimmt, wie gesprächig das Skript in der Konsole ist.

    buffer sagt aus, wie lange ein Handy nicht mehr "gesehen" werden muss, damit es als offline erkannt wird.

    Das dient dazu, das zum Beispiel ein schneller Wechsel des Handys von einem Repeater zum nächsten nicht gleich als Abwesenheit erkannt wird.


    Wenn alles läuft, dann könnt ihr die Action-URLs füllen und testen.

    Ideen für den Einsatz des Skriptes (Heizung, Licht, Alarm...) überlasse ich euch.

    Noch ein Tipp (Dank an @De kat ) Das Handy wird schneller erkannt, wenn man unter Entwickleroptionen

    die Option Drosselung der Wlan Suche ausschaltet (Android). Apple fasse ich nicht an ;)

    Hier das Skript:

    Kommentare zum elektrischen Anschluss meinerseits sind grundsätzlich zur Weitergabe an Fachpersonal gedacht und stellen eine theoretische Diskussionsgrundlage dar.

    Gruß aus Ostfriesland

    Michael

    Edited 2 times, last by ostfriese (February 19, 2024 at 1:32 AM).

  • Kurzes Update:

    Habe das jetzt mal 48 Stunden durchlaufen lassen.

    Keine einzige Fehlfunktion. Alle An/Abwesenheiten werden exakt angezeigt.

    Kommentare zum elektrischen Anschluss meinerseits sind grundsätzlich zur Weitergabe an Fachpersonal gedacht und stellen eine theoretische Diskussionsgrundlage dar.

    Gruß aus Ostfriesland

    Michael

  • Achtung Falle bei Android Devices!

    Klar, feste IP Adresse vergeben ist eine gute Idee! Wenn aber, wie bei mir, die feste IP an eine MAC Adresse gekoppelt ist und sich die MAC Adresse des Smartphones im WLAN jedesmal ändert, ist das weniger vorteilhaft für diese Anwesenheitserkennung. :cursing:

    Android hat ein Feature zur zufälligen Vergabe von MAC Adressen im WLAN. Es dient der Sicherheit und ist unter den Einstellungen für das jeweilige WLAN zu finden. Damit das Skript also funktioniert muss diese Funktion also deaktiviert werden.

  • Hallo Alle zusammen,

    nachdem ich mich nun seit einigen Tagen mit der Anwesenheitserkennung von "OSTFRIESE" beschäftigt habe, wende ich mich mit meinem Problem an das Forum. Ich habe die Konfig von Ostfriese mit meinen Daten ergänzt.

    Folgende soll geschehen:

    first_user_in_action: es soll ein Relay AUS geschaltet werden. ==> funktioniert

    last_user_out_action: es soll das Relay EIN geschaltet werden. ==> funktioniert

    In Abhängigkeit von obigen Relay soll mein Garagentor geschlossen werden, bzw. ein Schiebetor und das Garagentor geöffnet werden. ==> funktioniert

    Was leider nicht funktioniert sind die 6 schedueles (fett geschrieben), welche sich bei Abwesenheit EIN- und bei Anwesenheit AUS-schalten sollten.

    Ich hoffe es kann mir wer weiterhelfen und mir meinen Fehler zeigen.

    Schöne Grüße

    Michael


    //############################## Config ############################

    let Config = {

    ips: ["192.168.1.10"],

    names: ["Michael"],

    first_user_in_action : "http://192.168.1.229/relay/0?turn=off",

    last_user_out_action : "http://192.168.1.229/relay/0?turn=on",

    user_action_online : ["https://shelly-65-eu.shelly.cloud/scene/manual_r…auth_key=XXXXXX",

    "http://192.168.1.222/settings/relay/0?schedule=false",

    "http://192.168.1.214/settings/relay/0?schedule=false",

    "http://192.168.1.238/settings/relay/0?schedule=false",

    "http://192.168.1.218/settings/relay/0?schedule=false",

    "http://192.168.1.227/settings/relay/0?schedule=false",

    "http://192.168.1.233/settings/relay/0?schedule=false"],

    user_action_offline : ["https://shelly-65-eu.shelly.cloud/scene/manual_r…auth_key=XXXXXX",

    "http://192.168.1.222/settings/relay/0?schedule=true",

    "http://192.168.1.214/settings/relay/0?schedule=true",

    "http://192.168.1.238/settings/relay/0?schedule=true",

    "http://192.168.1.218/settings/relay/0?schedule=true",

    "http://192.168.1.227/settings/relay/0?schedule=true",

    "http://192.168.1.233/settings/relay/0?schedule=true"],

    timeout : 1,

    verbose : false,

    buffer : 30

    }

    //############################## Config end ############################

  • This threads contains 16 more posts that have been hidden for guests, please register yourself or log-in to continue reading.