Modbus Zugriff für Fronius Symo

Begonnen von Roger, 03 Januar 2016, 19:51:56

Vorheriges Thema - Nächstes Thema

topa_LE

2017.06.09 20:10:37 3: PVSolarBasis: Notify / Init: opening connection
2017.06.09 20:10:37 3: Opening PVSolarBasis device 192.168.178.60:502
2017.06.09 20:10:37 3: PVSolarEnergie: Notify / Init: opening connection
2017.06.09 20:10:37 3: Opening PVSolarEnergie device 192.168.178.60:502
2017.06.09 20:10:37 3: PVSolarTracker: Notify / Init: opening connection
2017.06.09 20:10:37 3: Opening PVSolarTracker device 192.168.178.60:502

2017.06.09 20:10:44 3: PVSolarTracker device opened
2017.06.09 20:10:44 3: PVSolarEnergie device opened
2017.06.09 20:10:44 3: PVSolarBasis device opened
2017.06.09 20:11:44 3: PVSolarTracker: _Send with unpack containing f but len is too small - please set obj-h40289-Len!
2017.06.09 20:11:44 3: PVSolarTracker: _Send with unpack containing f but len is too small - please set obj-h40309-Len!
2017.06.09 20:11:46 3: PVSolarTracker: ParseObj unpack of 8000 with f> for Temp_String1__C resulted in undefined value
2017.06.09 20:11:48 3: PVSolarTracker: ParseObj unpack of 8000 with f> for Temp_String2__C resulted in undefined value
2017.06.09 20:12:44 3: PVSolarTracker: _Send with unpack containing f but len is too small - please set obj-h40309-Len!
2017.06.09 20:12:44 3: PVSolarTracker: _Send with unpack containing f but len is too small - please set obj-h40289-Len!
2017.06.09 20:12:44 3: PVSolarTracker: ParseObj unpack of 8000 with f> for Temp_String2__C resulted in undefined value
2017.06.09 20:12:45 3: PVSolarTracker: ParseObj unpack of 8000 with f> for Temp_String1__C resulted in undefined value
2017.06.09 20:13:44 3: PVSolarTracker: _Send with unpack containing f but len is too small - please set obj-h40309-Len!
2017.06.09 20:13:44 3: PVSolarTracker: _Send with unpack containing f but len is too small - please set obj-h40289-Len!
2017.06.09 20:13:44 3: PVSolarTracker: ParseObj unpack of 8000 with f> for Temp_String2__C resulted in undefined value
2017.06.09 20:13:45 3: PVSolarTracker: ParseObj unpack of 8000 with f> for Temp_String1__C resulted in undefined value
2017.06.09 20:14:44 3: PVSolarTracker: _Send with unpack containing f but len is too small - please set obj-h40289-Len!
2017.06.09 20:14:44 3: PVSolarTracker: _Send with unpack containing f but len is too small - please set obj-h40309-Len!
2017.06.09 20:14:44 3: PVSolarTracker: ParseObj unpack of 8000 with f> for Temp_String1__C resulted in undefined value
2017.06.09 20:14:45 3: PVSolarTracker: ParseObj unpack of 8000 with f> for Temp_String2__C resulted in undefined value
2017.06.09 20:15:44 3: PVSolarTracker: _Send with unpack containing f but len is too small - please set obj-h40289-Len!
2017.06.09 20:15:44 3: PVSolarTracker: _Send with unpack containing f but len is too small - please set obj-h40309-Len!
2017.06.09 20:15:54 3: PVSolarTracker: ParseObj unpack of 8000 with f> for Temp_String1__C resulted in undefined value
2017.06.09 20:15:56 3: PVSolarTracker: ParseObj unpack of 8000 with f> for Temp_String2__C resulted in undefined value
2017.06.09 20:16:44 3: PVSolarTracker: _Send with unpack containing f but len is too small - please set obj-h40289-Len!
2017.06.09 20:16:44 3: PVSolarTracker: _Send with unpack containing f but len is too small - please set obj-h40309-Len!
2017.06.09 20:16:44 3: PVSolarTracker: ParseObj unpack of 8000 with f> for Temp_String1__C resulted in undefined value
2017.06.09 20:16:45 3: PVSolarTracker: ParseObj unpack of 8000 with f> for Temp_String2__C resulted in undefined value
2017.06.09 20:17:44 3: PVSolarTracker: _Send with unpack containing f but len is too small - please set obj-h40289-Len!
2017.06.09 20:17:44 3: PVSolarTracker: _Send with unpack containing f but len is too small - please set obj-h40309-Len!
2017.06.09 20:17:44 3: PVSolarTracker: ParseObj unpack of 8000 with f> for Temp_String1__C resulted in undefined value
2017.06.09 20:17:45 3: PVSolarTracker: ParseObj unpack of 8000 with f> for Temp_String2__C resulted in undefined value

