SAX-Power

Begonnen von mhehl, 04 August 2023, 11:50:52

Vorheriges Thema - Nächstes Thema

mhehl

Hallöle
Ich möchte meine SAX Batterie in FHEM einbinden.
https://sax-power.net/wp-content/uploads/2022/03/SAX-Homespeicher-Handbuch.pdf
Mit modbus soll das gehen, aber wie genau?
Mein Stand: define SAX-Power ModbusAttr 1 20 192.168.178.49:3600 TCP
state opened - keine Readings. Hat jemand Tipps?
mit freundlichen Grüßen vom Bodensee
Martin Hehl

CaptainHook

Moin,

du solltest auch die Modbus Register definieren, welche du auslesen möchtest
Beispiel:

attr SAX-Power obj-h46-reading SOC
attr SAX-Power obj-h46-expr $val

attr SAX-Power obj-h47-reading Leistung_Speicher
attr SAX-Power obj-h47-expr $val

attr SAX-Power obj-h48-reading Leistung_Meter
attr SAX-Power obj-h48-expr $val


Grüße,
stephan
Lenovo M53 ThinkCentre 10DC | Docker | SolarEdge SE10K + SE5000H + Energy Bank 10KWh | EspEasy | Tasmota | Hue | Alexa | uvm.

Pappa B

#2
Hallo zusammen,

ich habe mir auch einen solchen Stromspeicher zugelegt und scheitere leider an der Kommuniktion mit dem Teil.
Eingebunden habe ich den Speicher mit ModbusAttr:
Internals:
   DEF        2 20 192.168.1.XXX:3600 RTU
   DeviceName 192.168.1.XXX:3600
   EXPECT     idle
   FUUID      6722152d-f33f-547b-20c3-edeec1d788202a60
   FVERSION   98_ModbusAttr.pm:0.277000/2023-06-23
   IODev      SAX_Power
   Interval   20
   LASTOPEN   1732613196.94365
   MODBUSID   2
   MODE       master
   MODULEVERSION Modbus 4.5.6 - 7.11.2023
   NAME       SAX_Power
   NEXT_OPEN  1732613257.03857
   NOTIFYDEV  global
   NR         696
   NTFY_ORDER 50-SAX_Power
   PARTIAL   
   PROTOCOL   RTU
   STATE      disconnected
   TCPConn    1
   TYPE       ModbusAttr
   devioLoglevel 3
   devioNoSTATE 1
   eventCount 56
   nextOpenDelay 60
   FRAME:
   QUEUE:
   READ:
   READINGS:
     2024-11-26 10:26:37   state           disconnected
   UPDATECACHE:
   defptr:
     SAX_Power  2
   lastRead:
Attributes:
   DbLogExclude .*
   enableControlSet 1
   obj-h46-expr $val
   obj-h46-reading SOC
   obj-h47-expr $val
   obj-h47-reading Leistung_Speicher
   obj-h48-expr $val
   obj-h48-reading Leistung_Meter
   room       Draussen->06-Solar
   userReadings obj-h46-expr obj-h46-reading obj-h47-expr obj-h47-reading obj-h48-expr obj-h48-reading
   verbose    5

State steht auf disconnected.
Mach ich da was falsch????

Ne schöne jroß us Kölle
Thomas

RPort

Hallo,
ich habe bisher noch keinen SAX Speicher - überlege aber, einen solchen anzuschaffen. Deshalb bin ich auf dieses Topic gestoßen.
-> Läuft die Anbindung inzwischen und ggf. wie?

Ansonsten hätte ich möglicherweise folgende Hinweise (die ich mangels eigenem System natrürlich nicht ausprobieren kann - deshalb Alles ohne Gewähr)
Im Manual der SAX zu SAX Power Home steht - nach meinem Verständis -..

- Protokoll ist TCP (mit Standardport 502)
- die Slave-ID ist 64

Dann würde ich versuchen:
define SAX-Power ModbusAttr 1 64 192.168.178.xy:502 TCP

Die Register sind mit Typ uint16 angegeben

dann würde ich versuchen, diesen Typ zu definieren:

dev-type-uint16-len 2
dev-type-uint16-unpack nn


obj-h46-reading SOC
obj-h46-type    uint16
...

Falls das noch jemand interessiert, bitte Feedback, ob es funktioniert.

RPort

Ich habe nun einen SAX und konnte diesen einbinden.

