Autor Thema: Solar EPEVER EPSOLAR und Baugleiche [98_ModbusEPEVER] und [98_ModbusUPOWER]  (Gelesen 5559 mal)

Offline laserrichi

  • Full Member
  • ***
  • Beiträge: 279
Hallo zusammen,

hier möchte ich euch mein erstelltes Modul vorstellen zur Anbindung von Solar Ladegeräten des Herstellers EPEVER.
Getestet wurde es mit einen  EPSolar Tracer 2210A. Die Modbus Readings sind bei allen EPSOLAR und baugleichen Geräten vermutlich gleich. Nicht alle Geräte können aber alle Readings.
Neu jetzt auch für die UPOWER Geräte das 98_ModbusUPOWER.pm Modul da diese abweichen. Leider kann ich das nicht testen da ich kein Upower Gerät habe.

Ich habe soweit möglich alle Readings eingebaut. Sie werden mit dem Intervall den man bei define mitgibt abgefragt. Zumindest die Realtime Werte werden genau in dem Intervall gelesen.
Die anderen Werte werden mit Faktor 180 abgefragt. Tägliche Statistikwerte werden mit Faktor 60 abgerufen.

Das setzen der Uhrzeit funktioniert jetzt auch aus FHEM, einfach nachdem man abgefragt hat genauso entsprechend editieren und setzen. Ebenso die Schaltzeiten können gesetzt werden.

Zwecks besserer Darstellung und Handhabung verwende ich hier folgende Attribute:

Stateformat:

<b>Batterie:</b> <span style='color:#AAFF00'> BattStatus <br>Spannung: BattSpannung Strom: BattStrom A </span><br>
<b>Solarlader:</b><div style='color:#22FFFF'>LadePower: BattLadeLeistung LadeStrom: BattLadeStrom </div>
<b>Panel:</b> <div style='color:#FFDD00'> Leistung: PanelLeistung Spannung: PanelSpannung Strom: PanelStrom</div>
<b>Last:<br> Leistung: </b><span style='color:red'>LastLeistung </span>Spannung: <span style='color:red'>LastSpannung </span> Strom:<span style='color:red'> LastStrom </span><br>
<b>Status: <span style='color:#3333FF'>SolarladerStatus</b>

WebCmd:

ChargingOnOff:ManualControlLoad:DefaultControlLoad:LoadControllingMode:EnableLoadTest:ForceLoad

webCmdLabel:

ChargingOnOff:ManualControlLoad
:DefaultControlLoad:LoadControllingMode
:EnableLoadTest:ForceLoad

Ich hoffe das ist dem einen oder anderen nützlich ist.

Über Feedback freue ich mich natürlich. Anregungen für Verbesserungen oder Änderungen nehme ich gerne entgegen.

PS:Manche Readings sind English Deutsch etwas gemixt, bei so vielen Readings mit Spannungen Load usw... war es nicht einfach sinnlich auch zu erkennen für was das alles ist.

01.05.2021 Update Modul, diverse Anpassungen (Changelog im Modul)

02.08.2021 neues Modul ModbusUPOWER.pm
02.08.2021  Update ModbusEPEVER.pm
14.10.2021  Update ModbusEPEVER.pm Fehlerbehebung Status "Lädt nicht"


« Letzte Änderung: 14 Oktober 2021, 19:59:45 von laserrichi »
RaspberryPi 4 Buster,Homematic,Z-Wave,Rademacher Duofern,Signalduino,Fritz7590,ESP8266,ESPEasy,Tasmota,Robonect,Kameras,1-Wire,Modbus,Solar,Maranz,VU+
Gefällt mir Gefällt mir x 2 Liste anzeigen

Offline the ratman

  • Hero Member
  • *****
  • Beiträge: 2727
  • cosmoprolet & intelligenzdiabetiker
Antw:neues Modul [98_ModbusEPEVER] Vorstellung
« Antwort #1 am: 09 Juni 2020, 20:12:46 »
jetzt muß er auch noch bilder zu machen ... wie soll ich mich da beherrschen und die neue fw nicht aufspielen? die gier übersteigt langsam die angst vor dem verbruzzeln des teils *g*.
→do↑p!dnʇs↓shit←

Offline mfischer-ffb

  • New Member
  • *
  • Beiträge: 22
Antw:neues Modul [98_ModbusEPEVER] Vorstellung
« Antwort #2 am: 06 Juli 2020, 19:37:53 »
Hallo laserrichi,

vielen Dank für dein Modul, funktioniert hier soweit an meinen beiden EPEVER XTRA4415N und Tracer 1210AN ganz gut.

