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:
Er verbindet euer Optolink Gerät auf total einfache Weise mit allem was das Herz begehrt.
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.
viel Spass damit & Grüsse!
Phil 🖖
alles vorhanden, jetzt musst du es nur wie beschrieben identifizieren.
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
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.
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
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 😉
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.
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.
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:
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:
Meine Fragen an euch:
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:
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.