Shelly Script in EVCC

  • Hallo,

    da ich vor Kurzem EVCC zur Einschaltung meiner Shelly Plug S Steckdose mit Überschussstrom aus meiner PV aufgesetzt habe wollte ich das Setup noch mit einem Shelly Script erweitern.

    Dieses Script funktioniert laut Logs auf der Shelly auch einwandfrei:

    Grundsätzlich berechnet das Script die Zeitdauer wie lange die Shelly eingeschaltet ist und resettet den Counter jeden Tag, um die tägliche Einschaltdauer an EVCC über API zu übertragen.

    In weiterer Folge soll im EVCC der Rückgabewert des Shelly Scripts (Number), z.B. 120 Minuten hernehmen und nach 180 Minuten die Steckdose abschalten.

    Derzeit habe ich das Problem, dass ich in der gesamten Shelly API Dokumentation keine URL finde wie ich den "Return" value aufrufen kann. Ich habe nur z.B. curl http://192.168.x.x/rpc/Script.GetStatus?id=1 gefunden. Dabei wird aber nur "{"id":1, "running":true}" zurückgegeben und nicht das Resultat.

    Das Script ist noch nicht komplett fertig und auch nicht gereviewt, aber es funktioniert soweit für den Anfang.

    Hättet ihr eine Idee wie ich den Returnvalue bekommen könnte?

    Vielen Dank im Voraus.

    Viele Grüße,

  • Willkommen im Forum puth12

    - Geht es um den sinnlosen return des Timer Callbacks?

    - Was genau möchtest du mit dem Wert "timestatus" den tun?

    2 Mal editiert, zuletzt von _[Deleted]_ (13. Juni 2023 um 22:36)

  • Hallo,

    danke für die Rückmeldung.

    Es geht um die Übertragung des Timestatus bzw. counter (gleicher Wert) an evcc.

    Der Counter gibt die Dauer in Minuten an, in der die Shelly eingeschaltet war/ist pro Tag.

    Diesen Wert möchte ich in evcc aufgreifen und nach z.B. 3 Stunden laden bei PV Überschuss die Shelly wieder zu deaktivieren.

    Ich denke ich benötige dafür einen eigenen Endpoint, bin mir aber nicht sicher ob notwendig und wenn ja wie.

    VG

  • Du kannst deinen Wert mit:

    KVS (Key-Value Store)

    in den Speicher des Shelly schreiben und dann mit deinem evcc (was auch immer das ist?) auslesen.

    Code
    Shelly.call("kvs.set", {"key":"beliebiger_name","value":dein_wert});

    Auf deinem evcc holst du dir mit:

    Code
    http://<ip>/rpc/kvs.get?key=beliebger_name

    die JSON und extrahierst deinen Wert.

    Fertig.

    Ui, solch geistigen Ergüsse am frühen Morgen. Hätte ich mir gar nicht zugetraut ;)

    Kannst gerne fragen, falls noch Unklarheiten bestehen.

    Willkommen im Forum.

    EDIT: Überarbeitet. War wohl doch zu früh :)

    Kommentare zum elektrischen Anschluss meinerseits sind grundsätzlich zur Weitergabe an Fachpersonal gedacht und stellen eine theoretische Diskussionsgrundlage dar.

    Gruß aus Ostfriesland

    Michael

    16 Mal editiert, zuletzt von ostfriese (14. Juni 2023 um 13:45) aus folgendem Grund: Noch nicht ganz wach.

  • Wenn evcc ein anderes Shelly Skript ist, reicht es die beiden zusammen zu fügen und deinen Wert global im Skript bekannt zu machen, die Shelly Callback Funktionen wie Timer etc. erlauben keine Rückgabe-Werte, also ist auch dein zweiter Return sinnlos. Entweder schreibst du das in Variablen die Global im Skript bekannt sind oder du erstellst eigene Events mit dem Wert als PayLoad, so kann man auch zwischen Skripts kommunizieren.

    Der Vorschlag von ostfriese die Werte zu speichern ist ne super Idee, falls evcc ein externes Gerät ist das die Werte abfragt, in dem Fall könnte man auch einen HTTP Endpoint erstellen, das externe Gerät kann dann einen bestimmten Link aufrufen um ein Skript oder eine Funktion auf deinem Shelly gen2 auszulösen, diese Funktion kann dann wiederum die Werte per http call an das evcc senden.

    Was genau ist ein/dein evcc? :/

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