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

ViessData 2.1, Optolink DP Adressen, Optolink Kommunikations-Bibliothek

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

 

67 ANTWORTEN 67

WolfT_0-1704744317151.png

 

Vitocal 200-G BWC201.10 Grundwasser-WP, Vitocell 120-E, Vitotrans 353, Raspberry Optolink und Strom

WolfT_1-1704744370572.png

 

Vitocal 200-G BWC201.10 Grundwasser-WP, Vitocell 120-E, Vitotrans 353, Raspberry Optolink und Strom

ich muss mal nen andren Rechner anwerfen, dann kann ich vlt sagen, was 4 bei 01C3 bedeutet.

 

die DP_ passt jedenfalls offensichtlich.

- Vorlauftemperatur Primärquelle (7694) [WPR3_Vorlauftemp_Primaerquelle~0x01C3 (SInt)]

 

da steht auch SInt. Also bei len bitte 2 eintragen und bei precision -0.1

 

das kannst du direkt in der Tabelle ändern, du brauchst (erstmal) nicht die Datei editieren. Die Datei wird nur beim Programmstart eingelesen

 

das 'O' in WOC1 steht aber glaubich für 'outside temp controlled'. es muss also einen Aussentemperatursensor geben. Was liefern denn Adressen 080y? Da kommen bei mir die Wandlerwerte, obwohl die in der DP_... auch nicht drin stehen... (hab ich ja im ReadMe geschrieben gehabt)

 

HerrP_0-1704745019275.png

 

alle len = 2, precision = -0.1

ich habe gerade gesehen, dass die Hexwerte mehrfach vorkommen z.B.

 - Akt. Bedarf HK2 (11541) [WPR3_B031_Guelt_BAMTL_Bedarf_HK2~0xB031 (Int)]

 - Akt. Betriebsmodus HK2 (11551) [WPR3_B031_Guelt_BAMTL_BM_HK2~0xB031 (Int)]

- Akt. Raumsolltemp. HK2 (11561) [WPR3_B031_Guelt_BAMTL_Raumsoll_HK2~0xB031 (SInt)]

, das war mir gar nicht klar davor. 

Vitocal 200-G BWC201.10 Grundwasser-WP, Vitocell 120-E, Vitotrans 353, Raspberry Optolink und Strom

@WolfT 

Kennst du das Excel mit den DP und Adressen vom Github?

 

https://github.com/openv/openv/wiki/

 

ich kenne die Seite (seit gestern), das Excel hatte ich nicht gesehen, sondern DP_Listen_2.zip

Vitocal 200-G BWC201.10 Grundwasser-WP, Vitocell 120-E, Vitotrans 353, Raspberry Optolink und Strom

@qwert089   welches xls meinst du? die hatten wir doch eigentlich alle durch und die waren äusserst 'lückenhaft'. Und dann haben wir das InsideVitosoft mal 'durchlaufen' lassen. Daher stammen ja die DP_xyz Dateien.

@WolfT 

>> dass die Hexwerte mehrfach vorkommen z.B.

ja, manchmal ist das etwas seltsam. Ab und an sind das Bit-Werte, vielleicht stehen hier mehrere Ints hintereinander. Die ganze Geschichte ist an ein paar Stellen nicht 100% 'konsistent'. Aber das meiste funktioniert erstmal so wie es da steht. Ggf. gereift im genannten Fall das Skript von sarnau auch nicht vollständig, da müsste man noch mal die SQL Datenbank genau anschauen. 

 

WolfT_0-1704746633120.png

 

Vitocal 200-G BWC201.10 Grundwasser-WP, Vitocell 120-E, Vitotrans 353, Raspberry Optolink und Strom

also in den DP-Dateien gibt es eine Hierarchie z.B.

# Überblick (19259)
- Anlage (19220)

   - Aussentemperatur (7692) [WPR3_Aussentemperatur~0x01C1 (SInt)] HIDDEN:("Aussentemperatur"="Sensor nicht vorhanden")
    - Anlagenvorlauf-Temperatur (7710) [WPR3_Anlagenvorlauf~0x01CA (SInt)] HIDDEN:("Anlagenvorlauf"="Sensor nicht vorhanden")

...

- Wärmepumpe (19304)

...

 

Muss ich das in der vito_DP.xml irgendwo angeben?

