abbrechen
Suchergebnisse werden angezeigt für 
Anzeigen  nur  | Stattdessen suchen nach 
Meintest du: 

Optolink Switch (Splitter) - Vitoconnect, MQTT & TCP/IP

 

Moin ihr! 🙂

 

Optolink ist 'alt', aber noch in Benutzung (bei mir auch). Öfter gab es Anfragen zum Betrieb zu lokalen Zwecken aber trotzdem weiter das Vitoconnect für Viessmann Cloud/Vicare/Viguide/Vi.API/Garantieverlängerung zu benutzen. Dazu jetzt hier die benutzerfreundliche Lösung, natürlich wieder open-source und kostenlos:

 

der OptolinkVs2-Switch

HerrP_0-1713897747645.png

 

Er verbindet euer Optolink Gerät auf total einfache Weise mit allem was das Herz begehrt.

  • Home Automation Anbindung per MQTT
  • W/LAN Anbindung per TCP/IP und einfachen Ascii + $Hex
  • Parallelbetrieb des Vitoconnect und damit Vicare, Viguide, Viessmann API weiter nutzbar und Erhaltung der erweiterten Garantie

Kein Gehassel mit komplizierter Einrichtung und irgendwelchen kryptischen xml's. Einfach nen Raspi, ein paar Python Module draufkopiert, Optolinkadapter und bei Bedarf das Vitoconnect angesteckt, ggf. noch ein paar Anpassungen in der Settings_ini (COM Ports, IP Adressen, MQTT Passwort, Poll-Liste, ...) und los.

 

HerrP_2-1713897813860.png

 

viel Spass damit & Grüsse!

Phil 🖖

 

 

152 ANTWORTEN 152

alles vorhanden,  jetzt musst du es nur wie beschrieben identifizieren.

DP Kältekreis.PNG

Wo sehe ich die DP?

Im Vitasoft unter 

Diagnose 

Trending

   da dann aussuchen was man möchte 

   dann kommen die Trending Parameter.

So weit so gut, aber wo sehe ich dann die Adresse? 

 

Die Daten hat das Vitosoft Program im Database gespeichert. Mit diesen Query an die Database (man braucht dazu z.B. SQL Server Management Studio) kan man die Daten der leltzen Synchronisation lesen. Die DeviceId bekommt man in die Tabelle ecnDevice (Id). Die Database Dateien sind in C:\Program Files\Viessmann Vitosoft 300 SID1\ServiceTool\Database.

 

Select dev.Name, et.Address,
substring(et.address,charindex('~',et.address)+1,6) Parameter,
et.Conversion, ete.ByteLength,
case et.Type when 1 then 'R' when 2 then 'R'when 3 then'R/W' else '' end ReadWrite,
ev.Unit, ev.Stepping, ev.DataType, ev.ValuePrecision, ev.LowerBorder, ev.UpperBorder,
ev.DataType, ev.ValuePrecision, ev.LowerBorder, ev.UpperBorder,
evc.ValueType, evc.Value_Binary, evc.Value_Bit, evc.Value_DateTime,
evc.Value_Float, evc.Value_Int, evc.Value_Ntext,
string_AGG(ev.EnumAddressValue,',') as 'Values', string_AGG(ev.Description,',') as Descriptions
from ecnDevice dev
join ecnEventGroupValueCache evc on dev.Id=evc.DeviceId
join ecnEventType et on evc.EventTypeId=et.Id
join ecnEventValueType evt on evc.EventValueTypeId=evt.Id
left outer join ecnEventTypeEventValueTypeLink etvl on etvl.EventTypeId=et.Id
left outer join ecnEventValueType ev on etvl.EventValueId=ev.Id
left outer join [vsmEventTypeExtension] ete on ete.EventTypeId=et.Id
where DeviceId=x
group by dev.Name, et.Address,
substring(et.address,charindex('~',et.address)+1,6),
et.Conversion, case et.Type when 1 then 'R' when 2 then 'R'when 3 then'R/W' else '' end,
ete.ByteLength, et.DefaultValue, ev.Unit, ev.Stepping, ev.DataType, ev.ValuePrecision, ev.LowerBorder, ev.UpperBorder,
evc.ValueType, evc.Value_Binary, evc.Value_Bit, evc.Value_DateTime,
evc.Value_Float, evc.Value_Int, evc.Value_Ntext, ev.DataType, ev.ValuePrecision, ev.LowerBorder, ev.UpperBorder
Order by Parameter;

 

