Hallo,
ich versuche es einmal auf diesem Weg an die genauen Bezeichnungen der API features (DP) für meine Vitocal 222-S zu kommen.
Ich suche hier die Datenpunkte für folgende VitoConnect Bezeichnungen:
- elektrische Zusatzheizung
- Heizwasserdurchlauferhitzer
- Speicherladepumpe
Vielleicht kann mir jemand auf die Sprünge helfen. Bitte keine Verweise auf das Entwicklungsforum. Da wurden mir bisher die Fragen nicht beantwortet.
Vielleicht weiß auch jemand, wie man die Advanced Datenpunkte der API erwerben kann.
Vielen Dank.
Gruß
Joachim
Gelöst! Gehe zu Lösung.
so, das hätten wir dann ja. war ja ganz einfach und man hätte viel sich früher mal direkt kurzschliessen sollen... 😉
Hallo Joachim,
hast du schon mal überlegt auf den Optolink Splitter von Phil zu wechseln und das mit der limitierten Api sein zu lassen?
VG Michael
Hallo Michael,
was bedeutet das für die gesamte Logik in Node Red, die Chris entwickelt hat?
Ist der Opti-Link Splitter von Phil selbst zu basteln oder kann man auf fertige Bausteine zurückgreifen?
Gruß Joachim
Hallo Joachim,
der Splitter ist ein Stück Software z.b. auf dem Raspi auf dem du schon das Node-Red laufen hast.
siehe
mit dem Node-Red kannst du dann z.B. per MQTT die gewünschten Datenpunkte on the fly und in Echtzeit über den Splitter von deiner Vitocal abrufen.
So oft am Tag wie du möchtest und kostenlos.
Das Vitoconnect kannst du weiterlaufen lassen wenn du es noch brauchst.
Wo du die Adressen für die Datenpunkt herbekommst können wir dir bei Interesse erklären.
@HerrP kann dir generell noch mehr zu dem Thema sagen, falls du Fragen hast.
VG Michael
Hallo Michael,
hört sich doch gut an. 😉
Ich werde mich mit dem Thema beschäftigen.
Noch einige Fragen vorab:
- die Vitoconnect Verbindung ist direkt über den Infrarotkopf an die Vitocal 222-S neben der Bedienungseinheit angeschlossen. Muss dieses Kabel (Infrarot Kopf/USB) direkt an den RPi und von dort dann über die CP2102 Platine an die Vitoconnect angeschlossen werden?
- verliere ich möglicherweise die Gewährleistung von Viessmann/Heizungsinstallateur, wenn ich den Anschluss für die Vitoconnect physisch verändere?
Gruß
Joachim
Hallo Joachim,
wie das Kabel vom Raspi zum Vitoconnect ausschauen muss weiss ich leider nicht.
Der Amazon link von Phil funktioniert leider nicht!
Warte mal bis Phil sich meldet.
VM kann aus der Ferne nicht feststellen dass der Spittler dazwischen ist.
Dass dem Heizungsmonteuer der Unterschied auffällt halte ich für sehr unwahrscheinlich.
VG Michael
moin ihr!
vielen Dank @qwert089 dass du hier schnell 'eingesprungen' bist!! ich war die letzten Tage mit meiner Regelung der neuen PV am kämpfen und war zu kaum was andrem gekommen....
>> Muss dieses Kabel (Infrarot Kopf/USB) direkt an den RPi und von dort dann über die CP2102 Platine an die Vitoconnect angeschlossen werden?
ja. sorry für den outdated link, einfach bei googel "cp2102 usb ttl" https://www.google.com/search?q=cp2102+usb+ttl ich hab im ReadMe den Link ersetzt und auch grad noch was ergänzt:
ATTENTION! Raspi UART voltage is 3.3V so set the jumper on the CP2102 TTL board accordingly!
>> verliere ich möglicherweise die Gewährleistung von Viessmann/Heizungsinstallateur, wenn ich den Anschluss für die Vitoconnect physisch verändere?
du veränderst ja nix, du hängst nur was dazwischen. Wie Michael schon sagte, wird das niemandem auffallen und das kann auch (aus der Ferne) niemand feststellen. Aktuell hat das Vitoconnect noch Priorität in der Kommunikation, und das bischen Verzögerung, wenn zwischendurch was anderes abgearbeitet wird, kann genauso durch das Internet kommen.
Wegen der Datenpunktadressen musst du uns dann später mal den Typ der Steuerung mitteilen. FransOv hat eine sehr umfangreiche Tabelle gepostet: https://github.com/user-attachments/files/16414504/Vitocal.300G.Parameters.xlsx ist jetzt für eine 300G, aber die meisten Adressen sind wohl gleich. In den Discussions auf github ist auch schon einiges zu unterschiedlichen Wärmepumpen zu finden.
Wenn du Unterstützung brauchst, sag Bescheid, gerne auch direkt auf github!
Grüsse!
Phil
Hallo Phil und Michael,
danke dir für eure Infos. Den CP2102 habe ich mir bereits gestern bestellt. Muss jetzt nur noch die Vitoconnect vorsorglich an eine andere Stelle an die Wand hängen damit es etwas näher zum RPi kommt (USB Kabellänge). Weitere Software spezifische Fragen würde ich gerne loswerden wollen, wenn ich nicht mit der Umsetzung der Doku weiterkommen würde.
Vielen Dank erst einmal.
Grüße Joachim
Hallo Joachim,
falls bei den Excel mit den Adressen der SoleWP noch etwas fehlen sollte, anbei das Abnahmeprotokoll einer 200-S.
Dort siehst du ab Seite 10 alle über Optolink verfügbaren Datenpunkte.
Die Adresse steht jeweils in Klammern.
berichte mal wie es funktioniert.
VG Michael
Hallo Michael,
vielen Dank für das Abnahmeprotokoll. Die Vitocal 2xx-S ist allerdings eine Luft/Wasser Wärmepumpe.
Sobald ich den Optolink auf dem RPi aktiv habe melde ich mich.
Grüße
Joachim
Guten Abend Phil,
ich habe versucht die Sofware requirements auf meinem RPi 5 mit Debian 12.6 (booworm) zu installieren und erhalte folgende Fehermeldungen:
pi@Pi5JMF:~ $ pip install paho-mqtt
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.
For more information visit http://rptl.io/venv
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
Die installierte python version, die mit debian OS mitkommt, ist:
pi@Pi5JMF:~ $ python3 --version
Python 3.11.2
Was läuft hier falsch??
Ich habe eine Vitocal 222-S und ein Belüftungssystem Vitovent 300W die zusammen gesteuert werden. Welche Datenpunkte (mir liegen diverse DP Listen vor) kann/muss ich in der Polling-Liste verwenden?
Grüße
Joachim
Hallo Phil,
noch eine Frage zu dem python Programm optolinkvs2_switch.py.
Wo sucht Python die Module aus den Import Anweisungen ab Zeile 19?
import serial
import time
import threading
import importlib
Ich bekomme den Fehler, dass er die erste Import-Anweisung nicht erfolgreich ausführen kann.
pi@Pi5JMF:~/optolink $ python optolinkvs2_switch.py
Traceback (most recent call last):
File "/home/pi/optolink/optolinkvs2_switch.py", line 19, in <module>
import serial
ModuleNotFoundError: No module named 'serial'
Gruß
Joachim
moin Joachim!
ja, die Sache mit dem externally managed environment auf den neuen Raspbians... Um auch gleich deine andre Frage damit zu erschlagen: Am besten macht du ein virtual environment (wie auch oben in dem Warnungsmeldungs-Blabla vorgeschlagen) und installierst alle requirements da drin und führst natürlich auch das Programm dadrin aus. dann ist Ruhe 😉
virtual environment erstellen:
in deinen Ornder /optolink gehen und
python -m venv myvenv
eingeben. Damit legt Raspi (genauer Python) einen Unterordner 'myvenv' in deinem Ordner an, wo dann 'alles' für die virtuelle Umbebung rein kommt.
dann die virtuelle Umgebung starten mit
source myvenv/bin/activate
Jetzt hast du ein '(myvenv)' am Anfang von deinem prompt, du bewegst dich also klar erkennbar in deiner virtuellen Umgebung.
Jetzt kannst du alle requirements installieren
pip install pyserial
pip install paho-mqtt
kein Gemecker mehr 🙂
Das müsste eigentlich auch schon alles sein, jetzt kannst du mit
python optolinkvs2-splitter.py
das Skript starten.
So ziemlich alles was du (bzw das Skript) braucht, steht jetzt in dem myvenv Ordner. Ich meine inklusive des Python. Und dementsprechend benutzt er jetzt alles (time, importlib, threading, serial und auch phao) auch von da.
Wenn jetzt Python alles auf den Kopf stellen würde, und du dieses Update auf deinem Raspbian installieren würdest, würde der optolink-splitter in der virtuellen Umgebung immer noch laufen wie eh und je, weil das Environmet sozusagen isoliert und unbeeindruckt von irgendwelchen 'äusseren Updates' ist. Wenn du was updaten wolltest (never touch a running System! 😉 ) müsstest du das in der virtuellen Umgebung machen.
Um das myvenv zu verlassen gibst du einfach
deactivate
ein und dein Prompt ist wieder der normale (und dein optolink-splitter funktioniert nicht mehr 😁 )
Wenn du den Splitter irgendwann per systemctl Service starten willst, musst du das auf die virtuelle Umgebung beziehen:
sudo nano /etc/systemd/system/optolink-splitter.service
den Kram da reinkopieren:
[Unit]
Description=Optolink-Splitter Service
After=network.target
[Service]
Type=simple
User=pi
Group=pi
WorkingDirectory=/home/pi/optolink/
Environment="PATH=/home/pi/optolink/myvenv/bin"
ExecStart=/home/pi/optolink/myvenv/bin/python /home/pi/optolink/optolinkvs2_switch.py
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
speichern, und danach dann
sudo systemctl daemon-reload
und starten
sudo systemctl start optolink-splitter.service
und wenn es ohne mäkeln läuft, das automatisch beim Booten Starten aktivieren:
sudo systemctl enable optolink-splitter.service
wie gewohnt bei Bedarf
sudo systemctl status optolink-splitter.service
sudo systemctl stop optolink-splitter.service
sudo systemctl restart optolink-splitter.service
sudo systemctl disable optolink-splitter.service
Nicht wundern, ein Dienst gibt nix auf dem Bildschirm aus. Kontrolle also am einfachsten mittels des MQTT Explorers.
ich hoffe das klärt und hilft erstmal, ansonsten weisst du ja, wo du uns findest... 😉
Grüsse!
Phil
ach ja.... >> eine Vitocal 222-S und ein Belüftungssystem Vitovent 300W die zusammen gesteuert werden. Welche Datenpunkte (mir liegen diverse DP Listen vor) kann/muss ich in der Polling-Liste verwenden?
die passenden, die das machen, was du willst 😉 ich hab nur eine Vitodens und damit kenn ich mich aus und nützliche Datenpunkte dazu stehen schon in der poll_list.
du kannst ja rumprobieren mit den read und write MQTT commands, dann wirst du schon die passenden finden. Auf github in den discussions gibt es aber auch mehr Leute mit Wärmepumpen und Lüftungen - einfach die mal fragen! (z.B. FransOV ist super hilfreich, ist glaubich ein Niederländer, am besten auf Englisch)
Hi Phil,
erst einmal Danke für die Hinweise. Ich werde es nächste Woche ausprobieren.
Gruß
Joachim
Hallo Joachim,
>>Die Vitocal 2xx-S ist allerdings eine Luft/Wasser Wärmepumpe.
das Abnahme Protokoll ist genau von so einem Modell wie deine ist.
VG Michael
moin Joachim!
bist du weiter gekommen? ich musste das Wochenende ja erstmal unserem Garten widmen....
Grüsse!
Phil
iGude Phil,
habe den RPi angeschlossen, dass virtuelle Environment erstellt und das Python script laufen lassen. Jetzt will er User/Passwort für MQTT haben. Lasse ich diese Definitionen leer bekomme ich "invalid argument" auf Zeile 22. Weitere MQTT Einstellungen hierzu - außer denen in der "settings-ini-py" - habe ich nicht gefunden. Ich hatte lediglich das Software requirement erfüllt und paho-mqtt installiert. Müssen in irgendwelchen mqtt files noch Einstellungen vorgenommen werden?
Einen deiner vorhergehenden Hinweise: "beendet man das myvenv mit deactivate läuft der Optolink Splitter nicht mehr". Bedeutet das, dass ich das myvenv immer manuell aktivieren muss? Wenn ja, wie kann das automatisiert werden.
Der Hintergrund ist, dass ich morgens gegen 05 Uhr automatisch über ein script alle wichtigen Services beende, um die Daten auf dem RPi auf eine externe FP/NAS zu sichern. Nach der Sicherung werden diese Services automatisch wieder gestartet. Kann ich den Optolink-Splitter in diesen Ablauf mit Systemctl stop/start ... genauso einbinden, wenn ich Vitoconnect an den RPi über cp2102 angeschlossen habe? (Startreihenfolge)
Grüße
Joachim
du musst in der settings_ini
mqtt_user = None
lassen, wenn du kein user/pwd vergeben hast. Falls doch musst du es in Hochkommas oder Anführungsstriche, getrennt durch Doppelpunkt angeben:
"joachim:1234"
>> Bedeutet das, dass ich das myvenv immer manuell aktivieren muss?
ja, so ist es.
>> Wenn ja, wie kann das automatisiert werden.
Am besten mit dem systemctrl Service den ich angegeben hatte. Wenn du aber erstmal die Terminal Ausgabe haben möchtest, hat ChatGPT folgenden Vorschlag:
>> Kann ich den Optolink-Splitter in diesen Ablauf mit Systemctl stop/start ... genauso einbinden, wenn ich Vitoconnect an den RPi über cp2102 angeschlossen habe?
ich hoffe ja - probier es doch mal aus, den Service einfach mal mit stop -> start anzuhalten und nach ner (nicht zu) kurzen Weile neu zu starten. Eigentlich ist das für den Viessmann Server ja nix anderes, als wenn die Heizung ne Weile ausgeschaltet wird. Zur Not müssen wir irgendwie ein Protokoll Reset oder eben nich-Reset einbauen. Da müsstest du dann das Mitschreiben mal aktivieren, damit wir sehen, was passiert. Ich hab ja kein Vitoconnect und kann es nicht ausprobieren...
Grüsse!
Hallo Phil,
@HerrP schrieb:du musst in der settings_ini
mqtt_user = None
lassen, wenn du kein user/pwd vergeben hast. Falls doch musst du es in Hochkommas oder Anführungsstriche, getrennt durch Doppelpunkt angeben:
"joachim:1234"
Genau so steht es in den "settings_ini.py". An welcher Stelle in mqtt wäre denn User/Password zu vergeben?
Grüße
Joachim
Hallo Phil,
noch eionmal einen screenshot über die Fehlersituation:
(myvenv) pi@Pi4JMF:~/optolink $ mosquitto_sub -h localhost -p 1883 -t 'test/#' -v
test/hugo Hallo
^X^C(myvenv) pi@Pi4JMF:~/optolink $
(myvenv) pi@Pi4JMF:~/optolink $ python optolinkvs2_switch.py
(22, 'Invalid argument')
exit close
cancel poll timer
exiting TCP/IP client
(myvenv) pi@Pi4JMF:~/optolink $
Es ist unschwer zu erkennen, dass der Mqtt Broker funktioniert. Nur mit dem Python script kann er nichts mit dem Begriff mqtt_user = None anfangen.
# MQTT +++++++++++++++++++
mqtt = "192.168.178.46:1883" # e.g. "192.168.0.123:1883"; set None to disable MQTT
mqtt_user = None # "<user>:<pwd>" oder None bei einem anonymous connect
mqtt_topic = "VitoCal" # "optolink"
mqtt_fstr = "{dpname}" # "{dpaddr:04X}_{dpname}"
mqtt_listen = "VitoCal/cmnd" # "optolink/cmnd"; set None to disable listening
mqtt_respond = "VitoCal/resp" # "optolink/resp"
Gebe ich an dieser Stelle einen unsinnigen Wert wie Nonex ein bekomme ich an anderer Stelle folgende Fehlermeldung:
(myvenv) pi@Pi4JMF:~/optolink $ python optolinkvs2_switch.py
Traceback (most recent call last):
File "/home/pi/optolink/optolinkvs2_switch.py", line 24, in <module>
import settings_ini
File "/home/pi/optolink/settings_ini.py", line 26, in <module>
mqtt_user = Nonex # "<user>:<pwd>" oder None bei einem anonymous connect
^^^^^
NameError: name 'Nonex' is not defined. Did you mean: 'None'?
Vielleicht hilft das bei der Fehlersuche weiter. 🙂
Grüße
Joachim
vergeben tust du das (user und pwd) ja in deinem MQTT Broker. Welchen MQTT Broker benutzt du eigentlich? mosquitto ist eigentlich sehr verbreitet.
Der phao-mqtt ist ja nur Client und meldet sich dann 'nur' mit den Informationen beim Broker an. Ich würde es erstmal ohne Passwort versuchen (es sei denn, du hast im Broker schon User und Pwd gesetzt)
Zeile 22 ist allerdings "import importlib". Es wundert mich, dass es da schon einen Fehler gibt. Erst in Zeile 158 wird da ja Gebrauch von gemacht, und in Z 159 im connect_mqtt() -> mqtt_util Z 62 wird dann User und Pwd benutzt.
Kannst du bitte die Fehlermeldung mal posten!?
du könntest auch mal das mqtt_util einzeln ausführen. das hat eine main() zum Testen. also
python mqtt_util.py
(natürlich in deiner myvenv, weil ja nur da phao-mqtt installiert ist) Dann solltest du im MQTT Explorer "TestVal" sehen, das im 3 Sekunden-Takt von 0 bis 9 hochgezählt wird.
Wenn das eine Fehlermeldung gibt, bitte die posten!
Grüsse!
ps. "Eigentlich ist das für den Viessmann Server ja nix anderes, als wenn die Heizung ne Weile ausgeschaltet wird." Es hängt natürlich nicht vom VServer ab, sondern vom Vitoconnect. Ich weiss nicht, wie sich das verhält, wenn die Verbindung zur Heizung/WP verloren geht. Im allerschlimmsten Fall müssen wir ein Relais-Borad für 1,50 an den Raspi machen und das Vitoconnect neu starten...
nochmal zu MQTT: guck mal hier
https://www.elektronik-kompendium.de/sites/raspberry-pi/2709041.htm
da stehen unten ein paar hilfreiche Sachen.Auch Testen und Konfiguration.
Funktioniert der Broker eigentlich schon mit anderen Anwendungen erfolgreich?
Ich benutze erfolgreich mosquitto. Der Test mit "python mqtt_util" brachte folgendes Ergebnis:
(myvenv) pi@Pi4JMF:~/optolink $ python mqtt_util.py
connect ok
Broker granted the following QoS: 0
Ein hochzählen bis 9 konnte ich nicht feststellen! Der Prozess bleibt bei 0 stehen.
Ich hatte bereits die Fehlermeldungen hier geposted. Leider kann ich meine Antwort hier nicht mehr finden.
Hier noch einmal:
(myvenv) pi@Pi4JMF:~/optolink $ python optolinkvs2_switch.py
(22, 'Invalid argument')
exit close
cancel poll timer
exiting TCP/IP client
(myvenv) pi@Pi4JMF:~/optolink $
Hier die settings_ini.py Datei:
'''
Copyright 2024 philippoo66
Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.gnu.org/licenses/gpl-3.0.html
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
'''
# serial ports +++++++++++++++++++
port_vitoconnect = '/dev/ttyS0' # '/dev/ttyS0' older Pi:'/dev/ttyAMA0' {optional} set None if no Vitoconnect
port_optolink = '/dev/ttyUSB0' # '/dev/ttyUSB0' {mandatory}
vs2timeout = 120 # seconds to detect VS2 protocol on vitoconnect connection
# MQTT +++++++++++++++++++
mqtt = "192.168.178.46:1883" # e.g. "192.168.0.123:1883"; set None to disable MQTT
mqtt_user = None # "<user>:<pwd>" oder None bei einem anonymous connect
mqtt_topic = "VitoCal" # "optolink"
mqtt_respond = "VitoCal/resp" # "optolink/resp"