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.

    Condition:

    When: Temperature Change,

    Nun, die Temperaturänderung bezieht sich womöglich auf die Schwelle von 0.5°C.

    Das dürfte aber nicht das Ausbleiben der Aufrufe in einem kleineren Zeitintervall erklären.

    Ich nutze keine Szenen bzw. Actions, die per Cloud ausgelöst werden und bevorzuge die lokale Implementation. Deshalb weiß ich nichts Genaueres darüber.

    Du kannst offensichtlich programmieren oder Software entwerfen. :)

    Ja, so lässt sich ein Skript gestalten und sollte funktionieren.

    Mir bleibt aber unklar, warum sich der H&T in dem kleineren Zeitintervall nicht mitteilt.

    Letztlich halte ich die Funktionssicherheit mit einem Plus AddOn und Sensor eher gegeben als mit einem H&T.

    Der Ort des ShellyPlus1 ist im Verteilerkasten der FBH, die Temperatur müsste aber in einem anderen Raum gemessen werden.

    Verständlich. Du kannst auch einen zusätzlich Shelly mit AddOn statt des H&T dafür nutzen. Dies gelänge sogar mit einem Shelly 1, also der ersten Generation - nur falls dir ein solcher mit AddOn zur Verfügung stehen sollte. Was ist FBH?

    Deine Anmerkungen zur Thematik Zeiten/Stromausfall/Zeitserver lassen bei mir den Entschluss reifen, doch einen permanenten Internetzugang zu nutzen.

    Es täte genügen, wenn der Internetzugang ca. 2 Minuten lang nach Stromausfall verfügbar wäre. Dann hat sich zumindest der Plus 1 bereits synchronisiert.

    Ich werde den Verdacht nicht los, dass der H&T ein Problem mit der Zeiterkennung hat.

    Edit:

    Vielleicht liegt es doch an der Bedingung "Temperature Change". Du solltest mal im kurzen Zeitinterval den H&T etwas wärmen (oder abkühlen), um zu sehen, ob er dann die Action ausführt.

    Dabei muss die Temperaturänderung mehr als 0.5°C betragen.

    Ist diese Bedingung zwingend oder kann sie weggelassen werden? Entferne sie, wenn möglich ...!

    Du musst das Skript starten, sonst kann es nichts bewirken.

    Ich interpretiere, dass deine erste Abbildung deinen vorher eingetragenen URL zeigt und die zweite Abbildung den nun abgeänderten URL.

    Die unteren Abbildungen mit dem Skriptinhalt durchsuche ich nicht.

    Noch ein Hinweis:
    Nenne das Skript bspw. terrasse oder terrassen_app! Intern werden Skripte ausschließlich per Id verwaltet, aber es erscheint zweckmäßig, für uns Menschen verständliche Namen zu vergeben.

    Genau so etwas habe ich implementiert, mit einem Shelly Plus 1 und einem Shelly Motion.

    Das Skript:

    Der Motion muss dazu folgende Action ausführen:

    Code
    http://<IP Adresse des Schalt-Shelly>/script/<Skript Id>/on?<Dauer in Sekunden>

    Wenn auf dem Schalt-Shelly noch kein Skript liegt, hat dieses die Id 1. Angenommen die Einschaltdauer soll 5 Minuten sein. Dann ist der URL

    Code
    http://<IP Adresse des Schalt-Shelly>/script/1/on?300

    Wenn per Schalter eingeschaltet wird, wird die Wirkung des Motion gesperrt, bis per Schalter ausgeschaltet wird.

    Wenn die Leuchte per Motion eingeschaltet ist und nun per Schalter eingeschaltet wird, bleibt die Leuchte bis zum ausschalten per Schalter an.

    Viel Freude damit ;)

    Ich nutze eine solche Kombination nicht. Der Plus H&T ist mir dafür zu träge.

    Dein Anliegen ist aber klar und ok.

    Ich nehme an, dass du die Schwelle der Temperaturänderungen auf den kleinsten Wert von 0.5°C gestellt hast. Wenn nicht, schaue einmal nach!

    Zeiten können von einem Shelly nur dann genutzt werden, wenn er seine Zeit synchronisieren konnte. Solange er die Zeit einmal von einem Zeitserver erhielt, arbeitet sein Uhrtakt auch dann weiter, wenn keine Verbindung zu einem Zeitserver existiert.

    Fällt aber die Stromversorgung aus und ein Shelly bootet danach, dann hat er keine Uhrzeit, solange er keinen Zeitserver erreichen kann. Die Shelly haben keine Batterie gepufferte Uhr.

    Eine lokale Lösung gelingt ohne verfügbaren Zeitserver also nur, solange sich keine Unterbrechung der Stromversorgung ereignet. Nach dem Stromausfall braucht hierfür der Shelly einen kurzen Zugriff (ca. 1 Minute) auf einen Zeitserver, damit die gesuchte Lösung funktionieren kann. Dies gelingt aber nicht nachträglich, weil eine Action ausschließlich zu Zeitpunkten und nicht später (nachträglich) ausgelöst wird.

    Zur Fehleranalyse

    Ich weiß nicht, warum die von dir gemachten Angaben 22:00 bis 22:59 nicht wie gewünscht funktionieren. Meine Vermutung geht in Richtung, dass vom Plus H&T in dieser Zeitspanne keine Nachricht gesendet wurde. Vielleicht, weil die Temperaturänderung nicht groß genug war.

    Um dies zu prüfen, kannst du ein sehr kurzes Skript einsetzen.

    Code
    function htTest() {
        print("htTest wurde aufgerufen.");
    }

    Im H&T fügst du zu deiner Bedingung eine Action hinzu, die diese Funktion aufruft.

    Das Skript muss gestartet sein. Das Protokollieren per Web UI muss freigegeben/aktiviert sein, worauf dich die Skriptumgebung hinweisen sollte, sobald du das Skript startest.

    Der URL der zusätzliche Action lautet:

    Code
    http://192.168.178.16/rpc/script.eval?id=<Skript Id>&code="htTest()"

    Vermutlich liegen auf deinem Plus 1 noch keine Skripte. Dann ist die Id dieses kleinen Skripts die 1.

    Andernfalls kannst du die Id per RPC Methode script.list herausfinden.

    Du solltest die Web UI (nur direkt vom Plus 1, keine App oder Cloud) mit geöffnetem Skript laufen lassen.

    Auch kannst du mit den Zeiten experimentieren, solange die Actions erhalten bleiben.

    Immer dann, wenn der H&T die Actions ausführt, wird im Protokollfenster der Text "htText wurde aufgerufen." mit Uhrzeit (rechts) erscheinen.

    So kannst du ablesen, wann der H&T dbzgl. aktiv wurde.

    Das ist nur ein erster Schritt zur Fehleranalyse. Es gibt bessere Protokollmöglichkeiten, die aber erheblich aufwändiger sind.

    Ich bin gespannt, was du herausfindest. Irgendwie werden wir dein Anliegen implementieren können, evtl. durch ein Plus AddOn.

    Ich meinte, was ist am 10.03. und 11.09.? :)

    Ich denke, du solltest den gesamten Thread einmal sorgfältig lesen. Dann kannst du hoffentlich erkennen, dass ich versuchte, das Prinzip zu klären, mit welchem der TE nicht komplette Monate in Zeitplänen unterbringen kann. #9 erhebt keinesfalls den Anspruch, alle Zeitpläne aufzulisten. Da ich noch immer nicht weiß, was der TE von März bis September genau erreichen will, habe ich nicht noch mehr investiert.

    Außerdem halte ich wenig davon, komplette Lösungen so zu präsentieren, dass ein Fragender nicht mehr selbst denken muss.

    DIYROLLY

    Warum stellst du das Anliegen des TE in Frage?

    Ich bevorzuge selbst statische IP Adressen und habe sie per /16 in verschiedene Bereiche eingeordnet.

    Das ergibt tatsächlich eine gewisse Ordnung, die per DHCP und feste Vergabe nicht erreichbar ist.

    Die vorgegebenen /24 Netzwerke beizubehalten, halte ich auch für eher unflexibel. Solche Subnet Masken bieten für eigene IP Adressen und deren Sortierung kaum Spielraum.

    Smartscha

    Vermutlich greift die Cloud auf die Shelly per IP Adresse zu.

    Ich hatte bei einer Änderung das gleiche Problem.

    Entferne solche Geräte aus der Cloud und binde sie neu ein. Das ist etwas arbeitsintensiv, sollte aber gelingen.

    DIYROLLY

    Im Ernst?

    Na gut.

    Was passiert am 10.03 und am 11.09

    Am 10.03. wirkt der erste Zeitplan.

    Am 11.09. wirkt keiner dieser drei Zeitpläne. Dafür sind andere Zeitpläne zuständig.

    Ich schaffe es als Rentner noch 3-4x im Jahr die Vorlauf- und Nachlaufzeit etwas zu ändern wenn die zu früh auffahren bzw. wenn die im Sommer später zufahren sollen.

    Sage das mal dem TE!

    Ich meine das Datum passt nicht.

    Welches?

    Von Skripten war in #9 nicht die Rede.

    PS: Die 2 Jobs habe ich. Aber wie stell ich die Tage ein?

    Das war das letzte Problem des TE. Ich weiß noch immer nichts genaues, die 7:00 Uhr und den Sonnenaufgang von März bis September betreffend. Vielleicht ist es irrelevant bei dieser Uhrzeit. Ich dachte (kreativ) über eine Realisierungsmöglichkeit nach - und fand sogar zwei. 8o

    Edit:

    Und das, obwohl ich selbst so etwas (als Rentner) nicht brauche. 8)

    Seiko

    Ich fand hier nichts, was genau zu deinem Anliegen passt. Afaik können zwar in jedem der 6 Felder von timespec Bereiche ( von-bis) angegeben werden, aber nicht kombiniert über Felder hinweg.

    Das bedeutet, dass dein Ziel vermutlich nur über weitere Schedule Jobs erreichbar ist.

    Dazu kannst du folgende Jobs einrichten.

    1. Für März, 10. bis 31.
    2. Für April bis August, alle Tage.
    3. Für September, 1. bis 10.

    Bin gespannt, ob es einfacher gelingen kann. ;)

    Seiko

    Das gelingt mit "Schedule type": Advanced schedule.

    Dort finden sich viele Einstellmöglichkeiten. Wähle darin "Use sunset or sunrise offset"!

    Vielleicht lassen sich dort die Daten nicht ganz wie gewünscht einstellen.

    Ich werde mal nachsehen, wie es trotzdem gelingt.

    Vielleicht kann es doch ausschließlich mit Schedule Jobs gelingen, also ohne Skript.

    Dazu folgendes Konzept:

    Es werden insgesamt fünf Jobs kreiert. vier Jobs gelten ausschließlich für die Zeitspanne 10.03. bis 10.09., der fünfte während der komplementären Zeitspanne.

    Der fünfte Job ist leicht per UI einzurichten, ich gehe deshalb nur auf die anderen vier Jobs ein.

    Job 1 mit sunrise gibt Job 2 (mit Uhrzeit) frei. Liegt sunrise vor Uhrzeit, wird per Job 2 geöffnet, andernfalls geschieht nichts.

    Job 3 mit Uhrzeit gibt Job 4 (sunrise) frei. Liegt Uhrzeit vor sunrise, wird per Job 4 geöffnet, andernfalls geschieht nichts.

    Eines von beiden trifft immer zu, wenn die Zeiten zueinander passend gewählt sind.

    Beispiel:

    Job 2 mit 07:01 Uhr, Job 3 mit 07:00 Uhr.

    sunrise < 07:01 => per 07:01 wird geöffnet.

    sunrise > 07:00 => per sunrise wird geöffnet.

    Nicht getestet, sollte aber funktionieren.

    Zum Gedankenversuch, es ausschließlich mit Schedule Jobs (Zeitplänen) zu lösen.

    Ich denke, dass dies deshalb nicht gelingen kann, weil per solchem Job immer nur zu Zeitpunkten etwas ausgelöst werden kann.

    Meine erste Idee dazu war, einen Job zu kreieren, der um 7 Uhr den sunrise Job aktiviert. Frage bitte erst einmal nicht, wii das gelingt und glaube mir, dass dies möglich ist - aber nicht per Klicken und Cloud oder Web UI.

    Der sunrise Job kann hochfahren lassen und sich selbst deaktivieren - noch nicht getestet, müsste aber gehen.

    Das Problem liegt darin, dass dies nicht gelingt, wenn sunrise vor 7 Uhr ist, weil dies ab 7 Uhr bereits vergangen ist und nicht mehr wirkt. Somit fällte diese Lösung komplett aus.

    Zum Prinzip Schedule Jobs plus Skript:

    Es kommen zwei Jobs zum Einsatz, die derzeit nicht per Web UI bzw. App angelegt werden können. Zusätzlich ist ein kleines Skript erforderlich, welches zwei Funktionen und zwei Freigabevariablen sunrised und timed braucht.

    1. Der sunrise Job ruft eine Skriptfunktion rised() auf, welche sunrised auf true setzt. Ist zu diesem Zeitpunkt timed bereits true, veranlasst sie das Öffnen.
    2. Der 7 Uhr Job ruft eine andere Skriptfunktion time() auf, welche timed auf true setzt. Ist zu diesem Zeitpunkt sunrised bereits true, veranlasst sie das Öffnen.

    Somit wird nur dann geöffnet, wenn beide Variablen true beinhalten - das ist immer mit dem letzten beider Jobs der Fall. Zusammen mit dem Öffnen werden die beiden Variablen auf false gesetzt.

    Diese zwei Jobs sind so einzustellen, dass sie ausschließlich zwischen dem 10.03. und dem 10.09. wirken, was per Web UI (nachträglich) gelingt.

    Für die komplementäre Zeitspanne ist ein dritter Schedule Job einzurichten, der unmittelbar den Rollladen hochfährt, wozu bereits die Web UI (oder App, Cloud) geeignet ist.

    Wenn du zur Schedules-Skript-Lösung bereit bist, kann ich dir (hoffentlich) erklären, wie die die ersten beiden Jobs anlegen kannst. Nach deren Anlegen können deren Zeiten per Web UI geändert werden.

    1. Ich nutze Cloud allenfalls mal optional, keineswegs zur Konfiguration eines Shelly - nur mal so. Du kannst selbstverständlich tun, was du willst.
    2. Ich finde die Einstellung von Schedule Jobs in der Web UI mit Zeitspannen von Monaten und Tagen in Verbindung mit sunrise, du vermutlich auch.
    3. Ich verstehe deine Bedingung so:
      Vom 10.03. bis 10.09. soll der Rollladen mit Sonnenaufgang öffnen, aber nicht vor 07:00 Uhr.
      Ist das dein Ziel?

    Wenn 3. zutrifft, dann täte ich dies

    1. entweder mit sehr speziellen Schedule Jobs zu implementieren versuchen
    2. oder mit einer Kombination aus Schedule Job(s) und Skript.

    Zu 1. Dazu muss ich etwas länger nachdenken und vielleicht auch experimentieren.

    Zu 2. Mit Skript geht so etwas immer.

    Soweit ich es verstehe, werden solche Dinge ausschließlich per vom Shelly gelieferten Code (JavaScript) auf dem Frontend-Gerät (Web Browser) implementiert, was ja auch am fetch-Aufruf zu sehen ist.

    Ohne entsprechende und relativ aktuelle JavaScript Kenntnisse geht das ja nicht.

    Danke für deine Anregung.

    Edit:

    Deine Funktion full_time() gefällt mir nicht. Ich werde eine imho zielführendere anbieten - gleich ...

    Was hältst du von folgendem Code?

    Code
    function twoDigits(d) { // d ist als Zahl zu importieren mit 0 <= d <= 99
      return d<10 ? "0" + d : "" + d; // liefert einen String
    }
    
    function full_time() {
      let d = new Date();
      return twoDigits(d.getHours()) + ':' + twoDigits(d.getMinutes()) + ':' + twoDigits(d.getSeconds());
    }

    Btw, das ist eine (Teil-)Lösung zu einer Aufgabe meiner Skripteinführung. 8)

    Sorry, Sekunden fehlen noch - ich ergänze ...

    Wie auch immer, dein Skript arbeitet, wie es soll. :thumbup: