VBus Protokoll und Resol Solarregler

Hallo zusammen,

ich habe den Beitrag gelesen. Ist sehr interessant.
Ich habe eine CosmoUno Regler - ist ja baugleich mit dem DeltaSol BS.
Ist es möglich den Regler per Modbus auch auszulesen? Würde den Regler gerne an eine SPS bringen bzw. visualisieren.

mfg

spswolfi

Hallo Attain,

vielen Dank für Dein VBus-Auswerte-Script.

Ich habe seit einer Woche einen neuen Solar-Regler COSMO UNO und ein RESOL Kommunikationsmodul KM2.

Das Script habe ich etwas angepasst und die XML-Datei für den COSMO UNO erstellt: VBus_CosmoUno.xml.txt (2.58 KB)

Am Schreibtisch läuft alles prima, jetzt kommen die Geräte in den Heizungskeller und werden an der neuen Solarstation angeschlossen.

Weitere Infos gibt es auf meinen Internetseiten.

Viele Grüße aus dem Unterallgäu
Harry

Hallo Harry,

danke für die Rückmeldung. Eigentlich müsste ich mal ein richtiges Modul daraus bauen.
Über Pfingsten wird es wohl doch nicht nach Spanien gehen, mal sehen ob ich dann Zeit habe mich darin einzuarbeiten.

Gruß
Attain

Hallo Attain,

ich habe noch ein kleines Problem mit dem Wert „Betriebsstunden Relais 1“, im VBus.net steht 29h in Symcon kommt nur eine 1 an.

Hast Du einen Tipp aus Deiner Erfahrung heraus, bevor ich tiefer in Dein Script einsteige?

Ich habe heute den Solarregler im Heizungskeller installiert und nun kommen Live-Daten: https://www.vbus.net/L4hu-4wk

Viele Grüße aus dem Unterallgäu
Harry

Hallo Harry,

im XML ist dafür angegeben:

			<name>Betriebsstunden Relais 1</name>
			<bitSize>31</bitSize>

BitSize 31 habe ich im Script aber noch gar nicht implementiert.
Ich werde mal am WE mir das anschauen.

Attain

Hallo Attain,

vielen Dank für die Rückmeldung und den Hinweis.

Es eilt nicht, da ich mein KM2 „verkonfiguriert“ habe und momentan keine Daten mehr kriege.
Ich hoffe das ich das Rücksetzen auf Werkseinstellungen schaffe.
Momentan habe ich es wieder ausgebaut und versuche es am Schreibtisch zu konfigurieren.
Falls ich es wieder zum Laufen kriege versuche ich auch mein Glück in Deinem Script.

Vielen Grüße aus dem Unterallgäu
Harry

Hallo Zusammen

ich melde mich auch mal wieder, weil ich das Thema noch einmal aufgreiffen möchte für mich um meinen Solarregler Deltasol BX endlich auch in IPS zu integrieren. Ein paar Post weiter vorne habe ich mein Problem mal geschildert gehabt.

ich komme immer noch nicht weiter mit der Aussage wohin ich das xml Skript laden muss ?

Zitat von euch :
und füge folgende Datei in das scripts Verzeichnis ein.VBusSpecificationResolDeltaSolBXPlus.txt
Da kein XML Dateien mehr hochgeladen werden können, mußt Du die Datei noch in .xml umbenennen.

Wo ist diese skrips verzeichnis ?

Ich betreibe eine Symbox und müsste da mit Putty oder so auf die Symcon Verzeichnisse zu greifen oder wie lade ich dieses xml Datei in das Skrips verzeichnis ? wo ist das skrips Verzeichnis ?
Ich stehe da leider immer noch auf dem Schlauch wegen dem Hochladen der xml Datei.

Im Bild mal mein Verzeichnis, das ich in Symcon angelegt habe. die xml Datei ist da aber im Media Order, was wohl falsch ist ?

Danke für eure Hiweise, damit ich hier evb auch mal weiter komme.

Grüsse Bermudas aus der Schweiz

Der Pfad auf der SymBox lautet: mnt/data/symcon/scripts
Image1.jpg

Mit WinSCP an der SymBox als root anmelden und die XML-Datei reinkopieren.
Image2.jpg

Viele Grüße aus dem Unterallgäu
Harry

Hallo Attain,

ich denke der Code-Schnipsel fehlt für meine „Betriebsstunden“:


