SolarLog: Unterschied zwischen den Versionen

Aus FHEMWiki
KKeine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 10: Zeile 10:


== Installation ==
== 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.
Die oben aufgeführten Module sind notwendig und müssen nachinstalliert werden. Zum Zeitpunkt der Erstellung dieser Dokumentation (11.3.2015) sind diese noch nicht offiziell in FHEM enthalten und werden auch nicht mittels Update verteilt. Die Module werden mit dem Befehl:
* Download der Module von https://github.com/ChrisD70/FHEM-Modules:
<pre>
** 36_ModbusTCPServer.pm
update all https://raw.githubusercontent.com/ChrisD70/FHEM-Modules/master/autoupdate/mb/controls_modbus.txt
** 37_ModbusRegister.pm
reload 36_ModbusTCPServer.pm  
* kopieren der Module in das Verzeichnis /fhem/FHEM/
reload 37_ModbusRegister.pm
* anschließend gegebenenfalls durch ein Reload laden
</pre>
über die FHEM Befehlszeile installiert und anschließend mit einem Reload geladen.


== Benutzung ==  
== Benutzung ==  
Zeile 88: Zeile 89:
|-
|-
| solarlog_totalyield        || Gesamtertrag
| solarlog_totalyield        || Gesamtertrag
|-
| solarlog_totalpac_cons      || Aktueller Verbrauch
|-
| solarlog_dailyyield_cons    || Tagesverbrauch
|-
| solarlog_monthlyyield_cons  || Monatsverbrauch
|-
| solarlog_yearlyyield_cons  || Jahresverbrauch
|}
|}


Zeile 147: Zeile 156:
   attr solarlog_yearlyyield stateFormat {sprintf("%0.2f", ReadingsVal($name,"state",0))}
   attr solarlog_yearlyyield stateFormat {sprintf("%0.2f", ReadingsVal($name,"state",0))}
   attr solarlog_yearlyyield updateInterval 01:00:00
   attr solarlog_yearlyyield updateInterval 01:00:00
</pre>
Bei Anschluß eines SO-Verbrauchszähler können zusätzlich noch die Register Aktueller-, Tages-, Monats- und Jahresverbrauch ausgelesen werden.
<pre>
########################################################
##  Register aktueller Verbrauch definieren
##  Erstellt........: 07.03.2015
##  Geändert........:
########################################################
define solarlog_totalpac_cons ModbusRegister 0 3518
  attr solarlog_totalpac_cons IODev SolarLogServer
  attr solarlog_totalpac_cons event-on-change-reading .*
  attr solarlog_totalpac_cons room Solar
</pre>
<pre>
########################################################
##  Register Tagesverbrauch definieren
##  Erstellt........: 07.03.2015
##  Geändert........:
########################################################
define solarlog_dailyyield_cons ModbusRegister 0 3520
  attr solarlog_dailyyield_cons IODev SolarLogServer
  attr solarlog_dailyyield_cons conversion 0.001:0
  attr solarlog_dailyyield_cons event-on-change-reading .*
  attr solarlog_dailyyield_cons plcDataType DWORD
  attr solarlog_dailyyield_cons room Solar
  attr solarlog_dailyyield_cons stateFormat {sprintf("%0.2f", ReadingsVal($name,"state",0))}
  attr solarlog_dailyyield_cons updateInterval 00:01:00
</pre>
<pre>
########################################################
##  Register Monatsverbrauch definieren
##  Erstellt........: 07.03.2015
##  Geändert........:
########################################################
define solarlog_monthlyyield_cons ModbusRegister 0 3524
  attr solarlog_monthlyyield_cons IODev SolarLogServer
  attr solarlog_monthlyyield_cons alignUpdateInterval 01:00:00
  attr solarlog_monthlyyield_cons conversion 0.001:0
  attr solarlog_monthlyyield_cons event-on-change-reading .*
  attr solarlog_monthlyyield_cons plcDataType DWORD
  attr solarlog_monthlyyield_cons room Solar
  attr solarlog_monthlyyield_cons stateFormat {sprintf("%0.2f", ReadingsVal($name,"state",0))}
  attr solarlog_monthlyyield_cons updateInterval 01:00:00
</pre>
<pre>
########################################################
##  Register Jahresverbrauch definieren
##  Erstellt........: 07.03.2015
##  Geändert........:
########################################################
define solarlog_yearlyyield_cons ModbusRegister 0 3514
  attr solarlog_yearlyyield_cons IODev SolarLogServer
  attr solarlog_yearlyyield_cons alignUpdateInterval 01:00:00
  attr solarlog_yearlyyield_cons conversion 0.001:0
  attr solarlog_yearlyyield_cons event-on-change-reading .*
  attr solarlog_yearlyyield_cons plcDataType DWORD
  attr solarlog_yearlyyield_cons registerType Holding
  attr solarlog_yearlyyield_cons room Solar
  attr solarlog_yearlyyield_cons stateFormat {sprintf("%0.2f", ReadingsVal($name,"state",0))}
  attr solarlog_yearlyyield_cons updateInterval 01:00:00
</pre>
</pre>


Zeile 157: Zeile 228:
##  Geändert........:
##  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)(.*)
define filelog_solarlog_day FileLog ./log/filelog_solarlog_day-%d.log (solarlog_totalpac_cons|solarlog_dailyyield_cons|solarlog_monthlyyield_cons|solarlog_yearlyyield_cons|solarlog_dailyyield|solarlog_monthlyyield|solarlog_totalpac|solarlog_totalyield|solarlog_yearlyyield|solarlog_yesterdayyield):(?!RAW)(.*)
</pre>
</pre>


