Hallo zusammen
shelly 1 heisst bei mir "Boiler Alp OR" (192.168.1.135) (shelly Plus 1 PM)
shelly 2 heisst bei mir "Strom oberer Teil Alp OR" (192.168.1.136) (shelly pro 1 pm)
Ich möchte gerne den Stromverbrauch von beiden addieren. Falls dieser zusammen höher als 2000Watt ist, soll sich "shelly 1" sofort ausschalten.
Das Skript lauft bei mir auf "shelly 1". Es funktioniert einwandfrei und prüft alle 2 Sekunden den Strom vom "shelly 2" und addiert diesen zusammen. Sobald mehr als 2000Watt gezogen wird, schaltet sich shelly 1 aus und nicht wieder ein.
Was ich aber gerne noch hätte: Gerne würde ich dieses Skript nur aktiv laufen lassen, wenn "shelly 1" eingeschaltet ist. Das würde in meinem Netzwerk Ressourcen sparen. Meine Überlegung dabei ist, dass bei ausgeschaltetem Shelly1 nicht ständig über HTTP abgefragt werden müsste.
Kann mir das evtl. jemand noch implementieren?
Dies ist mein Script:
****************************************************************************
var SHELLY2_IP = "192.168.1.136";
var LIMIT_TOTAL = 2000; // Gesamtlast-Grenze
// Zyklische Gesamtlastprüfung alle 2 Sekunden, nur wenn Shelly1 eingeschaltet ist
Timer.set(4000, true, function() {
Shelly.call("Switch.GetStatus", { id: 0 }, function(result) {
if(result.output === true) { // Prüfen nur, wenn Shelly1 eingeschaltet
var power1 = result.apower
0;
Shelly.call("http.get", { url: "http://" + SHELLY2_IP + "/rpc/Switch.GetStatus?id=0" }, function(res, err) {
if(!err) {
try {
var data = JSON.parse(res.body
"{}");
var power2 = data.apower
0;
var total = power1 + power2;
if(total > LIMIT_TOTAL) {
// Nur abschalten, nicht automatisch wieder einschalten
Shelly.call("Switch.Set", { id: 0, on: false });
print("Boiler automatisch abgeschaltet – Gesamtlast > 2000 W!");
}
} catch(e) { print("Parsing Fehler", e); }
}
});
}
});
});
***************************************************************************************************