Neue Versionen und Support zum Modbus-Modul

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

Vorheriges Thema - Nächstes Thema

DocCyber

#1245
Hallo zusammen.

Nachdem mehreren vergeblichen Versuche mit dem Modul SMAInverter möchte ich nun nun ModbusAttr ausprobieren, um endlich auf meinen Wechselrichter SMA SB3600 zugreifen zu können.
Grundsätzlich muss das via Modbus möglich sein, denn ich habe ich im Loxone-Forum genau dazu etwas dazu gefunden.

Allerdings mir ist überhaupt nicht klar, wie ich das in FHEM eingebunden bekomme.
Dazu zunächst zwei fundamentale Fragen:
  • Brauche ich für ModbusAttr eigentlich besonderes Kabel, oder reicht für die Kommunikation das normale Kabel aus, mit dem der Wechselrichter sowieso ins Netzwerk eingebunden ist?
  • Braucht ModbusAttr ein Kennwort, um zugreifen zu können?

Es würde mir zunächst reichen, die erzeugte Leistung vom WR abrufen zu können.
Dafür wäre es toll, wenn mir jemand die notwendige Starthilfe geben könnte.
Hier ist noch die SMA-Modbus Dokumentation dazu.

Vielen Dank vorab!
Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-3 mit HM-CFG-LAN und jede Menge HM Komponenten.

300P

#1246
Hallo DocCyber,

A:
Netzwerkkabel reicht - nur musst du im WR das Modbusprotokoll einschalten. (Meist Port 502)

B:
Hier ein kurzes Beispiel für dich das auch funktioniert.
Den Rest bzw. weitere Adressen solltest du dann selber anpassen:
(Bei mir ist es aber ein SB30 ->> Wirkleistung = Adr. h30775 - sollte bei dir auch passen)

defmod MB_SB30 ModbusAttr 3 60 192.168.YYY.XXX:502 TCP
attr MB_SB30 DbLogExclude .*
attr MB_SB30 dev-h-defExpr $val
attr MB_SB30 dev-h-defIgnoreExpr (( $val==536870911 ) || ( $val ==2147483648 ) || ( $val ==4294967295 ))
attr MB_SB30 dev-h-defLen 2
attr MB_SB30 dev-h-defPoll 1
attr MB_SB30 dev-h-defUnpack N
attr MB_SB30 dev-type-S32F0-expr $val
attr MB_SB30 dev-type-S32F0-format %.0f
attr MB_SB30 dev-type-S32F0-len 2
attr MB_SB30 dev-type-S32F0-unpack i>
attr MB_SB30 enableControlSet 1
attr MB_SB30 obj-h30775-reading Wirkleistung
attr MB_SB30 obj-h30775-type S32F0
attr MB_SB30 obj-h30775-poll 1
attr MB_SB30 room 011_MODBUS
attr MB_SB30 verbose 2


Gruß
300P
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

DocCyber

Super!
Das klappt nach kleinen Anpassungen auf Anhieb!
Hat zwar etwas gedauert, bis der erste Leistungswert kam, aber es funktioniert!

Vielen herzlichen Dank!
Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-3 mit HM-CFG-LAN und jede Menge HM Komponenten.

300P

Zitat von: DocCyber am 22 März 2024, 14:07:35Hat zwar etwas gedauert, bis der erste Leistungswert kam, aber es funktioniert!

Ja - dauert immer ein paar "Sekunden/Minuten" ehe die erste saubere Antwort kommt, scheinbar "schlafen" die Modbusregister bei SMA-WR immer sehr tief ehe sie reagieren.  :o
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

DocCyber

Zitat von: 300P am 22 März 2024, 15:22:27scheinbar "schlafen" die Modbusregister bei SMA-WR immer sehr tief
:)
Hauptsache, es funktioniert überhaupt.

Nachdem ModbusAttr also beim SMA WR funktioniert, habe ich das selbe nun bei meinem zweiten WR (Solis) auch probiert.
Die Verbindung als solche scheint zu stehen (State: opened)
In der -etwas spärlichen- Doku von Solis werden aber word, dword, int und smallInt als Datentypen genannt, während in der ModbusAttr-CommandRef deutlich mehr / andere Datentypen genannt werden.
Wie kann ich die Datentypen von Solis in die von ModbusAttr "übersetzen"?
Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-3 mit HM-CFG-LAN und jede Menge HM Komponenten.

pejonp

