Ich habe zum Test im MQTT-SoC-Modul eine Erweiterung eingebaut, die den fehlenden externen soc_timestamp simuliert:
Das Modul merkt sich in jedem Durchlauf den aktuellen soc und soc_timestamp als previous.*.
Wenn previous.* nicht existiert werden soc und soc_timestamp auf 0 gesetzt.
soc und soc_timestamp sind die aus dem mqtt-Ast.
Wenn "soc_timestamp is None or (soc_timestamp == previous.soc_timestamp and soc != previous.soc)" wird soc_timestamp auf den aktuellen timestamp gesetzt, in den mqtt-Ast geschrieben und soc und soc_timestamp als previous.* gemerkt.
D.h. wenn sich soc_timestamp nicht ändert aber der soc schon wird soc_timestamp auf die aktuelle Zeit gesetzt und im mqtt-Ast eine externe Versorgung simuliert. Auch mit einer (lückenhaften) externen Versorgung des soc_timestamp sollte das klarkommen. Es gewinnt immer die externe Versorgung.
Das funktioniert hier im Test, ist aber erst mal ein "Proof of Concept" und "quick and dirty".
Das mqtt-Modul wird offiziell von openWB gepflegt, daher ist es fraglich ob es Aussicht auf Erfolg haben würde.
Es wäre m.E. immer sinnvoller, soc_timestamp von der externen Quelle versorgen zu lassen.