Beiträge von towiat

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 eine aktualisierte Version des Skriptes online gestellt, die folgende Änderung enthält:

    In der originalen Skript-Version war es schwierig, die errechneten Ein- und Ausschaltzeiten einzusehen. Telegram-Benutzer können sich entsprechende Nachrichten auf das Handy schicken lassen, aber alle anderen konnten die Zeitpläne nur im Log sehen, was natürlich nicht sonderlich praktisch ist.

    Die neue Skript-Version behebt dieses Manko, indem sie die errechneten Zeitpläne im Key-Value Store (KVS) des Gerätes ablegt. Das sieht so aus:

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

    Die KVS-Seite kann über die Menüpunkte Advanced/KVS aufgerufen werden oder auch direkt mit der URL http://IPAdresseDesShelly/#/key-value-store (und diese URL kann natürlich auch als Favorit im Browser abgelegt werden).

    Die Daten werden bei jeder Ausführung der Preisanalyse aktualisiert (in der Standard-Einstellung also täglich um 15.00).

    Für ein Update von der alten auf die neue Skript-Version sind folgende Schritte durchzuführen:

    1. Die Ausführung des Skriptes stoppen
    2. Den Code des Skriptes KOMPLETT mit der neuen Version ersetzen
    3. Eventuelle Konfigurationsänderungen (awattarCountry, scheduleTimeSpec, etc etc) erneut durchführen
    4. Die Ausführung des Skriptes starten

    Die Nachricht erscheint dann nach der erstmaligen Durchführung der Preisanalyse (also um 15:00, wenn die Standard-Einstellung nicht geändert wurde).

    Hier noch einmal der (unveränderte) Link zum Skript:

    https://gist.github.com/towiat/070135d…5d189a332d37b5a

    Viel Spaß!

    Andrea57

    Wenn das Skript laut Schedule ausgeführt wird, werden Timer gesetzt, um die Stromzufuhr zum richtigen Zeitpunkt ein- bzw. auszuschalten. Das Problem ist, dass diese Timer nicht in der Benutzeroberfläche sichtbar sind.

    Allerdings schreibt das Skript zum Zeitpunkt der Ausführung Nachrichten in das Log, die so aussehen:

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

    Der erste markierte Eintrag enthält Debuginformationen zur Fehleranalyse - der zweite sagt im Klartext, was das Skript vorhat.

    Es wäre also interessant, ob du diese Einträge erhältst und wie sie aussehen - dazu müsstest du das Log zum Zeitpunkt der planmäßigen Ausführung lt. Schedule abfragen und die Einträge gegebenenfalls hier posten.

    Andrea57

    Ich bin ehrlich gesagt komplett neu in der Shelly-Welt - das Skript läuft problemlos auf zwei Gen2-Geräten, aber ich kenne die anderen Shelly-Produkte eigentlich gar nicht. Wenn die Shelly-Gurus sagen, dass es auf Gen1 nicht läuft, wird das schon so stimmen...

    Ganz generell zur Skript-Installation:

    Wenn du ein Gen2-Gerät in dein WLAN eingebunden hast, bekommt es ja eine lokale IP-Adresse. Um ein Skript zu installieren, musst du nur diese lokale IP-Adresse in einen Browser eintippen. Dann bist du auf der Web-Oberfläche des Gerätes und hast dort einen Abschnitt "Scripts" in den du das Skript reinkopieren kannst. Ein Tutorial habe ich hier gefunden...

    LG

    towiat

    Codeschnipsler

    Hallo Codeschnipsler,

    Bei der Pin-Ansteuerung kann ich dir leider nicht helfen - aber wenn ich deine Anforderung richtig verstehe, willst du ja die billigsten Stunden haben und nicht die teuersten oder? Das wäre ja genau das, was das Skript leistet...

    Die Preisfindung findet jedenfalls im folgenden Abschnitt des Skriptes statt:

    Nach Ausführung dieses Abschnittes hast du in der Variable SwitchOn den Beginn und in der Variable SwitchOff das Ende der günstigsten Periode des gewählten Zeitraumes (jeweils als POSIX-Zeitstempel). Wenn ich deine Anforderung richtig verstehe, willst du dann die WP zu Beginn dieser Periode einschalten und am Ende wieder ausschalten. Dazu müsstest du dann zwei Timer setzen, was in meinem Skript so aussieht:

    JavaScript
     let now = Date.now();
     Timer.set(switchOn - now, false, switchOnPower);
     Timer.set(switchOff - now, false, switchOffPower);

    Du müsstest also die Funktionen SwitchOnPower und SwitchOffPower durch deine eigenen Funktionen ersetzen, die dann über die Pins die Wärmepumpe ein- bzw. ausschalten.

    Falls ich das falsch verstanden habe, beschreibe mir bitte noch einmal genauer, was du mit "teure Stunden ermitteln" gemeint hast...

    LG

    towiat

    AlexAn

    Wenn ich das richtig sehe, hat das Script gestern (Samstag) um ca. 8:00 versucht, die Preise für heute (Sonntag) zu analysieren. Das kann nicht funktionieren, weil die Preise für heute zu diesem Zeitpunkt noch nicht existiert haben.

    Generell werden die Preise für den nächsten Tag an der Strombörse EPEX ausgeschnapst, und zwar in einer Auktion, die täglich um 12:00 stattfindet. Die ausgehandelten Preise werden dann zwischen 13:00 und 14:00 veröffentlicht und stehen natürlich auch erst dann über das Awattar-API zur Verfügung.

    Es hat also eher wenig Sinn, die Preisanalyse vor 14:00 laufen zu lassen.

    Wenn du das Script zum ersten Mal startest, passiert eigentlich nur eines: Es setzt (basierend auf der Variable scheduleTimeSpec) einen Schedule, über den der Shelly dann die Preisanalyse zu den festgelegten Zeiten startet. Diesen Schedule findest du auch in der Weboberfläche unter der Bezeichnung "<Scriptname> eval".

    Der Schedule ist fix gespeichert und bleibt auch bei einem Reboot erhalten.

    Das Ein- und Ausschalten der Stromzufuhr passiert nicht über Schedules, sondern über Timer. Die sind generell praktischer für diesen Zweck, aber soweit mir bekannt ist, kann man gesetzte Timer leider nirgendwo sehen (wenn das doch geht, wäre ich für Hinweise dankbar).

    Gesetzte Timer gehen bei einem Reboot verloren - in so einem Fall würde also das Ein- und Ausschalten für den aktuellen Zyklus nicht erfolgen. Bei der nächsten planmäßigen Scriptausführung funktioniert dann aber wieder alles wie geplant.

    AlexAn

    Freut mich, dass es nützlich ist!

    • Das verlinkte Script ändert offensichtlich den Namen des Gerätes, um seine Daten auf dem WebUI anzuzeigen. Das könnte ich natürlich auch machen - die Frage ist allerdings, was genau du da gerne sehen würdest. Es können ja - abhängig vom Resultat der Preisanalyse - Timer für bis zu zwei Zeitblöcke aktiv sein (z. B. heute von 17:00 bis 20:00 und morgen von 13:00 bis 16:00). Und wenn du (wie angedeutet) eine zweite Script-Instanz gleichzeitig laufen lassen willst, hättest du bis zu vier Zeitblöcke. Was sollte in diesen Fällen auf der Weboberfläche angezeigt werden?
    • Ich habe es zwar nicht getestet, aber ich sehe keinen Grund, warum du nicht zwei Instanzen des Scripts gleichzeitig laufen lassen könntest. Sinnigerweise sollten dann natürlich beide Instanzen unterschiedliche (und nicht überlappende) Zeitfenster bearbeiten, weil sich sonst die gesetzten Timer in die Quere kommen könnten.
    • Den dritten Punkt verstehe ich nicht ganz, aber generell stellt das Awattar-API die Preise für den Folgetag ab ca. 14:00 zur Verfügung. Der Default von 15:00 ist also mit einem Sicherheitspolster gerechnet. Du kannst natürlich die Daten auch später abfragen, wenn sich das mit deinem gewünschten Zeitablauf ausgeht.

    Ich habe ein Script erstellt, das einen Shelly Plus Plug S über die stündlichen Strompreise der EPEX (abgerufen über das Awattar API) steuern kann. Funktionsprinzip und Konfiguration sind im Script ausführlich erklärt - hier ein Schnelldurchlauf:

    • Man definiert einen Zeitplan (z. B. täglich um 15:00 Uhr), ein Zeitfenster (z. B. 7:00 bis 19:00 Uhr) und eine Dauer (z. B. vier Stunden).
    • Mit den obigen Einstellungen bezieht das Script jeden Tag um 15:00 die Spotpreise für das gewählte Zeitfenster (also 7:00 bis 19:00 des nächsten Tages) von Awattar. Dann identifiziert es die Vier-Stunden-Periode mit dem niedrigsten Durchschnittspreis innerhalb des Fensters und setzt zwei Timer, die die Stromzufuhr am Beginn dieser Periode ein- und am Ende wieder ausschalten.

    Es kann wahlweise das österreichische oder das deutsche Awattar-API verwendet werden.

    Optional kann das Script via Telegram über folgende Ereignisse informieren:

    • wenn neue Timer gesetzt wurden (inklusive Durchschnittspreis für die gewählte Periode)
    • wenn die Stromzufuhr durch das Script eingeschaltet wurde
    • wenn die Stromzufuhr durch das Script ausgeschaltet wurde

    Das Script ist hier zu finden (editiert am 06.10.24: Link aktualisiert):

    https://github.com/towiat/spotelly

    Viel Spaß!