Aufgefallen ist mir dass der BattCapacityRemaining Wert (SOC) nur selten aktualisiert wird und ich das Laden nicht ausschalten kann, es steht zwar dann off im reading aber es wird weiter geladen....

Hab aber im quelltext keinen fehler entdecken können..
geht das bei dir problemlos ??

Danke
Gruß
Markus


Offline laserrichi

  • Full Member
  • ***
  • Beiträge: 279
Antw:neues Modul [98_ModbusEPEVER] Vorstellung
« Antwort #3 am: 06 Juli 2020, 20:27:18 »
Hallo Markus,

BatteryCapacityRemaining  kann ich bestätigen, gerade ausprobiert. Wird obwohl es eigentlich jedesmal abgefragt werden soll nicht immer aktualisiert. Evtl. ein Thema der Anzahl Readings die in einem rutsch gelesen werden, das er sich da verschluckt.

Was meinst du mit Laden ausschalten ? Die ganzen Parameter hab ich von der epever modbus doku eingepflegt, es gehen nicht alle parameter bei jedem Laderegler. Und manche haben abhängigkeiten zueinander.
Welches Reading meinst du ? (ManualControlLoad  wenn du meinst, das ist der Lastausgang)
Soweit ich weis kann man das Laden der Batterie nicht abschalten, nur die Last.
RaspberryPi 4 Buster,Homematic,Z-Wave,Rademacher Duofern,Signalduino,Fritz7590,ESP8266,ESPEasy,Tasmota,Robonect,Kameras,1-Wire,Modbus,Solar,Maranz,VU+

Offline laserrichi

  • Full Member
  • ***
  • Beiträge: 279
Antw:neues Modul [98_ModbusEPEVER] Vorstellung
« Antwort #4 am: 06 Juli 2020, 21:04:13 »
Ok, habe bei mir mit verbose 4 gesehen das ich viele ProcessRequestQueue called from HandleTimeout  bekomme.

Ich habe mal im Modul die zusammengefassten Readings reduziert:

"i" =>  {       'combine' => '8',
somit hat es BattcapacityRemaining auch aktualisiert. Aber trotzdem hab ich noch HandleTimeout.
Vieleicht ist der einfach mit der Summe an Readings auf einmal überfordert. Evtl. noch weiter reduzieren. Standard wäre hier 1, aber dann wird für jedes Reading eine Abfrage gestartet.... Oder man baut hier delay noch mit ein zwischen den Requests.
Hier könnte man jetzt sagen, ich will manch werte doch nicht so oft lesen um den Traffic zu reduzieren.
RaspberryPi 4 Buster,Homematic,Z-Wave,Rademacher Duofern,Signalduino,Fritz7590,ESP8266,ESPEasy,Tasmota,Robonect,Kameras,1-Wire,Modbus,Solar,Maranz,VU+

Offline mfischer-ffb

  • New Member
  • *
  • Beiträge: 22
Antw:neues Modul [98_ModbusEPEVER] Vorstellung
« Antwort #5 am: 06 Juli 2020, 23:46:03 »

Danke jetzt gehts mit

"i" =>  {       'combine' => '8',

ich meinte "ChargingOnOff"  damit sollte ja eigentlich das Laden abgeschaltet werden... ist aber nicht so wichtig, wollte ich nur nutzen zur Notabschaltung falls eine Zellenspannung zu hoch ist.

Danke
Gruß
Markus

Offline laserrichi

  • Full Member
  • ***
  • Beiträge: 279
Antw:neues Modul [98_ModbusEPEVER] Vorstellung
« Antwort #6 am: 07 Juli 2020, 08:11:58 »
ah ok, jetzt weis ich was du meinst. In den älteren Dokus steht das nicht drin.

Charging device on/off  Coil 0
1 Charging device on 0 Charging device off

Vieleicht ist das vorgesehen für die Zukunft oder ein anderes Gerät. Bei mir steht bzw. stand der immer auf Off.

mich würde interessieren was bei dir mit verbose im log steht, ob du auch diese HandleTimeout hast.

RaspberryPi 4 Buster,Homematic,Z-Wave,Rademacher Duofern,Signalduino,Fritz7590,ESP8266,ESPEasy,Tasmota,Robonect,Kameras,1-Wire,Modbus,Solar,Maranz,VU+

Offline mfischer-ffb

  • New Member
  • *
  • Beiträge: 22
Antw:neues Modul [98_ModbusEPEVER] Vorstellung
« Antwort #7 am: 07 Juli 2020, 16:07:01 »
Hi,

Ja ab und zu kommt auch ein Timeout aber sonst läuft jetzt alles prima...

« Letzte Änderung: 07 Juli 2020, 16:11:29 von mfischer-ffb »

Offline laserrichi

  • Full Member
  • ***
  • Beiträge: 279
Antw:neues Modul [98_ModbusEPEVER] Vorstellung
« Antwort #8 am: 09 Februar 2021, 20:30:02 »
Update des Moduls, korrektur der Batterietemperatur, Register zählt rückwärts bei negativen Temperaturen und hatte 655°C   :-)
RaspberryPi 4 Buster,Homematic,Z-Wave,Rademacher Duofern,Signalduino,Fritz7590,ESP8266,ESPEasy,Tasmota,Robonect,Kameras,1-Wire,Modbus,Solar,Maranz,VU+

Offline springber

  • New Member
  • *
  • Beiträge: 10
Antw:neues Modul [98_ModbusEPEVER] Vorstellung
« Antwort #9 am: 03 März 2021, 19:35:26 »
Hallo,

ich habe mir auch ein Device (kein Modul) für einen Solarlader EPEVER LS2024B erstellt. Als Beitrag für das Modul meine Einstellung für das Schreiben von Datum und Uhrzeit:

wenn man bei setexpr einen Einzeiler eingibt, ist der zwar ziemlich lang aber es geht. Also habe ich das geändert und kann Datum und Zeit vom Solarlader über set ändern. Das Eingabeformat für das set ist wie das reading TT.MM.YYYY hh.mm.ss also z.B. 02.02.2021 12:04:36. Zu beachten ist, die Zahlen müssen immer 2 (oder 4) Stellig sein - also 3.2.21 12:4:56 geht nicht - aber 03.02.2021 12:04:56 schon.  :)

attr EPSOLAR_1 obj-h36883-expr sprintf("%02d.%02d.20%02d %02d:%02d:%02d", hex(substr($val,4,2)), hex(substr($val,10,2)), hex(substr($val,8,2)), hex(substr($val,6,2)), hex(substr($val,0,2)), hex(substr($val,2,2)))
attr EPSOLAR_1 obj-h36883-len 3
attr EPSOLAR_1 obj-h36883-poll 1
attr EPSOLAR_1 obj-h36883-polldelay X1
attr EPSOLAR_1 obj-h36883-reading RTC
attr EPSOLAR_1 obj-h36883-set 1
attr EPSOLAR_1 obj-h36883-setexpr sprintf("%02X", substr($val,14,2)).sprintf("%02X", substr($val,17,2)).sprintf("%02X", substr($val,0,2)).sprintf("%02X", substr($val,11,2)).sprintf("%02X", substr($val,8,2)).sprintf("%02X", substr($val,3,2))
attr EPSOLAR_1 obj-h36883-showGet 1
attr EPSOLAR_1 obj-h36883-textArg 1
attr EPSOLAR_1 obj-h36883-unpack H*


Das Thema mit falschen Temperaturwerten habe ich mit unpack "s>" gelöst (unpack "s>" = signed short integer in big endian -> high order byte at the lowest address)

attr EPSOLAR_1 obj-i12561-expr $val/100
attr EPSOLAR_1 obj-i12561-poll 1
attr EPSOLAR_1 obj-i12561-reading Temperature
attr EPSOLAR_1 obj-i12561-showGet 1
attr EPSOLAR_1 obj-i12561-unpack s>


Für die Aktualisierung habe ich auch ein at Device erstellt - das ist inaktiv und ich aktualisiere Datum und Uhrzeit manuell über "execNow". Das ist für mich OK weil die Urzeit genau genug läuft so dass ich eigentlich nur zur Zeitumstellung die Zeit aktualisieren muss (ja auch das ist noch eine Idee zum Automatisieren... ;)).

defmod EPSOLAR_1_set_date_time at *01:01:01 {\
  my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);;\
  $year = $year+1900;;\
  $mon = $mon+1;;\
  #$sec = 00;;\
  #$min = 00;;\
  #$hour = 10;;\
  #$mday = 02;;\
  #$mon = 03;;\
  #$year=21;;\
  #print "Aktuelles Datum ist : $mday.$mon.$year $hour:$min:$sec\n\r\n\r";;\
  my $alles = sprintf("%02d", $mday)."\.".sprintf("%02d", $mon)."\.".sprintf("%04d", $year)." ".sprintf("%02d", $hour).":".sprintf("%02d", $min).":".sprintf("%02d", $sec);;\
  Log 1, "set EPSOLAR_1 RTC $alles";;\
  fhem("set EPSOLAR_1 RTC $alles");;\
}
« Letzte Änderung: 08 März 2021, 11:18:44 von springber »

