Intro
Um Daten von einer Vaillant Heizung in eine InfluxDB zu überführen, kann man dies mit einem Vr900 Gateway und einem MyVaillant Konto umsetzen. Hierfür stehen ein paar nette Python Libraries zur Verfügung, wobei die eine ein Fork von der anderen ist und die meisten das gleiche machen. Diese Libs verbinden sich mit der MyVaillant API.
- MyPyllant: auf PyPi Dokumentation bei Signalkraft
- MyVaillant: MyVaillant auf PyPi
- VR900_Connector: VR900 Connector auf PyPi
Eine Verbindung mit dem EBUS direkt ist zwar möglich, dafür benötigt man aber einen anderen / Selbstbau Adapter und einen extra Dienst. Welche Daten dann aus dem EBUS auslesbar sind, ist auch noch recht fraglich und bedarf einiges an Entwicklung. Evtl. dazu später mehr in meinem Wiki aber hier nun erstmal die Integration nach folgendem Schaubild:
Implementierung
MyPyllant VENV
- Installation von mindestens Python 3.10
- Modul folgende Python3 Module zusätzlich installieren (python3-venv, python3-pip)
- VENV anlegen
# mkidir vaillant # python3 -m venv vaillant
- Installation von MyPyllant
# vaillant/bin/pip3 install MyPyllant
- nun wäre die Installation so weit, einen Testlauf durchzuführen. Der Aufruf wird auch so später beim exec-Input in Telegraf verwendet
# /opt/vaillant/bin/python3 -m myPyllant.export '${VAILLANT-BENUTZERNAME}' '${VAILLANT-PASSWORD}' --country germany vaillant
Telegraf Config - Simpel
Diese Seite geht davon aus, dass Telegraf bereits korrekt konfiguriert wurde, daher in Verwendung ist und die Daten im gewünschten Ziel landen, wie z.B. einer InfluxDB. Daher muss nur ein einfaches exec Input mit JSON Datenformat in Telegraf angelegt werden. Bitte daran denken, dass die angegebenen Variablen als Umgebungsvariable in /etc/default/telegraf angegeben sein müssen.
[[inputs.exec]] ## Commands array commands = [ "/opt/vaillant/bin/python3 -m myPyllant.export '${VAILLANT-BENUTZERNAME}' '${VAILLANT-PASSWORD}' --country germany vaillant" ] name_override="heizung" timeout = "30s" interval = "5m" data_format = "json_v2"
40
you see this when javscript or css is not working correct