Puh,

da bin ich raus. Ich habe das Programm nicht. 

Dann muss ich damit Leben was ich an Adressen habe. Oder ich sammle alle Daten und schicke das Datenbank File wem der damit umgehen kann.

Das ist im Handbuch beschrieben:

 

ich bin nicht sicher ob du die Adressen schon bei "Info" Level bekommt oder erst bei "Debug"

 

VG 

Debug_Vitosoft.PNG

SQL Server Management Studio kan man kostenlos dowloaden: https://learn.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-serve...

Es fragt aber etwas Zeit damit arbeiten zu können.

Das hatte Phil doch eigentlich schon so gemacht, oder?

Dann müsste die ja auch indem Excel von Phil sein. oder es gibt noch eine 2. Tabelle im SQL, die wir noch nicht gefunden haben.

Diese Query gibt die Werte die tatsächlich vom Anlage gelesen sind. Die Query im Wiki kan laufen ohne dass das Vitosoft Programm je met dem Anlage verbunden war. Deshalb kan ich damit für jede Anlagetyp (vom Vitosoft unterstützt) eine Parametertabelle machen.

So Programm runtergeladen und installiert.

Aber keine Ahnung wie ich die Files aufmachen kann. 

Sind das überhaupt die?

Pfad wie oben beschrieben:

C:\Program Files\Viessmann Vitosoft 300 SID1\ServiceTool\Database.

 

BP77_0-1731686376475.png

 

@HerrP 

@FransO 

könntet ihr bitte in einer für Dummys verständlichen Anleitung erklären wie man z.b.

41 05 00 01 84 0A 03 C7 umrechnet was das für eine Adresse ist.

 

hier

https://github.com/openv/openv/issues/425

wir das teilweise erklärt, aber ich verstehe es nicht.

 

Danke

Debug_Vitosoft2.PNG

Ja, man soll mit attach database die .mdf Datei wählen.

Wie man in Phil's program lesen kan (https://github.com/philippoo66/optolink-splitter/blob/main/optolinkvs2.py)

 

outbuff = bytearray(8)

outbuff[0] = 0x41 # 0x41 Telegrammstart
outbuff[1] = 0x05 # Len Payload, hier immer 5
outbuff[2] = 0x00 # 0x00 Request Message
outbuff[3] = 0x01 # 0x01 Virtual_READ
outbuff[4] = (addr >>8) & 0xFF # hi byte
outbuff[5] = addr & 0xFF # lo byte
outbuff[6] = rdlen # Anzahl der zu lesenden Daten-Bytes
outbuff[7] = calc_crc(outbuff)

Ich habe jetzt alle deine DP aus dem Post von heute um 15.11.2024 12:18

zum laufen gebracht. 

Jetzt muss ich sie noch visualisieren. 

Das war eine große Hilfe. Danke

 

so, das habt ihr ja wunderbar gemacht, während ich unterwegs war, meinem Vater seine Tabletten zusammenzusortieren... vielen Dank @FransO  und @qwert089 !!

 

falls es trotzdem noch interessiert

>> könntet ihr bitte in einer für Dummys verständlichen Anleitung erklären wie man z.b.

41 05 00 01 84 0A 03 C7 umrechnet was das für eine Adresse ist.

hier hab ich das mal gemacht, sogar bunt 😉

https://community.viessmann.de/t5/Waermepumpe-Hybridsysteme/Datenpunkte-in-der-API-gesucht/m-p/45930...

 

vielen Dank Phil!

 

ich glaube jetzt habe ich halbwegs verstanden

 

B4 0A ist die HEISSGAS Temperatur

der  Wert ist  00 FD --> 0253 bzw 25,3 Grad wenn man es durch 10 teilt.

Das stimmt mit genau mit dem Bild von BP77 überein!

 

@BP77 dann sind doch sowieso  alle DP in der Excel Datei, oder?

 

 

 

Nein alle sind nicht drinnen.

Aber wie oben geschrieben habe ich alle DP für das Schema beisammen.

Danke an alle hier, die so Tatkräftig unterstützen.

@HerrP @FransO @qwert089  Ohne euch hätte ich das nicht geschafft. 

 

>>Nein alle sind nicht drinnen.

@BP77 

Was brauchst du noch ?

 

Jetzt wissen wir ja wie man sie rausbekommen kann, sofern man sie im Trenddiagramm auswählen kann.

