Studer XTM/VT/VS/BSP mit Xcom485i über Modbus auslesen und steuern

Begonnen von holle75, 16 Januar 2021, 23:29:39

Vorheriges Thema - Nächstes Thema

holle75

Wie vor Jahren schon hier -> https://forum.fhem.de/index.php/topic,50649.0.html versucht und jetzt dank großer Hilfe von @StefanStrobel (Author Modbus Modul) umgesetzt, eine (ganz) kleine Zusammenfassung.

Modbus-Device
define ModbusLine Modbus /dev/ttyUSB0@9600,8,E,1

das ,8,E,1 ist zwingend. Xcom 485i kann nicht auf andere Parameter gesetzt werden. Ich mußte meine beiden Stromzähler auf dem selben Bus von Parity N auf E umstellen.

In meiner Installation ist die ID aller Studer-Geräte mit einem Offset von 32 im Xcom gedippt. Bitte bei den ID´s im jeweiligen ModbusAttr-Device beachten, resp. auf eure Anlage anpassen.

Beispiel XTM
define Studer485_XTM ModbusAttr 43 5
attr Studer485_XTM dev-defLen 2
attr Studer485_XTM dev-defPoll 1
attr Studer485_XTM dev-defShowGet 1
attr Studer485_XTM dev-defUnpack f>
attr Studer485_XTM dev-h-read 3
attr Studer485_XTM dev-h-write 16
attr Studer485_XTM dev-i-read 4
attr Studer485_XTM dev-timing-timeout 1
attr Studer485_XTM event-min-interval .*:900
attr Studer485_XTM event-on-change-reading .*
attr Studer485_XTM event-on-update-reading .*
attr Studer485_XTM obj-h6394-hint 24.6,25.8
attr Studer485_XTM obj-h6394-max 26.0
attr Studer485_XTM obj-h6394-min 24.0
attr Studer485_XTM obj-h6394-reading Battery_priority_voltage_RAM
attr Studer485_XTM obj-h6394-set 1
attr Studer485_XTM obj-h6836-hint Transfer,kein_Transfer
attr Studer485_XTM obj-h6836-map 1:Transfer, 0:kein_Transfer
attr Studer485_XTM obj-h6836-reading AUX1_Transfer_RAM
attr Studer485_XTM obj-h6836-set 1
attr Studer485_XTM obj-h7064-hint 5.0,30.0,65.0
attr Studer485_XTM obj-h7064-max 100
attr Studer485_XTM obj-h7064-min 0
attr Studer485_XTM obj-h7064-reading Dynamic_compensation_RAM
attr Studer485_XTM obj-h7064-set 1
attr Studer485_XTM obj-i62-map 0:Transfer, 1:kein_Transfer
attr Studer485_XTM obj-i62-reading AUX1_Transfer
attr Studer485_XTM obj-i64-map 0:ueber90, 1:unter90
attr Studer485_XTM obj-i64-reading AUX2_SoC90


AUX1 und AUX2 sind entsprechend im XTM programmiert. Manuell kann man in diesem Beispiel AUX1 mit fhem schalten. Zu beachten hier, das Adress-Offset von 6000 um nur ins RAM und nicht in den FLASH-Speicher zu schreiben (max Beschreibbarkeit 1000 Zyklen)

Beispiel BSP
define Studer485_BSP ModbusAttr 93 5
attr Studer485_BSP dev-defLen 2
attr Studer485_BSP dev-defPoll 1
attr Studer485_BSP dev-defShowGet 1
attr Studer485_BSP dev-defUnpack f>
attr Studer485_BSP dev-h-read 3
attr Studer485_BSP dev-h-write 16
attr Studer485_BSP dev-i-read 4
attr Studer485_BSP dev-timing-timeout 1
attr Studer485_BSP event-min-interval .*:900
attr Studer485_BSP event-on-change-reading Charge_Discharge_W:50,Volt_Batt:0.1,SoC,Temp_Batt:0.2
attr Studer485_BSP event-on-update-reading .*
attr Studer485_BSP obj-i0-format %.2f
attr Studer485_BSP obj-i0-reading Volt_Batt
attr Studer485_BSP obj-i4-format %.1f
attr Studer485_BSP obj-i4-polldelay 30
attr Studer485_BSP obj-i4-reading SoC
attr Studer485_BSP obj-i58-format %.1f
attr Studer485_BSP obj-i58-polldelay 600
attr Studer485_BSP obj-i58-reading Temp_Batt
attr Studer485_BSP obj-i6-format %2d
attr Studer485_BSP obj-i6-reading Charge_Discharge_W


