Modul für AE-Conversion Wechselrichter

Begonnen von Roger, 27 Dezember 2015, 15:03:03

Vorheriges Thema - Nächstes Thema

hein21

Hi Roger,
you made my day!  :)
Jetzt geht's. Wenn doch alle Probleme so leicht zu beheben wären....

Dankeschön und viele Grüße,
Stefan

dougie

#16
...ich befürchte ich hab da doch noch ein Problem.

Ich bekomme unglaublich viele CRC Fehler und versuche das Problem einzukreisen.
Ich verwende aktuell einen einzelnen Wechselrichter und das PLC Gateway zusammen mit einem höherwertigen RS485 Konverter mit FTDI Chipsatz an einem RPI.

fhem habe ich extra neu auf dem RPi aufgesetzt und will nur das die Werte in ein Logfil auf dem Server geschrieben werden.

Der Abstand vom WR zum PLC Gateway sind nur 2m und auch vom Gateway zum RPI sind nur 2m.

Wo könnten da die vielen CRC Fehler her kommen?

VG
Ralf


Edit: hab's gefunden!
Der AEC PLC Adapter ist ein RS485 Slave.
Ich verwende den Delock RS485 / USB Konverter von Reichelt. Der ist aber auch kein RS485 Master Device! Das heisst man muss die Kiste aufschrauben und zwei 390 Ohm Widerstände einlöten. Und zwar einen von D+ nach 3,3V und einen von D- nach Masse. So ist es nach RS485 Standard.

Hoffe es hilft dem ein oder anderen bei der Fehlersuche!

voller

#17
Moin,
ich bin jetzt erst zum testen gekommen und beiß mir die Zähne daran aus.  :(

Das funzt noch in der Befehlszeile:
define Aesgiprotokoll AESGI /dev/serial/by-id/usb-CTI_GmbH_Serial_Converter_CTXOSFJA-if00-port0@9600
wird angelegt und erscheint in der Oberfläche.

Der Befehl geht in die Hose:
define Wechselrichter2 AEConversion 02 30
Der führt zu einem Neustart von FHEM

Der Fehler im Log lautet:
98_AEConversion.pm: AEConversion_Define Registrierung WR-Adresse: 02, in: Aesgiprotokoll
PERL WARNING: Use of uninitialized value $cmd in concatenation (.) or string at ./FHEM/98_AEConversion.pm line 239.

Das System ist ein 64bit Debian 10 auf einem 4 Kerne Celeron mit 16GB Speicher mit Software SSD-Raid1 neu aufgesetzt.

Leider reichen meine Perl-Kenntnisse (noch) nicht aus um den Fehler zu beseitigen. Hat jemand eine Idee?

Update:
OK, das ganze FHEM mit Visual Code zu debuggen war keine gute Idee (bin wahrscheinlich zu blöd dazu), aber immerhin die Zeile die FHEM zum Krachen gebracht haben sind erstmal in 98_AEConversion.pm auskommentiert. Hat natürlich derzeit zur Folge, dass es keine Get und Set Kommandos für die Geräte gibt. Die Basisauswertung Leistung, Spannung und Strom funzt aber. Das mit SetExtentions ist, wenn ich den Koenig richtig interpretiere, nicht so eine gute Idee.

201      return; # SetExtensions($WRhash, join(" ", sort keys %AESGI_gets), @a); # Probleme
241      return; # SetExtensions($WRhash, join(" ",sort keys %AESGI_sets),@a); # Problem!!!!

Wenn die Wechselrichter morgens wieder angesprungen sind gab es den nächsten Crash mit der Meldung im LOG
"Undefined subroutine &main::Modbus_HandleSendQueue called at fhem_debug.pl line 3306."

Lösung in 98_AESGI.pm diese Zeilen auskommentieren:

406 #      Log3($name,5,"98_AESGI.pm: AESGI_SendQueue neue Queue Anzahl von: ".$name.", Laenge: ".(@{$queue}));
407 #      if(@{$queue} > 0) {         # more items in queue -> schedule next handle
408 #         Log3($name,5,"98_AESGI.pm: AESGI_SendQueue Queue von: ".$name." noch nicht leer, Laenge: ".(@{$queue})." --> naechstes Senden vorbereiten");
409 #         InternalTimer($now+$queueDelay, "Modbus_HandleSendQueue", "queue:$name", 0);
410 #      }

Insgesamt kommen alle Daten meiner 5 Wechselrichter zwar rumpelig aber ohne FHEM abzuschießen an. ;-)

Mal gucken ob ich es schaffe das alles in funktionsfähig hin zu bekommen.

Update:
Ist zwar nicht die feine Art der Lösung aber was solls ;-)
In 98_AEConversion.pm die Zeilen auf diese Werte ändern und schon klappt alles inklusive der get und set Befehle.

201   return "Unknown argument $cmd , choose one of Betriebsparameter Wechselrichtertyp Leistungsreduzierung Abschaltparameter Fehlerspeicher Stromvorgabe Betriebsmodus";
241   return "Unknown argument $cmd , choose one of Leistungsreduzierung_alle Leistungsreduzierung Autotest Stromvorgabe BM_normal BM_Spannungsvorgabe";