Die Dokumentation für die Darstellung in einer readingsGroup folgt.
== ReadingsGroup ==
Die Dokumentation und Darstellung als ReadingsGroup folgt.


== Plotbeispiel ==
== Plotbeispiel ==
<pre>
# Created by FHEM/98_SVG.pm, 2015-03-07 21:20:25
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<L1>'
set ytics
set y2tics
set grid
set ylabel "Einspeiseleistung [kW]"
set y2label "Ertrag [kWh]"
#filelog_solarlog_day 3:solarlog_totalpac.*::$fld[2]/1000
#filelog_solarlog_day 3:solarlog_dailyyield.*::
</pre>
[[Bild:Solarlog_graph.jpg|thumb|right|Plotbeispiel]]
[[Bild:Solarlog_graph.jpg|thumb|right|Plotbeispiel]]



Version vom 22. März 2015, 21:23 Uhr

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 oben aufgeführten Module sind notwendig und müssen nachinstalliert werden. Zum Zeitpunkt der Erstellung dieser Dokumentation (11.3.2015) sind diese noch nicht offiziell in FHEM enthalten und werden auch nicht mittels Update verteilt. Die Module werden mit dem Befehl:

update all https://raw.githubusercontent.com/ChrisD70/FHEM-Modules/master/autoupdate/mb/controls_modbus.txt
reload 36_ModbusTCPServer.pm 
reload 37_ModbusRegister.pm

über die FHEM Befehlszeile installiert und anschließend mit einem Reload geladen.

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:

Erläuterungen zur Adressdefinition
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
solarlog_totalpac_cons Aktueller Verbrauch
solarlog_dailyyield_cons Tagesverbrauch
solarlog_monthlyyield_cons Monatsverbrauch
solarlog_yearlyyield_cons Jahresverbrauch
########################################################
##  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

Bei Anschluß eines SO-Verbrauchszähler können zusätzlich noch die Register Aktueller-, Tages-, Monats- und Jahresverbrauch ausgelesen werden.

########################################################
##  Register aktueller Verbrauch definieren
##  Erstellt........: 07.03.2015
##  Geändert........:
########################################################
define solarlog_totalpac_cons ModbusRegister 0 3518
  attr solarlog_totalpac_cons IODev SolarLogServer
  attr solarlog_totalpac_cons event-on-change-reading .*
  attr solarlog_totalpac_cons room Solar
########################################################
##  Register Tagesverbrauch definieren
##  Erstellt........: 07.03.2015
##  Geändert........:
########################################################
define solarlog_dailyyield_cons ModbusRegister 0 3520
  attr solarlog_dailyyield_cons IODev SolarLogServer
  attr solarlog_dailyyield_cons conversion 0.001:0
  attr solarlog_dailyyield_cons event-on-change-reading .*
  attr solarlog_dailyyield_cons plcDataType DWORD
  attr solarlog_dailyyield_cons room Solar
  attr solarlog_dailyyield_cons stateFormat {sprintf("%0.2f", ReadingsVal($name,"state",0))}
  attr solarlog_dailyyield_cons updateInterval 00:01:00
########################################################
##  Register Monatsverbrauch definieren
##  Erstellt........: 07.03.2015
##  Geändert........:
########################################################
define solarlog_monthlyyield_cons ModbusRegister 0 3524
  attr solarlog_monthlyyield_cons IODev SolarLogServer
  attr solarlog_monthlyyield_cons alignUpdateInterval 01:00:00
  attr solarlog_monthlyyield_cons conversion 0.001:0
  attr solarlog_monthlyyield_cons event-on-change-reading .*
  attr solarlog_monthlyyield_cons plcDataType DWORD
  attr solarlog_monthlyyield_cons room Solar
  attr solarlog_monthlyyield_cons stateFormat {sprintf("%0.2f", ReadingsVal($name,"state",0))}
  attr solarlog_monthlyyield_cons updateInterval 01:00:00
########################################################
##  Register Jahresverbrauch definieren
##  Erstellt........: 07.03.2015
##  Geändert........:
########################################################
define solarlog_yearlyyield_cons ModbusRegister 0 3514
  attr solarlog_yearlyyield_cons IODev SolarLogServer
  attr solarlog_yearlyyield_cons alignUpdateInterval 01:00:00
  attr solarlog_yearlyyield_cons conversion 0.001:0
  attr solarlog_yearlyyield_cons event-on-change-reading .*
  attr solarlog_yearlyyield_cons plcDataType DWORD
  attr solarlog_yearlyyield_cons registerType Holding
  attr solarlog_yearlyyield_cons room Solar
  attr solarlog_yearlyyield_cons stateFormat {sprintf("%0.2f", ReadingsVal($name,"state",0))}
  attr solarlog_yearlyyield_cons 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_totalpac_cons|solarlog_dailyyield_cons|solarlog_monthlyyield_cons|solarlog_yearlyyield_cons|solarlog_dailyyield|solarlog_monthlyyield|solarlog_totalpac|solarlog_totalyield|solarlog_yearlyyield|solarlog_yesterdayyield):(?!RAW)(.*)

ReadingsGroup

Die Dokumentation und Darstellung als ReadingsGroup folgt.

Plotbeispiel

# Created by FHEM/98_SVG.pm, 2015-03-07 21:20:25
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<L1>'
set ytics 
set y2tics 
set grid
set ylabel "Einspeiseleistung [kW]"
set y2label "Ertrag [kWh]"

#filelog_solarlog_day 3:solarlog_totalpac.*::$fld[2]/1000
#filelog_solarlog_day 3:solarlog_dailyyield.*::
Plotbeispiel

Kontakt

Weitere Fragen, Wünsche und Anregungen bitte im entsprechenden Forenthread zum Wiki-Artikel "SolarLog" zur Diskussion stellen.

Links