NEWS
Test Adapter e3oncan - Viessmann E3 Serie einbinden
-
@jrbwh
Guten Abend,ich habe die diversen Anleitungen unter Github gelesen, auch die spezielle für E3oncan. Aber so recht schlau werde ich daraus nicht, bin leider noch Neuling und Beginner.
E3oncan läuft, da ich keine Backendgateway habe, sammel ich die Daten mit dem HPMUMASTER alle 5 Sekunden.
Anfordern von Daten auf dem UDS CAN-Adapter über UDSonCAN mach ich dann auch über den HPMUMASTER alle 5 Sekunden mit den Datenpunkten die ich haben möchte oder kann man auch einfach alle abfragen?
Werden diese dann automatisch gespeichert oder muss ich diese dann in einem neuen Adapter z.B. history abspeichern, um diese dann zu visualisieren mit flot oder echart?
Sorry für die vielen Fragen, aber ich verstehe es tlw nicht, weil ich die Systematik dahinter noch nicht verstanden habe.
-
@raspican Für die allermeisten Anwendungsfälle reicht es, Datenpunkte vom Hauptgerät HPMUMASTER abzurufen.
Von der Vitocal können mehr als 500 Datenpunkte abgerufen werden. Einfach alle regelmäßig abzurufen ist keine gute Idee:
- Das dauert eine Weile. Sicher länger als 5 Sekunden.
- Die allermeisten Punkte liefern Dir keine relevante Info und/oder ändern sich sehr selten.
- Die Auslastung Deines Raspis wird merklich ansteigen, wenn Du zu viele Datenpunkte in zu kurzem Abstand abrufst.
- Falls Du die Daten historisiert, z.B. mit dem History-Adapter, erzeugt das sehr viele Daten. Davon würdest Du mindesten 95% nie mehr anschauen.
- Deshalb gibt es auch keinen Befehl, um das zu konfigurieren. Du müsstest sämtliche Datenpunkte einzeln auflisten.
Meine Empfehlung:
- Schau Dir an, wleche Datenpunkte es gibt, z.B. hier. Die Bezeichnungen geben meistens einen klaren Hinweis zur Bedeutung.
- Schau Dir an, was andere machen. Z.B. in den Use Cases bei e3oncan und bei open3e unter Discussions und im Wiki.
- Überleg Dir, welche Punkte Du wirklich brauchst und rufe nur die ab.
- Beispiel s.u.
- Leg mehrere Abruflisten an, passend zur Änderungsrate der Punkte. Eine Durchflussmenge ändert sich häufig, da machen z.B. 10 Sekunden Sinn. Bei einer Temperatur reichen auch 60 Sekunden. Bei kumulierten Daten (z.B. Energiemengen) auch 10 Minuten.
Zur Historisierung:
- Der Adapter stellt die Daten bereit. Eine Historisierung musst Du nach Wunsch selbst konfigurieren.
- Ich empfehle, die Einzeldatenpunkte in der "tree"-Darstellung zu historisieren. Das lässt sich einfacher in Diagrammen darstellen.
-
@jrbwh
Vielen Dank für die Unterstützung, jetzt hab ich es verstanden. -
@jrbwh Vielen Dank für das Angebot, ich habe in der Tat wieder eine Frage.
Ich bin jetzt einengroßen Schritt weiter und sehe die Werte des e380 im ioB -
@flatlander Freut mich. Was war die Frage??
-
@jrbwh Das hat sich erledigt. Mir war nicht klar, dass man nach dem Scan die Datenpunkte für den EMCU aus dem Objectbaum dann in dem Reiter "Requesting data..." nochmal einzeln anfordern muss.
Jetzt funzt alles, ich muss mir nur noch über die Bedeutung der Bezeichnungen klar werden. Ist vieles ein wenig kryptisch.... -
@jrbwh
Liefert Viessmann eigentlich nur die Verdichterdrehzahl in Prozent oder gibt es noch irgendwo die tatsächliche Verdichterdrehzahl? Bei der 10 kW Variante ist Drehzahlbereich beschnitten, aber der gleiche Verdichter.Nochmals Danke für den super Support von Dir!
-
@raspican Mir ist kein Datenpunkt bekannt, der die Drehzahl in U/min liefert. Mit inhaltlichen Fragen zu den Viessmann-Geräten und Daten schaust Du am besten im Viessmann Forum und in den open3e-Diskussion vorbei.
-
@jrbwh Hallo! Bin neu hier, ich bitte um Gnade, wenn meine Fragen zu primitiv erscheinen.
Ersteinmal: vielen lieben Dank! Tolle Arbeit mit dem e3oncan. Sehr hilfreich!
Seit 3 Wochen verrichtet bei mir eine Vitocal A-252 ihren dienst. Sie ist über die Klemme 91 und CAN2USB an einem Mini-PC mit IOBroker angeschlossen, an dem auch ein Wechselrichter über Modbus hängt. Die e3oncan instanz ist auf Anhieb angelaufen, ich kann eine von mir definierte Reihe von Datenpunkten zyklisch auslesen und visualisieren.
Was ich nicht hinbekommen habe: die Datenpunkte zu schreiben. Was mache ich falsch? Habe ich etwas übersehen?
Ich versuche es mit Hilfe eines JScripts. Ähnlich mache ich es z.B. mit Shelly-Steckdosen, das funktioniert es. Hier Ein Beispielaufruf um die Zirkulationspumpe anzusteuern:setState('e3oncan.0.HPMUMASTER_0x680.tree.0491_DomesticHotWaterCirculationPump.State', 1);
Es gibt wohl irgenwo eine Whitelist mit beschreibbaren Datenpunkten. Muss sie etwa editiert werden?
Ich würde mich über einen Tipp freuen. -
@tobi-5 Freut mich, wenn Dir der Adapter gefällt
Der Schreibbefehl sollte so eigentlich funktionieren. Wichtig ist, dass man beim Schreiben des Datenpunktes Ack=false setzt, aber das macht ja setState() per Default.
Du kannst den Datenpunkte auch einfach mal von Hand ändern, dabei natürlich das Häkchen bei "Ack" nicht setzen.
Auf der Whitelist steht der Datenpunkt definitiv drauf.Was passiert denn, wenn Du versuchst zu schreiben?
Stell den Adapter mal auf Log-Level "Debug". Dann müsste bei einem Schreibvorgang ein Eintrag kommen:
User command UDS WriteByDid on HPMUMASTER_0x680.491
Der Datenpunkt 491 hat auch noch eine "Spezialfunktion" durch Viessmann: Die Anlage setzt den Wert automatisch nach 5 Minuten wieder auf 0 zurück. Soll die Zirkulationspumpe länger laufen, muss man rechtzeitig (alle 4 Minuten) erneut einen Schreibbefehl absetzen.
-
@jrbwh Es funktioniert! Wie immer saß der Fehler vor der Tastatur. Danke für wertvolle Tipps. Das manuelles Setzen des Wertes hat mich zu meinem Fehler geführt, es lag an der if Anweisung davor. Ich versuche mich zu zügeln mit Debug-Anfragen und selbst bessere Arbeit zu machen. Dennoch: vielen herzlichen Dank, jetzt bin ich nicht mehr verunsichert, das Schreiben funktioniert grundsätzlich und ich muss nicht den Sinn des Lebens in Frage stellen.
Die erwähnte "Selbsrückstellung" nach 5 Minuten kann mit dem Datenpunkt 497 zu tun haben. In meiner Verzweiflung bin ich auf folgendes Dokument gestoßen:
[https://community.viessmann.de/viessmann/attachments/viessmann/customers-heatpump-hybrid/145143/2/Viessmann One Base handbuchWP.pdf]
Die Beschreibung des Datenpunktes 497 ab Seite 22 ist sehr detailiert und es kann auch sein, dass das aktivieren der Pumpe am Nachmittag mit dem Wert des Datenpunktes zu tun hatte: laut Zeitprogramm war sie deaktiviert. Jetzt verändere ich beide Werte und es klappt.
Leider sind in dem verlinkten Dokument nicht alle Punkte aufgelistet. Pflegt jemand von Euch Gurus (Entwicklern des e3oncan) eine ähnlich detaillierte Beschreibung aller Datenpunkte? Wo bekommt ihr die Daten her? Manche wichtige Punkte im Baum sind leider nichtssagend (z.B. Mode=1). -
@tobi-5 Danke für den Tipp zu 497. Hab jetzt 497.Mode auf 1 gesetzt. Bin gespannt, ob es jetzt ohne Refresh funktioniert.
-
@jrbwh Tag! Bin wieder stecken geblieben. Es geht um den Datenpunkt 1006: Einmalladung Warmwasser.
e3oncan.0.HPMUMASTER_0x680.tree.1006_TargetQuickMode
Es ist beschrieben hier auf Seite 6:
[https://community.viessmann.de/viessmann/attachments/viessmann/customers-heatpump-hybrid/74546/1/6196307 Kundendatenpunktliste Vitocal (1).pdf](link url)
aber komischerweise nicht mehr in dem neueren Dokument hier:
[https://static.viessmann.com/resources/technical_documents/DE/de/VDP/6218400VDP00002_1.pdf](link url)Der Defaultwert ist "00000000". Wenn ich in der ViGuide oder ViCare das einmalige Warmwasser-Erwärmen aktiviere, wechselt der Wert auf "02010000" (und wird direkt als Punkt 1007 gespiegelt), was schon mal eine leichte Diskrepanz mit dem Dokument darstellt.
Der Punkt ist schreibbar, aber nicht in der Tree aufgelistet sondern nur in der Liste mit den Raw-Werten. Manuell kann ich es zwischen "02010000" und "00000000" umschalten. Wenn ist es aber vom JScript aus versuche, bekomme ich Fehler.
der Aufruf:setState('e3oncan.0.HPMUMASTER_0x680.tree.1006_TargetQuickMode',"02010000")
produziert:
Das gleiche nicht über die Tree sondern über den Raw-Baum führt zu noch mehr Error-Ausgaben:setState('e3oncan.0.HPMUMASTER_0x680.raw.1006_TargetQuickMode', "02010000");
Anschließend schmiert der Adapter ab und startet neu.Eine Idee, wie ich den Punkt aus dem Script heraus doch beschreiben kann?
Wäre es möglich, ausgehend von der Doku, den Punkt aufzubereiten und in der Tree als z.B. 1006_TargetQuickMode.Type (1006.0) und 1006_TargetQuickMode.Value(1006.1) (ich spinne mal jetzt mit den Namen) verfügbar machen, auch wenn der Wert 02 in der Doku nicht vorkommt? -
@tobi-5 Die Fehlermeldungen kommen, weil als Datenformat immer ein JSON-Objekt erwartet wird, der Befehl muss also so aussehen:
setState('e3oncan.0.HPMUMASTER_0x680.raw.1006_TargetQuickMode',JSON.stringify("02010000"));
Einen Absturz sollte das natürlich trotzdem nicht produzieren. Das werde ich mir anschauen und abfangen.
Die Datenpunktstruktur für 1006/1007 arbeite ich dann auch gleich ein. Eine gute Anlaufstelle für Diskussionen zum Verhalten und zur Nutzung der Datenpunkte ist auch das open3e Diskussionsforum.