Thread zum Wiki-Artikel "SolarLog"

Begonnen von oniT, 11 März 2015, 20:24:57

Vorheriges Thema - Nächstes Thema

oniT

Hallo Humbs,

hast du die Abfrage des Registers so wie im Wiki beschrieben übernommen? Ich meine dies ist in deinem Fall dann so nicht mehr richtig. Bitte ergänze einmal den plcDataType DWORD


defmod solarlog_totalpac ModbusRegister 0 3502
attr solarlog_totalpac IODev SolarLogServer
attr solarlog_totalpac event-on-change-reading .*
attr solarlog_totalpac plcDataType DWORD
attr solarlog_totalpac room Solar
attr solarlog_totalpac stateAlias solar


Das sollte das Problem beheben. Ohne Angabe des Typs, wird ein 16bit Wert gelesen. Bedeutet nur bis zum Wert 65535. Laut Definition von Solar-Log können aber 2 Register und somit 32bit gelesen werden. Durch die Angabe des plcDataType DWORD wird laut Hilfe des Moduls die beide Register und somit 32bit gelesen. Bitte mal testen und eine Rückmeldung geben. Dann wird dies im Wiki korrigiert.

Gruß,
Tino
BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP

Humbs

Hallo Tino,

vielen Dank für Deine Antwort.
Ja, plcDataType DWORD hat das Problem gelöst.
Werte über 16 Bit werden jetzt korrekt angezeigt.

Danke und Grüße

Hamster3322

Moin,
kurze Frage mit hoffentlich kurzer Antwort.
Ich bekomm die Leistungen leider nur in Watt übertragen. Wie kann ich die Werte auf kW übertragen? Der Plot sieht in Watt zeimlich hässlich aus.
lg

wolliballa73

Hallo zusammen,

ich muss mich hier mal eben an den Uralt-Thread ranhängen, da ich aktuell auch gerade an dieser Sache arbeite:

Zitat von: kdeb am 02 Dezember 2015, 10:56:01
Ich habe zwei Kollektorfelder (Ost-Dach und West-Dach), die als getrennte Strings beim Wechselrichter ankommen.
Hat jemand 'ne Idee, wie ich an die Daten der einzelnen Strings im SolarLog rankomme? Gibt es vielleicht irgendwo eine Dokumentation der einzelnen Register, die der SolarLog verwendet?

Ich rufe die Werte der einzelnen Strings (2 WR mit je 2 Strings) und den Eigenverbrauch seit Jahren per curl http://192.168.1.5/min_cur.js?nocache -s --connect-timeout von meinem Solarlog ab und schicke die Werte auf den KNX-Bus. Hat bisher ganz gut funktioniert.
Wenn ich das richtig verstanden habe, geht das ab Firmware-Version 3.x des Solarlogs nicht mehr, sondern nur noch die Gesamtleistung über Modbus.

Das ganze läuft momentan noch als Perl-Script auf einem Wiregate, den ich jetzt aber nach und nach ablösen möchte.
Spricht was dagegen, die Werte auch weiterhin über curl zu beziehen (solange ich auf ein FW-Update verzichte)? Das dürfte ja nicht allzu schwer umzuschreiben sein...
CU,
Matze

rafael228

Hallo,

ich habe nach einem Defekt unseres Solar-Log 1000 einen Solar-Log Base 100 gekauft.
Beim 1000 lief die Kommunikation ohne Probleme.
Beim Base 100 bekomme ich in FHEM leider keine Werte angezeigt.
Der SolarLogServer zeigt beim STATE timeout.
Muss ich am Base 100 noch etwas einstellen?

Vielen Dank
LG Rafael

rafael228

Hallo,

