Modul für Victron BMV600 / BMV602 / BMV700 / BMV702 / MPPT / Inverter

Begonnen von Askie, 25 Januar 2016, 11:19:14

Vorheriges Thema - Nächstes Thema

MadMax-FHEM

Jep, ist angenehmer :)

Schau ich mir mal an...
...zusammen mit den anderen Dingen...

Kann aber evtl. etwas dauern...

Werfe dann wieder eine Patch-Version ein...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

#106
Zitat von: MadMax-FHEM am 15 April 2023, 13:27:34Werfe dann wieder eine Patch-Version ein...
:)

Ging doch schneller.

Bzgl.:
Zitat von: kpwg am 15 April 2023, 12:53:19Ich habe mal auf die Schnelle meine bisherigen Anpassungen gesucht und "visualisiert". Klar geht das besser, aber das hier geht halt schnell  ;D
Dabei sind ansich nur zwei Fehlerbehebungen, eine Schönheitskorrektur (Idle, Bulk, Absorb, Float, ...) und einmal sehe ich keinen Unterschied. 8)
Die CRC-Prüfung kann ich eventuell heute abend testen, vorher müssen noch neue VE.Direct Kabel mit CH340 her. Es motiviert schon, wenn hier wieder Bewegung ins Thema kommt.
Also ich hab mal versucht das einzubauen.

Folgendes habe ich eingebaut:
Bei Diff1 konnte ich nicht sehen was der Unterschied ist und auch im Code keinen Fehler erkennen... Sorry 8)

Diff2 habe ich übernommen, ich arbeite nicht mit historischen Daten (aus dem Modul), wenn dann mache ich das mit fhem-Mitteln...

Von Diff3 habe ich nichts übernommen :-\
Grund: ich finde die Begriffe wie sie sind ok, sorry...

Bei Diff4: Ist mir auch schon aufgefallen, dass != bei "Zeichenkettenvergleich" nicht passt. Da aber keine WARN kamen (was sonst ja der Fall ist), hab ich das erst mal gelassen. Allerdings bedeutet != eher ne ? Daher habe ich das mal statt ge (wie von dir vorgeschlagen) in ne umgebaut, mal sehen. Bzw.: gibt es einen bestimmten Grund für dein ge ? (habe den Code nicht weiter analysiert)...


Aktuell habe ich beim Reload keine Einträge mehr im Log.
Fehler (meiner Meinung nach) war ein Schleifenzähler, der von 0 - Einträge im Array ging. Habe den nun korrigiert auf 0 - Anzahl Arrayeinträge -1 (müsste stimmen bzw. habe ich das auch so "abgezählt")...

Da ich aber nicht/nie alle Logeinträge bekommen habe: bitte mal testen :)

EDIT: Hmmm, ok. Hab doch noch einen Eintrag (wenn ich Laden beende)
2023.04.15 23:27:35 1: PERL WARNING: Illegal hexadecimal digit '
' ignored at ./FHEM/00_VEDirect.pm line 1248.
Mal sehen, ob ich bei ParseHex auch noch was finde.
Allerdings habe ich mich da noch nicht so tief eingearbeitet...
Und: ich werde (mindestens für mich) die verbose 3 Meldungen bei ParseHex auf 4 oder 5 setzen, damit ich mit verbose 3 (Standard) laufen lassen kann. Aktuell werden die empfangenen Hex-Messages bei verbose 3 geloggt...
...finde ich nicht schön/unpassend/unnötig. Was meint ihr? Wenn für auch auch ok, dann baue ich das generell um...
EDIT: hmm, das ist ja die Stelle mit != ne ge (ge habe ich auch mal probiert, hat aber irgendwie nchts geändert)... Mal sehen...

EDIT: ok, noch eine Meldung...
2023.04.15 23:41:39 1: PERL WARNING: Argument "1365j\nI" isn't numeric in multiplication (*) at ./FHEM/00_VEDirect.pm line 1069.
Habe dort ebenfalls != durch ne ersetzt, mal sehen...