vitolinker

Die dinger sind doch open, sieht gut aus. Der Tracker Fehler ist noch ein Bug auch bei mir.
Wechselrichter ist im Netz erreichbar.

topa_LE

und nun ?

Was kann ich noch tun oder prüfen?

topa_LE

Dachte mir irgendwie nachgelesen zu haben, das telnet perl fehlt.

apt-get install libnet-telnet-perl

Installiert und siehe da , sieht nun besser aus.

2017.06.09 20:43:00 0: Server shutdown
2017.06.09 20:43:13 1: Including fhem.cfg
2017.06.09 20:43:14 3: WEB: port 8083 opened
2017.06.09 20:43:14 3: WEBphone: port 8084 opened
2017.06.09 20:43:14 3: WEBtablet: port 8085 opened
2017.06.09 20:43:14 2: eventTypes: loaded 566 events from ./log/eventTypes.txt
2017.06.09 20:43:14 3: TABLETUI: new ext defined infix:ftui/: dir:./www/tablet/:
2017.06.09 20:43:14 3: Registering HTTPSRV TABLETUI for URL /ftui   and assigned link ftui/ ...
2017.06.09 20:43:14 3: Opening Fritzbox device 192.168.178.1:2002
2017.06.09 20:43:14 1: FBAHA Fritzbox registered with handle: 0000001a
2017.06.09 20:43:14 3: Fritzbox device opened
2017.06.09 20:43:39 3: Opening REPEATER1750 device 192.168.178.95:2002
2017.06.09 20:43:39 3: Can't connect to 192.168.178.95:2002: Verbindungsaufbau abgelehnt
2017.06.09 20:43:39 1: PERL WARNING: Prototype mismatch: sub main::MinMaxChk ($$$) vs ($$$;$$) at ./FHEM/98_Fronius_Modbus.pm line 796, <$fh> line 213.
2017.06.09 20:43:39 3: PVSolarBasis: defined with id 1, interval 30, protocol TCP, destination 192.168.178.60:502
2017.06.09 20:43:39 1: PERL WARNING: Subroutine MinMaxChk redefined at ./FHEM/98_Fronius_Modbus_MPPT.pm line 363, <$fh> line 216.
2017.06.09 20:43:39 3: PVSolarTracker: defined with id 1, interval 60, protocol TCP, destination 192.168.178.60:502
2017.06.09 20:43:39 1: PERL WARNING: Subroutine MinMaxChk redefined at ./FHEM/98_Fronius_Modbus_Meter.pm line 374, <$fh> line 219.
2017.06.09 20:43:39 3: PVSolarEnergie: defined with id 240, interval 30, protocol TCP, destination 192.168.178.60:502
2017.06.09 20:43:40 1: Including ./log/fhem.save
2017.06.09 20:43:44 3: PVSolarBasis: Notify / Init: opening connection
2017.06.09 20:43:44 3: Opening PVSolarBasis device 192.168.178.60:502
2017.06.09 20:43:44 3: PVSolarEnergie: Notify / Init: opening connection
2017.06.09 20:43:44 3: Opening PVSolarEnergie device 192.168.178.60:502
2017.06.09 20:43:44 3: PVSolarTracker: Notify / Init: opening connection
2017.06.09 20:43:44 3: Opening PVSolarTracker device 192.168.178.60:502
2017.06.09 20:43:44 1: usb create starting
2017.06.09 20:43:44 3: Probing CUL device /dev/ttyAMA0
2017.06.09 20:43:45 3: Probing TCM_ESP3 device /dev/ttyAMA0
2017.06.09 20:43:45 3: Probing FRM device /dev/ttyAMA0
2017.06.09 20:43:50 1: usb create end
2017.06.09 20:43:50 2: SecurityCheck:  WEB,WEBphone,WEBtablet has no associated allowed device with basicAuth.  Restart FHEM for a new check if the problem is fixed, or set the global attribute motd to none to supress this message.
2017.06.09 20:43:50 0: Featurelevel: 5.8
2017.06.09 20:43:50 0: Server started with 56 defined entities (fhem.pl:14348/2017-05-22 perl:5.020002 os:linux user:fhem pid:1017)
2017.06.09 20:43:50 3: telnetForBlockingFn_1497033830.50047: port 37061 opened
2017.06.09 20:43:50 3: PVSolarBasis device opened
2017.06.09 20:43:50 3: PVSolarEnergie device opened
2017.06.09 20:43:50 3: PVSolarTracker device opened


Nur muss man telnet noch nutzen, auch die Zugriffe weiterer Fritzbox Dinge (Repeater, zweite FB, FritzFon) habe ich noch nicht eingebunden bekommen.

