Victron Solarladeregler BlueSolar und SmartSolar

Hallo Hermann,
ich meine die „Asynchronous Items“ aus dem VE-Direct HEX-Protokoll. Diese habe ich bei dir nirgends gesehen bei kurzer durchsicht.

Grüße
Stefan

Hallo Stefan,

ist mir klar.
Allerdings benötigt man diese doch nur, wenn Werte in den Registern des Victron-Gerätes geschrieben werden sollen.
Bis jetzt würde ich höchstens den „LOAD“-Ausgang manuell schalten wollen.
Evtl auch noch die Historiewerte, obwohl die bei laufender Variablenarchivierung irgendwann unnütz sind.

Was vermisst Du aktuell ?

Gruß,
Hermann

Ich denke, es gab damals schon einen Grund, warum ich vom ASCII-Protokoll auf das HEX-Protokoll umgestiegen bin. Bei meinem Batteriemonitor BMV-712 hatte ich auch mit dem ASCII angefangen und dann aber komplett umgebaut auf HEX.
Jedenfalls hab ich ein paar Werte mehr, die aber über die History reinkommen. Meiner Meinung nach bietet das HEX-Protokoll einfach mehr Möglichkeiten.

Grüße
Stefan

Moin Hermann,
hier mal eben eine neue Routine für die checksumme. Ein Problem taucht bei der Alten auf, wenn man längere Befehle sendet (Einstellen von Parametern im Victron).

public function checksum(string $Data,bool $send=FALSE){
	$len = strlen($Data);                                                                                                                                                                                   
        if ($len == 0 or !ctype_xdigit($Data[0])){return FALSE;}                                                                                                          
        	$checksum_calc = (0x55 - hexdec($Data[0]));                                                                                                                                                             
           	if ($send === TRUE){                                                                                                                                         
                	for($i=1; $i < $len; $i=$i+2) {
$checksum_calc = $checksum_calc - hexdec($Data[$i].$Data[$i+1]);
}  
$checksum_calc = $checksum_calc & 0x000000FF;
                	$checksum = strtoupper(dechex($checksum_calc));
                	if (strlen($checksum) == 1){$checksum = "0".$checksum;}
			return $checksum;      
           	}  
		else{                                         
               		for($i=1; $i < $len-2; $i=$i+2) {
                        	$checksum_calc = $checksum_calc - hexdec($Data[$i].$Data[$i+1]);
                	}                                                                                                                                                    
                	$checksum_calc = $checksum_calc & 0x000000FF;
                	$checksum_rec = hexdec($Data[$len-2].$Data[$len-1]);   
                	if ($checksum_calc == $checksum_rec){return TRUE;}                                                                                                   
                	else{return FALSE;}                                                                                                                                  
          	}                                                                                                                                                                                                        
	} 
}                             

Grüße
Stefan

Hallo Hermann,

besteht die Möglichkeit mit deinen Modul auch einen Smart Shunt von Victron in IPS einzubinden?

Grüße
Christian

Hallo Stefan,

könntest du etwas mehr zu deiner Lösung erzählen.
Ich habe schon seit Jahren ein BMV 702 was ich per ASCII auslese (hier beschrieben). Das klappt auch ganz gut, nur muss ich das IO-Interface aller 30 Sekunden öffnen und schlissen sonst legt es mir meinen Rechner lahm.

Grüße Thomas

Ich hab mit einem BMV-712 angefangen. Den benutze ich aber mittlerweile nicht mehr, weil ich Akkus mit BMS habe. Bei mir sind nur noch die Laderegler aktiv.
Der BMV müsste genauso wie die Laderegler jede Sekunde eine Nachricht schicken. Das führt zu performance Problemen, wenn man jede Sekunde den kompletten String verarbeitet. Daher das öffnen und schließen des Ports. Hatte ich auch so gemacht.
Das Modul reagiert nur auf asynchrone HEX-Nachrichten die mit :A beginnen.
Um die wichtigsten Sachen per Hex zu bekommen sende ich einen PING in gewissen Abständen (bei mir 5 Minuten).
Mittlerweile hab ich noch einige Einstellungssachen in das Modul eingebaut (nicht veröffentlicht).

Mit dem Hex-Protokoll kann man eben alle Werte lesen und schreiben, welche von den Victron Geräten zuf Verfügen stehen. Mit dem ASCII-Protokoll halt recht wenig. Daher bleibe ich beim HEX.

Grüße
Stefan

Hallo Stefan,

vielen Dank für die Ausführungen.
Ich habe jetzt auch mal das Modul ausprobiert. Aber das Modul unterstützt mein BMV nicht.

Da bleibe ich bei meiner Lösung.

Grüße Thomas

Hallo Thomas,
welches Modul hast du getestet? Das hier von Hermann oder das von mir?

Grüße
Stefan

:scream:
Das Modul von Hermann.
Wo finde ich denn deins?

Grüße Thomas

In diesem Beitrag findest du eine ältere Version:
https://community.symcon.de/t/solaranlage-ladegeraet-schalten/52385

Wenn damit was funktioniert bei dir, kann ich dir auch mal eine neuere Version zukommen lassen und eventuell noch ein paar Anpassungen einbauen, wenn du lust hast mir die Daten dazu zu liefern.

Grüße
Stefan

Hallo Stefan,

danke für den Link. Leider scheitere ich schon bei der installation, genau wie hier (Beitrag 16):
https://community.symcon.de/t/solaranlage-ladegeraet-schalten/52385/16?

Kann Zweigliste nicht laden
Error: could not find repository from 'C:\ProgramData\Symcon\modules\IPSVictron' (Code: -32603)

Leider steht dort nicht, wie es gelöst wurde.

Grüße Thomas

Das Verzeichnis in der Zip-Datei wird einfach im ordner von symcon in „modules“ kopiert. Egal ob Windows oder Linux. Danach Symcon neu starten. Fertig.

Grüße
Stefan

Hallo Stefan,

das geht nicht, es kommt imer wieder der Fehler.

Grüße Thomas

Sobald das Modul in „Modules“ aufgeführt wird, ist es installiert. Dass im „Modules“-Modul ein Ausrufezeichen - also ein Fehler angezeigt wird, ist nicht relevant.

Danke, das war der richtige Hinweis. :beers:
Daten kommen jetzt auch an, leider werden aber die Variablen nicht gefüllt.

Hier mal die Debug: dump.txt (22,5 KB)

Grüße Thomas

Hallo jossel,

habe in den VictronConstants.php mal die Variablen für deinen BMV 702 angelegt:
"0308" => array('DeviceName' => 'BMV 702', 'DisplayedValues' => array('FW','V','T','P','PID','I','SOC','CE','TTG','Alarm','AR','BMV','H2','H3','H4','H5','H6','H7','H8','H9','H10','H11','H12','H15','H16','H17','H18'))
Bitte ein Update durchführen und berichten, ob Variablen fehlen.
Gruß,
Hermann

Changelog:

Version 1.0 * Serielle Verbindungsdaten 19200 8N1 werden in die Parent-ID geschrieben
Version 1.1 * Translations DE in locale.json erweitert
Version 1.2 * BMV Smart Shunt 500A und BMV 702 erweitert

Danke Hermann für die schnelle Implementierung.
Leider funktioniert es noch nicht richtig. Es werden keine Variablen angelegt.

Grüße Thomas

Hallo Thomas,

mir ist eben ein Fehler bei mir aufgefallen. Habe die falsche PID verwendet :frowning:
Bitte nochmal testen.


0204 und nicht 0308 !

BG Hermann