EDIT: ich habe eine (neue) Patch angehangen. Dort die verbose bei den Log3 laut "Wiki verbose" (so ich denke) umgesetzt...

EDIT: also ich habe noch ein wenig rumgetestet und bin aktuell Meldungsfrei :)
(aber ich nutze ja nicht alles usw.)

EDIT: weil es mir aber keine Ruhe gelassen hat, habe ich noch ein wenig rumgesucht (wo eine for-Schleife [mMn] falsch ist, evtl. sind ja weitere drin) und würde folgende for-Anweisungen eigentlich auch umbauen:
1091: for my $b (0 .. int(@bits)) -> for my $b (0 .. $#bits)
1093: for my $b (0 .. int(@bits)) -> for my $b (0 .. $#bits)
1478: for $i (0 .. length($msg)) -> for $i (0 .. length($msg) - 1)

Wenn also bei euch weitere/weiterhin Einträge auftauchen (die ich bei mir halt nicht kriege) wären das meine nächsten (und aktuell letzten) Ansatzpunkte.
Evtl. baue ich das (trotzdem es bei mir wohl da nicht langläuft) mal so ein und schaue was passiert...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Sprocki62

#107
Reverse Engineering macht Spaß!!   ;D

Hallo Joachim,
hatte auch mal ein wenig rumgespielt..  bin auf ähnliche Ergenisse gekommen wie du.
Hab nur noch ein paar mehre von den "!=" durch "ne" ersetzt.

Hab dann aber doch mal deinen Patch genommen.
Und es sind bei mir doch noch drei Fehlermeldungen übrig geblieben...

2023.04.16 17:06:35 1: PERL WARNING: Use of uninitialized value $lastMin in string ne at ./FHEM/00_VEDirect.pm line 1039.
2023.04.16 17:06:35 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/00_VEDirect.pm line 1043.
2023.04.16 17:07:21 1: PERL WARNING: Argument "" isn't numeric in multiplication (*) at ./FHEM/00_VEDirect.pm line 1206.
----
2023.04.16 17:09:56 1: PERL WARNING: Use of uninitialized value $lastMin in numeric ne (!=) at ./FHEM/00_VEDirect.pm line 1039.
2023.04.16 17:09:56 1: PERL WARNING: Use of uninitialized value in numeric ne (!=) at ./FHEM/00_VEDirect.pm line 1043.
2023.04.16 17:10:21 1: PERL WARNING: Argument "" isn't numeric in multiplication (*) at ./FHEM/00_VEDirect.pm line 1206.

Zum Fehler in line 1039 und 1043
Vor der ersten Meldung (von 17:06 Uhr) "uninitialized value $lastMin in string ne " hatte ich dort "!=" auch durch "ne" ersetzt  -> also KEIN string ???
Vor der zweiten Meldung (von 17:09 Uhr) "uninitialized value $lastMin in numeric ne (!=)" bin ich wieder zurück zu "!="  -.> auch kein NUMERIC?
Oder was bedeutet das ""uninitialized"? Falscher Typ bei Variablen-Deklaration?

Zum Fehler in line 1206
2023.04.16 17:10:21 1: PERL WARNING: Argument "" isn't numeric in multiplication (*) at ./FHEM/00_VEDirect.pm line 1206.
   1206             my $Hdate = POSIX::strftime("%Y%m%d",localtime(time+86400*$Register{ $type }->{ $id }->{'Skalierung'}));
   1207             my $HdateOld = POSIX::strftime("%Y%m%d",localtime(time-86400*$Register{ $type }->{ $id }->{'Skalierung'}));

Irgendwas mit dem POSIX::strftime scheint da nicht zu stimmen  -> Argument "" isn't numeric in multiplication
Ist "%Y%m%d" ein String? 
Vermutung: Perl-Version seit der Entwicklung dieses Moduls geändert..oder ich hab ne andere Perl-Version auf dem WoMo-Pi... oder ich hab ein UPDATE verpennt.  Nutze  perl:5.028001

Der Error
2023.04.15 23:27:35 1: PERL WARNING: Illegal hexadecimal digit '
' ignored at ./FHEM/00_VEDirect.pm line 1248.

tritt bei mir nicht mehr auf.. siehe Änderung in Zeile 1436.. 
2 mal $val nacheinander kam mir komisch vor.. Da hab ich das zweite $val einfach mal auskommentiert..  Mut zur "Lücke" ;-)

   1424 ##################################################################################################################################################
   1425 # ChecksumHEx
   1426 ##################################################################################################################################################
   1427 sub VEDirect_ChecksumHEX($$)
   1428 {
   1429   my ($startVal, $cmd) = @_;
   1430   $startVal = 0x55;
   1431
   1432   for my $i (1 .. length($cmd))
   1433    {
   1434       my $val = 0;
   1435       $val = hex(substr($cmd,$i,1)) if($i==1);
   1436   #    $val = hex(substr($cmd,$i,2)) if $i % 2 ==0;
   1437       $startVal -= $val if( looks_like_number($val));
   1438
   1439    }
   1440    $startVal &= 0xFF;
   1441    return (sprintf("%02X", $startVal));;
   1442 }


Was meinst Du dazu?
Und was sagt denn Ricardo dazu?

Soo... das Wo.E. ist nun fast vorbei..
Mal schauen, wann ich wieder Zeit zum "Basteln" habe..

Vielen Dank auf jeden Fall für Eure Arbeit.

Bis denne
Grüße
Johannes
 

MadMax-FHEM

#108
Stimmt, WE (fast) vorbei...
Mal sehen...

Das mit strftime schaue ich mir mal an.
Allerdings könnte auch sein, dass in dem was nach dem Multiplizieren (was aus Hashes gelesen wird) kommt nicht passt. Dazu tendiere ich eher...

Das mit uninitialized bedeutet (und ist ja auch "nur" ein Warning), dass da eine Variable benutzt wird, die nicht explizit initialisiert wurde, sondern halt "leer" einfach "nur" angelegt wurde...

Muss ich mal sehen...

Manches/vieles sind aber auch Folgefehler von z.B. falschen Schleifendurchläufen...

Hast du mal die von mir vorgeschlagenen Änderungen probiert?
Die sind in dem Patch (noch) nicht drin...

Da ich halt Warning-/Fehlerfrei bin (aktuell) ist halt auch schwer zu suchen, weil ich ja nur theoretisch den Code anschauen kann...

Kommen die Meldungen regelmässig oder reproduzierbar?
Dann könnte ich mal Logging einbauen, du provozierst den Eintrag und dann sehen wir wie weit wir kommen...

Danke für die Unterstützung!

EDIT: ich laufe auf Bullseye (aktuell) und aktuellem fhem... Perl Version müsste ich erst mal abfragen... Nutze aber auch praktisch nur Standardeinstellungen beim Device, also nur define und gut. Nutze einen MPPT 75/15. Da hängt ein Netzteil (48V) dran und lädt einen Akku (12V LiFePo4). Wenn voll, entlade ich den wieder über einen Wechselrichter, "gesteuert" über den Lastausgang des Victron...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Sprocki62

Ach ja..

ZitatHast du mal die von mir vorgeschlagenen Änderungen probiert?
Die sind in dem Patch (noch) nicht drin...

Ja.. die sind drin.. keine Änderung im Log. Aber ich lasse sie erstmal so drin.

ZitatKommen die Meldungen regelmässig oder reproduzierbar?
Ja.. regelmässig beim Start..  sonst nicht.

Und die Filehandler-Meldung (die diese ganze Aktion ins Rollen gebracht hat ;-) ) ist jetzt komplett weg.