Roger

Hallo FHEM Gemeinde,
habe Dank vuffiraa 98_Fronius_Modbus_Meter.pm repariert.

Zitat
Ich beziehe mich auf die Beobachtung, dass die Werte für Modbus_Meter -> Energy_L* nicht plausibel sind.

Bei mir wurde ein Smart Meter installiert, den ich auch über Modbus TCP in Fhem auslesen kann. Das Problem mit dem Energy-Werten hatte ich auch. Laut dem verlinktem Dokument liefern die Energy-Register Werte vom Typ float32. Im Modul Fronius_Modbus_Meter werden die Register aber als uint32 interpretiert. Das führt zu den komischen Werten.

Wenn man für die Energy-Register in der Definition unpack => "N" nach unpack => "f>" ändert, sehen die Werte viel besser und plausibel aus. Vielleicht kann Roger das in das Modul aus dem ersten Beitrag ändern.

Gruß Vuffiraa

Datei im Beitrag 1 abgelegt.

mit repariertem Gruss
Roger
Zotac, BBB, RPIs mit 10*FHEM
2*HM-LAN, 2*JeeLink, 2*RS485, SignalESP
HomeMatic, PCA301 Komponenten, ModBus: Stromzähler, Fronius WR, Shelly

topa_LE

Leider werden in das Fronius_log keine Daten geschrieben seit gestern, wo ich da eingerichtet habe.

2017.06.11 00:14:07 3: PVSolarTracker: ParseObj unpack of 8000 with f> for Temp_String2__C resulted in undefined value
2017.06.11 00:14:10 3: PVSolarTracker: ParseObj unpack of 8000 with f> for Temp_String1__C resulted in undefined value
2017.06.11 00:15:09 3: PVSolarTracker: _Send with unpack containing f but len is too small - please set obj-h40309-Len!
2017.06.11 00:15:09 3: PVSolarTracker: _Send with unpack containing f but len is too small - please set obj-h40289-Len!
2017.06.11 00:15:12 3: PVSolarTracker: ParseObj unpack of 8000 with f> for Temp_String2__C resulted in undefined value
2017.06.11 00:15:14 3: PVSolarTracker: ParseObj unpack of 8000 with f> for Temp_String1__C resulted in undefined value
2017.06.11 00:16:12 3: PVSolarTracker: _Send with unpack containing f but len is too small - please set obj-h40309-Len!
2017.06.11 00:16:12 3: PVSolarTracker: _Send with unpack containing f but len is too small - please set obj-h40289-Len!
2017.06.11 00:16:14 3: PVSolarTracker: ParseObj unpack of 8000 with f> for Temp_String2__C resulted in undefined value
2017.06.11 00:16:15 3: PVSolarTracker: ParseObj unpack of 8000 with f> for Temp_String1__C resulted in undefined value
2017.06.11 00:17:15 3: PVSolarTracker: _Send with unpack containing f but len is too small - please set obj-h40289-Len!
2017.06.11 00:17:15 3: PVSolarTracker: _Send with unpack containing f but len is too small - please set obj-h40309-Len!
2017.06.11 00:17:20 3: PVSolarTracker: ParseObj unpack of 8000 with f> for Temp_String1__C resulted in undefined value
2017.06.11 00:17:25 3: PVSolarTracker: ParseObj unpack of 8000 with f> for Temp_String2__C resulted in undefined value

vitolinker

Wie ist denn deine Logdefinition und was steht im Event Monitor? Kommen da die Daten rein?

topa_LE

im Event Monitor steht das:

2017-06-11 09:47:10 Fronius_Modbus PVSolarBasis Power_DC__W: 4919.2
2017-06-11 09:47:11 Fronius_Modbus PVSolarBasis Power__W: 3282.0
2017-06-11 09:47:12 Fronius_Modbus PVSolarBasis Operating_State: normal.operation
2017-06-11 09:47:12 NEUTRINO TRINITYFITNESS power: off
2017-06-11 09:47:12 Fronius_Modbus_MPPT PVSolarTracker Operating_State_String2: normal.operation
2017-06-11 09:47:13 Fronius_Modbus PVSolarBasis Voltage_L3_to_L1__V: 398.0
2017-06-11 09:47:14 Fronius_Modbus PVSolarBasis Current_DC__A: nan
2017-06-11 09:47:14 Fronius_Modbus_MPPT PVSolarTracker Voltage_String1__V: 305
2017-06-11 09:47:15 Fronius_Modbus PVSolarBasis Voltage_DC__V: nan
2017-06-11 09:47:16 Fronius_Modbus PVSolarBasis Power_Site__W: 3281
2017-06-11 09:47:16 Fronius_Modbus_MPPT PVSolarTracker Power_String1__W: 1702
2017-06-11 09:47:17 Fronius_Modbus PVSolarBasis Frequency__Hz: 50.0
2017-06-11 09:47:18 Fronius_Modbus PVSolarBasis Power__VAr: 0.0
2017-06-11 09:47:19 Fronius_Modbus PVSolarBasis Energy_Total__kWh: 19331.43
2017-06-11 09:47:20 Fronius_Modbus PVSolarBasis Power__VA: 3282.0
2017-06-11 09:47:21 Fronius_Modbus PVSolarBasis Operating_State_Vendor: normal.operation
2017-06-11 09:47:22 Fronius_Modbus PVSolarBasis Energy_Day__kWh: 5.509
2017-06-11 09:47:23 Fronius_Modbus PVSolarBasis Energy_total__kWh: 19331.4


