Beiträge von ostfriese

VPN/Proxy erkannt

Es scheint, dass Sie einen VPN- oder Proxy-Dienst verwenden. Bitte beachten Sie, dass die Nutzung eines solchen Dienstes die Funktionalität dieser Webseite einschränken kann.

    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:

    So, mal bitte ausprobieren:

    Das Skript sollte auf dem Shelly Pro 4 PM installiert werden. Die Config habe ich schon mit deinen Angaben angepasst.

    Dieses Skript kann das:

    Dann brauchst du nur noch eine Möglichkeit, das Skript bei Sonnenaufgang zu starten und bei Sonnenuntergang zu beenden.

    apreick Andreas, gibt es eine Möglichkeit, URL's per Schedule aufzurufen, oder muss ich dafür auch noch ein Skript bauen?

    Code
    let ipremote = "192.168.178.26" // IP address of shelly which control the relay of the boiler
    let commandon = "cm?cmnd=Power1%20On" // Command for turn on
    let commandoff = "cm?cmnd=Power1%20Off" // Command for turn of


    Code
    let ipremote = "192.168.178.26"; // IP address of shelly which control the relay of the boiler
    let commandon = "cm?cmnd=Power1%20On"; // Command for turn on
    let commandoff = "cm?cmnd=Power1%20Off"; // Command for turn off

    Finde den Unterschied ;)

    Das Skript des TE basiert jedoch darauf, dass es auf EINEM Shelly läuft.

    Im Prinzip ist das ja so wie hier.

    Da deine Shelly verteilt, und auch noch verschiedene Generationen sind, ist das Holen der Temperaturwerte und das Schalten aber anders aufzubauen.

    Natürlich lässt sich das mit einem Skript umsetzen.

    Das ist dann aber ein speziell auf dein Problem angepasstes Skript.

    Will diesen Threat nicht kapern, deshalb warte ich mal die Antwort vom TE ab.

    Ich habe keine Rollladen.Das schreit ja nach Nachbesserung durch ein Skript ;)

    Schade, da ich nicht testen könnte, kann ich da nicht helfen.

    Ich habe gerade mal kurz meinen Plus 2 PM in den Cover Mode gesetzt. Kurzes Testskript zeigt,

    auch im Cover Mode werden alle Events (kurz, long, double) ausgelöst.

    Ich habe schon Shelly gekauft, die ich gar nicht direkt brauche, um Skripte dafür zu schreiben.

    Aber, Rollladen extra einbauen zu lassen, geht dann doch zu weit ;)

    Aber, wenn es denn möglich ist, wenigstens das Festhalte-Problem zu losen, ist das ja schon mal etwas.