Beiträge von eiche

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.

    Die durchaus interessante und auch wenig aufwändige Lösung von MIHO besitzt folgendes Verhalten nicht.

    Wenn der Motion die Lampe für eine gewisse Dauer einschalten lässt und der Nutzer dann erst den Schalter betätigt, soll die Lampe nicht nach Ablauf dieser Dauer ausgeschaltet werden.

    Wenn dieses Verhalten gewünscht ist, dann kann dies ausschließlich auf dem vom Motion angesteuerten Gerät (bspw. Shelly Plus 1) implementiert werden. Wenn dieses zugleich der Schaltaktor ist, implementiert mein Skript ein solches Verhalten und mehr, wenn meine Anleitung beachtet wird.

    Welcher Shelly?

    Hier ist der empfangende (ggf. schaltende) Shelly gemeint.

    Ist Eco Mode aktiviert?

    Dies gilt für WLAN, es könnte aber zugleich Bluetooth betreffen. Das kann vermutlich thgoebel beantworten.

    Dann wäre dieser Eco Mode zu deaktivieren, um eine größere Feldstärke zu erreichen.

    Mit Blu Shelly kenne ich mich nicht aus.

    Wie weit ist der elektronische Sensor vom Empfangsgerät (ein Shelly?) entfernt?

    Ich habe für so etwas ein Skript erstellt, welches nach dem Start die wichtigsten Informationen ausgibt.

    Hierzu ist die Nutzung der Web UI (Web Browser mit IP Adresse des Plus 1) erforderlich.

    Das Skript ist in diesem Forum veröffentlicht.

    Einen Blu Motion konnte ich damit allerdings nicht testen, da ich keinen solchen habe.

    so dass man beim Verlassen austasten kann und der Blu Motion einen aber nicht wieder erfasst und das Licht wieder anschaltet.

    Solches habe ich nicht im Skript implementiert. Ich könnte allenfalls mit einem Motion dafür experimentieren.

    Dann müsste das Skript mit einem Einschalten per Taster ein späteres, temporäres Ignorieren der Motion Nachricht aktivieren. Dieses Ignorieren würde mit dem Ausschalten per Taster bspw. für 10s aktiviert. So etwas ist möglich und vermutlich auch interessant.

    NIEMALS zeigt er mir rechts oben die Zeit an

    und lässt mich auch nichts in den schedules ändern / speichern ?!

    Ein Shelly hat keine batteriegepufferte Uhr. Er ist also nach seinem booten zwecks Zeitsynchronisation kurzzeitig auf den Zugriff auf einen Zeitserver angewiesen.

    Stelle somit sicher, dass der Shelly Zugriff auf das Internet hat! Da er sicherlich in dein WLAN eingebunden ist (Cloud), wird dies gegeben sein.

    Zeitpläne müssen trotzdem speicherbar sein.

    Normalerweise kann man die Zeitzone und die Geo-Daten automatisch bestimmen lassen.

    Reboots hasst du sicher einige durchgeführt, oder?

    Wenn dann irgendwann Zeitpläne gespeichert sind, werden diese vermutlich passend wirksam.

    Nun noch die hoffentlich ;) letzte Version des Skripts.

    Vorweg die Anleitung

    Action URLs auf dem Motion: Keine anderen als die aufgelisteten!

    1. http://<IP Zieladresse>/script/<Skript Id>/on?<Dauer in Sekunden>
      Schaltet für die Dauer ein, wenn ausgeschaltet ist - für "Motion detected" geeignet.
    2. http://<IP Zieladresse>/script/<Skript Id>/on
      Schaltet dauerhaft ein, wenn ausgeschaltet ist - für "Motion detected" geeignet.
    3. http://<IP Zieladresse>/script/<Skript Id>/off
      Schaltet aus, wenn per Motion, d.h. per "on" (s.o.), eingeschaltet wurde - für "End of motion detected" geeignet.

    Action URL auf einem remote Button, bspw. Shelly i4 oder Shelly Button 1: Kein anderer URL!

    http://<IP Zieladresse>/script/<Skript Id>/toggle

    Verhalten des Skripts, wenn obige Anleitung befolgt wird

    Das automatische Ausschalten per Timer oder per "off" erfolgt ausschließlich, wenn per "on" (Motion-Anwendung) eingeschaltet wurde.

    Schaltet man per "toggle" (Button) ein, während bereits per "on" (Motion) eingeschaltet war, bleibt die Lampe an, auch wenn der Motion ein "off" sendet.

    Letzteres gilt bei jeder Quelle, die nicht per "on" einschaltet - also auch per angeschlossenem Schalter, wenn der Eingang als Schalter konfiguriert ist.

    Ein angeschlossener Button kann entweder nur umschalten (ein->aus, aus->ein) oder er muss als detached eingestellt werden und per Action obigen URL mit "toggle" nutzen.

    Die Bezeichnungen "on", "off" und "toggle" sind historisch aus der Weiterentwicklung entstanden. Insbesondere "toggle" ist hier nicht in jedem Fall wörtlich zu nehmen.

    Ich bin zuversichtlich, dass ich damit alle möglichen Kombinationen berücksichtigt habe.

    Das Skript

    Da bin ich raus, habe keine zwei Blu Button. Konnte nicht einmal den einen zum funktionieren bewegen.

    Da das Skript nicht sehr lang ist, täte ich ein zweites, gleiches Skript nutzen. Im zweiten Skript ist selbstverständlich die MAc Adresse des zweiten Blu Buttons einzutragen - und bei Bedarf andere URLs.

    Wenn das funktioniert, kann man noch das Skript genauer analysieren und ggf. zusätzliche Einträge in CONFIG sowie weitere Funktionen parallel zu den jetzigen zusätzlich einbauen.

    Das Skript beinhaltet sehr viel Code, um DAUs mitzuteilen, dass sie in CONFIG Sch... gebaut haben. Für die reine Funktionalität kann das Skript deutlich kürzer sein.

    Dann musst du mit dem Motion und dessen blind time experimentieren. Solange das Skript keine entsprechende Nachricht erhält, kann es nichts für dich tun.

    Hier ein Screenshot mit der Protokollierung per Skript.

    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.

    Es zeigt, dass der Timer für 11s gestartet wurde, die Quelle (source: motion) und dass eingeschaltet wurde (status: on).

    Es folgen zwei Retrigger (Timer started for 11 seconds) und schließlich das Ausschalten.

    Du kannst an den Uhrzeiten rechts erkennen, dass insgesamt 28s lang eingeschaltet war, wobei jede eintreffende Nachricht vom Motion mit 11s Dauer beaufschlagt ist.

    Der URL auf dem Motion zu obigem Screenshot lautet 'http://192.168.179.15/script/1/on?11'

    Du kannst ja auch im Motion zwei URL eintragen, einer zum Mini mit dem Skript und ein anderer welcher einen Shelly per HTTP Get und einer gewissen Dauer einschaltet. Es ist zu erwarten dass sich beide Schalt-Shelly gleich verhalten. Noch besser wäre ein Node-RED Flow zum untersuchen, wann der Motion die HTTP Requests gesendet hat. Zumindest sehr wahrscheinlich sendet der Motion in zu großen Zeitabständen.

    Ändere doch mal die Dauer für den Test von 60s auf 180s oder mehr und schaue, wie sich die Lampe dann verhält!

    Was aber in jedem Fall funktionieren wird, ist der URL vom i4 kommend, sofern dieser dort richtig eingetragen ist. Und das ist nach dem Titel dieses Thread besonders wichtig.

    Ich nutze auch auf einem Motion zwei Movement Actions. Eine unter "Motion detected" und eine unter "End of motion detected". Auch dies kann per Skript verarbeitet werden. dann muss diese Nutzung aber dargelegt werden, damit bspw. ich das Skript darauf anpassen kann. Bisher entnahm ich deinen Darlegungen, dass der Motion das Licht eine gewisse Dauer einschalten soll und das Ausschalten per Taster (am i4) verhindert werden soll. Genau das tut das Skript. Die optionale Retriggerung ist nur eine Beigabe meinerseits.

    Edit:

    Per aktuellem Skript mit Datum 2024-03-13 kann man auch die Dauerangabe hinter on, also bspw. ?60, weglassen oder ?0 (Null) einsetzen. Dann wird der Timer nicht gestartet und die Lampe bleibt eingeschaltet. Das Skript bietet aber derzeit keine Möglichkeit, die Lampe vom Motion ausgehend unter "End of Motion detected" nur bedingt auszuschalten, nämlich nur dann, wenn die Lampe vom Motion eingeschaltet wurde. Um dies zu erreichen, denke ich über eine Ergänzung im Skript nach.

    Yes, and also in this post:

    eiche
    24. Februar 2024 um 15:05

    Standard URL motion detected: http://192.168.0.247/relay/0?turn=on

    Standard URL end of motion detected: http://192.168.0.247/relay/0?turn=off

    Ich habe deinen Betrieb so verstanden, dass der Shelly, auf welchem das Skript läuft, die Lampe schaltet. In diesem Fall sind beide obigen URL völlig obsolet.

    Falls nicht der Skript-Shelly die Lampe schaltet, muss hierfür im Skript statt der Methode "Switch.Set" u.a. die Methode "HTTP.Get" mit URL verwendet werden.

    Das ist zunächst zu klären.

    Der Motion muss wie in #50 beschrieben den URL http://<IP Adresse des Schalt-Shelly>/script/<Skript Id>/on?<Dauer in Sekunden> in seiner Action zur Bewegungserkennung verwenden.

    Das Skript retriggert nach Voreinstellung (Retrigger = true) - die Lampe bleibt an (nach der blind time), solange das Licht nicht per Taster am i4 eingeschaltet wird. Ist die Lampe bereits per Motion eingeschaltet, wird nur das Abschalten deaktiviert. So kann der Anwender das Dauerlicht per Taster einschalten und der Motion hat trotz seiner Nachrichten keine Wirkung, weil im Skript die vom Motion eintreffende Nachricht ausschließlich im ausgeschalteten Zustand zum Zuge kommt oder wenn das Einschalten per Motion erfolgte (Retriggerung).

    Der i4 muss den URL http://<IP Adresse des Schalt-Shelly>/script/<Skript Id>/toggle wie in #50 beschrieben per dem Taster/Eingang zugeordneter Action verwenden.

    Zum testen kannst du diesen URL aber auch in der Browser Adresszeile anwenden. Mit diesem URL schaltet das Skript die Lampe ein und/oder lässt vom Motion eintreffende Nachrichten http://<IP Adresse des Schalt-Shelly>/script/<Skript Id>/on?<Dauer in Sekunden> ignorieren, bis die Lampe per i4 Taster ausgeschaltet wird. Da du afaik nur einen Taster dafür verwenden willst, habe dafür die toggle Funktion genutzt, weshalb der URL am Ende auch "toggle" beinhaltet (nur als verständlichen Namen).

    Da ich derzeit keinen Pro 3EM besitze, kann ich dir nun nicht weiterhelfen.

    Protokollfehler sollten die Funktion des Shelly nicht beeinflussen, es ist halt "unschön".

    Ich täte an einer solchen Stelle das Protokoll auf einen Arbeitscomputer herunterladen und mir etwas genauer ansehen.

    Vielleicht wäre dabei etwas Auffälliges zu finden.

    Bei dem lokalen Shelly (wo letztendlich die Aktion gestartet werden soll) muss ich im script die 127.0.0.1 einsetzen, da sich das Shelly nicht mit der eigenen IP ansprechen kann, oder ?

    Und bei dem anderen (remote) shelly die IP Adresse des Shellys wo die Aktion gestartet werden soll.

    Ja und ja.

    Bei allen anderen die BT Gateway funktion einschalten habe ich gemacht aber ist dann auch notwendig bei allen das script aufzuspielen ?

    Das ist zu vermuten. Dazu habe ich dir eine Vorgehensweise in #5 empfohlen.

    Beispiel eines Protokolls auf einem Plus Plug S:

    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.

    Klicke dazu auf "CLEAR LOG"!

    Du kannst vorher das Protokoll auf einen Arbeitscomputer herunterladen.

    Ach so und btw, App und Cloud sind für solche Zwecke total suboptimal.

    Ein auf den ersten Blick überzeugendes Skript.

    Ich nutze derzeit mit Shelly kein Bluetooth.

    Soweit ich bisher verstand, stellt das Skript die Funktion des Gateway her.

    Aus dem Skript: "This script lets you use your Gen2 device as a gateway ..."

    Muss dieser script in allen Geräten installiert sein zu welchen der Button Zugriff hat

    Ich empfehle dir folgende Vorgehensweise zum testen.

    1. Installiere das Skript auf mindestens zwei relativ weit voneinander entfernten Shelly Plus!
    2. Passe beide Skripte in der Konfiguration (oben im Skript) für deinen Test an!
    3. Begib dich mit dem Blu Button mal nahe zu dem einen Shelly (weit weg vom anderen) und prüfe, ob das Gewünschte bei Tastendruck geschieht.
    4. Wiederhole das Gleiche mit dem anderen Plus Shelly!
    5. Halte auch erst das eine und dann das andere Skript an und teste, was bei Tastendruck - nicht - geschieht!

    Um ganz sicher zu sein, kannst du auch jeweils einen der beiden Skript Shelly von der Versorgung nehmen.

    Das Skript verwendet verständlicherweise die Methode "HTTP.Get", weshalb in der Konfiguration ausschließlich URL greifen.

    Soweit mir bekannt ist, verwendet ein Blu Button das am nächsten verfügbare Gateway. Dass hierfür auf allen betreffenden Plus Geräten die Gateway Funktion zu aktivieren ist, weißt du sicher bereits.

    Vor einem Eintrag in die CONFIG Struktur solltest du auch per Browser den gewünschten URL testen.

    Firmwareprotokoll..... mhh wo finde ich das?

    Damit meinte ich das bereits von der Firmware bereitgestellte Protokoll.

    Dazu solltest du statt App und Cloud einen Web Browser mit der Shelly IP Adresse verwenden.

    Dort sollte das Protokoll erreichbar sein.

    Hier ein solches von einem Plus Plug S:

    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.

    Zu Szenen können Andere wesentlich mehr beitragen als ich.

    Erst wenn eine Sicherheitseinrichtung greift, weiß man sicher, wofür sie da ist. ;)

    Bei Internet- oder nur Cloudausfall ist deine Steuerung wirkungslos.

    Wenn ich sicher sein will, dass etwas auf die gewünschte Weise funktioniert, dann implementiere ich dies

    1. lokal, auch ohne Cloudverfügbarkeit und möglichst autark auf einem Gerät
    2. per Skript, welches erheblich bessere Testmöglichkeiten bietet als Szenen

    Dass man per Skript und ... wesentlich mehr erreichen kann, will ich nur beiläufig erwähnen.

    Selbstverständlich ist es Ok, wenn du bei Cloud-Szenen bleiben willst.

    Um das tatsächliche Verhalten zu protokollieren, kannst du erst einmal im Firmware-Protokoll nachsehen. Vielleicht kannst du dort fündig werden.

    Für ein selektives Protokoll kann man ein Skript einsetzen, welches dafür sehr gezielt zusammenstellbar ist.

    Gegen eine hier oftmals vorzufindende Skript-Phobie bin ich machtlos. Verständlich ist aber, dass man vor Skript zurückschreckt, wenn man keinerlei Ahnung vom Programmieren hat.

    Ich kann derzeit keinen Blu Button nutzen.

    Ich täte erst einmal prüfen, ob ein Gateway Shelly eine Nachricht per Action weitersenden kann.

    Das lokale Auslösen auf einem Shelly der zweiten Generation täte ich nicht mit der localhost IP Adresse implementieren, obwohl das auch funktionieren sollte.

    Dafür gibt es die RPC Methoden, welche in einem Skript per Shelly.call() lokal nutzbar sind.

    Da du das Skript weder direkt noch per Link zur Verfügung stellst, kann ich zum Skript selbst nicht sagen. ;)

    Doppelklick auf einen Shelly 1 Mini

    Wenn ich auf einen Shelly klicke, reagiert der auch nie. ;)