Vitocal 200-G BWC201.10 Grundwasser-WP, Vitocell 120-E, Vitotrans 353, Raspberry Optolink und Strom

Stimmt du hättest die WP  Vitotronic Modelle auch integriert 

 

hmm....

Zeile 575: - (77FC) Quelle Aussentemperatur (8626) [WPR3_Quelle_ATS~0x77FC (Int)]
Zeile 578: - (77FD) Verteilung Aussentemperatur (8707) [WPR3_Verteilung_AussenTemp~0x77FD (Int)]

Zeile 1208: - Mittlere Aussentemperatur (7381) [WPR_WO1H_GemittelteAussenTemp~0x160D (SInt)]
Zeile 1403: - Aussenlufttemperatur (8546) [WPR3_Lueftung_Aussenlufttemperatur~0x0A00 (SInt)]

 

Zeile 2711: - Aussentemperatur (7693) [WPR3_SensorStatus_ATS~0x01C1 (Byte)]

 

versuch mal 01C1 mit len = 1 auszulesen. Vlt gibt das was...

 

bei mir kommt dann '1'

 

HerrP_0-1704747374298.png

 

gleich mal in SQL nachschauen....

versuch auch mal den mit len = 4 zu lesen

ok, aber irgendwie muss man doch wissen, welche Zeile in DP... für 01c1 für mich gilt, d.h. welche Hierarchie. Ich nehme an die "###"-Zeilen sind nur für die Ausgabenoptik im xml, oder?

Vitocal 200-G BWC201.10 Grundwasser-WP, Vitocell 120-E, Vitotrans 353, Raspberry Optolink und Strom

WolfT_0-1704748165086.png

 

 

Vitocal 200-G BWC201.10 Grundwasser-WP, Vitocell 120-E, Vitotrans 353, Raspberry Optolink und Strom

gute Frage. kannst du mir mal per PM ne eMail Adresse geben? ich hab grad nen Excel Export aus der SQL für das Gerät gemacht. Excel kann ich hier aber nicht hochladen...

is raus.

 

ich glaub in der txt stehen die Sachen auch gruppiert drin und manche DPs tauchen in mehreren Gruppen auf. vielleicht is das Skript von sarnau aber in ein paar Aspekten auch nicht 100%ig...

oh, 01C1 steht doch doppelt drin, einmal als Temperatur und einmal als Sensorstatus. Aber ersteres als 2 Byte, zweites als 1 Byte... is bei mehreren so. Lies mal 01C1 mit len = 1 aus. '6' wäre 'nicht vorhanden'

 

HerrP_0-1704749933951.png

 

 

4, d.h. Referenz unter min (glaub ich sofort 🙂

Vitocal 200-G BWC201.10 Grundwasser-WP, Vitocell 120-E, Vitotrans 353, Raspberry Optolink und Strom

alles seltsam.... hast du die andren Adressen mit Aussentemp von oben schon durchprobiert?

Hab einige Adressen hier gefunden: https://github.com/openv/openv/issues/415

WolfT_0-1704843583274.png

 

Vitocal 200-G BWC201.10 Grundwasser-WP, Vitocell 120-E, Vitotrans 353, Raspberry Optolink und Strom

Hey, da hast du ja nen super Thread ausgegraben! 👍 Die Sachen hab ich mir auch gleich mal runtergeladen. Auf den ersten Blick bekomme ich den Eindruck, dass da wenig mit dem aus Vitosoft übereinstimmt, oder?

 

ich nehm an, du speicherst das irgendwo hin, was UTC 'übersetzen' kann - oder macht es Sinn, dass ich grad das Konvertieren in die SW einbaue? (leider ist die da ja nicht flexibel/'dynamisch' angelegt...)

 

Eine xml oder sowas für die enum type values würde ja auch mal Sinn machen.... (blöd an xml ist, dass der Parser (bisher) nicht mit mono auf nem Raspi läuft, aber vlt fehlt mir da auch nur was)

 

hast du die Schaltzeiten (Tag-/Absenkbetrieb, WW, Zirku und so) schon identifiziert? Sind die so kodiert wie bei den Thermen?

 

Hast du aus den Werten schon Graphen gemacht? (vito_config.xml) ein Bild sagt oft mehr als... 😉

Top-Lösungsautoren