Moin liebe Community!
Ich habe das ViessData überarbeitet und für euch hochgeladen, mit bestem Dank an alle Entwickler der Versionen 1.0, 2.0, die Ergründer der Protokolle usw etc!
Ausserdem ist die Identifikation der Geräte mit Optolink anhand der sysIdent Daten (mir) jetzt klar und die so ziemlich vollständigen Datenpunktlisten können für jedes Gerät erstellt werden. Für die Vitodens 300-W HO2B/C sind das z.B. mehr als 850 Datenpunkte - alles, was das Herz begehrt! 😃
Hierfür möchte ich ganz dicke und herzlich Herrn Markus 'sarnau' Fritze danken, der die Geschichte schon vor Jahren geklärt hatte und auf https://github.com/sarnau/InsideViessmannVitosoft veröffentlicht. Mit etwas Nacharbeit des Python Skripts und den entsprechenden Daten ist es mir jetzt auch gelungen, seine hervorragende Arbeit zu 'nutzen'. Dabei mitgeholfen haben Michael und Markus hier aus dem Forum (die wissen schon Bescheid), die mir (auch) die notwendigen sql und xml Daten zur Verfügung gestellt haben.
ViessData
die Version 2.1 ist eigentlich nur ein Zwischenschritt auf dem Weg zu ViessData 3.0, welches dann die flexible Nutzung der vollständigen geräte-individuellen Datenpunktsätze erlauben wird.
Äusserlich hat sich nur wenig geändert, und die Version ist was die csv und xml Dateien anbetrifft kompatibel zur 2.06. Die ganze Hard-Programmierung der Adressen und Wertekonvertierung etc habe ich auch erstmal so gelassen.
Aber ich habe ein wenig 'aufgeräumt':
- Werte schreiben funktioniert jetzt explizit per Enter Taste, es gibt eine Rückmeldung bezüglich der erfolgreichen Durchführung.
- Das ganze 'lese_alles_zweimal' ist Vergangenheit. Es wird alles gelesen a) am Anfang und b) wenn man den entsprechenden Knopf oben links drückt (dazu muss VD verbunden sein) - dann aber auch definitiv und unmittelbar (ist aber gegen das zyklische Lesen verriegelt und andersrum).
- Die Kommunikation / der COM Port wird geöffnet durch den Startknopf und beendet durch den Stopknopf (gleicher Knopf wie gehabt).
- In der Liste können Werte jetzt auch einzeln gelesen und neuerdings auch geschrieben werden. Hierbei ist Bedacht angesagt, man muss den zu schreibenden Raw Wert angeben, und es wird nicht geprüft, ob der Wert überhaupt geschrieben werden darf u.s.w. (wie gesagt, V2.1 ist nur eine Zwischenlösung).
- ViessData 2.1 funktioniert auch mit den alten Geräten mit KW Protokoll (ich meine, das ging in der 2.06 nicht). Datenpunkte müssen natürlich ggf angepasst werden und die hard-programmierten Sachen funktionieren ggf nicht, aber die Liste auf alle Fälle.
- csv Dateien werden bei Konfigurationsänderungen nicht mehr überschrieben, sondern die zu Ersetzende unbenannt. Aufgezeichnete Daten gehen so nicht mehr verloren.
- noch so Kleinigkeiten wie Behandlung der Dezimaltrennzeichenproblematik, Betriebssystem(un)abhängige Bildung der Datei-Pfade, ...
- sauberes, stabiles Beenden/Schliessen des Programms
- Durch die 'Entflechtung' der Kommunikation von der Oberflächenbehandlung sind Anpassungen und 'Tweaks' jetzt viel einfacher.
OptoLinkCommAsyncLib
Die wichtigste Neuerung ist aber wohl die komplett neu geschriebene gekapselte OptoLinkCommAsyncLib. Hier gibt es so schöne Methoden wie 'Read1ByteValue(adr)', 'Read2ByteValue(adr, singed, precision)', 'ReadData(adr, len)', und das auch zum Schreiben. Nebenbei noch nützliche Sachen wie 'Init300Protocol' usw.
Die Library ist wie gesagt gekapselt, d.h. man/frau kann sie nehmen und in die eigene Anwendung einbauen -> nix mehr mit Gedanken um Bits und Bytes und Timing etc machen, sondern einfach Werte lesen und schreiben! 😃 Damit kann man auch ohne grossen Aufwand Verbindung mit anderen Systemen - Hausautomatisierung, tado, ... realisieren. 😎
Sie ist in C# geschrieben, ich kann aber bestimmt auch ne dll draus machen, wenn jemand das lieber möchte.
- Sie kann das VS2/300 Protokoll und das VS1/KW Protokoll. Das Protokoll kann einfach umgeschaltet werden, ohne dass sich irgendwas an den Read/Write Methoden ändert.
- Sie ist stabil und unabhängig von COM Events, was auch den unkompliztierten Betrieb auf anderen Systemen zulässt.
- Sie ist asynchron, dh. die Kommunikation läuft in eigenen 'Tasks' und behindert nicht die Applikation.
- Es ist Queueing eingebaut, dh. es können neue R/W Requests erfogen, während noch welche abgearbeitet werden (was ja wegen async gut passieren kann), und alles wird ordentlich der Reihe nach ausgeführt. Dabei werden Pausen zwischen den Kommunikationszyklen eingehalten, damit die Heizungssteuerung nicht überlastet wird (die hat ja auch noch was andres zu tun, als nur zu kommunizieren).
Wegen dem Asynchronen musste ich die ViessData auf den .NET Framwork 4.5 portieren (vorher 2.0), was gewöhnlich auf jedem nur einigermassen zeitgemäßen Windoofs Rechner drauf ist, ansonsten kann es unkompliziert nachinstalliert werden. Damit ist es prinzpiell auch kompatibel zu mono, könnte also eigentlich auch auf einem Raspi laufen, was aber derweil noch an der xml Verarbeitung hakt - da müsste ich noch mal schauen...
Ausblick
- Die Optolink Komm-Bibliothek werde ich noch auf TCP/IP umschaltbar machen. Das ermöglicht dann die Kommunikation mit der Heizung im W/LAN, also lokal, ohne Internet/Cloud/Viessmann Server. 😁
Entweder mit dem Vitoconnect im Hotspot Mode oder mittels eines kleine Adapters, den man entweder fertig kaufen kann, oder in Form eines Kleinstrechners wie einem Raspi mit einem Python Skript oder so, der einfach den COM Port bidirektional mit einem TCPort verbindet. Dann kann man ViessData oder seine Applikationen auf jedem beliebigen Rechner im Haus-W/LAN benutzen und ist nicht auf das private Netzwerk des Vitoconnects angewiesen.
- Dann die ViessData 3.0. Hier werden die zum Gerät erzeugten Datenpunktlisten eingelesen werden. Es wird eine konfigurierbare Favoriteniste geben statt dem starr programmierten ersten Tab in 2.06. Alles, also Wertekonvertierung, Dropdownlisten, Limits, ... wird dynamisch aus der zugrundeliegenden DP Liste erstellt werden. Jeder beliebige DP wird tracebar, d.h. grafisch darstellbar. Und so weiter...
- Die ganze Geschichte werden wir dann versuchen auch für die E3 Plattform zu realisieren, also für die neuen Geräte ohne Optolink. Wenn uns das gelingt, kämen wir hoffentlich dem nahe, was ich in meinem Offenen Brief erbeten habe und wogegen Viessmann sich sträubt...
Download
https://github.com/philippoo66/ViessData21/wiki/ViessData-2.1
https://c.web.de/@334962020166146628/qUYhOYlLRAO_Wwfgbg3iLg
ich habe erstmal hochgeladen:
- die Viessdata 2.1 mit den notwendigen xmls aus 2.06, die vito_DP.xml habe ich noch minimal erweitert.
- die DP Listen für die
- "Vitodens 300 mit HO2B/C, ab 08/2016 mit Lüftungsbedienung / VScot HO2B (2016)" (VScotHO1_200_01),
- "Vitodens 200 mit HO1B ab 04/2016 / VScot HO1B (Vitodens 200 2016)" (VScotHO1_200_11) und
- "Vitocrossal 100, F0: 30 - 39 / Vitocrossal 100 mit VT200 GW7B" (VScotHO1_200_30).
- Die Liste der Kennungen der Heizgeräte mit Optolink.
Wer andere DP Listen braucht, oder das 'gefixte' Python Skript oder die Quelldaten oder die Info wie das genau funktioniert mit der Geräteidentifikation oder sonstwas, z.B. auch die Optolink Kommunikationsbibliothek oder irgendwelchen Quellcode, sage bitte Bescheid!
Bug Reports oder andre Rückmeldungen sind gern gesehen!
beste Grüsse!
Phil
Wie es aussieht kostet das Vitosoft-Tool ca. 900 €. Dafür könnte ich mir eine neue Regelung kaufen und hätte noch ca. 200 EUR übrig. Ich würde natürlich auch gern die eigentliche Ursache des Problems kennen, aber der Kundendienst von Viessmann hat mich kurzerhand auf dieses Portal verwiesen. Man fühlt sich offensichtlich für die Schwächen der eigenen Produkte nicht verantwortlich.
Hallo,
@vd ich habe nichts von kaufen geschrieben:
90 Tage full Demo
https://connectivity.viessmann.com/de/mp-fp/vitosoft.html
wennn es über das Programm möglich sein sollte, öffnest du dort das Debug Fenster und siehst die dafür verwendete Optolink Adresse.
VG
Vielen Dank, dass in der Tat eine Versuchung Wert. 🙂