Hallo,
auf mehrfachen Wunsch habe ich den Wiki-Artikel (http://www.fhemwiki.de/wiki/SolarLog) zur Anbindung des SolarLog an FHEM angelegt.
Ausgehend der von ChrisD zur Verfügung gestellten (noch nicht offiziellen in FHEM integrierten) Module einer ModbusTCP-Anbindung, lassen sich unter anderem die aktuelle Leistung, sowie der aktuelle und vergangene Ertrag Auslesen und Loggen.
Sollte es dazu weitere Fragen, Wünsche und Anregungen geben, dann bitte an diesen Thread hier anhängen.
Gruß,
Tino
Hallo Tino,
erstmal vielen Dank für den Wiki-Eintrag.
Der kam für mich genau zur richtigen Zeit.
Das klappt soweit auch alles. Da ich auch einen S0-Verbrauchzähler habe, habe ich zusätzlich noch die Register für die Verbrauchswerte definiert.
Für mich wäre nun noch interessant, wie ich das Delta aus aktuellem Ertrag und aktuellem Verbrauch bilden könnte. Im Solar Log wird mir das entweder als Netzeinspeisung oder Netzbezug dargestellt.
So lange Ertrag > Verbrauch steht dort Netzeinspeisung, ansonsten Netzbezug.
Hast Du da evtl. eine Lösung parat oder kann jemand anders helfen?
Viele Grüße
Peter
Hallo,
poste bitte noch die beiden Definitionen. Dann sehe ich mirs an und erweitere gleich noch den Wiki-Artikel.
Danke,
Gruß
Tino
Hier noch die zusätzlichen Register:
########################################################
## 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 60
########################################################
## 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 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 3600
########################################################
## 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
Es gibt für Ertrag und Verbrauch auch jeweils noch den Vortageswert und den totalen Wert.
Ich würde gerne die aktuelle Bilanz aus Ertrag und Verbrauch bilden.
Also Wert aktueller Ertrag - aktueller Verbrauch.
Viele Grüße
Peter
erstmal besten Dank für das tolle Modul !
Könntest du bitte noch den Plot mit einfügen ? Bekomme das nicht vernünftig hin *schäm
Zitat von: PEPITO82 am 15 März 2015, 20:22:17
Ich würde gerne die aktuelle Bilanz aus Ertrag und Verbrauch bilden.
Also Wert aktueller Ertrag - aktueller Verbrauch.
Viele Grüße
Peter
Hallo,
mein Vorschlag wäre ein userReading energybalance einzufügen.
########################################################
## 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
attr solarlog_totalpac_cons userReadings energybalance {((ReadingsVal("solarlog_totalpac","state",0))-(ReadingsVal("solarlog_totalpac_cons","state",0)))}
Gruß
Tino
Zitat von: Aladin222 am 16 März 2015, 13:05:25
Könntest du bitte noch den Plot mit einfügen ? Bekomme das nicht vernünftig hin *schäm
Hallo,
sieh Dir dies bitte einmal an. Wenn es in Ordnung ist ergänze ich den Eintrag.
# 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.*::
plot "<IN>" using 1:2 axes x1y1 title '_' ls l1fill lw 0.2 with lines,\
"<IN>" using 1:2 axes x1y2 title '_' ls l0 lw 1 with lines
Gruß
Tino
sieht schonmal gut aus ....danke !
Wie habt ihr das Label konfiguriert ?
Hallo Tino,
das userReading energybalance sieht gut aus. Danke. :)
Wie mache ich das noch am besten, wenn ich diese Energiebilanz auf "Register-Level" haben möchte, damit ich diesen in einer Reihe mit den Werten aus den Registern sehe?
Gruß
Peter
Zitat von: Aladin222 am 17 März 2015, 10:55:50
Wie habt ihr das Label konfiguriert ?
Hallo,
in der Definition vom Plotfile das Attribut Label mit folgendem Code füllen
Attributes:
label "max $data{max1} Wh, Aktuell $data{currval1} Wh, max $data{max2} kWh, Aktuell $data{currval2} kWh"
und im Plot Editor als Plot Titel <L1> eintragen.
Gruß
Tino
Zitat von: PEPITO82 am 17 März 2015, 12:35:15
Wie mache ich das noch am besten, wenn ich diese Energiebilanz auf "Register-Level" haben möchte, damit ich diesen in einer Reihe mit den Werten aus den Registern sehe?
Hallo,
ich meine dies wird so nicht gehen da an der Stelle immer der State angezeigt wird. In diesem Fall würde ich eine ReadingsGroup definieren.
define rg_dummy_SOLAR_state readingsGroup <Beschreibung>,<>
solarlog_.*:state
solarlog_.*:energybalance
attr rg_dummy_SOLAR_state alias SolarLog
attr rg_dummy_SOLAR_state mapping {'solarlog_dailyyield' => 'Tagesertrag','solarlog_monthlyyield' => 'Monatsertrag','solarlog_totalpac' => 'Erzeugung',
'solarlog_yearlyyield' => 'Jahresertrag','solarlog_totalyield' => 'Gesamtertrag','solarlog_yesterdayyield' => 'Vortagesertrag'}
attr rg_dummy_SOLAR_state nostate 1
attr rg_dummy_SOLAR_state notime 1
attr rg_dummy_SOLAR_state valueFormat {'state' => "%0.2f"}
attr rg_dummy_SOLAR_state valueStyle style="text-align:right"
Weitere Infos zur ReadingsGroup stehen im Wiki.
Gruß
Tino
Danke für den Hinweis mit der readingsGroup.
Damit kann man sehr viel darstellungstechnisch erreichen.
Hab das Coding so 1:1 übernommen und noch um die Verbrauchswerte und Energiebilanz ergänzt.
Vielen Dank für die Hilfe.
Hallo.
Vorerst danke für das Modul. Ein Nachtrag noch zum WIKI, solarlog_yearlyyield_cons hat falsche registernummer, richtig müsste 3526 sein.
gruss
Hallo,
vielen Dank für die Info. Wird geändert.
Gruß
Tino
Cool, habs mit einem 500 BT verbunden, ohne Probleme. Danke
Als Verbesserung wäre möglich die IP Adresse als Name und nicht als Zahl anzugeben, sonst ist mir nichts aufgefallen.
-> wunschlos glücklich. :-))
Ach mir geht doch noch was ab. Eine Auswertefunktion um Verbraucher zuschalten ;-) Ist zwar nicht das Thema hier, aber das ist was ich noch brauche ;-)
Nochmals Vielen Dank und viele Grüße
user4711
Ergänzung:
Den Solar Raum kann ich unter der APP andFHEM nicht finden. Hat jemand einen Tipp für mich?
Zitat von: PEPITO82 am 18 März 2015, 16:36:45
Danke für den Hinweis mit der readingsGroup.
Damit kann man sehr viel darstellungstechnisch erreichen.
Hab das Coding so 1:1 übernommen und noch um die Verbrauchswerte und Energiebilanz ergänzt.
Vielen Dank für die Hilfe.
Hallo.
Habe auch eine readingsGroup angelegt. Aber wie verwerte ich jetzt den Wert "energybalance" ?
gruss
Zitat von: satprofi am 03 April 2015, 15:34:42
Hallo.
Habe auch eine readingsGroup angelegt. Aber wie verwerte ich jetzt den Wert "energybalance" ?
gruss
Hallo,
was genau meinst Du genau mit "verwerten" des Wertes energybalance? In der ReadingsGroup sollte dieser doch dargestellt werden. Was möchtest Du noch damit machen?
Gruß
Tino
Hallo. Eben diesen wert für steuerung actoren.
HAbe ein DOIF angelegt, das mir den Wert aus readingsGroup auswerten soll, aber das klappt nicht.
define Kapazitaet readingsGroup Batterieladezeit:kWh
attr Kapazitaet group HourCounter
attr Kapazitaet mapping {'kWh' => ' Ladung'}
attr Kapazitaet nostate 1
attr Kapazitaet notime 1
attr Kapazitaet room SolarEdge,readingsGroup
attr Kapazitaet valueFormat %.2f kWh
define Ladung dummy
attr Ladung room SolarEdge
define superSun DOIF ([Kapazitaet:Ladung] > 7) (set Ladung 1)\
DOELSEIF ([Kapazitaet:Ladung] < 7) (set Ladung 0)
Hallo Tino,
vielen Dank für dieses tolle Modul und das Wiki. Hat bei mir auf Anhieb geklappt.
Nun geht es an die Weiterverarbeitung der Daten... .
So was habe ich mir so sehr gewünscht. Würde es aber alleine nie auf die Reihe bekommen.
Dieses Forum ist echt geballtes Wissen!
Hallo
vielen Dank für die tolle Arbeit die hier geleistet wird.
Bin daran dieses WiKi abzuarbeiten weil ich meine Solaranlage in FHEM anzeigen will.
Beim Definieren der readingsGroup bekomme ich Fehler folgender Art
ZitatUnknown command solarlog_.*:state, try help. Unknown command solarlog_.*:energybalance, try help. Please define rg_SolarLog_state first Please define rg_SolarLog_state first Please define rg_SolarLog_state first Please define rg_SolarLog_state first Please define rg_SolarLog_state first Please define rg_SolarLog_state first
Ich habe die komplette Definition mit cut&paste aus dem WiKi kopiert.
Was mach ich falsch?
Was muss denn in die spitzen Klammern beim define
Zitatdefine rg_dummy_SOLAR_state readingsGroup <Beschreibung>,<>
Für hilfe danke ich im Voraus.
Conti
Hallo Conti,
da Du den Code kopiert hast, würde ich meinen Du hast auch die Zeilenumbrüche mit kopiert :). In dem Code im Wiki sind wegen der besseren Darstellung dieses enthalten. Besser ist es nicht zu kopieren, sondern eben über die Kommandozeile anzulegen und die Attribute dann in den Eigenschaften einzugeben.
Hier mal ohne Zeilenumbruch:
########################################################
## ReadingsGroup definieren
## Erstellt........: 04.04.2015
## Geändert........:
########################################################
define rg_dummy_SOLAR_state readingsGroup <Beschreibung>,<>,solarlog_.*:state,solarlog_.*:energybalance
attr rg_SolarLog_state alias SolarLog
attr rg_SolarLog_state mapping {'solarlog_dailyyield' => 'Tagesertrag','solarlog_monthlyyield' => 'Monatsertrag','solarlog_totalpac' =>'Erzeugung','solarlog_yearlyyield' => 'Jahresertrag','solarlog_totalyield' => 'Gesamtertrag','solarlog_yesterdayyield' => 'Vortagesertrag'}
attr rg_SolarLog_state nostate 1
attr rg_SolarLog_state notime 1
attr rg_SolarLog_state valueFormat {'state' => "%0.2f"}
attr rg_SolarLog_state valueStyle style="text-align:right"
Gruß
Tino
Hallo Tino
vielen Dank für Deine Bereitschaft zu helfen.
Ich verstehe nun leider nichts mehr.
Zitatda Du den Code kopiert hast, würde ich meinen Du hast auch die Zeilenumbrüche mit kopiert :).
so etwas hatte ich befürchtet, deshalb hatte ich den Code Zeilenweise kopiert und die Leerzeichen bearbeitet.
Nun habe ich versucht über die Kommandozeile zu arbeiten.
Der erste "define" wird sauber angelegt.
Der Versuch die erste Attributzeile abzusetzen wird mit der Fehlermeldung "Please define rg_SolarLog_state first" quittiert.
Wenn ma "rg_dummy_SOLAR_state" definiert, müssten sich dann die attribute doch an dieses Objekt richten und nicht an "rg_SolarLog_state".
Oder?
Und jetzt?
Viele Grüsse
Conti
Hallo Conti,
wenn ich es richtig lese versuchst Du die Attribute über die Kommandozeile anzulegen. Da gehört meines Wissens noch mehr dazu und muss anders übergeben werden.
Warum legst Du nicht einfach in den Eigenschaften der ReadingsGroup die Attribute an? Dort kann man alles notwendige festlegen.
Au weh, allerdings habe ich jetzt eben einen Fehler in dem Code gefunden. Das kann so ja nicht gehen. Siehst, copy & paste ist halt doch nicht so gut :) Die Attribute müssen natürlich zum angelegten Geräte passen ???
Falsch!
define rg_dummy_SOLAR_state readingsGroup <Beschreibung>,<>,solarlog_.*:state,solarlog_.*:energybalance
Richtig
define rg_SolarLog_state readingsGroup <Beschreibung>,<>,solarlog_.*:state,solarlog_.*:energybalance
und dann weiter
attr rg_SolarLog_state alias SolarLog
.....
....
Ist mir bisher noch nicht aufgefallen und werde es im Wiki korrigieren.
Gruß
Tino
Hallo Tino
vielen Dank. Dann bin ich fürs erste beruhigt. Scheinbar habe ich doch ein kleines bisschen begriffen :-[
Ich versuch es nochmal.
Grüsse
Conti
Hallo Tino
habe es nun doch fertig gebracht mit den Beispielen aus dem Wiki.
Im Raum den ich definiert habe zeigt es mir sauber die vier definierten ModbusRegister mit den dazugehörigen Werten an.
Jetzt würde ich mich gerne noch mit dem Plotbeispiel auseinander setzen.
Dazu habe ich hier http://www.fhemwiki.de/wiki/Plots_erzeugen#Links_.2F_Beispiele (http://www.fhemwiki.de/wiki/Plots_erzeugen#Links_.2F_Beispiele) reingeschaut.
Allerdings verstehe ich nicht wie ich beispielsweise das Beispiel im Wiki dem Gerät (device SolarLogServer??) zu ordne.
Ich gehe davon aus das ich eine xx.gplot Datei anlege und diese im Verzeichnis /opt/fhem/www/gplots ablege.
Wo definiere ich nun wie diese Datei benutzt wird (verlinkt)?
Danke für eine Erklärung.
Viele Grüsse
Conti
Hallo Conti,
also ich würde in den Eigenschaften von dem FileLog gehen und dort über Create SVG Log ein PlotFile anlegen. Dieses PlotFile erscheint dann im Menü "Edit files" unter den ganzen Gplot files. Dann öffnest und bearbeitest es mit dem Inhalt vom Wiki.
Gruß
Tino
Vielen Dank Tino.
ich habe mich nun ein bisschen mit dem Plot Tool beschäftigt.
Das ich wirklich alles verstanden habe kann ich nicht behaupten :-[
Allerdings meine ich dass das Beispiel im Wiki nicht korrekt ist.
Jedenfalls hat es bei mir Fehler generiert. Zudem meine ich fehlen noch die "plot" Zeilen.
Auf folgende Art habe ich es einigermassen Hinbekommen
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 ''
set ytics
set y2tics
set grid
set ylabel "Einspeiseleistung [kW]"
set y2label "Ertrag [kW]"
#FileLog 3:solarlog_totalpac.solar\x3a::$fld[3]/1000
#FileLog 4:solarlog_dailyyield.solar\x3a::
plot "<IN>" using 1:2 axes x1y1 title 'Erzeugung' ls l1fill lw 1 with lines,\
"<IN>" using 1:2 axes x1y2 title 'Ertrag' ls l0 lw 1.5 with lines
Bitte nicht falsch verstehen. Dies ist keine Kritik sondern der Versuch das Ganze zu verstehen.
Was meinst Du? bin ich richtig?
Viele Grüsse und Danke
Conti
Hallo!
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?
Schönen Gruß
Kai
Bitte sehr. Aber die Werte die du willst , kosten extra.
Danke für die Info.
Ist natürlich blöd, daß gerade das extra kostet (da das für den professionellen Einsatz gedacht ist, wird es auch ein bisschen was sein).
Eigentlich wollte ich damit die Rolläden meiner Dachflächenfenster steuern (viel Strom auf dem Weststring => viel Sonne auf der Dachseite => Rolladen runter). Da muß ich mir jetzt wohl was anderes einfallen lassen. Schade.
Ciao
Kai
Naja,wann wird der weststring besonnt? Nachmittags? Dann sind die werte am nachmittag heranzuziehen und auszuwerten. Hohe werte am wr zeugen von einstrahlung auf westseite
Sent from my OPO
Hallo
wer kann mir hiermit weiterhelfen?
Zitat von: oniT am 17 März 2015, 20:26:58
Hallo,
in der Definition vom Plotfile das Attribut Label mit folgendem Code füllen
Attributes:
label "max $data{max1} Wh, Aktuell $data{currval1} Wh, max $data{max2} kWh, Aktuell $data{currval2} kWh"
und im Plot Editor als Plot Titel <L1> eintragen.
Es geht darum den Titel des Plots zu füllen. Ich bekomme das nicht hin.
Vielen Dank.
Conti
@satprofi: ähm *reusper* Da hätt ich auch selber drauf kommen können. Manchmal hab ich echt Tomaten auf den Augen. :-[
Danke für den Wink mit dem Zaunpfahl.
@Conti:Schreib mal im Ploteditor in den "Plot title" <L1> statt <TL>. Dann sollte das, was Du beim Attribut "Label" eingetragen hast, über dem Plot erscheinen.
Kai
Zitat von: kdeb am 07 Dezember 2015, 16:09:03
@satprofi: ähm *reusper* Da hätt ich auch selber drauf kommen können. Manchmal hab ich echt Tomaten auf den Augen. :-[
Danke für den Wink mit dem Zaunpfahl.
Kai
ich würde da ein DOIF anlegen, das ab ca. 13:00h die werte am SolarLog auswertet. Wenn da viel Power am Dach, dann Rolladen runter.
Bis 13:00 ist das restl. Dach der ausgangspunkt.
Hallo, ich hoffe ihr steinigt mich nicht, wenn ich hier eine Anfängerfrage stelle. Wie sieht das Ergebnis der ReadingsGroup die hier vorgeschlagen wird aus?
Hallo an Alle,
ist es per Modbus auch möglich Unterzähler auszulesen?
Hintergrund ist der, dass ich einen Smart Heater habe, dessen aktuellen Verbrauch ich gerne in FHEM hätte. Dieser wird als Unterzähler angelegt.
Für iobroker gibt es ein Modul wo das geht. Das funktioniert aber per JSON. Ausserdem wollte ich alles in FHEM haben, und nicht noch ein anderes SmartHome System laufen haben.
Ich habe im Netz in der Modbus Dokumentation leider nichts diesbezüglich gefunden.
Wenn das gehen würde könnte ich den ioBroker quasi löschen.
Viele Grüße Michael
Hallo
Habe alles nach Anleitung gemacht, bekomme aber immer denn Fehler "2019.07.12 12:10:32 2 : ModbusTCPServer_Parse: except (code 2)"
Habe denn Solar-Log 50
Kann mir jemand helfen
Gruß Daniel
Probiere mal die Methode hier:
https://forum.fhem.de/index.php/topic,101639.msg950881.html#msg950881 (https://forum.fhem.de/index.php/topic,101639.msg950881.html#msg950881)
So habe alle eingegeben, SmartHeater wird ausgelesen bei allen anderen Werten steht "ACCESS DENIED"
und jetzt?
Wie bereits erwähnt, darf der Standard Benutzer des SolarLog kein Passwort definiert haben und bei machen Firmwareversionen muss in den Einstellungen des SolarLog der Zugriff auf die JSON Schnittstelle explizit erlaubt werden. Sind diese Bedingungen erfüllt, müsste das eigentlich klappen.
Hallo,
ich habe ein SolarLog50 mit meiner Solaranlage installiert (Firmware 4.2.4 Build 113 - 4.6.2019). Wenn ich diese wie in der Doku in FHEM einbinde.
Geht SolarLogServer immer in einen error-Zustand sobald ich ein "Device (z.B. solarlog_totalpac - wie oben definiert) in die Konfiguration aufnehme:
STATE error
TYPE ModbusTCPServer
statistics 1140 / 1140 / 10260 / 13680
Wie kann ich meinen Fehlerfinden?
Hallo michaelvoss,
gute Frage, hier müsstest du dich bitte an GrisD wenden. Von ihm kommt das Modul. Ich tippe jedoch auf ein Problem mit dem SolarLog (Firmware 3.6.0 Build 90 - 01.09.2017). Bei mir läuft es in dieser Konfiguration schon von Beginn an ohne Probleme.
Gruß
Tino
ist der link aus dem wiki schon down?
https://raw.githubusercontent.com/ChrisD70/FHEM-Modules/master/autoupdate/mb/FHEM/36_ModbusRTU.pm: Select timeout/error:
Hallo satprofi,
bei mir funktioniert der Link.
Gruß
Tino
Hi,
zunächst vielen Dank fürs Modul.
Die Kommunikation hat auch aufs erste funktionert.
Einen komischen Fehler hab ich jedoch:
Bei Leistungen über 60kw liefert das Modul nur unplausieble Werte:
Die angehängte Grafik stammt von einem wolkenlosen Tag.
Aus dem Log noch ein Auszug:
2020-05-18_10:29:30 solarlog_totalpac solar: 64698
2020-05-18_10:30:28 solarlog_totalpac solar: 65014
2020-05-18_10:30:58 solarlog_totalpac solar: 65119
2020-05-18_10:31:29 solarlog_totalpac solar: 65239
2020-05-18_10:31:59 solarlog_totalpac solar: 65419
2020-05-18_10:32:29 solarlog_totalpac solar: 56
2020-05-18_10:32:59 solarlog_totalpac solar: 111
2020-05-18_10:33:29 solarlog_totalpac solar: 193
2020-05-18_10:33:59 solarlog_totalpac solar: 219
2020-05-18_10:34:29 solarlog_totalpac solar: 266
2020-05-18_10:35:28 solarlog_totalpac solar: 551
über 65419 fängt das Modul wieder bei 0 an. Der Reale Wert ist aber 65419 + der angezeigte Wert!
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
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
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
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...
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
Hallo,
kann mir keiner helfen? :-(
LG Rafael
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.
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
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?
Hallo Satprofi,
also im Grunde sieht es wie auf dem Foto aus, jedoch ist bei STATE "error" und kein "ok".
Grüße 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.
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
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
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.
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
Hier noch eine Ergänzung:
Beim neu anlegen eines device reicht es wenn registerType auf Input gesetzt wird. Ändert man danach die DEV um z.B. ein anders Register auszulesen, dann muss man den registerType Input neu setzen.
Damit können dann beim SolarLog Base 15 die folgenden Werte ausgelesen werden (Achtung, die Spannungen sind im Register 1 .... zu finden, 16bit ist WORD, 32bit ist DWORD):
Modbus Daten und Register
Datenpunkt Einheit Wertebereich Adresse Number Func Beschreibung
Reg. Codec
lastUpdateTime Sec 32bit unsigned 3500 2 04 Unixtime, wann das letzte Registerupdate
erfolgt ist. 0=noch keine Live-Daten
Pac W 32bit unsigned 3502 2 04 Gesamte Leistung PAC von allen Wechselrichtern
und Zählern im Wechselrichtermodus
Pdc W 32bit unsigned 3504 2 04 Gesamte Leistung PDC von allen Wechselrichtern
Uac V 16bit unsigned 3506 1 04 Durchschnittliche Spannung UAC aller Wechselrichter
Udc V 16bit unsigned 3507 1 04 Durchschnittliche Spannung UDC aller Wechselrichter
Daily yield Wh 32bit unsigned 3508 2 04 Summierter Tagesertrag aller Wechselrichter
Yesterday yield Wh 32bit unsigned 3510 2 04 Summierter gestriger Tagesertrag aller
Wechselrichter
Monthly yield Wh 32bit unsigned 3512 2 04 Summierter Monatsertrag aller Wechselrichter
Yearly yield Wh 32bit unsigned 3514 2 04 Summierter Jahresertrag aller Wechselrichter
Total yield Wh 32bit unsigned 3516 2 04 Gesamtertrag aller Wechselrichter
Pac consumption W 32bit unsigned 3518 2 04 momentaner Gesamtverbrauch PAC aller
Verbrauchszähler
Daily yield cons. Wh 32bit unsigned 3520 2 04 Summierter Tages-Verbrauch aller Verbrauchszähler
Yesterday yield cons. Wh 32bit unsigned 3522 2 04 Summierter Verbrauch des gestrigen Tages;
alle Verbrauchszähler
Monthly yield cons. Wh 32bit unsigned 3524 2 04 Summierter Verbrauch des Monats; alle
Verbrauchszähler
Yearly yield cons. Wh 32bit unsigned 3526 2 04 Summierter Verbrauch des Jahres, alle
Verbrauchszähler
Total yield cons. Wh 32bit unsigned 3528 2 04 Summierter Gesamtverbrauch, alle
Verbrauchszähler
TotalPower Wh/Wp 32bit unsigned 3530 2 04 Installierte Generatorleistung