Funktionieren Actions mit Zeitintervall für das Shelly Plus H&T?

  • Hallo Zusammen,

    beschäftige mich seit ein paar Monaten mit den Shellyprodukten.

    Im Einsatz habe ich ein Shelly Plus H&T und zwei Shelly Plus 1, wobei es hier nur um eines von den beiden Relais geht. Die Firmwareversion für alle Shellys ist die 1.2.2.

    Folgende, vereinfachte Aufgabenstellung (es sollen Aktionen für weitere Zeitintervalle und Temperaturen ausgelöst werden):

    Das Shelly Plus 1 soll einschalten, wenn im Zeitraum 22:00-22:59 die Temperatur von 22,5°C unterschritten wird.

    Im Web GUI (Cloud) des Shelly Plus H&T habe ich deshalb erst mal diese Aktion erstellt:

    Name: Switch Shelly on

    Time: 22:00-22:59

    Condition:

    When: Temperature Change,

    Condition: less than,

    Temperature 22,5,

    Repeat When 150

    URLs: http://192.168.178.16/rpc/switch.set?id=0&on=true

    Ausgangszustand für das Shelly Plus 1: ausgeschaltet

    *Ergänzung:* Das Shelly Plus H&T wird per USB versorgt und liefert daher alle 5min ein Update.

    Die Aktion wird nicht getriggert, obwohl die Uhrzeit zum Testzeitpunkt im angegebenen Zeitintervall liegt und die vom Plus H&T gemessene Temperatur 21,7°C und damit weniger als 22,5°C gemessen wird.

    Ändere ich das Zeitintervall auf 00:00-23:59 wird die Aktion getriggert (Shelly Plus 1 wird eingeschaltet).

    Hat hier jemand Erfahrung mit den Actions beim Shelly Plus H&T?

    Ich scheine nicht der einzige User zu sein, der das Problem mit nicht funktionierenden Zeitangaben bei den Actions des Plus H&T hat, denn es gab kürzlich ein Thema, auf das es aber keine Antworten durch das Forum gab (Shelly Plus H&T and Shelly Plus 1)

    Übrigens gelang es mir mit Szenen meine Problemstellung erfolgreich umzusetzen, was aber keine Lösung ist, da am Standort der Shellys kein permanenter Internetzugang ist.

    Viele Grüße

    Thomas

    Einmal editiert, zuletzt von ToLa62 (11. März 2024 um 23:23) aus folgendem Grund: Ergänzung: Das Shelly Plus H&T wird per USB versorgt und liefert daher alle 5min ein Update.

  • 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.

    An Cloud-/Szenen-Benutzer (insbesondere für Regelungen): Was erwartest du, wenn Internet oder Cloud sabotiert werden? Nicht nur dafür meine kleine Skripteinführung  8)

    Die einzig existierende Konstante ist der Wandel. Oft liegt die größte Schwierigkeit darin, das Anliegen des Klienten zu verstehen.

    5 Mal editiert, zuletzt von eiche (12. März 2024 um 00:46)

  • Hallo eiche, erst mal herzlichen Dank für deine ausführliche und kundige Antwort.

    Deine Anmerkungen zur Thematik Zeiten/Stromausfall/Zeitserver lassen bei mir den Entschluss reifen, doch einen permanenten Internetzugang zu nutzen. Allerdings möchte ich trotzdem im Normalbetrieb nicht von der Cloud abhängig sein und suche deshalb nach einer lokalen Lösung.

    So jetzt zum Debugging. Beim ersten Versuch habe ich anhand deiner Beschreibung das Skript im ShellyPlus1 so eingebaut und in der Action beim ShellyPlusHT zusätzlich zum Einschalten des ShellyPlus1 den Aufruf des Skripts eingetragen.

    Die Action im ShellyPlusHT:

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

    Die Debugausgaben vom ShellyPlus1:

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

    Für den gleichen Zeitraum das Activitylog aus der Cloud für den Shelly HTPlus:

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

    Ergebnis dieses Tests: Der Shelly HTPlus liefert alle 5min Temperatur und Feuchtigkeit. Wie zu sehen ist die Temperatur im Zeitraum konstant. Scheinbar ist bei Einsatz eines Netzteils für den HTPlus die Schwelle von 0,5°C Temperaturänderung nicht relevant!

    So, nun ein Test mit einem Zeitintervall von 10:25-10:59 (das Intervall wurde ca. 10:14 in der Action aktiv (ich mache die Änderungen am HTPlus immer über die Cloud, um die Temperaturänderungen zu vermeiden, die beim lokalen Aufwecken über die Taste entstehen würden).

    Im Debuglog steht das letzte "htTest wurde aufgerufen" um 10:09:01, also noch zu einem Zeitpunkt, wo das Zeitintervall 00:00-23:59 konfiguriert war. Das Debuglog sieht so aus:

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

    Das Activitylog des HTPlus zeigt durchaus Aktivitäten:

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

    ... aber es kommt nicht mehr zum Triggern der Action

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

    So wie es aussieht, funktionieren die Actions im HTPlus nicht bzw. nicht korrekt, wenn man Zeitintervalle verwendet, die ungleich 00:00-23:59 sind.

    Nur mal nebenbei: was bedeutet dieser Logeintrag im ShellyPlus1:

    shelly_notification:163 Status change of switch:0: {"id":0,"temperature":{"tC":38.05,"tF":100.50}}

    09:49:05

    Wie kann ich weitermachen?

    Ich sollte wohl ein Ticket beim Hersteller aufmachen, da die Actions im HTPlus nicht korrekt funktionieren.

    Ob und wann das repariert wird, steht in den Sternen, die Actions im HTPlus werden wohl kaum verwendet.


    Jetzt geht mir gerade was durch den Kopf, weiß nicht, ob das so oder so ähnlich möglich ist:

    - Im HTPlus soll von 00:00-23:59 alle 5min nicht einfach nur ein Skriptaufruf ans Plus1 gesendet werden, sonder ihm wird als Parameter die aktuell gemessene Temperatur mitgegeben.

    - Die Auswertelogik verschiebt man ins Plus1.

    Nun habe ich keine Erfahrung mit diesen Skripten und wäre auf eure Hilfe angewiesen...

    Ich denke, das Skript im Plus1 müsste (Pseudocode) in etwa sowas tun:

    Temperatur von HTPlus empfangen (wurde als Parameter ans Skript übergeben)

    Aktuelle Zeit auslesen

    Durch die Liste der konfigurierten Zeitintervalle iterieren.

    Wenn passendes Intervall gefunden:

    Temperaturbedingung überprüfen

    Bedingung trifft zu:

    Aktion ausführen (ShellyPlus1 Relais ein- bzw. ausschalten

    Meint ihr, sowas wäre machbar?

    Warum stehe ich für meinen Anwendungsfall nicht so auf ein Temperatur-Addon?

    Wenn ich es richtig verstehe, würde das am ShellyPlus1 aufgesteckt werden und müsste die Temperatur messen.

    Der Ort des ShellyPlus1 ist im Verteilerkasten der FBH, die Temperatur müsste aber in einem anderen Raum gemessen werden. Von daher scheint mir der Ansatz mit dem vom Plus1 getrennten Temperatursensor HTPlus besser geeignet zu sein.

    Schon mal vielen Dank fürs fleißige Mitlesen und Kommentieren!
    Grüße
    Thomas

  • 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 ...!

    An Cloud-/Szenen-Benutzer (insbesondere für Regelungen): Was erwartest du, wenn Internet oder Cloud sabotiert werden? Nicht nur dafür meine kleine Skripteinführung  8)

    Die einzig existierende Konstante ist der Wandel. Oft liegt die größte Schwierigkeit darin, das Anliegen des Klienten zu verstehen.

    9 Mal editiert, zuletzt von eiche (12. März 2024 um 13:06)

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

    Weil die Temperatur ohne Kommunikation zwischen Devices ermittelt werden könnte?

    Ist denn die Kommunikation zwischen H&T und Plus so unsicher? Klar, es können mal Störungen im WLAN auftreten, aber das H&T sendet alle 5min seinen jeweils aktuellen Messwert und es soll ja nicht mehr gemacht werden, als level-getriggert der Plus-Shelly ein- oder ausgeschaltet werden. Da würde erst mal nicht viel passieren, bis auf zu spätes Ein- oder Ausschalten des Relais.

    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?

    Ich habe keine weiteren Shellys.
    Mal angenommen, ich würde diesen Weg gehen. Ich hätte trotzdem wieder eine Inter-Shelly-Kommunikation.
    Die ließe sich (nach meinen naiven Annahmen) nur vermeiden, wenn ich eine Drahtverbindung zwischen Sensor und Add-On auf dem Shelly herstellen würde. Dafür müsste ich ca. 5m überwinden, da das Shelly im Verteilerkasten der FBH=Fußbodenheizung verbaut ist, während im Wohnraum gemessen werden soll. Wie unempfindlich ist denn die Drahtverbindung gegenüber Störungen?

    Ok, nun zu den Tests:
    Zunächst nochmal getestet:

    00:00-23:59 T<26°C -> alle 5min bekommt das Relais den Auftrag sich einzuschalten und das Skript wird aufgerufen.

    Nächster Test:

    13:15-13:45 T<26°C -> Temperaturanstieg zu Beginn des Intervalls von 20.8 auf 22.1°C. In der Zeit für das Intervall bekommt das Relais nicht einen einzigen Auftrag, genauso wenig wie das Skript aufgerufen wird.

    13:55-14:25 -> ob tatsächlich das T-Kriterium weggelassen wird, kann ich nicht sicherstellen, da ich im GUI für die Action zwingend eine Überprüfung der Temperatur drin haben muss, allerdings konnte ich die URL für das Einschalten des Plus löschen... Von daher ist der Erkenntnisgewinn fraglich. Jedenfalls wird auch in dieser Zeit das Relais nicht eingeschaltet und das Skript wird nicht aufgerufen.

    00:00-23:59 T<26°C -> jetzt kommen wieder alle 5min die Aufrufe des Skripts. Das Relais wird nicht eingeschaltet, da ich ja zuvor die URL dafür gelöscht hatte.

    Ich habe den Eindruck, dass ich mit den Zeit gesteuerten Actions auf dem H&T nicht weiterkomme.

    Jetzt nochmal zu meiner Implementierungsidee von vorher.

    Wenn man die Temperatur im Plus zum Empfangszeitpunkt nur speichern würde, so könnte man die Aktionen des Plus nutzen für die Definition der Intervalle, dort im jeweiligen Intervall ein Skript auf dem Plus aufrufen mit der jeweiligen Grenztemperatur des Intervals. Dieses Skript vergleicht die übergebene Temperatur mit der zuletzt gespeicherten Temperatur und schaltet lokal das Relais an oder aus.

    Pseudocode:

    Skriptaufruf im Plus ausgelöst vom HT: Temperatur von HTPlus empfangen -> Temperatur lokal abspeichern

    Aktionen auf Plus:

    Wenn im Zeitintervall:

    Call Skript SwitchOnConditional()

    Call Skript SwitchOffConditional()

    SwitchOnConditional()

    Grenztemperatur fürs Einschalten < gespeicherte Temperatur?

    Plus einschalten

    SwitchOffConditional()

    Grenztemperatur fürs Ausschalten > gespeicherte Temperatur?

    Plus ausschalten

    Bin nicht sicher, ob das so möglich ist, denn bei der Konfiguration der Actions auf dem Plus stört mich der Abschnitt "Execute when":

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

    Viele Grüße

    Thomas

  • Dieses Thema enthält 2 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind.