Erweiterte Leistung(Power) abhängige Schaltung

  • Dieses Skript ermöglicht die Ausführung eines Shelly.call() abhängig von der Leistung (power):

    In "configON" kann definiert werden, welcher Call ausgeführt werden sollen, wenn die Leistung (power) über dem "powerLimit" Wert (power > Limit) liegt und auf welchem Kanal (Channel) die Leistung ausgewertet werden soll. Hierbei kann es sich um einen EM Channel oder nur einen Switch Channel handeln oder etwas anderes solange es eine gültige Event Komponenten Bezeichnung ist. Bis zu fünf unterschiedliche Channels können gleichzeitig angegeben werden, wobei der "powerLimit"- und "powerTimer" Wert automatisch für alle Channels gilt.

    "configOFF" ist genau so aufgebaut wie "configON" mit dem unterschied das hier die Leistung unter dem powerLimit-Wert sein muss (power <= Limit) damit die unterschiedlichen Calls ausgeführt werden.

    Der "powerTimer" Wert gibt an wie lange die Power mindesten über oder unter dem Limit liegen muss bevor ein Call ausgeführt wird.

    Als Key wird das Device samt Channel ID angegeben und als Value ein Shelly.call() als Array. Userdata sowie ne Callback Funktionen werden bei den Call()`s ebenfalls unterstütz. Über eine Callback Funktion im Call kann man mehrere Calls auf einmal ausführe.

    Das Script:

    Das Skript fällt unter die, Apache License Version 2.0, January 2004, siehe Link für mehr Infos: https://github.com/ALLTERCO/shell…ob/main/LICENSE

    Debug Log Vorschau:

    Screenshot 2023-11-28 22.14.26.png

    3 Mal editiert, zuletzt von _[Deleted]_ (8. Dezember 2023 um 19:51)

  • _[Deleted]_ 2. Dezember 2023 um 00:41

    Hat den Titel des Themas von „Leistung(Power) abhängige Schaltung“ zu „Erweiterte Leistung(Power) abhängige Schaltung“ geändert.
  • Hi, kann man mit dem Skript auch anstelle eines API Calls direkt den zweiten Kanal eines ShellyPlus2PM schalten? Also Strom auf Kanal 1 messen und dann anhand der gegebenen Logik den Kanal 2 an oder aus schalten? Ich wäre super dankbar für einen Hinweis, wie das Skript angepasst werden muss. Leider habe ich keine Ahnung von dieser Skriptsprache :(

  • deebeo

    API calls sind immer erforderlich, lokal braucht man dazu aber keinen URL.

    Das gelingt mit einem registrierten EventHandler oder StatusHandler. Auf Grund des Messwertes und einer oder zwei Schwellen (Hysterese!) kann geschaltet werden.

    Dies gelingt bereits mit einem kleinen Skript. Ungetestet, da ich derzeit nur einen Rollladen-Shelly Plus 2PM zum testen verwenden kann.

    Für ein zielgerichteteres Skript ist eine genauere Beschreibung deines Ziels erforderlich. ;)

    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.

  • Hi, mein Ziel ist folgendes: Ich möchte an einem Shelly2PLusPM ein Gerät an Ausgang O2 einzuschalten, wenn der Verbrauch an Ausgang 01 für min 30 Sek über 100W liegt. Wenn der Verbrauch unter 100W sinkt, soll Ausgang O2 wieder ausgeschaltet werden. Über die API Call Funktion läuft das mit dem original Skript auch grundsätzlich. Ich habe dazu nur folgende Fragen:

    1. Mir ist aufgefallen, dass das Skript bei 1s PowerTime funktioniert (schaltet aber teilw nach mehr als 1 sek erst an), aber bei 10s nicht einschaltet. Kann es daran liegen, dass die Power konstant bleiben muss, damit der Timer durchläuft? Bzw kann es sein, dass der Timer mit jeder Power Änderung neu startet und deshalb bei Fluktuationen die PowerTime von 10s nie erreicht wird?

    2. Da es sich beim Gerät an 1 um eine Ölheizung und 2 um eine Ladepumpe für einen Speicher handelt und ich Abhängigkeiten von weiteren Systemen gerne vermeiden möchte(zB Wlan) wäre die Frage, ob ein HTTP Api Call mit Localhost als IP Adresse/Hostname auch funktioniert, wenn kein WiFi verbunden bzw selbiges ausgefallen ist.

    eiche das Skript könnte ich anpassen allerdings kann es beim Einschalten nicht verzögern. Ich würde ja den API Call im Originalen Script in ein Switch.Set umbauen... allerdings blicke ich nicht tief genug durch, um die richtige Stelle zu finden und alle Argumente zu verstehen.

    Danke für Eure Hilfe!

  • Kontrollfragen:

    1. Was soll geschehen, wenn die gemessene Leistung (am O1) 25s lang über 200W liegt?
    2. Was soll geschehen, wenn diese Leistung bspw. 31s lang über 100W liegt, aber zwischenzeitlich für 2s unter 100W sinkt?
    3. Damit das Skript brauchbar arbeiten kann, ist eine Hysterese der Limits (du schreibst 100W) erforderlich, bspw. unter 95W -> ausschalten, über 105W (30s lang) -> einschalten.
      Wie wären deine bevorzugten Schwellwerte?
    4. Wie lange soll O2 mindestens eingeschaltet bleiben, bevor er ausgeschaltet wird?
    5. Welche Verläufe der gemessenen Leistung über O1 sind realistisch?

    allerdings kann es beim Einschalten nicht verzögern

    Ja klar, die von dir gewünschte Mindestdauer von 30s kannte ich ja noch nicht.

    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.

  • Dieses Thema enthält 9 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind, bitte registrieren Sie sich oder melden Sie sich an um diese lesen zu können.