Beispiel VT
define Studer485_VT ModbusAttr 53 5
attr Studer485_VT dev-defLen 2
attr Studer485_VT dev-defPoll 1
attr Studer485_VT dev-defShowGet 1
attr Studer485_VT dev-defUnpack f>
attr Studer485_VT dev-h-read 3
attr Studer485_VT dev-h-write 16
attr Studer485_VT dev-i-read 4
attr Studer485_VT dev-timing-timeout 1
attr Studer485_VT event-min-interval .*:900
attr Studer485_VT event-on-change-reading PV_Power_KW:0.05,PV_Power_W:50,Battery_cycle_phase,PV_Day_KWh
attr Studer485_VT event-on-update-reading .*
attr Studer485_VT obj-i14-format %.2f
attr Studer485_VT obj-i14-polldelay 600
attr Studer485_VT obj-i14-reading PV_Day_KWh
attr Studer485_VT obj-i76-map 0:Bulk, 1:Absorption, 2:Equalize, 3:Floating, 6:R.Floating ,7:Per.Absorption
attr Studer485_VT obj-i76-polldelay 300
attr Studer485_VT obj-i76-reading Battery_cycle_phase
attr Studer485_VT obj-i8-format %.2f
attr Studer485_VT obj-i8-reading PV_Power_KW
attr Studer485_VT userReadings PV_Power_W {ReadingsVal("Studer485_VT","PV_Power_KW",0)*1000}


alle nötigen Infos zu Adressen und Installation findet man in den angehängten pdf´s von Studer

Grüße
H.


satprofi

Danke.
Aber man benötigt neue Hardware, den Xcom485-i.
Kannst du uns mal einen Screenshot deiner readings zeigen?

LG
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

holle75

Das hier ist auch eher für Menschen gedacht, die noch gar nicht "Kästchen"-vorbelastet sind. Oder von den etwas zu häufigen Server Offlines von Studer genervt sind. Oder nicht den Python-Weg wie zB du gehen wollen. Egal wie, brauchst du ja eines der Studer-Module. Das hier ist nur ein Weg. Final betrachtet, ein relativ einfacher.

Readings sehen zB so aus
Internals:
   DEF        93 5
   FUUID      600304ed-f33f-6bb4-88c9-165119e414daa981
   IODev      Eastron
   Interval   5
   MODBUSID   93
   MODE       master
   MODULEVERSION Modbus 4.3.11 - 2.1.2021
   NAME       Studer485_BSP
   NOTIFYDEV  global
   NR         632
   NTFY_ORDER 50-Studer485_BSP
   PROTOCOL   RTU
   STATE      opened
   TYPE       ModbusAttr
   FRAME:
   READ:
   READINGS:
     2021-01-17 11:54:45   Charge_Discharge_W 883
     2021-01-17 11:54:25   SoC             97.4
     2021-01-17 11:52:39   Temp_Batt       6.1
     2021-01-17 11:54:45   Volt_Batt       27.92
     2021-01-17 11:52:36   state           opened
   REMEMBER:
     lrecv      1610880885.63278
     lsend      1610880885.49339
   gotReadings:
     Charge_Discharge_W 883
   lastRead:
     i0         1610880885.39014
     i4         1610880865.52345
     i58        1610880759.55805
     i6         1610880885.63503
Attributes:
   dev-defLen 2
   dev-defPoll 1
   dev-defShowGet 1
   dev-defUnpack f>
   dev-h-read 3
   dev-h-write 16
   dev-i-read 4
   dev-timing-timeout 1
   event-min-interval .*:900
   event-on-change-reading Charge_Discharge_W:50,Volt_Batt:0.1,SoC,Temp_Batt:0.2
   event-on-update-reading .*
   group      Xtender
   obj-i0-format %.2f
   obj-i0-reading Volt_Batt
   obj-i4-format %.1f
   obj-i4-polldelay 30
   obj-i4-reading SoC
   obj-i58-format %.1f
   obj-i58-polldelay 600
   obj-i58-reading Temp_Batt
   obj-i6-format %2d
   obj-i6-reading Charge_Discharge_W

satprofi

Danke.
Sehe du hast Eastrons am werkeln, dort hast die parity geändert?

gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

holle75

Ja. IN den SDM´s, also den physischen Geräten.
Nicht schön gelöst von Studer, dass du im Xcom485i die Parität nicht einstellen kannst.