Shelly Script PV Überschusseinspeisung

  • Hallo zusammen,

    hab mir aus einigen Beispiel Scripts ein Script für meine PV Anlage zusammengestellt.

    Ich verwende zwei Shelly 1PM welche im lokalen WLan verbunden sind.

    Es werden alle gemessen Daten richtig ausgelesen und auch richtig angezeigt.

    Wenn ich dann aber die Leistung des Remote-Shelly mit einem Wert (z.B. 300W) vergleichen möchte, passiert gar nichts. ;(

    if (300 > Verbraucher_Power) Shelly.call("Switch.set", {'id': 0, 'on': false});

    Mache ich das selbe mit der Leistung, die am Shelly gemessen wird, auf dem das Script läuft funktioniert alles. :/

    if (300 > PV_Power) Shelly.call("Switch.set", {'id': 0, 'on': false});

    Weiß jemand, wo mein Fehler liegt? Ich glaube irgendetwas stimmt mit der Definiton "Verbraucher_Power) nicht.

    Hier das gesamte Script

    // CONFIG START

    let CONFIG = {

    // Shelly PLUS 1PM

    shelly_Verbraucher : "http://192.168.1.52/rpc/Switch.GetStatus?id=0"

    };

    // CONFIG END

    //Define Variables

    let Verbraucher_Power = 0;

    let PV_Power = 0;

    //

    function Verbraucher() {

    Shelly.call(

    "HTTP.GET",

    {

    "url": CONFIG.shelly_Verbraucher

    },

    function (result, error_code, error_message) {

    let Verbraucher_Power = JSON.parse(result.body).apower;

    print("Verbraucher = " Verbraucher_Power "W");

    //print(JSON.stringify(result));

    //if we need to check the state of the switch

    //peek into result.output

    if (JSON.parse(result.body).output === true) {

    print("Verbraucher Switch is on");

    }

    }

    );

    }

    let timer_handle = Timer.set(3000,true,Verbraucher,null);

    function PV() {

    Shelly.call(

    "switch.getstatus",

    {

    //for more than one switch devices use the respective id

    id: 0

    },

    function (result, error_code, error_message) {

    let PV_Power = (result.apower);

    print("PV = " PV_Power "W");

    if (300 > Verbraucher_Power) Shelly.call("Switch.set", {'id': 0, 'on': false});

    //print(JSON.stringify(result));

    //if we need to check the state of the switch

    //peek into result.output

    if (result.output === true) {

    print("PV Switch is on");

    }

    else {

    print("PV Switch is off");

    }

    }

    );

    }

    let timer_handle = Timer.set(3000,true,PV,null);

    // Set your input to Switch and in Detached mode for this code to function correctly.

  • Hallo Pezibär,

    um helfen zu können ... gibt es Meldungen im Log?

    ich hätte auf die schnelle folgendes gefunden:

    die Zeile liefert einen Syntaxfehelr:

    print("Verbraucher = " Verbraucher_Power "W");

    so stimmts:

    print("Verbraucher = " + Verbraucher_Power + "W");


    ebenfalls hier:

    print("PV = " PV_Power "W");


    schöne Güße

    Alex

  • Versuch mal das:

    In Zeile 48 und 68 waren Syntaxfehler beim print und du solltest auch sicherstellen, dass die Variable Verbraucher_Power in der Bedingung in Zeile 69 richtig referenziert wird.

    Einmal editiert, zuletzt von JoloXD (9. Dezember 2022 um 01:30)