Kann ich im Moment gar nicht sagen. Jetzt muss ich die mal verarbeiten. Dann geht’s weiter. 
Ihr hört dann sicher gleich von mir, was ich dann noch so brauche😉

Leider hatte ich hier einige Fehler gemacht. Im Excel  Datei an https://github.com/philippoo66/optolink-splitter/wiki/310-Parameter-Addresses sind die richtige Kommandos für die Datenpunkte der Kaltekreis Vitocal 300-G.

@FransO 

Hallo Frans, weisst du zufällig welcher DP aus deiner Excel Datei 300-G , der Modulationsgrad des Verdichters in % ist?

@schuon   ist auf der Suche nach dem Namen des DP

 

Danke Dir

 

VG Michael

 

 

Hallo Community,

ich benötige eure Unterstützung bei einem Problem, das ich mit meiner Pelletheizung Vitoligno 300-C und dem Vitoconnect OPTO2 habe.

Ich habe versucht, die Daten des Kessels über einen Raspberry Pi 4 auszulesen, indem ich:

  1. Den Kessel über ein USB-Kabel direkt mit dem Raspberry Pi verbunden habe.
  2. Den OPTO2-Adapter ebenfalls mit dem Raspberry Pi über USB angeschlossen habe.

Ich habe die bereitgestellte Anleitung und das entsprechende Skript (z. B. optolinkvs2_switch.py) Schritt für Schritt befolgt. Leider bekomme ich keine Verbindung zu MQTT und kann keine Daten des Kessels abrufen. Stattdessen erhalte ich Fehlermeldungen wie:

  • "Error connecting MQTT: list index out of range"
  • Oder dass der MQTT-Client keine Daten senden kann.

Meine Fragen an euch:

  1. Wird der Kessel Vitoligno 300-C überhaupt vom Skript und der Schnittstelle unterstützt?
  2. Hat jemand von euch ein ähnliches Setup zum Laufen gebracht?
  3. Gibt es zusätzliche Konfigurationsschritte oder Anpassungen am Skript, die ich übersehen habe?

Ich wäre sehr dankbar, wenn mir jemand aus der Community weiterhelfen könnte. Vielleicht hat jemand das gleiche Problem gelöst oder kann mir Hinweise geben, wie ich die Verbindung stabil herstellen kann.

Vielen Dank im Voraus für eure Hilfe! 😊

Beste Grüße,

Moin @abicim !

 

> Den OPTO2-Adapter ebenfalls mit dem Raspberry Pi über USB angeschlossen habe.

 

verstehe ich dich richtig, dass du das OPTO2 mit einem USB-A<->USB-A Kabel an den Raspi gemacht hast? Das geht nicht, weil sowohl das OPTO als auch der Raspi USB-Hosts sind. Du musst leider den Umweg über dieses CP2102 Board gehen (mit dem Opto2 geht evtl auch ein FTDI).

 

Du kannst wieder auf USB kommen, wenn du 2 von diesen Bördchen nimmst, und RX und TX gekreuzt verbindest (Masse auch verbinden). Das kleine Board ist USB-seitig ein Device, d.h. du verbindest dann USB Host (OPTO2) mit USB Device (Board) und USB Device (Board) mit USB Host (Raspi) und die TTLs der beiden Boards gekreuzt. Das geht dann.

Moin,

 

ne hab das CP2102 Board dazwischen 

"Error connecting MQTT: list index out of range"

 

kommentier bitte in der settings_ini in der Polling Liste mal alle Datenpunkte aus und lies nur den DevceIdent:

 

poll_items = [
    ("DeviceIdent", 0x00F8, 8, 'raw'),
]

 

Die Dekodierung der Anlagenzeit in der Settings ist für ein Gasgerät, das hat ein anderes Format als bei den Wärmepunpen (und wahrscheinlich auch als bei deinem Vitolingo) was zu list index out of range führt. Ich meine zwar, dass dabei kein 'Error connecting MQTT' auftaucht, aber sicher ist sicher.

> Wird der Kessel Vitoligno 300-C überhaupt vom Skript und der Schnittstelle unterstützt?

 

ja, alles mit einer Optolink Schnittstelle wird unterstützt. Es gibt gaaanz alte Geräte, die nur das VS1 Protokoll beherrschen, aber da sähe der Fehler anders aus. Dafür gibt es auch einen branch mit VS1 Protokoll.

 

Top-Lösungsautoren