LaCrossGW 868MHz:WT470+TFA+TX37-IT+EMT7110+W136+WH25A HP1003+WH2621
SignalD(CC1101):Bresser+WS-0101(868MHz WH1080)+Velux KLF200+MAX!+HM-MOD-UART:Smoke HM-SEC-SD+VITOSOLIC 200 RESOL VBUS-LAN+SolarEdge SE5K(Modbus)+Sonnen!eco8(10kWh)+TD3511+DRT710M(Modbus)+ZigBee+Z-Wave+MQTT+vitoconnect

DocCyber

Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-3 mit HM-CFG-LAN und jede Menge HM Komponenten.

DocCyber

Zitat von: 300P am 22 März 2024, 13:25:28Hier ein kurzes Beispiel für dich das auch funktioniert.

Es hatte funktioniert .. aber jetzt?

Ich möchte ein sehr merkwürdiges Phänomen beschreiben.
Zunächst habe ich - dank deiner Starthilfe - noch einige weitere Readings eingebaut, und alles lief gut.
Heute Mittag - ich war zuvor außer Haus - kamen dann plötzlich keine Daten mehr: State disconnected.
Nach einigem Forschen habe ich dann herausgefunden, dass der SMA und mein Handy merkwürdigerweise die selbe IP-Adresse hatten (sollte eig. nicht vorkommen).
Also habe ich das Handy auf eine andere IP gesetzt, und siehe da: State opened

Aber das ist die einzig positive Meldung, denn seitdem erhalte ich keinerlei Readings mehr vom SMA.
Ich habe dann das SMA-Modbus-Device gelöscht und neu angelegt; später auch nochmal mit einer absoluten Minimalkonfiguration, auch den fhem Server neu gestartet...
Aber nichts!

Ich habe keinerlei Erklärung.
Weiß jemand Rat?
Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-3 mit HM-CFG-LAN und jede Menge HM Komponenten.

DocCyber

Zitat von: pejonp am 23 März 2024, 11:23:54schau mal hier, da gibt es schon einige Infos.
Sehr guter Tipp: Solisabfrage per Modbus läuft prima.

Falls es noch jemanden interessiert:
Mein Modell ist ein S5-GR3P8K, und hier meine ModbusAttr-Definition
define solis ModbusAttr 1 60 192.168.xxx.xxx:502 TCP
attr solis comment Readings Units\
* energyDay      Energie heute kWh\
* energyDay-1    Energie Vortag kWh\
* energyMonth    Energie Monat kWh\
* energyMonth-1  Energie Vormonat kWh\
* energyYear     Energie Jahr kWh\
* energyYear-1   Energie Vorjahr kWh\
* energyTotal    Energie ingesamt kWh\
* power          aktuelle solare Leistung W\
* inverterTemperature  Temperatur °C
attr solis dev-h-combine 5
attr solis dev-h-defLen 2
attr solis dev-h-defShowGet 1
attr solis dev-h-defUnpack f>
attr solis dev-h-read 3
attr solis dev-h-write 16
attr solis dev-i-combine 5
attr solis dev-i-defLen 2
attr solis dev-i-defPoll 1
attr solis dev-i-defShowGet 1
attr solis dev-i-defUnpack f>
attr solis dev-i-read 4
attr solis dev-timing-commDelay 0.7
attr solis dev-timing-sendDelay 0.7
attr solis dev-timing-timeout 2
attr solis event-min-interval state:900
attr solis event-on-change-reading .*
attr solis group Inverter
attr solis obj-i3004-len 2
attr solis obj-i3004-poll 1
attr solis obj-i3004-reading power
attr solis obj-i3004-unpack N
attr solis obj-i3008-len 2
attr solis obj-i3008-poll 1
attr solis obj-i3008-reading energyTotal
attr solis obj-i3008-unpack N
attr solis obj-i3010-len 2
attr solis obj-i3010-poll 1
attr solis obj-i3010-reading energyMonth
attr solis obj-i3010-unpack N
attr solis obj-i3012-len 2
attr solis obj-i3012-poll 1
attr solis obj-i3012-reading energyMonth-1
attr solis obj-i3012-unpack N
attr solis obj-i3014-expr $val/10
attr solis obj-i3014-format %.1f
attr solis obj-i3014-poll 1
attr solis obj-i3014-reading energyDay
attr solis obj-i3014-unpack n
attr solis obj-i3015-expr $val/10
attr solis obj-i3015-format %.1f
attr solis obj-i3015-poll 1
attr solis obj-i3015-reading energyDay-1
attr solis obj-i3015-unpack n
attr solis obj-i3016-format %.0f
attr solis obj-i3016-len 2
attr solis obj-i3016-poll 1
attr solis obj-i3016-reading energyYear
attr solis obj-i3016-unpack N
attr solis obj-i3018-format %.0f
attr solis obj-i3018-len 2
attr solis obj-i3018-poll 1
attr solis obj-i3018-reading energyYear-1
attr solis obj-i3018-unpack N
attr solis obj-i3041-expr $val/10
attr solis obj-i3041-format %.1f
attr solis obj-i3041-poll 1
attr solis obj-i3041-reading inverterTemperature
attr solis obj-i3041-unpack n
attr solis obj-i3043-len 2
attr solis obj-i3043-map 0:Generating,1:OpenRun,2:Waiting,3:Initializing,4:GridOff
attr solis obj-i3043-poll 1
attr solis obj-i3043-reading inverterStatus
attr solis obj-i3043-revRegs 1
attr solis obj-i3043-unpack n
attr solis room 50_PV
Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-3 mit HM-CFG-LAN und jede Menge HM Komponenten.

