Danke @De kat
Detached mode gibt es aber nur für den physischen SW Eingang. Oder gibt es eine Möglichkeit HTTP calls, oder wie auch immer SMA den Schaltvorgang remote auslöst, ebenfalls detached zu verarbeiten?
VPN/Proxy erkannt
Es scheint, dass Sie einen VPN- oder Proxy-Dienst verwenden. Bitte beachten Sie, dass die Nutzung eines solchen Dienstes die Funktionalität dieser Webseite einschränken kann.
Danke @De kat
Detached mode gibt es aber nur für den physischen SW Eingang. Oder gibt es eine Möglichkeit HTTP calls, oder wie auch immer SMA den Schaltvorgang remote auslöst, ebenfalls detached zu verarbeiten?
Wenn man einen Shelly 3EM in den Sunny Home Manager einbindet, sind die Messeinheit und das Relais zwei separate Geräte. Warum das technisch so ist, ist unklar. Auf alle Fälle führt das dazu, dass man den 3EM nur separat entweder als Messeinheit oder als Schalter für Verbraucher verwenden kann, da SMA nicht zulässt, dass man mit einem Gerät den Verbraucher misst und diesen mit einem anderen Gerät schaltet. Trotzdem kann ich die Messeinheit als Messen und Schalten einrichten, nur dass der Event Shelly-seitig nicht verarbeitet wird. Die Frage ist nun, ob es irgendwie möglich ist, den Schalt-Event ohne Scripting (kann der 3EM ja nicht) an das Relais weiterzuleiten.
Kontext:
Mein SMA Sunny Home Manager steuert verschiedene Geräte über Shellys. Diese sollen möglichst viel mit SolarStrom laufen. In gewissen Fällen muss dies jedoch einfach übersteuert werden können (z.B. Trockner trotzdem einschalten, weil die Raumfeuchte einen Schwellwert übersteigt oder per Knopfdruck trotzdem den Geschirrspüler starten). Über den Sunny Manager lässt sich so etwas nicht realisieren. Wenn ich nun per Shelly App oder über den Taster Eingang den Shelly übersteuere, so wird dies durch den Home Manager erkannt und er sendet unmittelbar einen Event info":{"component":"switch:0","id":0,"event":"toggle","state":false} und schaltet gleich wieder aus.
Lösungsansatz:
Ich schalte den Shelly per Knopfdruck oder Szene ein und überwache dann mit einer Funktion den Stromverbrauch, prüfe ob das Gerät gerade läuft (die Variable active wird gesetzt) und lasse nicht zu, dass ausgeschaltet wird, bis das Gerät wieder aus ist. Der Eventhandler sieht so aus:
Shelly.addEventHandler(
function (event, user_data) {
if (typeof event.info.event !== 'undefined') {
if (event.info.id === 0 && event.info.event === 'toggle' && event.info.state === false) {
if (active === false) {
Shelly.call("Switch.set", {'id': 0, 'on': false});
print('remote switch off after finished');
}
else {
Shelly.call("Switch.set", {'id': 0, 'on': true});
print('cannot remote switch off, appliance still running');
}
}
}
}
);
Alles anzeigen
Frage:
Wie kann ich verhindern, dass der Event parallel trotzdem ausgeführt wird. Ansonsten schaltet der Event das Relais aus und ich schalte es mit dem Eventhandler gleich wieder ein, was unschön ist. Kann der Event irgendwie gedroppt werden oder kann der event.info.state auf true umgeschrieben werden?