SolarLog
SolarLog ist eine Hardwareerweiterung für Wechselrichter zum Monitoren von Photovoltaikanlagen. SolarLog bietet ebenfalls die Möglichkeit die zur Verfügung gestellten Werte mittels ModbusTCP (free Version) in FHEM zu übernehmen, anzuzeigen und grafisch darzustellen. Da man mit FHEM Verbraucher beeinflussen kann, bringt die Integration den Vorteil mit sich, FHEM als Energiemanagementsystem einzusetzen.
Voraussetzung
Voraussetzung zur Anbindung ist ein SolarLog mit Firmware ab Version 2.8.1 Build 49 sowie eine bestehende Netzwerkverbindung. Weiterhin werden die zur Verfügung stehenden Module:
- 36_ModbusTCPServer.pm
- 37_ModbusRegister.pm
genutzt. Getestet wurde der Zugriff auf einem BeagleBone Black mit der hier beschriebenen Debian Installation sowie einem SolarLog 200.
Installation
Die nachfolgenden Module sind notwendig und müssen nachinstalliert werden. Zum Zeitpunkt der Erstellung dieser Dokumentation (11.3.2015) sind diese Module noch nicht offiziell in FHEM enthalten und werden auch nicht mittels Update verteilt.
- Download der Module von https://github.com/ChrisD70/FHEM-Modules:
- 36_ModbusTCPServer.pm
- 37_ModbusRegister.pm
- kopieren der Module in das Verzeichnis /fhem/FHEM/
- anschließend gegebenenfalls durch ein Reload laden
Benutzung
Anlegen der ModbusTCPServer Verbindung
Wie im Folgenden beschrieben, muss zunächst eine ModbusTCPServer Verbindung konfiguriert werden. Die angegebene IP-Adresse muss durch die IP-Adresse des SolarLog ersetzt werden.
######################################################## ## ModbusTCPServer definieren ######################################################## define SolarLogServer ModbusTCPServer 192.168.1.160 attr SolarLogServer verbose 2
Ein erfolgreicher Verbindungsaufbau wird mit einem „ok“ im State gekennzeichnet.
Modbus-Register Adressen definieren
Im nachfolgenden Beispiel wird anhand des Ertrags vom Vortag die Adressdefinition erklärt.
######################################################## ## Register Ertrag Vortag definieren ## Erstellt........: 07.03.2015 ## Geändert........: ######################################################## define solarlog_yesterdayyield ModbusRegister 0 3510 attr solarlog_yesterdayyield IODev SolarLogServer attr solarlog_yesterdayyield alignUpdateInterval 08:00:00 attr solarlog_yesterdayyield conversion 0.001:0 attr solarlog_yesterdayyield event-on-change-reading .* attr solarlog_yesterdayyield plcDataType DWORD attr solarlog_yesterdayyield registerType Holding attr solarlog_yesterdayyield room Solar attr solarlog_yesterdayyield stateFormat {sprintf("%0.2f", ReadingsVal($name,"state",0))} attr solarlog_yesterdayyield updateInterval 24:00:00
Erklärung:
Attribut | Erläuterungen |
---|---|
ModbusRegister 0 3510 | 0 Device Adresse, in der Regel bei ModbusTCP immer 0 |
ModbusRegister 0 3510 | 3510 Register Adresse |
IODev | Verwendeter und zuvor angelegter ModbusTCPServer |
alignUpdateInterval | Startzeit UpdateInterval |
conversion | eine gegebenenfalls notwendige Konvertierung des übermittelten Values |
PlcDataType | Ermögliche automatische Interpretation der ankommenden Daten |
registerType | RegisterTyp (z.B. Holding oder Input) |
updateInterval | Intervall des Abfragezyklus (z.B. alle 24 Stunden) |
Namensvergabe
Vorschlag der Namensvergabe für den SolarLog. Eine sinnvolle Namensvergabe erleichtert später das Anlegen weiterer Definitionen von zum Beispiel Logfiles, Statistiken oder auch readingsGroup.
solarlog_totalpac | Aktuelle Leistung |
solarlog_dailyyield | Tagesertrag |
solarlog_yesterdayyield | Ertrag des Vortag |
solarlog_monthlyyield | Monatsertrag |
solarlog_yearlyyield | Jahresertrag |
solarlog_totalyield | Gesamtertrag |
######################################################## ## Register aktuelle Leistung definieren ## Erstellt........: 07.03.2015 ## Geändert........: ######################################################## define solarlog_totalpac ModbusRegister 0 3502 attr solarlog_totalpac IODev SolarLogServer attr solarlog_totalpac event-on-change-reading .* attr solarlog_totalpac room Solar
######################################################## ## Register Tagesertrag definieren ## Erstellt........: 07.03.2015 ## Geändert........: ######################################################## define solarlog_dailyyield ModbusRegister 0 3508 attr solarlog_dailyyield IODev SolarLogServer attr solarlog_dailyyield conversion 0.001:0 attr solarlog_dailyyield event-on-change-reading .* attr solarlog_dailyyield plcDataType DWORD attr solarlog_dailyyield room Solar attr solarlog_dailyyield stateFormat {sprintf("%0.2f", ReadingsVal($name,"state",0))} attr solarlog_dailyyield updateInterval 60
######################################################## ## Register Monatsertrag definieren ## Erstellt........: 07.03.2015 ## Geändert........: ######################################################## define solarlog_monthlyyield ModbusRegister 0 3512 attr solarlog_monthlyyield IODev SolarLogServer attr solarlog_monthlyyield conversion 0.001:0 attr solarlog_monthlyyield event-on-change-reading .* attr solarlog_monthlyyield plcDataType DWORD attr solarlog_monthlyyield room Solar attr solarlog_monthlyyield stateFormat {sprintf("%0.2f", ReadingsVal($name,"state",0))} attr solarlog_monthlyyield updateInterval 3600
######################################################## ## Register Jahresertrag definieren ## Erstellt........: 07.03.2015 ## Geändert........: ######################################################## define solarlog_yearlyyield ModbusRegister 0 3514 attr solarlog_yearlyyield IODev SolarLogServer attr solarlog_yearlyyield alignUpdateInterval 01:00:00 attr solarlog_yearlyyield conversion 0.001:0 attr solarlog_yearlyyield event-on-change-reading .* attr solarlog_yearlyyield plcDataType DWORD attr solarlog_yearlyyield registerType Holding attr solarlog_yearlyyield room Solar attr solarlog_yearlyyield stateFormat {sprintf("%0.2f", ReadingsVal($name,"state",0))} attr solarlog_yearlyyield updateInterval 01:00:00
Logfile
Anlegen eines täglichen Logfiles.
######################################################## ## Tägliches LogFile definieren ## Erstellt........: 07.03.2015 ## Geändert........: ######################################################## define filelog_solarlog_day FileLog ./log/filelog_solarlog_day-%d.log (solarlog_dailyyield|solarlog_monthlyyield|solarlog_totalpac|solarlog_totalyield|solarlog_yearlyyield|solarlog_yesterdayyield):(?!RAW)(.*)
Die Dokumentation für die Darstellung in einer readingsGroup folgt.
Plotbeispiel
Kontakt
Weitere Fragen, Wünsche und Anregungen bitte im entsprechenden Forenthread zum Wiki-Artikel "SolarLog" zur Diskussion stellen.
Links
- Solarlog Herstellerseite