300P

Zitat von: DocCyber am 25 März 2024, 19:34:50
Zitat von: 300P am 22 März 2024, 13:25:28Hier ein kurzes Beispiel für dich das auch funktioniert.

Es hatte funktioniert .. aber jetzt?

Ich möchte ein sehr merkwürdiges Phänomen beschreiben.
Zunächst habe ich - dank deiner Starthilfe - noch einige weitere Readings eingebaut, und alles lief gut.
Heute Mittag - ich war zuvor außer Haus - kamen dann plötzlich keine Daten mehr: State disconnected.
Nach einigem Forschen habe ich dann herausgefunden, dass der SMA und mein Handy merkwürdigerweise die selbe IP-Adresse hatten (sollte eig. nicht vorkommen).
Also habe ich das Handy auf eine andere IP gesetzt, und siehe da: State opened

Aber das ist die einzig positive Meldung, denn seitdem erhalte ich keinerlei Readings mehr vom SMA.
Ich habe dann das SMA-Modbus-Device gelöscht und neu angelegt; später auch nochmal mit einer absoluten Minimalkonfiguration, auch den fhem Server neu gestartet...
Aber nichts!

Ich habe keinerlei Erklärung.
Weiß jemand Rat?

Du solltest für alle Geräte - die zu der PV-Anlage gehören bzw. auch die die von FHEM angesprochen werden - immer eine feste IP-Adresse in deinem DHCP/Server (?Fritzbox?!) ausserhalb des frei verfügbaren IP-Bereiches reservieren / festlegen. Dann passiert dies nicht.

Ansonsten gibt es immer wieder Probleme wenn sich diese ,,mal wieder" ändern.
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

DocCyber

Zitat von: 300P am 25 März 2024, 20:13:54Du solltest für alle Geräte - die zu der PV-Anlage gehören bzw. auch die die von FHEM angesprochen werden - immer eine feste IP-Adresse in deinem DHCP/Server (?Fritzbox?!) ausserhalb des frei verfügbaren IP-Bereiches reservieren / festlegen. Dann passiert dies nicht.
Das war auch vorher schon klar, aber es ist keine Lösung des Problems:
Es gibt keine Zugriff mehr auf das Gerät, obwohl der IP-Adresskonflikt nicht mehr besteht, und obwohl zuvor alles lief.
Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-3 mit HM-CFG-LAN und jede Menge HM Komponenten.

pejonp

@doccyber

Kannst du den Sma anpingen ?
Sma neu gestartet damit er sich die ip neu zieht?
Hat der sma eine weboberfläche ?
Zufällig noch ein wechselrichter im Netz?

Pejonp
LaCrossGW 868MHz:WT470+TFA+TX37-IT+EMT7110+W136+WH25A HP1003+WH2621
SignalD(CC1101):Bresser+WS-0101(868MHz WH1080)+Velux KLF200+MAX!+HM-MOD-UART:Smoke HM-SEC-SD+VITOSOLIC 200 RESOL VBUS-LAN+SolarEdge SE5K(Modbus)+Sonnen!eco8(10kWh)+TD3511+DRT710M(Modbus)+ZigBee+Z-Wave+MQTT+vitoconnect

300P

#1257
@DocCyber:

Evtl. mal vor Ort am Gerät Direkt-Verbindung versuchen:


Per WLAN vor Ort am WR verbinden:

WLAN-Passwortsiehe hier:
Du darfst diesen Dateianhang nicht ansehen.

und dann :
Standard-IP-Adresse des Wechselrichters für Direktverbindung via WLAN: =>> 192.168.12.3

oder auch:

In die Adresszeile des Webbrowsers, wenn Ihr Gerät mDNS-Dienste unterstützt, SMA[Seriennummer].local oder https://SMA[Seriennummer] eingeben und die Eingabetaste drücken.

Alternative per Ethernet (Kabel-Verbindung)