Damit sind für mich alle Ansprüche, die ich an die beiden Module habe "Leistungswerte erfassen" und "Leistungsbegrenzung setzen" hinreichend erfüllt.

Danke Roger für die für die Module.

Gruß
Voller




Matthias76

Hallo zusammen

Zunächst einmal danke für das schreiben dieser zwei Module.
Ich wollte das auch nutzen, um die Daten von INV350 und INV500 sowie eines AEDL-UH in FHEM nutzbar zu machen.
Diese drei Gerätetypen unterhalten sich schon jetzt via RS485-Bus untereinander erfolgreich.
Es sind jedoch PLC-Ausführungen, die aufgrund von unterschiedlichen Phasen via PLC-Gateways (Powerline Gateway von AEc) ihre Kommunikations in den Bus finden. Tiefer brauchen wir darauf nicht eingehen.

Hin und wieder gibt es schon auf dem Bus sichtbar am Logger AEDL-UH CRC-Fehler, obwohl der Bus beidseits mit 220Ohm-Widerstände abgeschlossen ist und im AEDL-UH auch eine Pull/Push/Up/Down-Verschaltung nach TIA vorhanden ist (390Ohm/+/-).
Lassen wir das als unbekanntes Problem A da stehen, welches aber nur geringe Relevant hat, da nur selten, wenig, kurz störend...

Nun zu FHEM und den zwei Modulen.
Ich habe die .PM-Dateien für AESGI und WR von AEconversion reinkopiert und definiert.
Soweit so gut.
Dann habe ich WRs angelegt und mit der Geräte-ID = Seriennummer angelegt, also 0302010650 und nicht einfach nur 01 oder 13 oder 28, wie hier so oft gezeigt.
So steht es ja auf dem Gerät (eindeutige Nummer) und so sind sie auch im AEDL-UH angelegt und kommen an!

Beim AESGI steht beim ttyUSB0 "opened".
Beim WR steht kurz opened, dann "timeout".
Im Log beim AESGI war viel Bewegung, aber auch viele CRC-Fehler-Einträge.

Vorhin habe ich dann mal doch mit Gerätenummer 1 einen angelegt.
Dann stürzte FHEM in einer Endlosschleife ab.
Diese konnte ich erst beenden, als ich die beidem Module aus /opt/fhem/FHEM rausgeholt hatte!

Jetzt traue ich mich gar nicht mehr, sie nochmal rein zu bringen.
Als Adapter nehme ich diesen:
https://www.amazon.de/USB-RS485-Adapter-mit-Geh%C3%A4use/dp/B00I9H5J02/ref=sr_1_5?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&keywords=rs485&qid=1582473404&sr=8-5

Mal mit cat o.ä. den COM-Port sichtbar gemacht, kommt was an, irgendwas im Takt.


Matthias76

Für alle die es (wie ich vorher) nicht wissen:
Die Geräte-ID ist die Zahl, die man ließt, wenn man nur die letzten 5 Ziffern der Seriennummer notiert.
INV500 - Seriennummer: 0403010650  --> Dann ist die Geräte-ID: 10650
(!)

So, und ohne AEDL-UH, nur mit 485-Geräten oder PLC-485-Gateways funktioniert es auch - mit der AEsolar-Software und mit den Modulen hier.
Nur dass ich den AEDL-UH als CO3- und L1-Erfasser benötige.
Hängt der mit im 485-Bus, geht auf der anderen Seite nichts mehr.

Dabei gilt ein 485-Bus auf Zweidrahttechnik (AB) als Multimaster-fähig.
Abgesehen davon braucht der PC (FHEM, AEsolar) eigentlich auch kein Master sein, nur mit-schnüffeln.
Sch... AEc....!

Ich habe das Projekt nun erstmal aufgegeben und hoffe an brauchbare Daten am EM24 zu kommen.
Das sieht auf dem ersten Blick schon mal vielversprechender aus...

voller

Moin Matthias,
Die Wechselrichter können 2 Übertragungsprotokolle das "native" aenconversion-Protokoll (dann ist die Geräte ID 5-stellig) und zusätzlich das AEGSI (da ist die Geräte- ID 2-stellig für max 32 Wechselrichter)
In dem "Dachplan" der AEsolar-Software kann man sehen, wie die Zuordnung zwischen den beiden ID's ist.
Die FHEM Module können nur das AEGSI und das AEDL-UH arbeitet mit dem nativen Protokoll, also beim blossen mitsniffen des FHEM wird das in die Grütze gehen.
Die beiden Protokolle unterscheiden sich in der Startsquenz, AEGSI #<WR-Adresse(2stellig ASCII, 32 Adressen)> und Werte sind in Klartext ASCII, das "native" !<WR-Adresse (HEX zwei Byte, 64000 mögliche Adressen)> und die Werte sind im Binärformat.
Wie gesagt zwei Protokolle über den gleichen Bus stelle ich mir ein wenig haarig vor. Zumal wenn FHEM und das AEDL-UH "gleichzeitig" aktiv sind. Ich habs über das normale PLC/RS485-Gateway laufen und damit funzen die FHEM-Module mit meinen Modifikationen.

Ich hoffe ich konnte das etwas erhellen, hat mich auch n paar Wochen gekostet bis ich dahinter gekommen bin. ;-)

Und Tschüß
Voller