Beiträge von Manfred Mertens

    Hier die letzte Version, bevor das Skript bei meinem Bekannten zum Einsatz kommt mit ein paar Erweiterungen und Korrekturen.

    Unterschiedliche Zeiten können definiert werden für

    * Mo..Fr

    * Sa

    * So

    * Feiertag

    * Urlaub

    Wg. einer falschen Abfrage in getWeekday() wurde der Sonntag nicht immer richtig erkannt - sorry. Und die Ausgabe des Skript-Logs ist jetzt einfacher zu überprüfen.

    Code
    Sonnenaufgang (UTC): 2022-07-08T03:31:08+00:00
    Datum: 8 . 7 . 2022
    SA(UTC): 3 : 31
    SA(MESZ) -15 => Hochfahren um: 5 : 16
    Wochentag: 5
    Mo..Fr: Sonnenaufgang vor Zeitangabe
    => Hochfahren um: 6 : 30
    Shelly.call ...

    Rollladentimer v0.4.js.txt

    Kurze Anleitung - mit der vielleicht sogar mein Bekannter klar kommen würde:

    1. Datei herunterladen und mit einem Texteditor öffnen (NotePad, NotePad++, ...), mit Strg+a alles markieren und mit Strg+c in die Zwischenablage kopieren

    2. Auf einem Shelly Plus/Pro im Scripts-Menü mit "Add script" ein neues Skript anlegen und mit Strg+v den Inhalt der Zwischenablage einfügen.

    3. Im oberen Bereich die Zeiten nach den eigenen Vorstellungen anpassen und in das Array shutters[] die IP-Adressen der Shelly 2.5 eintragen. Diese haben i.d.R 2 Timer:

    * 1. Hochfahren bei Sonnenaufgang oder fester Zeit => timerId,

    * 2. Herunterfahren bei Sonnenuntergang oder fester zeit

    4. Weitere Parameter festlegen: Koordinaten für den Sonnenaufgang => maps.google.de

    5. Bei Bedarf im Quellcode bei Zeile 132 den Urlaub definieren, falls die Rollläden in dieser Zeit später hochfahren sollen

    6. "Save and Run" und das Skript auf Enable setzen, damit es gestartet wird, wenn der Shelly Plus/Pro eingeschaltet wird

    7. Unter "Schedules" auf dem Shelly Plus/Pro 2 Schalttermine hinzufügen:

    * 1. EIN um 03:15 täglich - auf dieses Ereignis reagiert der Scheduler in dem Skript

    * 2. AUS um 03:20 täglich, damit am nächsten Tag wieder ein EIN-Ereignis ausgelöst wird.

    Nachtrag: Leider zu früh gefreut :-(. Die Fernsteuerung eines Shelly 2.5 funktioniert nicht. weil dieser kein RPC kann. Und mit einem Firmware-Update des Shelly 2.5 ist nach der Einführung des Shelly Plus 2PM nicht mehr zu rechnen. Deshalb kann man die Funktion "Rolladen hochfahren bei Sonnenaufgang, aber nicht vor HH:MM Uhr" leider nur nach einer Investition von knapp 30€ mit einem Shelly Plus 2PM nutzen und dann das Skript gleich auf diesem Shelly laufen lassen.

    #closed

    Ich will ja eigentlich gar nichts extra laufen lassen, kein RaspPi, kein NUC, nichts, dass ist so wenig Benefit für mich für zu viel Aufwand/Strom.

    Wenn das Gerät ein PC mit ATX-Netzteil ist, brauchst du den Shelly als Taster nur parallel zum EIN-Taster des PCs zu schalten. Beim Shelly 1 ist das Relais ja galvanisch getrennt. Wenn du trotzdem mehr Sicherheit brauchst, schaltest du noch ein Relais dazwischen: Shelly schaltet Relais ein, Relais schaltet PC ein.

    Ich verstehe nicht ganz warum man alles komplizierter machen muss.

    Das ist doch gar nicht sooo kompliziert sondern eigentlich nur praktisch ... oder smart. Und wenn man zwar Shellys hat aber keine Hausautomatisierung im Hintergrund, weil einen das nicht interessiert oder das zu teuer oder dann doch zu kompliziert ist, kann man mit dem Skript-Feature der Shellys eine ganze Menge machen.

    Die Umrechnung "Tag im Jahr" nach Datum (TT.MM) ist bei näherer Betrachtung auch kein sooo großer Problem. Dadurch sind die Feiertage im Log leichter zu identifizieren.

    Rollladentimer v0.3.2.js.txt

    Wenn du eine Fritz!Box im LAN hast könnte das vielleicht weiterhelfen: WOL via Fritz!Box

    Sorry, der Beitrag stammt aus der Zeit, als man mit der Fritz!Box noch basteln konnte. Du brauchst eine Fritz!Box mit Firmware *vor* telnet-Deaktivierung durch AVM. Ob sich das lohnt, eine Fritz!Box nur wg. WOL laufen zu lassen? Evt. könntest du mit dem Shelly die alte Fritz!Box einschalten, den Bootvorgang abwarten, dann das Magic-Paket senden und anschließend die Fritz!Box wieder ausschalten. :)

    Hallo Zusammen,

    habt ihr im Skript Editor auch das Problem mit der S-Taste?

    Die S-Taste wird bei mir beim Schreiben immer mal wieder ohne Drücken einer Zusatztaste zum Speichern benutzt und das "s" dabei verschluckt. Das merkt man dann spätestens nach "Save and Run" und einer Fehlermeldung, weil irgendwo ein "s" fehlt. Oder liegt das vielleicht am Browser? Ich nutze Firefox v102.0.

    Viele Grüße

    Manfred

    todo: Exakte Berücksichtigung von Sommer und Winterzeit (bisher nur von April bis Oktober).

    Das war ja einfach: Mit den Funktionen getWeekday() und DayInYear() könnte man isSummerTime() auch als Einzeiler schreiben.

    aktualisierte Version: Rollladentimer v0.3.1js.txt

    Hallo Zusammen,

    hier die Version mit einem Timer, bei dem die "timespec" entsprechend gesetzt wird.

    Als Mehrwert zu der Shelly-Lösung werden feste u. bewegliche Feiertage berücksichtigt (um der nächsten Frage bzw. Anforderung von meinem Bekannten zuvor zu kommen). Je nach Bundesland müssen Zeilen im Skript auskommentiert oder freigelegt werden. Urlaub o.a. kann als Bereich definiert werden.

    Damit mein Bekannter ggf. mit telefonischer Unterstützung etwas anpassen kann, steht alles Wichtige im oberen Bereich des Skripts - bis auf die Definition des Urlaubs, aber wer das braucht wird es sicherlich finden.

    Mit der Variablen "TestDate" kann ein beliebiger Tag getestet werden. Testausgaben ggf. mit "Filter:Full log" sollten bei der Fehlersuche weiterhelfen. Im Beispiel ist vom 1.09. bis 30.09. Urlaub definiert, in dem die Rollläden später hochfahren sollen.

    Code
    Sonnenaufgang (UTC): 2022-09-01T04:47:48+00:00
    Datum: 1 . 9 . 2022
    SA(UTC): 4 : 47
    SA(ME[S]Z)+Diff) > Hochfahren: 6 : 32
    Feiertag: 244
    Wochentag: 6
    Sa+So: Sonnenaufgang vor Zeitangabe
    Hochfahren: 7 : 30
    Shelly.call ... 

    Das Skript wg. der Länge als Anhang: Rollladentimer v0.3.js.txt

    todo: Exakte Berücksichtigung von Sommer und Winterzeit (bisher nur von April bis Oktober).


    Cool wäre immer noch, auf die Berechnung des Shelly bzgl. Sonnenaufgang zugreifen zu können. Vielleicht hat jemand Infos dazu?


    Viele Grüße

    Manfred

    Wenn das Problem mit dem Update von "timespec" gelöst ist reicht sogar ein Timer, in den dann die gewünschte Zeit geschrieben wird: 15 Minuten vor Sonnenaufgang oder 6 Uhr, je nachdem was später ist.

    So einfach kann das sein:

    Code
    http://192.168.37.220/rpc/Schedule.Update?id=2&timespec=%220%200%208%20*%20*%20SUN,MON,TUE,WED,THU,FRI,SAT%22

    Leerzeichen hatte ich schon durch %20 ersetzt. Was noch fehlte waren die Anführungszeichen mit Code %22 vorne und hinten.

    Diese Themen bieten keine Lösung für die Anforderung?

    Nicht wirklich. Ein Hilfs-Shelly pro Shelly 2.5 würde zwar ein Skript überflüssig machen, ist aber zu teuer und auch praktisch nicht umsetzbar. So viel Platz ist hinter den Tastern nicht mehr für die Hilfs-Shellys und der Verdrahtungsaufwand kommt noch hinzu.

    Das Skript-Feature ist für Anwender ohne FHEM u.a. eigentlich ideal.

    Wenn das Problem mit dem Update von "timespec" gelöst ist reicht sogar ein Timer, in den dann die gewünschte Zeit geschrieben wird: 15 Minuten vor Sonnenaufgang oder 6 Uhr, je nachdem was später ist.

    Hallo Zusammen,

    ich habe bei einem Bekannten 4 Shelly 2.5 für Rollladensteuerung installiert, weil ich es nicht mehr mit ansehen konnte, wenn bei ihm im Sommer die Rollläden um 19 Uhr herunterfahren, weil er mit dem Nachstellen seiner Zeitschaltuhren nicht hinterher kommt.

    Von dem Komfort zunächst begeistert kommt er jetzt zur Sonnenwende und meint, dass ihm 5:30 doch zu früh ist und er von den Rollladenmotoren geweckt wird. "Kein Problem" dachte ich zunächst, musste dann aber feststellen, dass ein Shelly 2.5 keine Timer-Logik kann - entweder Sonnenaufgang oder Zeit, aber keine Kombination aus beiden. Bei FHEM wäre das mit einer Zeile erledigt (https://wiki.fhem.de/wiki/SUNRISE_EL - Bsp. define Rollladen_morgens at *{sunrise(0,"06:00","08:00")} set grpRolladen up), aber mit einem Shelly ohne Hausautomatisierung im Hintergrund ist das Problem nicht lösbar.

    Irgendwann habe ich mal von der Möglichkeit gelesen, dass man Shellys jetzt mit einem Skript programmieren kann. Weil der Shelly 2.5 das nicht kann müsste die preisgünstigste und einfachste Lösung mit einem Shelly 1 Plus realisierbar sein. Nach der Durchsicht der Skript Beispiele ist dabei diese Lösung entstanden: Timer Rolladen morgens.js.txt

    Mit der Test-IP produziert das Skript folgende Ausgabe und die Timer sind anschließend entsprechend enabled bzw. disabled.

    Code
    Rolladentimer initialisieren...
    Sonnenaufgang (UTC): 2022-07-01T03:25:27+00:00
    Tag: 1 Monat: 7 Jahr: 2022
    Stunde: 3 Minute: 25 Sekunde: 27
    Wochentag: 5
    Sonnenaufgang vor 6 Uhr
    Shutter: 192.168.37.220 Timer1 => false Timer2 => true
    Shutter: 192.168.37.220 Timer: 1 enable: false
    Shutter: 192.168.37.220 Timer: 2 enable: true

    Bei der Programmierung ergaben sich folgende Probleme:

    1. Ein Shelly kann selber die Zeiten für Sonnenaufgang und Sonnenuntergang berechnen. Ich habe aber leider nicht herausgefunden, wie man diese Werte abfragen bzw. nutzen kann. Deshalb => https://api.sunrise-sunset.org

    2. Beim Extrahieren und Umwandeln von Zahlen aus Zeichenketten hat kein im Internet gefundenes Verfahren funktioniert. Deshalb ASCII()-48 => getNumber()

    3. Lt. Doku kann man die "timespec" eines Timers über URL ändern. Syntax unbekannt?


    Über Anregungen, besonders wg. der "timespec"-Änderung, würde ich mich freuen ...


    Gruß

    Manfred