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_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.