Standard-IP-Adresse des Wechselrichters für Direktverbindung via Ethernet: =>> 169.254.12.3

oder auch hier versuchen:

In die Adresszeile des Webbrowsers, wenn Ihr Gerät mDNS-Dienste unterstützt, SMA[Seriennummer].local oder https://SMA[Seriennummer] eingeben und die Eingabetaste drücken.

Dann kannst du auf der Weboberfläche sehen welche IP-Adressen der WR sich selbst "automatisch geholt halt".

Gruß
300P
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

DocCyber

Zitat von: pejonp am 26 März 2024, 09:29:00@doccyber

Kannst du den Sma anpingen ?
Sma neu gestartet damit er sich die ip neu zieht?
Hat der sma eine weboberfläche ?
Zufällig noch ein wechselrichter im Netz?

Pejonp

Es funktioniert wieder!

Ich hatte den WR schon gestern ausgeschaltet, weil ich mir dadurch die Lösung erwartet hatte.
Nur: Ausschalten reichte nicht! Man muss den WR vollständig vom Stromnetz nehmen, also Sicherungen raus!
Das war's...

Hier noch ein paar Antworten auf die gestellten Frage:
Nein, mein SMA WR hat kein WebInterface und kein WLAN.
Ja, es ist noch ein zweiter WR im Netz, aber einer von Solis. (Der Modbus-Zugriff darauf war zu keiner Zeit gestört)


Nochmals kurz zusammengefasst:
Ein IP-Adresskonflikt (unbekannte Gründe) mit dem SMA WR hatte dazu geführt, dass dessen Modbus nicht mehr ansprechbar war. Hard-Reset des Wechselrichters hat das Problem schließlich gelöst.
Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-3 mit HM-CFG-LAN und jede Menge HM Komponenten.

DocCyber

Hallo zusammen,

ich möchte euch gern nochmal um Hilfe bitte, diesmal für den Abruf von Daten vom Elgris Smart Meter.
Zunächst hatte ich SMAEM verwendet. Das funktioniert, aber es werden für meine Zwecke unnötig viele Daten abgerufen. Aktuelle mache ich es mit HHTPMod. Das funktioniert auch.

Da ich aber mittlerweile - nicht zuletzt durch eure Hilfe - meine beiden Wchselrichter von SMA und Solis erfolgreich mit ModbusAttr auslesen kann, möchte ich das auch für Elgris machen.

Doch offenbar ist ModbusAttr nicht mein bester Freund, denn ich bekomme es nicht hin.
Allerdings ist der Port wohl geöffnet:
define elgris ModbusAttr 1 60 192.168.178.29:502 TCP
attr elgris group Energie
attr elgris obj-h40052-len 16
attr elgris obj-h40052-reading serialNumber
attr elgris obj-h40085-reading I_AC_Frequency
attr elgris obj-h40087-len 2
attr elgris obj-h40087-reading power
attr elgris obj-h40087-unpack i>
attr elgris obj-i40052-len 16
attr elgris obj-i40052-reading serialNumber
attr elgris obj-i40087-len 2
attr elgris obj-i40087-reading power
attr elgris room 50_PV
attr elgris showError 1
attr elgris verbose 5
#   CFGFN     
#   DEF        1 60 192.168.xxx.xxx:502 TCP
#   DeviceName 192.168.xxx.xxx:502
#   EXPECT     idle
#   FD         18
#   FUUID      66042320-f33f-8be1-c8f8-c094144c85c08eca
#   IODev      elgris
#   Interval   60
#   LASTOPEN   1711630652.40479
#   MODBUSID   1
#   MODE       master
#   MODULEVERSION Modbus 4.5.6 - 7.11.2023
#   NAME       elgris
#   NOTIFYDEV  global
#   NR         986
#   NTFY_ORDER 50-elgris
#   PARTIAL   
#   PROTOCOL   TCP
#   STATE      opened
#   TCPConn    1
#   TYPE       ModbusAttr
#   devioLoglevel 3
#   devioNoSTATE 1
#   eventCount 4186
#   nextOpenDelay 60
#   READ:
#     BUFFER    
#   READINGS:
#     2024-03-28 13:57:32   state           opened
#   REMEMBER:
#     lid        130
#     lname      elgris
#     lrecv      1711563843.78974
#     lsend      1711563842.78221
#   UPDATECACHE:
#   defptr:
#     elgris     1
#   lastRead:
#
setstate elgris opened
setstate elgris 2024-03-28 13:57:32 state opened

Der Wert an Adresse 40087 (Total real power) reicht mir aus.

Vielen Dank vorab!

Elgris Doku angehängt
Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-3 mit HM-CFG-LAN und jede Menge HM Komponenten.