Neue Versionen und Support zum Modbus-Modul

Begonnen von StefanStrobel, 20 August 2017, 12:11:08

Vorheriges Thema - Nächstes Thema

beaune

Zitat von: StefanStrobel am 15 April 2024, 18:33:21
Zitat von: beaune am 15 April 2024, 14:51:00Da wäre es gut, wenn man irgendwie definieren könnte, dass genau diese beiden Werte möglichst gleichzeitig gelesen werden. Also bräuchte man vielleicht so etwas wie ne Gruppenbildung von Objekten: eine Gruppe für die (wenigen) Parameter, die man zeitgleich braucht, und ne andere für den Rest. Vielleicht gibts auch andere Lösungen. Daher erstmal meine Frage: gibt es hier schon einen Mechanismus, den man nutzen könnte?

obj-[cdih][0-9]+-group


ist für so etwas gedacht. Solche Werte stehen ja in der Regel hintereinander.

Gruss
  Stefan



Ich muß nochmal nachfragen... Die Werte stehen bei mir relativ weit auseinander, so dass ich folgende Fehlermeldung bekomme:
2024.04.17 10:19:06 3: PV: CreateUpdateHash found group 1 span 70 is longer than defined maximum 10
Ausschnitt aus meiner Definition:
attr PV obj-i0002-group 1-2
attr PV obj-i0002-name 0x02
attr PV obj-i0002-poll 1
attr PV obj-i0002-reading GridPower
attr PV obj-i0002-showGet 1
attr PV obj-i0002-type signed short big

attr PV obj-i0070-group 1-1
attr PV obj-i0070-len 2
attr PV obj-i0070-name 0x46
attr PV obj-i0070-poll 1
attr PV obj-i0070-reading FeedinPower
attr PV obj-i0070-showGet 1
attr PV obj-i0070-unpack s>

attr PV dev-i-combine 10

Hast Du dafür auch ne Lösung? Ich kann ja nicht alle 70 Register auf einen Schlag lesen...

Gruß
Beaune

StefanStrobel

Hallo Beaune,

theoretisch ist sogar das Lesen von 120 Register mit einem Request machbar. Ob Dein Derät da mitspielt, musst Du testen. Einfach mal combine z.B. auf 80 setzen.

Gruss
   Stefan

tobmaster1985

Hi

Ich habe vergeblich versucht, input Register zu scannen, es wurden immer die holding Register gescannt und die entsprechenden attr/readings mit "h" angelegt.

Im Verbose Log lies sich folgendes finden:
ProcessRequestQueue called from Fhem internal timer as queue:SH10RT_Test, qlen 1, request: request: id 1, scanobj fc 3 i4999, len 1, tid 249, master device SH10RT_Test (scan objs), queued 0.01 secs ago
Warum fc 3 für Register i4999 ? Es müsste fc 4 sein.

Daraufhin habe ich mir die Funktionen in der 98_Modbus.pm angesehen und den Fehler in der Funktion GetFC gefunden:
Der fc in in einem Hash gesucht, jedoch nicht gefunden und bleibt es dann beim Default fc 3.

Der Fehler liegt in der Zeile:

if ($fcMap{$fc}{type} && $fcMap{$fc}{type} eq $type && exists $fcMap{$fc}{$op} && exists $fcMap{$fc}{default}) {
$op enthält beim Scan "scanobj" und das existiert in dem Hash nicht, es gibt nur read und write im Hash.

So funktioniert der Scan korrekt:

if ($fcMap{$fc}{type} && $fcMap{$fc}{type} eq $type && exists $fcMap{$fc}{$fcKey} && exists $fcMap{$fc}{default}) {
ProcessRequestQueue called from Fhem internal timer as queue:SH10RT_Test, qlen 1, request: request: id 1, scanobj fc 4 i4999, len 1, tid 189, master devi
ce SH10RT_Test (scan objs), queued 0.00 secs ago

VG
Tobias


StefanStrobel

Hallo Tobias,

erschreckend, dass der Bug jahrelang unentdeckt geblieben ist, aber die Scan-Funktion wurde offenbar selten und wenn überhaupt dann mit holding registern verwendet.
Danke für den Hinweis, habe es geändert und checke es gleich ein.

Gruss
   Stefan

300P

Ich hab bislang nur h-Register beim scannen genutzt, bei den i-registern kam nichts. Dachte es läge an mir bzw. an den jeweiliegen Geräten das da nichts kam....😮

Hab aber auch nie dann im Logbuch oder oder auf irgendwelche Fehlermeldungen geachtet da ich es dann manuell gemacht habe, soweit dies notweding.🤷
FHEM 6.3 - Raspberry Pi 3 / Pi 4 - VControl300 mit VITOVALOR 300P - SMAEM - SMAInverter - DbLog/DbRep - MariaDB/QNAP - div. HTTPMOD - div. Modbus ser+TCP - SolarForecast - Tibber + Ladung mit SMA-SBS25

fireball

#1280
Hi,

viell. kann mir jemand helfen?!
Ich nutze seit gut nem Jahr das Eastron SDM72D-M-2 V2
Um den Zähler auszulesen ist ein PROTOSS PE11 Modbus-TCP-Konverter dazwischen.

Das ganz lief jetzt sehr lange stabil und zuverlässig.

Seit gut zwei Wochen, meldet das Modbus-Modul "ModbusSDM72DMV2" keine bzw. nur noch die Hälfte der Daten...
Der Zähler zählt nicht mehr, es liegen keine Ampere mehr an und Volt kommt auch nur noch auf einer Phase.
Die Impulse-Lampe am Zähler selber blinkt auch nicht mehr...

Alles in allem wäre die Frage, kann ich das Problem irgendwie eingrenzen?
Ist der Zähler defekt? Hat sich beim Modbus was geändert?
Die Verbindung vom Protoss zum Zähler steht, auch die Verbindung von Fhem zum Protoss.

Anbei mal ein List:
Internals:
  DEF        1 10 192.168.178.108:502 TCP
  DeviceName 192.168.178.108:502
  EXPECT    idle
  FD        42
  FUUID      65035538-f33f-0804-9108-6518766bb18430e9
  IODev      HWR_WAERMEPUMPE
  Interval  10
  LASTOPEN  1714471956.62501
  MODBUSID  1
  MODE      master
  MODULEVERSION Modbus 4.5.6 - 7.11.2023
  NAME      HWR_WAERMEPUMPE
  NOTIFYDEV  global
  NR        675
  NTFY_ORDER 50-HWR_WAERMEPUMPE
  PARTIAL   
  PROTOCOL  TCP
  STATE      opened
<br>
2080.598 kWh 0.0 W
  TCPConn    1
  TYPE      ModbusSDM72DMV2
  devioLoglevel 3
  devioNoSTATE 1
  eventCount 317
  nextOpenDelay 60
  DICACHE:
    3:
      UNPACK   
      EXPRS:
      EXTRAS:
      FNAMES:
    4:
      UNPACK   
      EXPRS:
      EXTRAS:
      FNAMES:
  PICACHE:
    h10:
      bswapRegs 
      decode   
      encode   
      expr     
      format   
      ignoreExpr
      map        1:1p2w, 3:3p4w
      mapDefault
      revRegs   
      rmapDefault
    h12:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.f ms
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    h14:
      bswapRegs 
      decode   
      encode   
      expr     
      format   
      ignoreExpr
      map        0:not_authorized, 1:authorized
      mapDefault
      revRegs   
      rmapDefault
    h18:
      bswapRegs 
      decode   
      encode   
      expr     
      format   
      ignoreExpr
      map        0:1stop.bit_no.parity, 1:1stop.bit_even.parity, 2:1stop.bit_odd.parity, 3:2stop.bits_no.parity
      mapDefault
      revRegs   
      rmapDefault
    h20:
      bswapRegs 
      decode   
      encode   
      expr     
      format   
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    h22:
      bswapRegs 
      decode   
      encode   
      expr     
      format   
      ignoreExpr
      map        0:1000imp/kWh,1:100imp/kWh,2:10imp/kWh,3:1imp/kWh
      mapDefault
      revRegs   
      rmapDefault
    h24:
      bswapRegs 
      decode   
      encode   
      expr     
      format   
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    h28:
      bswapRegs 
      decode   
      encode   
      expr     
      format   
      ignoreExpr
      map        0:2400, 1:4800, 2:9600, 3:19200, 5:1200
      mapDefault
      revRegs   
      rmapDefault
    h58:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.f sec
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    h60:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.f min
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    h64512:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %u
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    h64514:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %s
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    h86:
      bswapRegs 
      decode   
      encode   
      expr     
      format   
      ignoreExpr
      map        1:ImportActiveEnergy, 2:TotalActiveEnergy, 4:ExportActiveEnergy
      mapDefault
      revRegs   
      rmapDefault
    i0:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.1f V
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i10:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.2f A
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i12:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.f W
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i14:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.f W
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i16:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.f W
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i18:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.1f VA
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i2:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.1f V
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i20:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.1f VA
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i200:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.1f V
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i202:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.1f V
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i204:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.1f V
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i206:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.1f V
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i22:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.1f VA
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i224:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.2f A
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i24:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.1f VAr
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i26:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.1f VAr
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i28:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.1f VAr
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i30:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.1f
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i32:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.1f
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i34:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.1f
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i342:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.3f kWh
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i344:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.3f kVArh
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i4:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.1f V
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i42:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.1f V
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i46:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.1f A
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i48:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.2f A
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i52:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.1f W
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i56:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.1f VA
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i6:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.2f A
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i60:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.1f VAr
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i62:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.1f
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i70:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.2f Hz
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i72:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.3f kWh
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i74:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.3f kWh
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
    i8:
      bswapRegs 
      decode   
      encode   
      expr     
      format    %.2f A
      ignoreExpr
      map       
      mapDefault
      revRegs   
      rmapDefault
  QUEUE:
  READ:
    BUFFER   
  READINGS:
    2024-04-30 13:32:04  Current_Avr__A  0.0 A
    2024-04-30 13:32:23  Current_L1__A  0.00 A
    2024-04-30 13:32:23  Current_L2__A  0.00 A
    2024-04-30 13:32:23  Current_L3__A  0.00 A
    2024-04-30 13:32:24  Current_N__A    0.00 A
    2024-04-30 13:32:24  Current_Sum__A  0.00 A
    2024-04-30 13:32:04  Energy_export__kWh 8.260 kWh
    2024-04-30 13:32:04  Energy_import__kWh 2072.338 kWh
    2024-04-30 13:31:35  Energy_total__kVArh 1975.579 kVArh
    2024-04-30 13:31:35  Energy_total__kWh 2080.598 kWh
    2024-04-30 13:31:54  Frequency__Hz  49.94 Hz
    2024-04-30 12:12:38  KPPA_authorization not_authorized
    2024-04-30 12:13:00  Modbus_Node_adr 1
    2024-04-30 12:12:38  Modbus_Parity_Stop 1stop.bit_no.parity
    2024-04-30 12:13:00  Modbus_Speed__baud 9600
    2024-04-30 13:31:54  PowerFactor    0.0
    2024-04-30 13:31:53  PowerFactor_L1  0.0
    2024-04-30 13:31:53  PowerFactor_L2  0.0
    2024-04-30 13:31:53  PowerFactor_L3  0.0
    2024-04-30 13:32:23  Power_L1__VA    0.0 VA
    2024-04-30 13:32:23  Power_L1__VAr  0.0 VAr
    2024-04-30 13:32:23  Power_L1__W    0 W
    2024-04-30 13:32:23  Power_L2__VA    0.0 VA
    2024-04-30 13:32:23  Power_L2__VAr  0.0 VAr
    2024-04-30 13:32:23  Power_L2__W    0 W
    2024-04-30 13:32:23  Power_L3__VA    0.0 VA
    2024-04-30 13:32:23  Power_L3__VAr  0.0 VAr
    2024-04-30 13:32:23  Power_L3__W    0 W
    2024-04-30 13:32:24  Power_Sum__VA  0.0 VA
    2024-04-30 13:32:24  Power_Sum__VAr  0.0 VAr
    2024-04-30 13:32:24  Power_Sum__W    0.0 W
    2024-04-30 12:13:02  Pulse_1_Energy_Type TotalActiveEnergy
    2024-04-30 12:13:00  Pulse_constant  1000imp/kWh
    2024-04-30 12:13:03  System_Meter_Code 00890000
    2024-04-30 12:13:00  System_Password 1000
    2024-04-30 12:12:38  System_Pulse_Width__ms 35 ms
    2024-04-30 12:13:03  System_Serial_Nr 1426675201
    2024-04-30 12:12:38  System_Type    3p4w
    2024-04-30 12:13:01  Time__bl        60 min
    2024-04-30 13:31:34  Voltage_Avr_L_to_L__V 132.1 V
    2024-04-30 13:32:04  Voltage_Avr__V  76.2 V
    2024-04-30 13:31:33  Voltage_L1__V  228.5 V
    2024-04-30 13:31:34  Voltage_L1_to_L2__V 396.2 V
    2024-04-30 13:31:33  Voltage_L2__V  0.0 V
    2024-04-30 13:31:34  Voltage_L2_to_L3__V 0.0 V
    2024-04-30 13:31:33  Voltage_L3__V  0.0 V
    2024-04-30 13:31:34  Voltage_L3_to_L1__V 0.0 V
    2024-04-30 12:13:01  scrollDisplaytime 0 sec
    2024-04-30 12:12:38  state          opened
  REMEMBER:
    lid        1
    lname      HWR_WAERMEPUMPE
    lrecv      1714476744.89829
    lsend      1714476744.8176
  UPDATECACHE:
    i224:
      adr        224
      len        2
      objCombi  i224
      reading    Current_N__A
      span      2
      type      i
    i48:
      adr        48
      combine    i48 len 2 Current_Sum__A with i52 len 2 Power_Sum__W and i56 len 2 Power_Sum__VA and i60 len 2 Power_Sum__VAr
      len        2
      objCombi  i48
      reading    Current_Sum__A
      span      14
      type      i
    i6:
      adr        6
      combine    i6 len 2 Current_L1__A with i8 len 2 Current_L2__A and i10 len 2 Current_L3__A and i12 len 2 Power_L1__W and i14 len 2 Power_L2__W and i16 len 2 Power_L3__W and i18 len 2 Power_L1__VA and i20 len 2 Power_L2__VA and i22 len 2 Power_L3__VA and i24 len 2 Power_L1__VAr and i26 len 2 Power_L2__VAr and i28 len 2 Power_L3__VAr
      len        2
      objCombi  i6
      reading    Current_L1__A
      span      24
      type      i
  defptr:
    HWR_WAERMEPUMPE 1
  gotReadings:
    Current_N__A 0.00 A
  lastRead:
    h10        1714471958.25289
    h12        1714471958.25366
    h14        1714471958.25439
    h18        1714471958.25511
    h20        1714471980.96395
    h22        1714471980.96451
    h24        1714471980.96489
    h28        1714471980.96533
    h58        1714471981.84664
    h60        1714471981.84705
    h64512    1714471983.44835
    h64514    1714471983.44886
    h86        1714471982.63112
    i0        1714476693.21773
    i10        1714476743.31172
    i12        1714476743.31212
    i14        1714476743.3125
    i16        1714476743.3129
    i18        1714476743.3133
    i2        1714476693.21836
    i20        1714476743.3137
    i200      1714476694.86817
    i202      1714476694.8686
    i204      1714476694.869
    i206      1714476694.86941
    i22        1714476743.31413
    i224      1714476744.8994
    i24        1714476743.31453
    i26        1714476743.31492
    i28        1714476743.31531
    i30        1714476713.22359
    i32        1714476713.22399
    i34        1714476713.22439
    i342      1714476695.65512
    i344      1714476695.65559
    i4        1714476693.21883
    i42        1714476724.08975
    i46        1714476724.09025
    i48        1714476744.11593
    i52        1714476744.11634
    i56        1714476744.11673
    i6        1714476743.31088
    i60        1714476744.11712
    i62        1714476714.04878
    i70        1714476714.0492
    i72        1714476724.87604
    i74        1714476724.87646
    i8        1714476743.31131
Attributes:
  devStateIcon opened:FS20.on closed:FS20.off

  event-on-change-reading .*
  icon      measure_power_meter
  room      ENERGIE
  stateFormat state
<br>
Energy_total__kWh Power_Sum__W

hier sieht man jetzt die ganzen Felder die auf 0 stehen und daher wird sicherlich auch der Zähler nichts mehr hochrechnen.

VG+Danke
René

PS: Firmwareupdate auf dem Protoss konnte ich noch machen, aber das half auch nichts...

Nobbynews

#1281
Zitat von: fireball am 30 April 2024, 13:34:35Die Impulse-Lampe am Zähler selber blinkt auch nicht mehr...
An Modbus hat sich nichts geändert.
Sicherungen überprüft?
Ein- und Ausgänge mal mit einem Duspol überprüft? !! Achtung: 230V bzw. 400 V !!
Wenn das OK ist und da die LED nicht blinkt, würde ich mal auf einen Tod des Zählers tippen.
Ggf. mal den Zähler mit einem einfachen Modbus-Adapter anklemmen.

fireball

Hi, dann wirds wohl mau aussehen... die Sicherung kommt ja erst nach dem Zähler... Strom ist auf allen Phasen vor und hinter dem Zähler und die Wärmepumpe läuft ja auch noch... aber was mir halt schon beim ansehen aufgefallen ist, dass die LED nicht mehr blinkt... denke dann isser hin... bei Amazon sind auch viele Bewertungen, dass der Zähler nach ein paar Monaten den Geist aufgegeben hat. Mal schauen ob ich das noch über die Garantie lösen kann...
Danke
VG