Danke nochmal...
Grüße
Johannes
 



Sprocki62

#110
Und damit ihr auch wisst, was ich mit diesem Victron-Modul so anstelle...  ;-) 

Die Daten kommen live aus dem WoMo... mittels VPN angebunden.

Ausgabe des Moduls.

MPPTBetriebsart: bulk
Tracker operation mode: 2 MPPT
Panel-Leistung: 4.7 W
Max. Panel-Leistung: 54 W
Ertrag heute: 0.1 kWh
Ertrag gestern: 0.05 kWh
Batteriestrom: -0.01 A
Batteriespannung: 12.85 V
Error-Code: No error

Und in FTUI:

siehe angehängter Screenshot
Du darfst diesen Dateianhang nicht ansehen.
:-) 

MadMax-FHEM

#111
Zitat von: Sprocki62 am 16 April 2023, 18:36:32
ZitatKommen die Meldungen regelmässig oder reproduzierbar?
Ja.. regelmässig beim Start..  sonst nicht.

Ok.
Ich schaue mir mal an was du so für Meldungen hast und welche Ausgaben ich denke helfen könnten mich weiterzubringen ;)
Wenn ich eine Version habe, dann stelle ich die wieder hier ein zum Testen.
Dann baue ich auch gleich die weiteren vorgeschlagenen Dinge ein, wenn die bei dir eh schon laufen...
EDIT: oder du hängst deine aktuelle Version hier an, dann diffe ich mal und erstelle eine basierend da drauf... (nicht, dass wir zu unterschiedliche Versionen haben ;) )...