Offline springber

  • New Member
  • *
  • Beiträge: 10
Antw:neues Modul [98_ModbusEPEVER] Vorstellung
« Antwort #10 am: 20 März 2021, 20:30:07 »
Hallo,

ich habe das aktualisierte Modul mal getestet. :) :) :) gefällt mir gut -prima!

Bei den Statistikwerten stimmt es bei mir nicht. (ich habe einen LS3024B im Einsatz). Die Werte wären schön, sind aber zu hoch. Im Anhang zwei screenshots, einmal aus der EPEVER Solarstation Monitor V1.95 und einmal aus fhem mit dem Modul ModbusEPEVER Stand 9.2.21.

Der Wert für EnergieGewinnJahr mit 31.5 kWh stimmt in fhem und im Solarstation Monitor überein. Im Modul ist hier keine unpack Funktion angegeben. Es wird auch nur ein Register gelesen.
Die anderen Werte unterschieden sich stark, im Modul werden 2 Register gelesen und die unpack Funktion 'N' verwendet. in der Perl Dokumentation finde ich für 'N' [long integer in network order]. Leider bin ich nicht Spezialist genug - und in der Dokumentation ist der Variablentyp nicht angegeben. Ich habe verschiedene Pack funktionen ausprobiert aber keine hat die gleichen Werte ergeben. Wenn ich die pack Funktion auskommentiert habe, haben die Werte übereingestimmt. Siehe drittes angehängtes Bild.

Die Readings BatteryRatedPower ratedInputPower haben mit der unpack Funktion 'N' zu hohe Werte angegeben (167936.25 W und 336159.45 W) mit der unpack Funktion auskommentiert ist die Größenordnung schon besser:

Die Werte von BatteryRatedPower (64.64 W bei BatteryRatedCurrent 30A und BatteryRatedVoltage 24V) scheint nicht zu stimmen. Es müsste ca, 720W herauskommen. Wenn man großügig ist, stimmt der Wert um Faktor 10 nicht - die Dokumentation (V2.3) sagt aber aus dass der Wert durch 100 zu teilen ist (aber da steht auch dass BatteryRatedPower in °C ist) also könnte die Dokumentation durchaus falsch sein.

Ähnlich mit ratedInputPower (189.28 W bei ratedInputCurrent 30 A und ratedInputVolt 60 V) meiner Rechnung nach müsse das 1800 W ergeben.

Wir bei den beiden Reading statt geteilt durch 100 nur durch 10 geteilt stimmen die Werte mit 646 W (24V*30A=720W) und 1892 W (60 V * 30A = 1800 W) näherungsweise.

Statt: 'expr' => '$val=($val/100)." W"' mit 'expr' => '$val=($val/10)." W"' gerechnet.

Viele Grüße und Danke für das Modul  :)

springber



Offline laserrichi

  • Full Member
  • ***
  • Beiträge: 279
Antw:neues Modul [98_ModbusEPEVER] Vorstellung
« Antwort #11 am: 17 April 2021, 10:55:15 »
also ich kann das nicht so nachvollziehen. Bei mir stimmen die Werte.
und habe auch mal mit unpack gespielt und bekomme nur mit N die richtigen Werte

Lasse ich unpack bei den Readings weg dann habe ich überall 0
EnergiegewinnJahr lese ich jetzt auch das 2 Register mit aus.

ratedinput hat dein Regler 1500W  denn der ist mit 50V eigentlich angegeben, ok vieleicht hat er ja doch 60V und nicht 50V wie im China Datenblatt :)
Aber 189.28W ist schon ein sehr seltsamer wert.

Hast du das Modul auch so rein oder nur teile in dein Modul so eingebaut ?
Denn ich habe global im Modul für h und i  das defrefregs gesetzt das bei 2 gelesenen readings beide vertauscht damit high register auch vorne dran steht, das sieht mir nach dem Problem bei Dir aus.

my %ModbusEPEVERdeviceInfo = (
               "c" =>  {       'defPoll' => '1',
                                'defSet' => '1',
                            'defShowGet' => '1',
                                 'write' => '5',
                       },
               "d" =>  {       'defPoll' => '1',
                            'defShowGet' => '1',
                       },
               "h" =>  {       'combine' => '8',
                               'defPoll' => '1',
                            'defRevRegs' => '1',
                            'defShowGet' => '1',
                                 'write' => '16',
                       },
               "i" =>  {       'combine' => '8',
                               'defPoll' => '1',
                            'defRevRegs' => '1',
                            'defShowGet' => '1',
                          }
RaspberryPi 4 Buster,Homematic,Z-Wave,Rademacher Duofern,Signalduino,Fritz7590,ESP8266,ESPEasy,Tasmota,Robonect,Kameras,1-Wire,Modbus,Solar,Maranz,VU+

Offline kurt6908

  • Full Member
  • ***
  • Beiträge: 128
Antw:neues Modul [98_ModbusEPEVER] Vorstellung
« Antwort #12 am: 26 April 2021, 07:37:06 »
Hallo,

ich bin auf dieses Modul gestoßen und bin hoch erfreut ;=)