Eine Log Definition habe ich glaube noch garnicht erstellt.

Wie muss die aussehen und müssen die für alle 3 Define erstellt werden?

in opt/fhem/log steht und 0kB nur eine Fronius-062017.log drin.

vitolinker

Nichts für ungut aber vielleicht solltest du dir gerade als Anfänger das Handbuch von FHEM und gerade diesen Thread mal von vorne bis hinten erst einmal durchlesen. Dann beginnt der Spaß erst richtig und ist weniger frustierend.

Auf Seite 7 findest du die Antwort auf deine letzte Frage:

define FroniusLog FileLog ./log/Fronius-%m%Y.log Fronius.*


topa_LE

EDit: Danke , ich lese mal  ;)


Wäre das so in etwa?

Das ist die erstellte define:
define PVSolarBasis Fronius_Modbus 1 30 192.168.178.60:502 TCP

So das Log?
define FileLog_PVSolarBasis.Fronius_Modbus FileLog ./log/PVSolarBasis.Fronius_Modbus-%Y.log PVSolarBasis.Fronius_Modbus

vitolinker

Nee, einfach wie im Beispiel und vorne nach define den Lognamen anpassen. Rest sollte auch für dich passen.
Die Bedeutung von .* ist sehr wichtig --> Handbuch und reguläre Ausdrücke.

topa_LE

So hab mal auf SEite 7 geguckt, ja un den kompletten Thread hatte ich schon alles gelesen.

Also nach erneuerter Eingabe gab es ein Hinweis, das das LOg schon existiert.

define FroniusLog FileLog ./log/Fronius-%m%Y.log Fronius.*

Leider wird da nix reingeschrieben, wie gesagt. Da muss irgendwas anderes noch nicht passen.

Was besagen den diese Meldungen?

2017.06.11 10:06:03 3: PVSolarTracker: _Send with unpack containing f but len is too small - please set obj-h40289-Len!
2017.06.11 10:06:03 3: PVSolarTracker: _Send with unpack containing f but len is too small - please set obj-h40309-Len!
2017.06.11 10:06:04 3: PVSolarTracker: ParseObj unpack of 8000 with f> for Temp_String1__C resulted in undefined value
2017.06.11 10:06:06 3: PVSolarTracker: ParseObj unpack of 8000 with f> for Temp_String2__C resulted in undefined value


Sollte da nicht was in der MPPT.pm Datei angepasst werden?

vitolinker

Dann musst du den Log entweder wieder löschen oder folgendes ersetzen:
define --> defmod
Alternativ kannst du das Filelog dir als Device anzeigen lassen und auf "DEF" klicken und die definition anpassen.
Tolle Lektüre ist das FHEM Handbuch:
https://fhem.de/Heimautomatisierung-mit-fhem.pdf


topa_LE

"h40309" => { # float
# "h40299" => { # int+SF
# Start: +47, Länge: 1, int16; String 2: Temperature
name => "2_Tmp", # internal name of this register in the hardware doc
reading => "Temp_String2__C", # name of the reading for this value
len => 1, # number of Registers this value spans
unpack => "f>", # defines the translation between data in the module and in the communication frame
format => '%.1f', # format string for sprintf
polldelay => 900, # request only if last read is older than 15 minutes
},




"h40289" => { # float
# "h40279" => { # int+SF
# Start: +27, Länge: 1, int16; String 1: Temperature
name => "1_Tmp", # internal name of this register in the hardware doc
reading => "Temp_String1__C", # name of the reading for this value
len => 1, # number of Registers this value spans
unpack => "f>", # defines the translation between data in the module and in the communication frame
format => '%.1f', # format string for sprintf
polldelay => 900, # request only if last read is older than 15 minutes
},


Muss da was angepasst werden?

vitolinker

Bitte lese NOCHMAL post 109 von Roger oben. Das Modul wurde aktualisiert.