EDIT: das was du bei VEDirect_ChecksumHEX auskommentiert hast, hätte ich eher andersrum auskommentiert, weil das was du auskommentiert hast ja zuvor der letztendlich vereendete Wert war ;) Evtl. schaue ich da auch mal in der Anleitung von Victron nach ;) Hat ja bei VEDirect_ChecksumTxt auch prima geklappt 8)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

Bei dem Fehler in 1039 denke ich eher (und er kommt ja auch nur beim Start?), dass es noch keinen lastHex gibt, also my $lastMin = $hash->{helper}{lastHex}; undefined ist und eben $lastMin nicht initialisiert ist.
Ist es mal durchgelaufen, steht in lastHex was drin und dann löpt das ohne Meldung...

String/nicht String ist in dem Fall egal, weil beides wohl Zahlen sind und das interpretiert Perl so und auch anders ;)
Sofern beides "ähnlich" ist, also String und Zahl sein kann.
Wichtig ist dann eher, dass u.U. das Vergleichsergebnis anders sein kann (also zw. != und ne je nachdem ob eben Zeichenkette oder Zahl)...

Evtl. sowas:
    my $lastMin = 0;
    $lastMin = $hash->{helper}{lastHex};

oder (noch besser?):
    my $lastMin = 0;
    $lastMin = $hash->{helper}{lastHex};if(defined($hash->{helper}{lastHex}));
oder (noch viel besser?):
Beim DEF des Devices mit 0 (oder der aktuellen Zeit?) initialisieren?


Fehler in 1248, hmm, evtl. weil doch was mit CRCHex nicht stimmmt?
Bei Gelegenheit schaue ich mir die Implementierung von VEDirect_ChecksumHEX doch mal (genauer) an...

Bzgl. Fehler 1206/1207 denke ich ja, dass da beim ersten Durchlauf (Kommen die auch "nur" beim Start?) irgendwas halt noch nicht initialisiert ist, ähnlich dem Problem mit $lastMin ?

Also besser du postest mal deine aktuelle Version, dann mache ich einen Diff usw. und basierend darauf mal eine neue Version zum weiteren Testen...
(bevor wir aneinander "vorbei" arbeiten ;)  )...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Sprocki62

Hi Joachim,
ich hänge "meine" Version einfach mal hier dran...
Kannst ja mal schauen, ob du noch was davon gebrauchen kannst.

Schönen Abend... und bis die Tage.
Beste Grüße vom südl. Rande des Ruhrpotts
Johannes


Du darfst diesen Dateianhang nicht ansehen.

kpwg

Da schaut man mal ein paar Stunden hier nicht rein... ;D

Ich habe gestern zuerst meine VE.Direct Kabel ersetzt. Wie schon letztens festgestellt, geht die Fehlerquote und die Last auf dem RasPi deutlich runter, wenn man CH340 Wandler nutzt. Mit vier CH340 habe ich deutlich weniger Last als vorher mit drei CP2102. Bisher sind beim ungepatchten Modul innerhalb (knapp) 24h drei Logeinträge aufgetaucht, vorher täglich etwa 10 bis 30 Einträge (mit einer Schnittstelle weniger!).

