Vielen Dank für die Tipps. Ich habe alles dementsprechend in HA vorbereitet und nach dem ersten Einschalten waren alle Werte direkt verfügbar.
Was mir noch fehlt, ist das Schreiben der Adresse 45 über einen Schalter. Der Code für den Schalter funktioniert, aber das Schreiben nicht. Hier der Fehler:
Pymodbus: SAX_a: Error: device: 64 address: 45 → Modbus Error: [Input/Output] Modbus Error: [Invalid Message] No response received, expected at least 8 bytes (0 received)
Der in der modbus.yaml Datei genutzte Code sieht so aus:
Hallo Jürgen, das An/Aus Schalten hat schon in der alten WEB Oberfläche von SAX nicht funktioniert. (Jedenfalls haben meine Speicher darauf nie reagiert).
In der neuen Oberfläche die jetzt kurz vor Ostern veröffentlicht wurde, ist das An/Aus auch gar nicht mehr enthalten.
Ich vermute, dass uns hier die Berechtigung fehlt.
Was möchtest Du denn bezwecken?
Sinnvoll wäre es, das Entladen des Speichers zu unterbinden, wenn du dein E-Auto bei günstigem Strompreis laden möchtest, weil sonst immer erst der Speicher geleert wird.
Dazu solltest du aber den Wert 43 (Leistungsgrenzwert für Entladung) auf “0” setzen.
Der Wert ist im Standard auf 4600 w eingestellt.
(Achtung! Die Werte 43 (Leistungsgrenzwert für Entladung) und 44 (Leistungsgrenzwert für Ladung) müssen erst durch SAX Freigeschaltet werden.)
vielen Dank für deine Antwort. Mit dem Ausschalten des Speichers wollte ich das Entladen des Speichers unterbinden, wenn über die Wallbox ein e-Auto geladen wird - genau wie du vermutet hast.
Ich werde mich mal beim Support wegen dieser Sache melden.
@Uw3@WoLe60
Blöde Frage: Kann ich per Modbus den SAX Speicher per HomeAssistant steuern (Laden<->Entladen) ohne die eigentlich vorgesehene Strommessung am Hausanschluss (ADL400 etc)? @Uw3 Wie funktioniert die Freischaltung der Modbus-Schreibrechte für die Begrenzungen durch den Hersteller?
Hallo @afe
rein aus technischer Sicht wäre das wohl möglich, die Frage ist aber, warum sollte man sich das antun?
Die Speicher haben eine Zulassung in Verbindung mit den drei verschiedenen SAX Smartmetern (ADL400, AEW100 und ADW220), die Zulassung wäre dann also futsch (und somit wohl auch die Garantie und der Versicherungsschutz).
Eine Dokumentation um alle notwendigen Parameter zu steuern gibt es auch nicht wirklich. Also kurz: Wir Laien sollten die Finger davon lassen.
Allerdings bieten die SAX Speicher durchaus helfende “Mitwirkungsleistungen” wie die Möglichkeit der Begrenzung der Ladung oder der Entladung.
Dazu einfach beim Support von SAX melden und vortragen, was du damit machen möchtest. (Wie E-Auto laden, ohne den Speicher zu leeren.)
Dazu solltest du die Seriennummer parat haben und einen angeschlossenen Speicher online haben und du solltest in der nähe des Speichers sein, da du ihn für die Änderung kurz am Schalter ausschalten musst.
Dann bekommst du die Werte 43 (Leistungsgrenzwert für Entladung) und 44 (Leistungsgrenzwert für Ladung) freigeschaltet. (In gewissen Grenzen. So kannst du den Wert der Entladung z.B. nicht über 4600 w einstellen und die Ladeleistung nicht über 1400 w. Alles darüber wird ignoriert und stellt nur den zulässigen Maximalwert ein. Die Berechtigung hätten nur die Entwickler bei SAX)
Noch spannender ist, für diejenigen welche einen dynamischen Stromvertrag haben, der Wert 41 (Sollwert Leistung P). Damit könnte man dann auch aus den Netz laden, wenn grad Strom zu verschenken ist
Allerdings hat der Zugriff auf diesen Parameter stand heute den Nachteil, das du die komplette Steuerung übernehmen musst. Daher wird er dir sicherlich nicht freigeschaltet werden.
Aber beim Thema aus dem Netz laden wird sich in der Zukunft bei SAX noch was tun. (Schaut gelegentlich in der hübschen neuen Weboberfläche nach Softwareupdates)
Wenn das soweit ist, fehlt mir an den SAX Speichern nichts mehr, was ich mir wünschen würde. (Evtl. etwas mehr Mitwirkung des Herstellers bei der Integration in Smart Home Systeme)
Vielen lieben Dank für die ausführliche Antwort, das hat mir sehr geholfen. Dann werde ich noch warten mit der Anschaffung bis die Funktionen, die du erwähnt hast, zugänglicher werden bzw. einfacher ins Smart Home integriert werden können. Aber die Entwicklungen sind ja vielversprechend.
@Uw3, @wkjweber: Ganz besonders euch aber auch allen anderen Beitragenden vielen Dank für die Infos zur Einbindung des SAX-Speichers in HA. Bin seit gestern glücklicher Besitzer vom SAX Primo 5,8 mit ADL 400 und hätte ohne eure Tipps bestenfalls mit vielen Schleifen und Umwegen das Auslesen der Werte geschafft. Nochmals Danke!
Ich möchte meine Lösung für die Energiewerte beitragen, da ich dazu wenig gefunden hatte. Um für das Energiedashboard Speicherim- und -export zu bekommen, habe ich zwei Sensoren in der configuration.yaml erstellt, P_SAX_import ist bei negativem Leistungswert des Speichers dieser Wert mit positivem Vorzeichen und sonst 0. P_SAX_export umgekehrt, bekommt einen positiven Wert, wenn ausgespeichert wird und sonst 0. Beide Werte dienen den Helfern mit Riemann-Integration dazu E_SAX import bzw. export zu berechnen. Falls es besser Wege gibt, lerne ich gerne.
Es ist mein erster Beitrag in diesem und überhaupt in Foren seit rund einem Jahrzehnt. Bitte seid verständnisvoll, wenn ich Fehler mache.
Hallo Ernst! Das klingt sehr gut. Würdest Du bitte den YAML-Code für P_SAX_import und _export noch in den Post schreiben? In meinem eigenen Code muss noch ein Fehler sein… Danke, Wolfgang
Ich habe gestern die gesperrten Register 41,42,43,44 freischalten lassen - und heute Morgen die Änderung wieder rückgängig machen lassen.
Hier meine Erkenntnisse:
Ein Freischalten der gesperrten Register ist nur im Block möglich. Ein selektives Freischalten von z.B. Register 43,44 ist nicht möglich.
Das Freischalten impliziert immer, dass die interne Regelung deaktiviert wird und durch einen eigenen Algorithmus übernommen werden muss.
Die über modbus-Adresse 41 erzwungene Leistungsänderung wird mit nur 30W/s umgesetzt. Wird längere Zeit nicht in das Register 41 geschrieben (ca. 60 min), wird die Ladeleistung automatisch auf 0 gesetzt.
Möchte man die Ladeleistung (Reg. 44), die im Auslieferungszustand auf ca. 1400W begrenzt ist ändern, so kann dies vom Kundenservice direkt in die Speicherregelung geschrieben werden. Die interne Regelung bleibt bestehen.
Über die Webanwendung werden offenbar demnächst zusätzliche Funktionen ermöglicht. Zu nennen wären hier Laden unter Nutzung dynamischer Stromtarife und die Änderung von Lade- und Entladeschwellwerten.
Die Ersatzstromversorgung ist im Auslieferungszustand deaktiviert. Der Kundenservice muss diese Funktion analog zu Punkt 4 aktivieren. Der Speicher hält dann eine Reserve von 10% vor. Die täglichen Lade- und Entladezyklen finden dann nur noch im Bereich 10%-90% statt.
Das e-Ink Display des Speichers hat eine begrenzte Lebensdauer, die von der Anzahl der Anzeigeänderungen abhängig ist. Um das Display über den langen Nutzungszeitraum des Speichers funktionsfähig zu halten, wurden die Zustandsupdates auf ca. 10min eingestellt. Ich hatte eigentlich eine Realtime Anzeige erwartet.
Das Ein- und Ausschalten des Speichers über modbus-Register 45 funktioniert schon im Auslieferungszustand. Allerdings muss ich wissen, welche modbus-Funktion zum Schreiben des Registers benutzt werden muss, und wie die Funktion in HA abgebildet ist.
Bei dem SAX Speicher muss Funktion 10h (16 dec, write multiple registers) benutzt werden, obwohl hier nur ein Register beschrieben wird. In pymod, das der HA modbus Implementierung zugrunde liegt, kann nicht explit eine modbus-Funktion aufgerufen werden. Die Funktion 10h kann erzwungen werden, wenn in der switch-Deklaration write_type: holdings (im Plural!!!) steht. Es dauert ein paar Sekunden, bis der Speicher dieses Kommando umsetzt, aber es funktioniert. Das Einschalten des Speicher dauert länger, da hier regulatorisch bedingt, der Speicher sich nicht sofort nach dem Einschalten mit dem Netz verbinden darf. Hier wird 60s lang gewartet.
Hier der yaml-Code:
Nebenbei und etwas off topic (sorry): Gibt es irgendwo eine “SAX Primo Ecke” im Forum. Würde mich gerne mit weiteren SAX Nutzern auch zu anderen Themen als Modbus austauschen?
Hallo Ernst! Danke für das Modus.yaml! Kam alles richtig rüber. Ich brauchte aber die Konfiguration für P_SAX_import und _export, um die Lade- und Entladeleistungen korrekt zu berechnen. Das heißt entweder den Teil deiner Configuration.yaml, der dies macht bzw. die Konfiguration der Helfer, wie von Dir oben beschrieben.
Und nein, leider kenne ich (noch) keine SAX Primo Ecke für weitere Diskussionen.
Gruß,
Wolfgang
Hallo Wolfgang, nur die SAX-Leistung wird wie oben angeführt per modbus.yaml eingelesen. In der configuration.yaml habe ich daraus die P_SAX_import und _export berechnet. Hier ist der Teil für export (leider noch unter Template in der configuration und nicht ausgelagert, das folgt).
template:
- sensor:
# Berechnet SAX-Speicherentladung P_SAX_export, wenn P_SAX positiv
- name: P_SAX_export
unique_id: "P_SAX_export"
# state_class: total_increasing
state_class: measurement
icon: mdi:battery-arrow-down
unit_of_measurement: W
device_class: power
state: >
{% if states('sensor.sax_leistung') | float(0) >= 0 %}
{% set P_SAX_export = states('sensor.sax_leistung') | float(0) |abs %}
{% else %}
{% set P_SAX_export = 0 %}
{% endif %}
{{ P_SAX_export }}
Ich hoffe, das hilft erst einmal. Ein Helfer berechnet daraus E_SAX_export und entsprechend auch für import. Beim Integrieren gab es mit meiner vorhergehenden Berechnung von P_SAX_export aber manchmal seltsame Werte, sprich zu große, so dass deutlich mehr aus dem Speicher entnommen werden konnte, als rein ging (Zauberspeicher ).
Hallo Jürgen,
alles spannend.
Punkt 1: Mir hat der Mitarbeiter explizit gesagt, er hat mir nur die Register 43 und 44 zum beschreiben freigeschaltet mit dem Verweis auf deinen Punkt 2, weil wir sonst die komplette Steuerung des Speichers selber übernehmen müssten, wenn Register 41 beschreibbar wäre.
Also meine Anlage läuft derzeit super und automatisch geregelt, obwohl Register 43 und 44 freigeschaltet sind.
Fazit: Das müssen wir testen
(Ich habe das mangels E-Auto noch nicht getestet)
Ich brauche aber Hilfe beim beschreiben des Registers 43.
Ich würde zwischen “0” und “4600” wechseln wollen.
Also Batterie entladen AUS = 0 und Batterie entladen EIN = 4600.
Wie übergebe ich die Werte per modbus an die Batterie.
Ich versuche jetzt erstmal den gleichen Zustand zu erreichen, wie bei Dir. Das Freischalten der Register 43/44 ohne Deaktivierung der internen Regelung.
Ich musste mich etwas mühsam an das Thema modbus heranarbeiten. Die Kapselung der modbus Kommunikation in pymodbus und damit in HA macht die Sache sehr intransparent. Besonders lästig ist das Fehlen des expliziten Aufrufs der verschiedenen Zugriffsfunktionen und das Fehlen der rein- und rausgehenden Hex-Sequenzen. Erst nachdem ich mit einem Android basierten Client die ersten Schreibbefehle (Register 45) erfolgreich absetzen konnte, habe ich in HA letztlich auch die richtigen Parameter zum Erzwingen der Funktion 10h setzen können, die von SAX zum Schreiben der Register genutzt wird. Schreibenden Zugriff habe ich auf Register 41 (Regelung) und 45 getestet. Register 43/44 habe ich geschrieben, aber nicht getestet.
Ich würde als Test, noch vor der HA Implementation, mit dem Tool die Adresse 43/2b auf 0 setzen und den Toaster einschalten.
Hier der Screenshot beim Lesen und Schreiben von Register 45:
Nachtrag zum Freischalten der gesperrten modbus-Register:
In der letzten Woche habe ich mit einem Mitarbeiter beim Support von SAX gesprochen und ihn gebeten, die anhängende Liste zu validieren. Das Ergebnis ist ernüchternd und eine schnelle Änderung nicht in Sicht. modbus-Register SAX Primo 5.2.pdf
ich möchte mich auch einmal hier anhängen und enie Frage stellen. Ich habe bereits eine 1.6KW Pk PV Anlage mit entsprechendem Wechselspeicher. PV Anlage ist auf einem Nebengebäude, welches baulich von unserem Haus getrennt ist. Ein entsprechendes Stromkabel verbindet beide Gebäude. Mit dem zur Zeit verwendeten Wechselrichter eine keine Nulleinspeisung möglich. Außerdem möchte ich auch gerne in Zukunft die Anlage auf rund 4kW Pk und Batteriespeicher erweitern.
In meinem aktuellen System lese ich den aktuellen Stromverbrauch über den IR Lesekopf am Stromzähler ab. Auf Grund der baulichen Trennung beider Gebäude, würde ich gerne dem neuen System den Hausverbrauch per Netzwerk mitteilen (Modbus TCP). Wäre dies mit diesem System möglich? Hierfür müssten dann, soweit wie ich verstanden habe, die Register 41,43,44 geschrieben werden, korrekt?
Alternativ wäre dies dann wahrscheinlich nur über die SAX Messsysteme (LORA) möglich. Hat jemand Erfahrungen wie genau diese arbeiten? Auf das Verlegen eines zusätzlichen RS485 Kabels möchte ich gerne verzichten.
Grüße, Thomas
Edit: Ich glaube, ich habe mir gerade meine Frage selbst beantwortet. Der Speicher ist ja unabhängig vom Wechselrichter, korrekt? Somit kann der Speicher im Haupthaus (HAR) stehen, selbst wenn der Wechselrichter im Nebengebäude ist.
Hallo Jürgen,
hat etwas gedauert, aber ich habe jetzt die Register 43 und 44 beschrieben.
Was soll ich sagen, bei mir geht das.
Mit dem Modbus TCP Client bekomme beim beschreiben von Register 43 mit 0 oder 4600 eine saubere Quittung.
Etwas komisch ist das Verhalten beim Schreiben des Registers 44 „Ladestrom“, wenn ich den auf „0“ setze.
Ich habe zwei SAX Power in Betrieb aber ich bekomme nur bei einer IP Adresse eine Quittung. Aber beide Batterien laden nicht mehr, obwohl ich die „0“ nur an eine IP gesendet habe.
Bei der anderen IP bekomme ich ein Timeout und es passiert nichts. (Das Timeout kenne ich auch aus evcc. Dort bekomme ich das auch nur für eine Batterie)
Meine Batterien werden beide sauber vom ADL400 gesteuert, trotzdem kann ich die Werte 43 und 44 ändern. Es gibt anscheinend unterschiedliche Wissensstände auch bei SAX.
Momentan ist Messe in München, danach kontaktiere ich den Entwickler nochmal zur Klarstellung.
So, ich bin draufgekommen und möchte mein gesammeltes Wissen gerne zusammengefasst weitergeben:
die Freischaltung der Register zum Schreiben erfolgt “en block” und deaktiviert die ursprüngliche Regelung zur Nulleinspeisung - beides wie von Jürgen bereits beschrieben.
per HA lassen sich die Register mt dem Befehl modbus.write_register beschreiben. Zu beachten ist, dass positive Werte den Speicher entladen, während negative Werte den Speicher laden. Letztere können in HA nicht direkt eingegeben werden sondern müssen immer von 2^16 = 65536 abgezogen werden (Beispiel: für eine Ladeleistung von 1.500W muss im Register 41 der Wert 64036, also 65536-1500 geschrieben werden)
der Speicher ist somit in der Lage auch abhängig von aktuellen Stromtarif ge- und entladen zu werden - sofern man die Regelung selbst schreibt.
Da ich noch keinen dynamischen Stromtarif habe, habe ich die Register wieder sperren lassen und betreibe den Speicher weiter mit der von SAX angebotenen Regelung der Nulleinspeisung.
An dieser Stelle einen herzlichen Dank an SAX, die sowohl die Freischaltung der Register, als auch die Wiederherstellung des Ursprungszustandes sehr schnell und unkompliziert vorgenommen haben - eine wirklich sehr positive “customer experience”!