Ich erwarte Mitte Mai meinen neuen UP3000-M6322 Inverter/Charger von EPever (damit will ich mit meiner Inselanlage meinen Plug-In-Hybriden laden).

So wie ich es verstanden habe, sollte das Modul ja auch mit diesem Gerät gehen. Aber meine Frage:

Wie schließe ich das Gerät an? Ich habe mir das RS485 an USB-Anschluss dazu gekauft, reicht das oder muss ich noch ein anderes Modul oder Installation vornehmen?

Wenn das Gerät da ist und die Anlage umgestellt ist, dann stelle ich mich natürlich gerne zum testen bereit ;=)

Viele Grüße

Kurt
3* Raspberry Pi (2 über LTE/VPN), 5* Cul, 3* FS20, 4* FHT, 6* HM, Somfy, Solarlog, WMBus/EnergyCam, AVM FritzBox, 3* AVM Powerline, Alexa, Sens'it, Tasmota/MQTT, Rademacher DuoFern, EPEver UPower/ModBus

Offline laserrichi

  • Full Member
  • ***
  • Beiträge: 279
Antw:neues Modul [98_ModbusEPEVER] Vorstellung
« Antwort #13 am: 26 April 2021, 22:46:29 »
Hallo Kurt,
freut mich zu lesen was du vor hast.
Ich vermute das es auch mit dem Teil laufen wird, denn es gibt von epever nur eine Doku zu dem Modbus Protokoll.

Aber der RS485 zu USB von denen wird mit dem Raspberry nicht laufen.
Denn der USB Treiber im Linux bildet hier keine serielle Schnittstelle nach sondern erscheint als Modem.
Hatte das schon mal bei einem User hier der das verzweifelt versuchte.
Es gibt aber einfache RS485 Serial to USB Adapter. Dann muss man nur die RJ45 Verbindung auf den Adapter herstellen.
Ich habe das nicht direkt mit USB  an den Raspberry sondern gehe über einen ESP mit wlan da ich das ja im Garten habe.

Wird sicher interessant da du ja auch gleich Wechselrichter mit drin hast.
RaspberryPi 4 Buster,Homematic,Z-Wave,Rademacher Duofern,Signalduino,Fritz7590,ESP8266,ESPEasy,Tasmota,Robonect,Kameras,1-Wire,Modbus,Solar,Maranz,VU+

Offline kurt6908

  • Full Member
  • ***
  • Beiträge: 128
Antw:neues Modul [98_ModbusEPEVER] Vorstellung
« Antwort #14 am: 27 April 2021, 09:02:10 »
Hallo laserrichi,

vielen Dank für den Hinweis .... hätte mich da wohl dämlich gesucht, wenn es nicht gegangen wäre.

Dann werde ich mich mal auf die Suche nach einem seriellen USB-Adapter mit RJ45 machen, sollte ja machbar sein ;=)

Ich habe mir auch noch den WLAN-Adapter von EPEver als Notlösung in der Garage besorgt. Da meine Garage aber vom Haus entfernt ist, manage ich alles über einen mit LTE/VPN-verbundenen Rapsi .... bis jetzt funzt es tatellos ;=)

Brauche ich zu Deinem Modul noch das 98_Modbus.pm oder reicht Deines alleine?

Wenn der Wechselrichter geliefert und montiert ist, kann ich technisch mit einsteigen und kann testen, ob Alles so richtig ankommt. Wäre schön, wenn Dein Modul dann im automatischen Update mitkommen würde ;=)

Jetzt brauche ich noch eine Lösung um von FHEM auf das VW-WeConnect zu kommen, dann kann der automatische Ladevorgang bei genügen Sonneneinstrahlung starten ;=)

Viele Grüße und bis bald (wenn die Montage erfolgt ist ;=)

Kurt
3* Raspberry Pi (2 über LTE/VPN), 5* Cul, 3* FS20, 4* FHT, 6* HM, Somfy, Solarlog, WMBus/EnergyCam, AVM FritzBox, 3* AVM Powerline, Alexa, Sens'it, Tasmota/MQTT, Rademacher DuoFern, EPEver UPower/ModBus

 

decade-submarginal