kann mir keiner helfen? :-(

LG Rafael

frust

Zuerst mal vielen Dank für die schöne Doku im Wiki.

Leider haut es bei mir irgendwie nicht hin.
Ich habe das aus der Doku exakt abgetippt


defmod SolarLogServer ModbusTCPServer 192.168.xxx.yyy
attr SolarLogServer verbose 2


defmod solarlog_totalpac ModbusRegister 0 3502
attr solarlog_totalpac IODev SolarLogServer
attr solarlog_totalpac event-on-change-reading .*
attr solarlog_totalpac room Solar
attr solarlog_totalpac stateAlias solar


ebenso alle anderen Definitionen .


defmod filelog_solarlog_day FileLog ./log/filelog_solarlog_day-%d.log solarlog_.*:solar.*
setstate filelog_solarlog_day active



Im lLogfile landet nichts. Im fhem log finde ich reihenweise

2021.01.31 19:08:07 4: RQUEUE: 1
2021.01.31 19:08:07 2: ModbusTCPServer_Parse: except (code 2)
2021.01.31 19:08:07 2: ModbusTCPServer_Parse: except (code 2)
2021.01.31 19:08:07 4: RQUEUE: 1
2021.01.31 19:08:07 2: ModbusTCPServer_Parse: except (code 2)


Was mache ich falsch?
Achso, vielleicht noch zur Info, es ist ein Solarlog 50.

f-STEP

Hallo,

leider komme ich bei der Einbindung vom SolarLog50 (4.2.7 Build 116 - 19.02.2020) in FHEM nicht weiter.

Der SolarLogServer erhät STATE error, sobald ich Modbus-Register Adressen definiere.

Der Event Monitor gibt folgende Meldung raus:
2022.02.06 14:08:03 2 : ModbusTCPServer_Parse: except (code 2)

ModbusTCPServer sieht wie folgt aus:

Internals:
   CFGFN     
   DEF     192.168.178.10
   DeviceName 192.168.178.10:502
   FD          4
   FUUID      61ffb01e-f33f-2f3b-e2cb-1277e2a42b7f0e30
   LAST_ERROR 7
   LAST_EXCEPT 2
   NAME SolarLogServer
   NOTIFYDEV global
   NR 315
   NTFY_ORDER 50-SolarLogServer
   PARTIAL   
   STATE error
   TYPE ModbusTCPServer
   statistics 5896 / 5896 / 53064 / 70752
   READINGS:
     2022-02-06 12:25:18   state           opened
   helper:
     delayNextRead 0
     delayNextWrite 0
     fc 3
     hd_tr_id 3510
     hd_unit_id 0
     lastFrame  SimpleWrite [0D B6 00 00 00 06] 00 03 0D B6 00 01
     lastSimpleWrite
�
�
     last_fc 3
     last_hd_tr_id 3510
     state idle
     statistics:
       bytesIn 53064
       bytesOut 70752
       pktIn 5896
       pktOut 5896
Attributes:
   room Solar
   verbose 2


die Zeilen hinter lastSimpleWrite  sehen etwas seltsam aus, könnte aber mit dem Browser zusammenhängen.

Gibt es eine Idee, woran es liegen kann?

Grüße  f-STEP

satprofi

Zitat von: frust am 31 Januar 2021, 19:25:02
Zuerst mal vielen Dank für die schöne Doku im Wiki.

Leider haut es bei mir irgendwie nicht hin.
Ich habe das aus der Doku exakt abgetippt


defmod SolarLogServer ModbusTCPServer 192.168.xxx.yyy
attr SolarLogServer verbose 2


defmod solarlog_totalpac ModbusRegister 0 3502
attr solarlog_totalpac IODev SolarLogServer
attr solarlog_totalpac event-on-change-reading .*
attr solarlog_totalpac room Solar
attr solarlog_totalpac stateAlias solar


ebenso alle anderen Definitionen .


defmod filelog_solarlog_day FileLog ./log/filelog_solarlog_day-%d.log solarlog_.*:solar.*
setstate filelog_solarlog_day active



Im lLogfile landet nichts. Im fhem log finde ich reihenweise

2021.01.31 19:08:07 4: RQUEUE: 1
2021.01.31 19:08:07 2: ModbusTCPServer_Parse: except (code 2)
2021.01.31 19:08:07 2: ModbusTCPServer_Parse: except (code 2)
2021.01.31 19:08:07 4: RQUEUE: 1
2021.01.31 19:08:07 2: ModbusTCPServer_Parse: except (code 2)


Was mache ich falsch?
Achso, vielleicht noch zur Info, es ist ein Solarlog 50.

schaut es bei dir so aus?
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

f-STEP

Hallo Satprofi,

also im Grunde sieht es wie auf dem Foto aus, jedoch ist bei STATE "error" und kein "ok".

Grüße f-STEP

f-STEP

Das mit SolarLog50 hat sich erledigt. Habe eine für das Problem eine bessere Lösung gefunden.
Fhempy und rct_power von Dominik.

Geisha2021

Ich habe  mal generell die Frage ob es mit dem alten Solarlog 100e (installiert 2008) überhaupt funktionieren kann. Modbus kann der wahrscheinlich nicht. SMA-Firmware 1.3.3 Build 29C.
Seit Jahren logge ich damit meine PV-Anlage und alle 5 min werden die Messwerte auf einen USB-Stick an der Fritzbox gespeichert. Für jeden Tag in einer eigenen Datei.
Für die Einbindung in FHEM würde es also genügen nur diese Datei in FHEM auslesen. Nur wie?

Gruß Uli

Humbs

Zitat von: rafael228 am 30 Dezember 2020, 14:03:02
Hallo,

ich habe nach einem Defekt unseres Solar-Log 1000 einen Solar-Log Base 100 gekauft.
Beim 1000 lief die Kommunikation ohne Probleme.
Beim Base 100 bekomme ich in FHEM leider keine Werte angezeigt.
Der SolarLogServer zeigt beim STATE timeout.
Muss ich am Base 100 noch etwas einstellen?

Vielen Dank
LG Rafael

Hat sich für dieses Problem schon etwas ergeben? Ich habe vor mir die selbe Symptomatik.
Device state ist "timeout"
Im Logfile steht aber: 2022-09-06_20:37:05 SolarLog CONNECTED

Markus-Mech

Hallo,
ist zwar schon etwas her, aber ich habe Informationen zum SolarLog Base Thema, die vielleicht was bringen.
Ich habe es war noch nicht ganz verstanden, aber ich bekommen zumindest die richtigen Werte zurück.
Bei mir Läuft ein SolarLog Base 15, zur Zeit noch im Installationsmodus, aber das sollte kein Unterschied machen.
Ich habe es geschafft mit folgendem device die Aktuelle Leistung auszulesen:
define SolarLog_Tagesertrag ModbusRegister 2 3508
attr SolarLog_Tagesertrag IODev SolarLogServer
attr SolarLog_Tagesertrag disableRegisterMapping 1
attr SolarLog_Tagesertrag event-on-change-reading .*
attr SolarLog_Tagesertrag plcDataType DWORD
attr SolarLog_Tagesertrag registerType Input
attr SolarLog_Tagesertrag room SolarLog
attr SolarLog_Tagesertrag verbose 5
#   DEF        2 3508
#   FUUID      63e7fcc9-f33f-4584-07a7-5c787e9607b06ca4
#   IODev      SolarLogServer
#   LASTInputDev SolarLogServer
#   MSGCNT     342
#   ModbusRegister_lastRcv 2023-02-12 09:24:00
#   NAME       SolarLog_Tagesertrag
#   NOTIFYDEV  global
#   NR         287
#   NTFY_ORDER 50-SolarLog_Tagesertrag
#   STATE      6764
#   SolarLogServer_MSGCNT 342
#   SolarLogServer_TIME 2023-02-12 09:24:00
#   TYPE       ModbusRegister
#   eventCount 13
#   lastUpdate Sun Feb 12 09:24:00 2023
#   nextUpdate Sun Feb 12 09:24:00 2023
#   READINGS:
#     2023-02-12 08:29:55   IODev           SolarLogServer
#     2023-02-12 09:24:00   RAW             1a6c0000
#     2023-02-12 09:24:00   state           6764
#   helper:
#     addr       4 2 3508
#     address    3508
#     disableRegisterMapping 1
#     lastUpdate 0
#     nextUpdate 1676190240.58906
#     nread      2
#     readCmd    
�
#     register   3508
#     registerType 4
#     unitId     2
#     updateIntervall 0.1
#     cnv:
#       a          1
#       b          0
#       max        4294967295
#       min        0
#       step       10000000
#
setstate SolarLog_Tagesertrag 6764
setstate SolarLog_Tagesertrag 2023-02-12 08:29:55 IODev SolarLogServer
setstate SolarLog_Tagesertrag 2023-02-12 09:24:00 RAW 1a6c0000
setstate SolarLog_Tagesertrag 2023-02-12 09:24:00 state 6764

Was entscheidend war ist das "disableRegisterMapping = 1" sonnst, wurde die Register-Nr um eins zu hoch gesendet. Und dann gibt es noch Probleme mit dem register Type, der das "Funktions Byte" bestimmt. SolarLog Base möchte da eine "04" für das abfragen des Registers. Im Standard wird hier aber eine "03" gesendet. Nachdem ich den registerType erst auf "Holding" und dann wieder auf "Input" gestellt hatte wurde auf einmal "04" gesendet und ich bekam meine richtigen Daten.
Wenn ich allerdings DEF ändere um ein anders Register anzusprechen, wird wieder die "03" gesendet und ich muss wieder "Holding" -> "Input" setzten damit alles wieder läuft.

Seltsam, aber vielleicht hilft es jemandem.


Humbs

Daumen hoch !!!
Funktioniert auch mit dem SolarLog Base 100

Beim SolarLog 1000:
attr SolarLog_Wert ModbusRegister 0 ModbusAdresse

Beim SolarLog Base:
attr SolarLog_Wert ModbusRegister 2 ModbusAdresse
attr SolarLog_Wert disableRegisterMapping 1
attr SolarLog_Wert registerType Input