Das gepatchte Modul will ich heute testen, danke für das bearbeiten der diffs von mir. Alles ok, einzig bei Diff3 werde ich die Begrifflichkeiten wieder anpassen müssen. Ein "not_charging" ist zu groß für das vorgesehene Feld und deutlich größer als alle anderen Zustände, was auf kleinen Displays zu ungewollten Umbrüchen führt. Ob groß oder klein geschrieben, ist tatsächlich nur Kosmetik  8) Ich finde, solche Zustände sollten stets eine ähnliche Wortlänge haben, was der Visualisierung in einfacher Form entgegen kommt. Ich löse das wieder mit einem sed auf shell-Ebene, kann ich gerne mal hier posten. Man kommt immer mal in die Situation, wo ein Detail im Modul nicht passt, für 99% der Nutzer aber in Ordnung ist.  :))

Das FTUI-Panel ist natürlich der Hingucker!

kpwg

(M)Ein erster Test: Die Version aus #106 läuft hier nicht, der Start von fhem wird blockiert. Ich muss das nochmal genauer analysieren, aber das geht dann am Produktivsystem zu weit. Es ist ja nicht das erste Modul, was ich modifiziert ins System einschleuse. Im Idealfall lädt man mit reload das Modul nach, ein kompletter Neustart des RasPi muss aber auch gehen.

MadMax-FHEM

#116
Hmm, schade.

Weil am prinzipiellen Ablauf hab ich eigentlich nichts geändert...

Du kannst auch mal die erste modifizierte Version nehmen. Da wurde wirklich nur die CRC für Text angepasst...

Wenn die auch nicht geht, dann ist es verm. was anderes in deinem System (mM ;) )...
EDIT: usb-check ist (verm.) disabled?

Ich werde auch mal booten usw.
Wobei ich dazu erst mal das Wettermodul "bereinigen" muss, sonst startet mein fhem (aktuell) auch nicht...

Bin allerdings aktuell sehr eingespannt (so ist das nach Urlaub)...

Kann also dauern bis ich wieder zu was komme...

Meine nächsten geplanten Schritte (also was ich einbauen/anpassen würde) habe ich ja geschrieben... ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

kpwg

Mir lässt das auch keine Ruhe, das Problem wird sich schon zeigen. Ein Raspi3 mit fhem müsste noch in der Bastelkiste liegen, dazu einen ungenutzten BlueSolar Regler. Damit sollte es funktionieren  O:-)

MadMax-FHEM

FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

kpwg

Kaum macht man es richtig, gehts! ;D
Die Schnittstellen waren noch blockiert. Nach Neustart ist erst mal alles wieder da, es kommen ordentlich Daten (aktuell 5x VE.Direct, Pakete kommen jeweils zweimal pro Sekunde)

Die Logeinträge nach "shutdown restart":
2023.04.17 20:37:45 0: Server shutdown
2023.04.17 20:37:47 1: Including fhem.cfg
2023.04.17 20:37:48 1: Including ./log/fhem.save
2023.04.17 20:37:48 0: Featurelevel: 6.2
2023.04.17 20:37:48 0: Server started with 60 defined entities (fhem.pl:27410/2023-04-07 perl:5.032001 os:linux user:fhem pid:945)
2023.04.17 20:37:48 1: PERL WARNING: Use of uninitialized value $lastMin in numeric ne (!=) at ./FHEM/00_VEDirect.pm line 1039.
2023.04.17 20:37:48 1: PERL WARNING: Illegal hexadecimal digit '
' ignored at ./FHEM/00_VEDirect.pm line 1436

Die Last des Systems ist angenehm niedrig (wie vorher):
Du darfst diesen Dateianhang nicht ansehen.

EDIT: Das kam gerade noch hinterher:
2023.04.17 20:46:49 1: PERL WARNING: Argument "" isn't numeric in multiplication (*) at ./FHEM/00_VEDirect.pm line 1206.
Viele Grüße, Ricardo