Liebe Community,
sie gestern 12.03.2026 greift meine PyViCare basierte Python Logik mit OptoLink als Gateway nur noch lesend auf die Viessmann Developer API zu.
Ich habe keine Änderungen vorgenommen. Es gab gestern einen Ausfall (Meldung in der App der API / App). Der OptoLink Gateway wurde neu gestartet, nachdem er gestern nachts "rot, dauerhaft" anzeigte - (keine Verbindung zu Viessman)
Lesende Zugriffe funktionieren ganz normal und fehlerlos.
Die API Dokumentation bzgl. den angesprochenen Data Point (siehe Log Auszug unten) habe ich geprüft, laut Doku in der BASIC Free Version (weiterhin) les- und schreibbar.
Schreibend wird aber jeder Zugriff beantwortet mit 403 / Unknown:
2026-03-13 11:42:01,698 - sb - ERROR - PyViCareCommandError in __main__.vitoapiSetHeatingTemp() line 1809 : (PyViCareCommandError(...), 'Command failed with status code 403. Reason given was: Unknown')
2026-03-13 11:42:28,390 - sb - INFO - Vito setVentilationProgram 'ventilation.quickmodes.comfort'=deactivate
2026-03-13 11:42:28,511 - sb - ERROR - PyViCareCommandError in __main__.vitoapiSetVentilationProgram() line 1846 : (PyViCareCommandError(...), 'Command failed with status code 403. Reason given was: Unknown')
2026-03-13 11:42:31,392 - sb - INFO - Vito setVentilationProgram 'ventilation.quickmodes.eco'=activate
2026-03-13 11:42:31,492 - sb - ERROR - PyViCareCommandError in __main__.vitoapiSetVentilationProgram() line 1846 : (PyViCareCommandError(...), 'Command failed with status code 403. Reason given was: Unknown')
Voller Log Auszug zu einem WRITE-Kommando:
2026-03-13 11:55:30,708 - sb - DEBUG - getPyViCareDevice(): idx=1 model=CU401B_S status=Online (devices=2)
2026-03-13 11:55:30,711 - sb - INFO - Vito setVentilationProgram 'ventilation.quickmodes.eco'=deactivate
2026-03-13 11:55:30,819 - sb - ERROR - PyViCareCommandError in __main__.vitoapiSetVentilationProgram() line 1846 : (PyViCareCommandError(...), 'Command failed with status code 403. Reason given was: Unknown')
2026-03-13 11:55:30,821 - sb - DEBUG - Stacktrace:
Traceback (most recent call last):
File "/home/pi/loxpy/smartbridge.py", line 1846, in vitoapiSetVentilationProgram
answer = t.service.setProperty(prop, command, {})
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/pi/loxpy/loxpy-venv/lib/python3.11/site-packages/PyViCare/PyViCareCachedService.py", line 29, in setProperty
response = super().setProperty(property_name, action, data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/pi/loxpy/loxpy-venv/lib/python3.11/site-packages/PyViCare/PyViCareService.py", line 58, in setProperty
return self.oauth_manager.post(url, post_data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/pi/loxpy/loxpy-venv/lib/python3.11/site-packages/PyViCare/PyViCareAbstractOAuthManager.py", line 94, in post
self.__handle_command_error(response)
File "/home/pi/loxpy/loxpy-venv/lib/python3.11/site-packages/PyViCare/PyViCareAbstractOAuthManager.py", line 71, in __handle_command_error
raise PyViCareCommandError(response)
PyViCare.PyViCareUtils.PyViCareCommandError: (PyViCareCommandError(...), 'Command failed with status code 403. Reason given was: Unknown')
Gibt es dazu ähnliche Meldungen oder weiss jemand ob die API geändert wurde bzw. wegen des Ausfalls gestern, temporär die Schreibrechte entzogen wurden?
Ich wäre an dieser Stelle sehr dankbar für Unterstützung.
Viele Grüße
Chris
Gelöst! Gehe zu Lösung.
Es funktioniert wieder - wenn das alles nur technische Wartung war, möchte ich euch anregen besser dazu zu kommunizieren.
Ich bin über zahlreiche Community und Google Kommentare zu dem Schluss gekommen, dass die API readonly wird. So sagt man im Netz - das wieder einzufangen kann schwierig werden.
Es wäre sehr sehr hilfreich, wenn eindeutig und schnell findbar dazu zB auf den DEV API Web-Seiten ein kleiner Hinweis kommt: "Liebe Developer, es kann sein, dass ihr gerade ein seltsames Verhalten der API beobachtet, wir arbeiten ... " - dann muss ich niemand aufregen, Angst um sein Steckenpferd Privat Smart Home Projekt haben.
Das wäre sehr schön!
Beste Grüße
Ist das wirklich die schöne neue Wahrheit? Es werden von Viessmann alle privaten Automatisierung-Lösungen "zerstört" - ohne Ersatz? Eine komplette Developer Community zerstört?
Das sagt Google Gemini dazu:
Viessmann Climate Solutions Community +1
403 Forbidden laufen.read-Features und write-Features. Während "Basic" fast alles lesen darf, sind viele Schreiboperationen jetzt exklusiv für Partner oder (ehemals) "Advanced"-Nutzer reserviert.403 bei einem Befehl zeigt, der gestern noch ging, wurde dein Account-Typ im Backend mit Sicherheit herabgestuft.loxpy eh am Laufen hast, ist der Wechsel auf einen lokalen USB-Optolink-Adapter der einzige Weg, wie du morgen wieder zuverlässig schreiben kannst.open3E funktionieren?
Das ist ja krass....
Irgendwann geht so eine WP kaputt oder muss aus anderen Gründen ersetzt werden. Oder man kauft eine Immobilie die eine neue Heizung braucht.
Spätestens jetzt ist der Zeitpunkt ab dem Viessmann keine Option mehr ist.
Ich analysiere gerade die API im Detail - aus den JSON Dumps kann man tatsächlich sehen, dass die commands seit gestern, 12.03.2026 nun alle leer sind und damit jeglicher Schreibzugriff mit 403 beantwortet wird. Noch besteht Hoffnung, dass dies temporär ist, wegen zB einem API / internen Umbau, aber diese Hoffnung schwindet mit jeder weiteren Internet Recherche.
Previously (write access available)
"ventilation.quickmodes.eco": {
"properties": {
"active": false
},
"commands": {
"activate": {
"uri": ".../features/ventilation.quickmodes.eco/commands/activate"
},
"deactivate": {
"uri": ".../features/ventilation.quickmodes.eco/commands/deactivate"
}
}
}Current response (write removed)
"ventilation.quickmodes.eco": {
"properties": {
"active": false
},
"commands": {}
}
Previously
"heating.circuits.0.operating.programs": {
"properties": {
"active": "normal"
},
"commands": {
"setProgram": {
"uri": ".../features/heating.circuits.0.operating.programs/commands/setProgram"
}
}
}Current
"heating.circuits.0.operating.programs": {
"properties": {
"active": "normal"
},
"commands": {}
}
Previously
"heating.dhw.oneTimeCharge": {
"properties": {
"active": false
},
"commands": {
"activate": {
"uri": ".../features/heating.dhw.oneTimeCharge/commands/activate"
}
}
}Current
"heating.dhw.oneTimeCharge": {
"properties": {
"active": false
},
"commands": {}
}
Previously the API exposed command endpoints for several features, enabling write access.
Currently all features return:
"commands": {}which effectively removes all write capabilities and results in HTTP 403 responses when attempting command execution.
Ich habe schätzungsweise 400-500 Stunden private Arbeit in ein eigenes auf unser Passivhaus angepasstes Steuer-System via LOXONE und einer Python Bridge investiert, das wäre nun alles kaputt.
Meine Logik kann die hauseigene App mit Savings Assistent leider überhaupt nicht abbilden und es fehlt die Kopplung an die zentrale Automatisierung mittels LOXONE - das bedeutet VIESSMANN hat - wenn es wirklich so sein sollte - mit dieser rigorosen API Politik ein komplettes Passivhaus UNTAUGLICH gemacht.
Ohne Alternativen anzubieten (PAID Version nur noch Enterprise und Custom aktuell auf der Webseite).
Ich kann und werde die VIESSMANN Steuerung nicht anwenden können, solange es keinen READ/WRITE Zugriff von anderen System aus gibt. Da hängen dynamischer Stromtarif und zahlreiche im Haus verbaute Sensoren mit dran, die die VIESSMANN App nicht sehen kann und auch nicht steuern.
Innovation made in Germany!
Ironie aus und bitte verzeihen - aber so geht es Menschen denen man grundlos ihre privaten Projekte vernichtet. Wenn es wirklich so ist und bleiben sollte.
Hier ein Dump zum Stand 13.03.2026 mit Verweis auf die Unklarheit ob diese API Changes temporär oder dauerhaft sind. Diese *commands* wurden bei mir von gestern auf heute aus der API entfernt:
Nur zwei davon Heizkreis SOLL und Betriebsart würde ich für eine vernünftige Steuerung über die eigene Logik benötigen:
heating.circuits.0.operating.modes.active/commands/setMode
heating.circuits.0.operating.programs.comfort/commands/setTemperature
für etwas mehr Comfort eine dritte: ventilation.operating.modes.active/commands/setMode
Ist das denn zuviel verlangt für einen DEVELOPER Plan und eine aktive DEVELOPER Community, die Ideen und Innovation treibt? Die Community dürfte mit solchen Einschränkungen zukünftig relativ tot sein, ob das den eigenen Services zuträglich ist oder nicht sollte man sehr detailliert abwägen.
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
"commands": {
"uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/..."
Es funktioniert wieder - wenn das alles nur technische Wartung war, möchte ich euch anregen besser dazu zu kommunizieren.
Ich bin über zahlreiche Community und Google Kommentare zu dem Schluss gekommen, dass die API readonly wird. So sagt man im Netz - das wieder einzufangen kann schwierig werden.
Es wäre sehr sehr hilfreich, wenn eindeutig und schnell findbar dazu zB auf den DEV API Web-Seiten ein kleiner Hinweis kommt: "Liebe Developer, es kann sein, dass ihr gerade ein seltsames Verhalten der API beobachtet, wir arbeiten ... " - dann muss ich niemand aufregen, Angst um sein Steckenpferd Privat Smart Home Projekt haben.
Das wäre sehr schön!
Beste Grüße