hier noch mal mein Beitrag aus 'Internet der Dinge', dem Offenen Brief an Max Viessmann, als neuer Thread - Diskussionen, Fragen etc. bitte hier 🙂
Moin Freunde!
Da Viessmann zwar ein wunderschöne Schnittstelle (UDS, ISO-TP oder DoIP) eingebaut hat, das aber nur eingeschränkt und für eine 4-stellige Summe (per WAGO Gateway) zur Verfügung stellt, haben wir uns bekanntlich dran gemacht, das selber offen zu legen. 🙂
Stand der Dinge ist:
- Wir haben eine MQTT fähige Lösung zum Anschluss an den externen CAN Bus ("Stecker 91"), die es erlaubt, E3 Geräte (Wärmepumpen, Gasgeräte, (PV Speicher gerade in der Testphase, BSZ brauchen wir noch Kandidaten)) in Home Automation Systeme einzubinden. ioBroker, mosquitto, Home Assistant, Node-RED und so weiter also alles einfach machbar und bei uns schon im dauerhaften Einsatz.
- Das Ganze läuft lokal, also ohne irgendeine Hersteller oder sonstwelche Cloud, ohne Internet! Bei der CAN Bus Kopplung kann die gleichzeitige Verbindung mit dem Viessmann Server zwecks Wahrung der Gewährleistungs- und Garantieansprüche aufrechterhalten bleiben.
Eine Anbindung über den WLAN Access Point ist auch möglich, damit aber keine parallele Viesmann-Server-Verbindung mehr.
- Aktuell ist nur das Auslesen von Daten weitergehend erprobt. Bei den wichtigen Daten haben wir auch schon die Formate zur Interpretation geklärt, wir arbeiten an einer vollständigen Klärung.
Das Schreiben ist bei vielen Daten auch schon erprobt.
und last not least: das Ganze ist natürlich kostenfrei und open source! im Sinne eins besseren Miteinanders 😉
Der laufend aktualisiert werdende Stand der Linux Lösung ist auf
https://github.com/open3e/open3e
verfügbar. Einen guten 'Leitfaden' für den Einstieg hat @Hotzen-Plotz hier zur Verfügung gestellt:
https://github.com/open3e/open3e/discussions/5
Eine Sammlung von nützlichen Informationen hat @TSG initiert:
https://github.com/TheSmartGerman/open3e/wiki
(werden wir bald auch unter das open3e Projekt migrieren)
beste Grüße!
Phil
zur Beachtung: Der Zugriff auf das Zielgerät mittels dieser durch Viessmann nicht vorgesehenen Lösung zieht möglicherweise den Verlust von Gewährleistungs-/Garantieansprüchen nach sich und kann unter Umständen zu GEFAHREN FÜR LEIBLICHE UNVERSEHRTHEIT ODER SACHWERTE führen! Die Autoren schliessen jegliche Haftung aus.
Beispiele aktueller Home Assistant Integrationen von Wärmepumpen:
Vitocal 250 Kältekreisübersicht: View und Installationsanleitung gibt's hier: https://github.com/MyHomeMyData/iob.vis.vitocal250.git
Wer es ausprobieren möchte: Hier gibt es eine Anleitung.
Einen Adapter für ioBroker:
https://github.com/MyHomeMyData/ioBroker.e3oncan
und noch ein paar andre Sachen, die aber in dem Adapter integriert sind. Schaut einfach mal sein Repo an...
https://github.com/MyHomeMyData
ps. wer uns unterstützen will und kann ist herzlich willkommen!
pps. und wir freuen uns über jedes 'like' (👍) - damit zeigt ihr deutlich, dass ihr eine offene und lokale Kommunikation mit den 'One Base' Geräten eigentlich von Viessmann erwartet
mal abwarten, wenn ich wirklich alles neu machen muss ist das sicher eine Option!
@Bu-Na das sieht gut aus! VL Temp müsste glaubich 28,4°C sein?
jedenfalls sind Abfrage und Antwort und Flow Control da. Es liegt also an einer der benannten Libs
Der candump sieht eigentlich schon recht gut aus …
@JörgWende erinnerst du, ob wir schon eine Lösung oder zumin Ansätze für das Timeout Problem hatten? oder weitere Erkenntnisse?
Leider nicht. Ich habe heute einfach mal den raspberry durchgestartet. Bei manchen hat auch der Abruf des Datenpunktes 256 geholfen.
war das nicht nur wenn überhaupt keine Antwort kam? oh mann, gut dass wir jetzt etwas strukturierter arbeiten können... 😁
diese ganzen 'System-abhängigen Unzulänglichkeiten' sind äusserst ärgerlich. vielleicht sollten wir mal ein Image machen mit open3E für einen dedizierten 3er Raspi mit dediziertem CAN Adapter, was dann garantiert läuft... ein 3er Raspi kostet nicht viel und ist eigentlich meist verfügbar.
Oder einen Docker Container mit einem Setup so dass der CAN Adapter im Container sichtbar ist. Dann sollte es allerdings ein 4er Raspi sein. Lass uns das mal durchspielen.
ich glaube ich habe mein Timeout Problem gelöst,
dachte ich zumindest, aber nach 3 Stunden wieder abbruch, Fehler siehe uam Ende!
liegt einfach an euner unsauberen Installation.
deshalb hab ich zuerst pipe deinstalliert
sudo apt --purge remove python3-pip
dann in das Verzeichnis /home/user/Download wechseln und die neueste Version von pip3 runter laden
sudo wget https://bootstrap.pypa.io/get-pip.py
jetzt habe ich nach dieser Anleitung, How to create a Python virtual environment on Ubuntu 20.04,
https://www.arubacloud.com/tutorial/how-to-create-a-python-virtual-environment-on-ubuntu.aspx
leicht abeändert und angepasst.
$ sudo apt-get install -y python3-venv
im Verzeichnis /home/user/
$ mkdir directory_env
$ cd directory_env
$ sudo python3 -m venv envi1
$ source envi1 /bin/activate # das hat bei mir nicht funktioniert !
dann habe ich in Verzeichnis /home/user/Download mit folgendem Befehl Pip3 installiert.
sudo /home/user/directory_env/envi1/bin/python3 get-pip.py
sollte alles ohne Fehlermedung funktionieren!
danach ins Verzeichnis /home/user/open3e-master
sudo /home/user/directory_env/envi1/bin/pip3 install -r requirements.txt
auch wieder ohne Fehlermeldung!
jetzt kann man open3e starten, aber wieder mit der Pfadangabe von python-virtual-environment-on-ubuntu
sudo /home/user/directory_env/envi1/bin/python3 Open3Eclient.py -d 192.168.0.1 -dev vdens -t 60 -r 271,274,284,318,331,364,365,396,424,545 -m 192.168.178.19:1883:vitodens_333_f -muser xxxxx -mpass yyyyy
bin jetzt nicht unbedingt der Linux Eperte, aber die lange Pfadangabe stört mich noch,
sollte auch noch machbar sein das man den Pfad irgend wo in eine Systemvariale schreibt?
muss ich noch mal googln!
nach 3 Stunden wieder Abbruch!
Meldung vom System,
2023-09-25 10:26:50 [ERROR] UdsClient: [TimeoutError] : ECU failed to respond in time
Traceback (most recent call last):
File "/home/walter/open3e-master/Open3Eclient.py", line 107, in <module>
response = client.read_data_by_identifier([did])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/walter/directory_env/envi1/lib/python3.11/site-packages/udsoncan/client.py", line 174, in decorated
return func(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/walter/directory_env/envi1/lib/python3.11/site-packages/udsoncan/client.py", line 449, in read_data_by_identifier
response = self.send_request(req)
^^^^^^^^^^^^^^^^^^^^^^
File "/home/walter/directory_env/envi1/lib/python3.11/site-packages/udsoncan/client.py", line 2140, in send_request
self.conn.send(payload)
File "/home/walter/directory_env/envi1/lib/python3.11/site-packages/udsoncan/connections.py", line 65, in send
self.specific_send(payload)
File "/home/walter/directory_env/envi1/lib/python3.11/site-packages/doipclient/connectors.py", line 43, in specific_send
self._connection.send_diagnostic(bytearray(payload))
File "/home/walter/directory_env/envi1/lib/python3.11/site-packages/doipclient/client.py", line 716, in send_diagnostic
result = self.read_doip(timeout=(timeout - ellapsed_time))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/walter/directory_env/envi1/lib/python3.11/site-packages/doipclient/client.py", line 440, in read_doip
raise TimeoutError("ECU failed to respond in time")
TimeoutError: ECU failed to respond in time
wird leider hier nicht so richtig im Format angezeigt
Hi,
leider stecke ich hier fest.
Ich habe im iobroker den MQTT Client installiert und folgendermassen konfiguriert (der Raspi hat die lesbare IP und auf diesem Raspi läuft iobroker und open3e).
Wenn ich jetzt auf der Befhelszeile folgenden Befehl eingebe:
python Open3Eclient.py -c can0 -dev vdens -r 268,271,274,284,331,360,364,526,545,2457 -m 192.168.178.60:1883:open3e -t 20
Dann bekomme ich nur Fehlertext rund um "connection refused".
Traceback (most recent call last):
File "/opt/git/open3e/Open3Eclient.py", line 99, in <module>
client_mqtt.connect(mqttParamas[0], int(mqttParamas[1]))
File "/home/[username]/.local/lib/python3.9/site-packages/paho/mqtt/client.py", line 914, in connect
return self.reconnect()
File "/home/[username]/.local/lib/python3.9/site-packages/paho/mqtt/client.py", line 1044, in reconnect
sock = self._create_socket_connection()
File "/home/[username]/.local/lib/python3.9/site-packages/paho/mqtt/client.py", line 3685, in _create_socket_connection
return socket.create_connection(addr, timeout=self._connect_timeout, source_address=source)
File "/usr/lib/python3.9/socket.py", line 843, in create_connection
raise err
File "/usr/lib/python3.9/socket.py", line 831, in create_connection
sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused
Das gleiche passiert, wenn ich als IP 127.0.0.1 eintrage.
Ich hatte es auch mit User und Passwort auf beiden Seiten versucht, klappt aber auch nicht.
Immer "connection refused".
Ideen?
Noch eine Beobachtung. Ich habe auch den Shelly-Adapter am laufen, der ebenfalls MQTT spricht mit den Steckdosen. Dort ist Port 1822 konfiguriert.
Wenn ich nun open3e in der Befehlszeile statt Port 1883 den Port 1822 nutzen lasse, dann klappt zwar letztendlich auch nichts und nebenbei funktioniert der Shelly Adapter nicht mehr, weil er von der Seite Mumpitz Daten bekommt, aber der Open3e Befehl auf der Befhelszeile läuft ohne Fehler durch (kein Connection refused). Dann schreibt das Ding einfach kurz irgendwas von read dids.
Ich verstehe nix.
da stimmt was mit deimem MQTT Broker nicht,
müsste man mal wissen was steht in den Config Dateien vom MQTT Broker?
bei mir sind einmal in /etc/mosquitto/mosquitti.conf
und in /etc/mosquitto/conf.d/xxxxxx.conf
xxxxxxx.conf den richtigen Namen muss man im Verzeichnis nachschauen.
ist der Broker mit oder ohne Passwort configuriert?
da gibt es aber im Netz gute Anleitungen.
bei mir ist in der xxxxxxx.conf zB. nur folgendes drin
listener 1883 0.0.0.0
password_file /etc/mosquitto/conf.d/010-access-list
allow_anonymous false
ist mit Passwort!
Inhalt von mosquitto.conf
# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example
pid_file /run/mosquitto/mosquitto.pid
persistence true
persistence_location /var/lib/mosquitto/
log_dest file /var/log/mosquitto/mosquitto.log
include_dir /etc/mosquitto/conf.d
habe zwar kein iobroker sondern openhab, aber bin der Meinung beim Mosquitto Broker ist das egal!
am besten kann man mit dem MQTT Explorer sehen ob da Daten ankommen,
der muss ja auch als Client eingerichtet sein, aufpassen das der Client Name ein ander ist, kann irgend ein x-beliebiger Name sein!
@Bu-Na Tipp: wenn du oben rechts auf den Pfeil im kleinen Kreis bei deinem Beitrag klickst, kannst du Beiträge bearbeiten und auch die vielen Doppelposts löschen. Das wird sonst unübersichtlich.
Danke Dir.
Tatsächlich habe ich es jetzt zum Laufen bekommen. 😀
Der Schlüssel war, dass ich einen anderen iobroker Adapter nutzen musste und in dem dann nicht "client" sondern "server/broker" als Modus wählen.
Dann war nix mehr mit connection refused und die Daten fliessen super.
Ich werde dazu noch mal einen längeren Text schreiben, welche Schritte ich so machen musste.
Schwere Geburt, aber jetzt ist ja gut. Puh.
Danke an alle hier.
@wamo das mit dem timeout nach 3 Stunden ist (wieder) ärgerlich! um da weiter zu kommen, wäre der erste Schritt auf dem CAN Bus zu schauen, ob es wohmöglich wirklich auf der Ebene Probleme gibt oder es weiterhin dadrüber geschieht. Dazu müsstest du glaubich einen candum mitlaufen lassen (umgeleitet in eine Datei...)
vielen Dank für die Unterstützung von Hotzen-Plotz!
Gut das es jetzt funktioniert aber trotzdem sehr verwunderlich. Hattest du wirklich bereits einen Mqtt Broker? Ich schaue mir das mit dem anderen Connector heute Abend noch mal an.
Was meinst Du genau mit "Hattest du wirklich bereits einen Mqtt Broker?"
Buchstäblich gedeutet, würde ich antworten "nein, habe ich nie behauptet". Ich wüsste nicht mal genau, was das ist oder macht.
Ich habe einen Raspi mit einem iobroker drauf, sonst nix. Und den bestücke ich halt mit Adaptern.
Soweit ich das aus den Posts ableiten kann, hat @wamo sowas. Ich aber nicht.
@HerrPIch habe nochmal eine Grundsatzfrage:
Wie es mir scheint, läuft das open3e zwar schön, nachdem ich den Befehl dazu gegeben habe und sendet daten per MQTT, aber das Kommandozeilenfenster hängt dann auch an der Stelle nach "Read dids and publish to mqtt..." fest. Mehr Befehle kann ich da nicht mehr eingeben.
Weiterhin scheint der Datenstrom sofort abzubrechen, sobald ich das Kommandozeilenfenster zumache.
Natürlich will ich, dass das Progrämmchen non-stop Daten sendet, auch wenn ich das Fenster auf dem PC zumache.
Kann es sein, dass ich dazu denselben Befehl mit "nohup" davor absende und dann kann ich das Fenster zumachen?
tante Google hat mir erzählt am Ende der Zeile ein & anhängen
@Hotzen-Plotz ich hoffe ich habe Dich nicht verstimmt.
MQTT ist eine Client/Server Architektur - oder besser Client/Broker. Die Clients senden (publish) und empfangen (subscribe) Nachrichten über einen Server (Broker). Dass heißt ohne Server geht gar nichts (normalerweise).
Auf Linux installiert man typischerweise einen Mosquitto Server mittels:
sudo apt install mosquitto mosquitto-clients
Danach wird er als Service konfiguriert und gestartet. Die Konfiguration steht in einer .conf Datei - dort werden die Netzwerkschnittstellen (0.0.0.0 default) und Ports (1883 default) angegeben.
Mehr Details sind hier:
https://www.elektronik-kompendium.de/sites/raspberry-pi/2709041.htm
Der von Dir im zweiten Versuch verwendete IoBroker Adapter installiert seinen eigenen Server (vermutlich auch Mosquitto). Also bist du jetzt auf der hellen Seite …
Perfekt.
@Hotzen-Plotz >> Grundsatzfrage ... aber das Kommandozeilenfenster hängt dann auch an der Stelle ... fest. Mehr Befehle kann ich da nicht mehr eingeben.
das mit den angehängten "&" a la @wamo sollte das Festhängen lösen, "nohub" wohl das Beenden bei Schliessen des Consolen-Fensters. Laut wiki wird es oft sogar zusammen angewandt.
$ nohup foo & $ exit
keine Ahnung, ob mit "&" das "nohub" noch nötig ist. Hast du es schon mal probiert?
Nebenbei kannst du natürlich auch jederzeit ein weiteres Consolenfenster aufmachen, und dadrin das machen, was du willst.
Es gibt natürlich auch noch Möglichkeiten, das Programm (mit entspr. Parametern) gleich bei Gerätestart zu 'auto-starten'. Dazu können dir aber besser Leute was sagen, die das machen (wie gesagt - ich darf überhaupt nicht mitspielen mit meiner Opto-Link Therme...)
Grüsse!
Hallo HerrP,
Wie ist der aktuelle Stand für den PV-Wechselrichter VX3 mit Speicher standalone.
Ich stehe hierzu gerne zum Testen zur Verfügung.
Welche Hardware/Interface wird hierfür benötigt.
Beste Grüße
Nein, um Himmels Willen, Ihr seid super und ich danke Euch für die Hilfe. 👍
Ich wollte nur ausdrücken, dass ich so einen MQTT-Broker echt nicht (bewusst) installiert habe und das m.E. auch nie sagte. Sorry, wenn das doof rüberkam.
Hallo,
ich habe mal für mich alles so zusammengeschrieben, dass ich es irgendwann leicht wiederholen könnte. Für mich war das nämlich schon ein mittleres Abenteuer. 😁
Vielleicht hilft das ja auch wem anders mal, daher hier der Text als Bilderchen:
Wenn man es mal gemacht hat und alles funktioniert, wirkt es simpel. Wer sowas zum ersten mal macht und von den Themen eigentlich so gar keinen Schimmer hat, wie ich, für den ist das echt eine Herausforderung.
Aber es hat sich gelohnt.
Grosses Lob an alle, die hier so selbstlos helfen und speziell an die Entwickler von Open3E.
Gut zusammengestellt! Danke.
Kannst Du das Dokument auch in das GitHub Projekt einstellen - oder zur Verfügung stellen, dass es ein Admin in Deinem Namen einpflegen kann ?
ggf. könnte man es auch in ein online editierbares Format bringen