switch ($field_bit_size) {
	case 31:
		   $var_value  = $byte_array[$field_offset] + 256 * $byte_array[$field_offset+1];
		   $var_value *= $field_factor;
		   break;

… und da es ja um größere Werte, dann vielleicht so:


		   $var_value  = $byte_array[$field_offset]   +
                   256 * $byte_array[$field_offset+1] +
                  16^3 * $byte_array[$field_offset+2] +
                  16^4 * $byte_array[$field_offset+3];

Leider kann ich es nicht testen, da mein KM2 nicht mehr ansprechbar ist und auch das Rücksetzen auf Werkseinstellungen nichts gebracht hat.
Bei RESOL ist keiner erreichbar, vermutlich auch Kurzarbeit.
Nun geht das KM2 zurück zum Lieferanten und ich muss auf Ersatz warten.

Viele Grüße aus dem Unterallgäu
Harry

Hallo Harry,

ja so in der Art muss dass aussehen.
Bei der „Bit Size 15“ ist das 16’te Bit das Vorzeichen. (Negative Temperaturen). Ich gehe davon aus das dies bei 31 gleich ist.
Deswegen mal schnell zusammengeschrieben:

case 31:
$var_value  = $byte_array[$field_offset] + 256 * $byte_array[$field_offset+1]+ 256 * 256 * $byte_array[$field_offset+2]+ 256 * 256 * 256 * $byte_array[$field_offset+3];
$var_value -= (65536*65536*($var_value >> 31)); // wenn bit 31 == true , Wert ist negativ
$var_value *= $field_factor;
break;

Wenn Du wieder online bist, mach mal $debug auf TRUE. Im Meldungsfenster bekommst Du dann ein Array ausgegeben.
Ich bräuchte die Werte 32 bis 35 zum Überprüfen.

Gruß und schönen Feiertag.

Wobei negative Betriebsstunden sinnfrei wären. :wink:
Aber vielleicht gibt es ja andere 31-Bit-Werte.

Sobald ich wieder einen KM2 habe, werde ich debuggen und das Array posten.

Wird aber wohl diese Woche nix mehr werden.

Viele Grüße aus dem Unterallgäu
Harry

Recht herzlichen Dank Harry28 :slight_smile:

nun bin ich einen Schritt weiter. Ich konnte die Datei in den Skript Ordner hochladen.

Leider spuckt mir Symcon nun 2 Fehlermeldungen aus und erstellt mir nur die Dummy Instanz aber keine
Variablen mit den Werten.

Klicke mal in der Register Variablen auf „Debug“.
Darstellung „Hex“

Und stelle mal ein Screenshot hier ein.
Bei mir sieht das so aus:

Hallo Attatin

hier der Debug Ausdruck in Hex der Register variablen.

Den Cutter habe ich übrigens auf 5000msek wenn das mit dem was zu tun hat ?

Da kommt nur „+HALLO“ an. Ich glaube hier musst Du noch das Passwort senden.
Da ich aber kein LAN Adapter habe, kann ich nicht wirklich weiter helfen.
Mach Dir mal ein Script trage das mal ein:

CSCK_SendText(20199 /*[RESOL_SOCKET]*/ ,"PASS vbus".CHR(13));
CSCK_SendText(20199 /*[RESOL_SOCKET]*/ ,"DATA".CHR(13));

Und einmal ausführen.
Der Cutter sollte so aussehen:

Hallo Attain (Sorry, hatte deinen Namen vorhin falsch geschrieben)

oh wow, nun fliessen die Daten… lag wirklich am Passwort

aber…
es legt mir immer noch keine variablen an da ich immer noch die gleichen Fehlermeldungen erhalte.

Irgendwas stimmt mit dem Cutter noch nicht.

Du hast einen Client Socket
Den Cutter musst du über „Schnittstelle ändern“ mit diesem verbinden.
Die RegisterVariable musst du über „Gateway ändern“ mit dem Cutter verknüpfen. (Nicht mit dem Client Socket).

Hallo Attain

ok, alles noch einmal gelöscht und von vorne begonnen mit Client Socket, Cutter und Register Variable.
Und dabei die xml Datei von pensensi genommen. VBusSpecificationResol-alle.zip

hatte ich ja schon 4 mal neu gemacht aber…

Un siehe da… Plötzlich ging es. Wow, es eröffnete Variablen und füllte es mit den Daten und keine Fehlermeldung.

Wirklich herzlichen Dank Dir und auch Harry28

Top, eure kompetente Hilfe. :):slight_smile:

Gruss Bermudas aus der Schweiz

Schnittstelle.JPG

So, ich habe mal das Script überarbeitet.
Version 1.2 findet Ihr im 2. Beitrag.
Neu ist vor allem, das die benötigten Instanze beim erstmaligen, manuellem Ausführen des Scripts angelegt und verknüpft werden.
Ausserdem kann man im Konfigurationsteil, die verwendete Schnittstelle auswählen.
Die 32 bit Werte sind nun implementiert.
Die Netzwerkschnittstelle kann ich nicht testen, da ich über RS232 angebunden habe. Hier wäre ich für eine Rückmeldung dankbar.
Muss für jeden Verbindungsaufbau der Login gesendet werden? Ich habe das mal so eingebaut.
Für die, bei den es ohne Probleme schon funktioniert, ist es nicht nötig. Es gibt keine neuen Daten.

Schönes Wochenende noch
Attain

Hallo Attain

Habe deine Version 1.2 natürlich heute gleich getestet. Funktioniert einwandfrei. :slight_smile:

Erhalte nun sogar die Betriebsstunden gesamt und Tages Betriebsstunden und die Wärmemenge angezeigt in der Variablen.
(Nehme an, dass Betriebssekunden Relais 2 und 3 die Tages Betriebszeiten sind ?)
Das ging vorher nicht bei mir resp es wurde keine Werte angezeigt.
Dann erhalte ich bei der Variablen „Einheit“ den Wert 11. keine Ahnung was das für ein Wert sein soll ?

Aber grundsätzlich mal besten Dank für die Überarbeitung.

Habe das mit der regelmässigen Passwort Anmeldung bei jedem Verbindungsaufbau mit der Netzwerkschnittstelle in meiner alten Programmierung noch getestet.
Wenn ich in meinem Zeitmodul (wo ich die Öffnung der Schnittstelle programmiert hatte mit Passwort jedes mal) die Passwort Anmeldung raus nehme, erhalte ich von der RegisterVariablen keine Daten mehr von der Schnittstelle.
Somit schliesse ich, dass das Passwort jedesmal gesendet werden muss wenn die Schnittstelle geöffnet wird.

Schönes Weekend

Bermudas