camueller / SmartApplianceEnabler

This gateway software turns existing devices into smart appliances.
GNU General Public License v2.0
128 stars 40 forks source link

Race Condition durch Fehler im SHM- Verbraucher wird außerhalb des Zeitfensters eingeschaltet #541

Closed DNATW closed 7 months ago

DNATW commented 1 year ago

Am Ende des Zeitplans wird der Verbraucher durch den SAE deaktiviert. Es kann dabei aber passieren das der SHM nach der Deaktivierung des Verbrauchers durch den SAE noch einen Einschaltbefehl sendet und der Verbraucher dadurch reaktiviert wird.

Anschließend sendet der SHM keine Befehle mehr an den Verbraucher, da er wohl davon ausgeht, dass dieser aufgrund der abgelaufenen Zeit deaktiviert wurde. Auch der SAE kümmert sich nicht mehr um den Verbraucher, da dieser außerhalb seines Zeitplans läuft und eigentlich bereits abgeschaltet wurde. Damit bleibt der Verbraucher bis zum nächsten Zeitinterval angeschaltet.

Hier das relevante Log: https://drive.google.com/file/d/1oiXi8ZKePbUa9E0vLS0fjTWYtOjpaHES/view?usp=sharing

Bereits Analysiert durch camueller: Um 2023-07-05 16:59:55,857 fragt der SHM den Status des SAE ab, wobei der SAE mitteilt, dass er Schaltbefehle des SHM akzeptiert (eMSignalsAccepted=true). Enthalten ist auch ein Timeframe, der aber nur noch 4 Sekunden übrigen hat (0s-4s:0Wh/56501Wh).

Um 2023-07-05 17:00:15,531 wird der Timeframe deaktiviert, da er abgelaufen ist. Zwei Sekunden später ( 2023-07-05 17:00:17,486) schickt der SHM trotzdem einen Einschaltbefehl. Diesen Einschaltbefehl hätte der SHM nicht senden dürfen, da der Timeframe bereits abgelaufen ist.

Leider geht die eher dürftige Spezifikation des SEMP Protokolls von SMA nicht auf das geforderte Verhalten in so einem Fall ein. Es erlaubt dem SAE aber in so einem Fall den Befehl zu ignorieren ("If following a recommendation would lead to damages, inefficient behavior or customer inconvenience, the recommendation can be ignored").

Wäre es also nicht wünschenswert wenn der SAE an dieser Stelle die zu späte Regelung des Verbrauchers ignoriert?

camueller commented 1 year ago

Information weitergeleitet an SMA.

camueller commented 7 months ago

Der nächste Timeframe wird nur dann aktiviert, wenn er innerhalb von 5 Minuten startet. Dadruch wird das im Log zu sehende Verhalten verhindert, dass der Timeframe des nächsten Tages aktiviert wird.

Wenn kein Timeframe vorhanden ist, der innerhalb von 5 Minuten aktivierbar ist, wird der Einschaltbefehl ignoriert.