Hi,
das gleiche Problem ist mir auch aufgefallen, als ich meine etwas größere Balkonsolar mit Akku in Betrieb, vor ein paar Tagen, genommen habe.
Den SDM630-Modbus-V2 von 2020 habe ich bei Einzug damals als EVU Zähler eingebaut, da ich immer gerne mein Stromverbrauch im Blick habe. Dieser ist an eine DDC/SPS (Saia PCD) angeschlossen und wird per Grafana wird getrended.
Habe diverse Victron Komponenten für die PV verwendet und möchte eine Null Einspeisung fahren, da die PV und Akku klein sind, wird es extremst selten Überschusseinspeisung geben, daher alles übrige in den Akku.
Da ich weder die Verkabelung, Programmierung sonst noch etwas ändern wollte, habe ich mir mit diversen DIY Skripten für das Victron Steuergerät "Cerbo GX", dessen Betriebssystem Venus OS auch auf dem RPi laufen kann, entschieden ein "DBUS-Modul" so anzupassen das ich die Zählerdaten aus meiner Steuerung bekomme.
Dabei ist mir ebenfalls wie dir aufgefallen, das die Regelung zwar einwandfrei funktioniert, aber eben die Zählerwerte nicht stimmen, ich hatte sehr hohen "Bezug" und "Einspeisung" gleichzeitig, was bei der eingestellten Wechselrichter-Leistung (600W max Einspeisung) nicht sein kann. Dies ist zustande gekommen da die Dauerlast auf Phase 3, der Wechselrichter aber an Phase 1 hängt.
Der SDM630 Zähler den ich habe, addiert alle Werte sprich Import und Export pro Phase einfach auf den Hauptzählerstand oben drauf, was absolut keinen Sinn ergibt, dieser zählt sogar hoch wenn nur "exportet" wird. Dieser Umstand macht auch in anderen Ländern mMn irgendwie keinen Sinn, da dort zwar nicht nach Saldierung aber nach Bezug pro Phase abgerechnet wird.
Egal wie der Hersteller oder Lieferanten diesen Umstand beschreiben, mMn ist dies einfach ein Firmware-Bug. Updaten wird nicht einfach gehen und bei den MID-geeichten eh nicht zulässig, also wird es keine einfache Möglichkeit geben.
Der erste SDM630 ohne V2, V2 ab 2022 und V3 haben das Problem nicht, dies verstärkt meine Meinung das dort ein Programmierer gepennt hat.
Aufjeden Fall möchte ich meine UV nicht für ein anderes Modell ändern, da dies etwas aufwändiger ist. Also gibt es nur die Möglichkeit ein baugleiches Gerät mit einer funktionierenden Saldierung einzubauen.
Da nicht jeder Lieferant oder Händer dabei stehen hat ob es nun die richtige Version ist oder diese schlecht zu bekommen ist oder preislich explodiert sind, habe ich mich für eine Software-Lösung entschieden.
Nun zum technischen:
Die Victron Logik wird komplett mit Pythonscripten umgesetzt, da ich absolut kein Python Profi bin, habe ich nur das vorhandene Beispiel Skript genommen und für meine Anforderungen angepasst.
Die Daten des Zähler lese ich komplett über Node RED ein, da ich viel mit Arbeite war dies schnell für mich umzusetzen und das Pythonscript nimmt die Daten von Node RED und schiebt diese auf den DBUS damit die Victron Logik arbeiten kann.
Unabhängig jetzt von den Victron Eigenheiten, kann man ggf. die Node RED Geschichte für andere Zähler und andere Systeme umsetzen.
Über die Effizienz der Programmierung oder den Umweg über Node RED lässt sich jetzt streiten. Unterm Strich funktioniert es sehr gut und auch präzise, da ich Floating Point verwende und nur die Kommastelle für die Übergabe strippe.
In meinem Flow lese ich die Zählerdaten über die HTTP API meiner Steuerung ein und zähle mit dem Node RED Modul "watt2kWh" die saldierte Leistungsangabe und errechne daraus den Zählerstand. Dieses stimmt natürlich nicht mehr mit dem Display überein, ist mir aber egal da ich den eh nie ablese und immer die Live Daten im Schaltschrank anzeigen lasse. Die Daten werden in globalen Variablen gespeichert und über einen HTTP Request per JSON zur Verfügung gestellt, welches dann im Pythonskript abgefragt wird.
Die Energieangabe Import und Export pro Phase scheinen zu stimmen, müsste nochmal mit einem Janitza UMG512 oder ähnlich nachmessen, aber die glaube ich erstmal.
Allerdings hat das Victron Portal "VRM" sich doch etwas komisch angestellt, weil Hauptzählerstand und Phasenzählerstände nicht passen, daher berechne ich aus den Leistungen pro Phase ebenfalls Import und Export, wie mit dem Hauptzählerstand.
Da ich auch lange auf der Suche nach einer Software-Lösung war, und weiß wie nervig es ist und ein neues Gerät schlecht zu bekommen ist, will ich meine Lösung mit euch teilen. Den Node RED Teil lässt sich gut auf andere Zähler, Geräte oder Schnittstellen anpassen und selbst wenn nicht, ist es bestimmt einen Anreiz ggf. auch etwas selbst zu bauen.
Wer Victron verwendet und ein Python-Profi ist, kann natürlich die komplette Kommunikation, Berechnung etc. direkt in Python realisieren zum Beispiel.
Die Node RED Geschichte finde ich universeller und wer eh schon eine Instanz am Laufen hat kann einfach den Flow importieren und zum Bsp. per Modbus den Zähler direkt abfragen und auch zum Bsp wieder per Modbus beretstellen, somit könnte man einen virtuellen richtig funktionierenden SDM630 an andere Geräte anbinden, welche keine Individualisierung wie das Victron Cerbo erlauben. Oder einen andereren Zähler simulieren (Register entsprechend nachbbilden) damit man kein neues Gerät kaufen muss, wenn man zum Beispiel die Marke des Wechselrichters o.ä. wechselt.
https://git.bit-cloud.de/carsten.schmie ... om_Sensors
Ich hoffe ich konnte jemanden damit weiterhelfen.
Gruß
Carsten