Ich habe die Steuerung per SAX-Smartmeter gewählt.
Bzgl. Vorgabe des Ladestromes per TCP steht im Handbuch, dass die Anpassung nur mit etwa 30W/sec erfolgt.
Das ist mir zu langsam.
Die ebenfalls im Handbuch erwähnte immediate-Variante ist (anscheinend seit längerer Zeit) nicht verfügbar.
-> Ich begrenze nur die Beladung, um den Speicher möglichst spät bzw. nur bei drohender Wirkleistungsbegrenzung zu laden.
   Dazu ist die Freigabe des Schreibens der Register 43/44 notwendig, die man selbst in der SAX-App vornehmen kann.
---
Es gibt einige Besonderheit:
Schreiben erfolgt mit fc 16 (0x10). Der SAX gibt dann aber keinen Wert zurück.
Deshalb setze ich in meiner Ladesteuerung den Wert des Readings "Grenzwert_Beladung_W44" nach dem set zusätzlich selbst, damit der letzte Wert sichtbar ist.

Die Adressen der holding-Register habe ich nach folgender Logik bestimmt:
0x400+Dezimalwert aus dem Handbuch, d.h. z.B. 16384+44=16428 für Grenzwert_Beladung_W44


defmod SAX ModbusAttr 64 30 192.xxx.xxx.xxx:502 TCP
attr SAX dev-h-combine 6
attr SAX dev-h-defPoll 1
attr SAX dev-h-defShowGet 1
attr SAX dev-h-write 16
attr SAX obj-h16427-poll 0
attr SAX obj-h16427-reading Grenzwert_Entladung_W43
attr SAX obj-h16428-poll 0
attr SAX obj-h16428-reading Grenzwert_Beladung_W44
attr SAX obj-h16428-set 1
attr SAX obj-h16429-map 1:Aus, 2:Ein, 3:Verbunden
attr SAX obj-h16429-reading Schaltzustand_45
attr SAX obj-h16430-reading SOC_Proz46
attr SAX obj-h16431-expr $val -16384
attr SAX obj-h16431-reading Leistung_SpeicherW47
attr SAX obj-h16432-expr $val -16384
attr SAX obj-h16432-reading Leistung_SmartmeterW48
attr SAX propagateVerbose 1

Laut Handbuch gibt es noch eine ModbusID 40 mit Sunspecs-Werten - es ist mir aber nicht gelungen, diese (mit analoger Logik) anzusprechen.
-> Falls jemand das geschafft hat, wäre ich für Hinweise dankbar.

Papa Romeo

Das mit der ID40 und den entsprechenden Registern scheint nicht nur in FHEM nicht zu funktionieren. Auch über Modbus TCP und ESP32 bin ich bisher gescheitert. ID64 und die entsprechenden Register lassen sich ohne Probleme auslesen.

LG
Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

Papa Romeo

Zitat von: RPort am 10 April 2026, 15:40:21Laut Handbuch gibt es noch eine ModbusID 40 mit Sunspecs-Werten - es ist mir aber nicht gelungen, diese (mit analoger Logik) anzusprechen.
-> Falls jemand das geschafft hat, wäre ich für Hinweise dankbar.

Ich habe mich gestern mal mit dem Support in Verbindung gesetzt.

Hier die Antwort:

Zitat... vielen Dank für Ihre Serviceanfrage.

Der Extended Mode der ID40 ist noch gar nicht freigeschaltet, obwohl in der Bedienungsanleitung schon vorhanden.

Nach nochmaliger Nachfrage hat mir der Support mitgeteilt, dass mit der Steuerungssoftware Probleme bestehen und ich informiert werde, wenn diese beseitigt sind.

LG Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

RPort

Hallo Papa Romeo,
den Angaben im Handbuch und denen des Services vertraue ich nicht so richtig.

Die eigentlich wichtigste Slave-ID 123 "Immediate Controls" ist meines Wissens seit 2 Jahren angekündigt  - es passiert aber nix.
Die ID40 ist im Handbuch beschrieben - funktioniert aber nicht..
--
Ich könnte mir denken, dass die ModbusID 40 nicht für beide lieferbare Smartmeter implementiert ist.
Ich habe den ADW200 - damit funktioniert es nicht.

Vielleicht ist das nur für den ADL400 implementiert?
Welchen Smartmeter hast du?

--
Ich steuere mittlerweile die Sollleistung - bei großen, schnellen Lastwechsel hinkt der Speicherleistung wie erwartet deutlich hinterher. Bei langlaufenden Verbrauchern (Wärmepumpe) ist das aber ok.