abbrechen
Suchergebnisse werden angezeigt für 
Anzeigen  nur  | Stattdessen suchen nach 
Meintest du: 
Beantwortet! Gehe zur Lösung.

Kann seit 12.03.2026 nur noch lesend via PyViCare auf die API zugreifen

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



1 AKZEPTIERTE LÖSUNG

Akzeptierte Lösungen

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

Lösung in ursprünglichem Beitrag anzeigen

6 ANTWORTEN 6

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: 


Die "Harte" Wahrheit
Wenn ein neuer API-Key und gelöschte Token-Files nicht helfen, hat Viessmann den Schreibzugriff für deinen Account-Typ serverseitig deaktiviert. In der Developer Community gibt es aktuell eine hitzige Debatte darüber, dass viele Automatisierungen (Home Assistant, openHAB, Node-RED) durch diese Paket-Umstellungen unbrauchbar werden. 

 

Viessmann Climate Solutions Community +1
Alternative: Falls du technisch versiert bist, schau dir das Projekt open3E an. Dies ermöglicht (je nach Hardware) eine lokale Steuerung über den E3-Bus/CAN-Bus deiner Wärmepumpe, komplett ohne Cloud und API-Gängelung. 

Die Faktenlage bei "Basic"
  • Lesen vs. Schreiben: In der Theorie deckt "Basic" die Grundfunktionen ab. In der Praxis berichten Entwickler seit Februar 2026, dass Schreibbefehle (POST) für viele Datenpunkte (wie Lüftungsstufen oder Heizkreis-Modi) im Basic-Tarif auf 403 Forbidden laufen.
  • Feature-Abstufung: Viessmann unterscheidet intern zwischen 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.
  • "Unknown" Error: Dass die API "Unknown" als Grund zurückgibt, ist ein klares Zeichen für eine serverseitige Blockade durch das Berechtigungs-Backend (ACL), nicht durch einen fehlerhaften Befehl deinerseits.
 
Warum steht das noch so in der Doku?
Die Dokumentation hinkt der tatsächlichen API-Konfiguration oft Wochen hinterher. Viessmann stellt das gesamte Modell auf "ViCare+ / Savings Assistant" (für Endkunden in der App) und "Professional" (für Firmen) um. Der "Free Developer"-Zugang wird dabei als reiner "Lese-Zugang" degradiert, um die eigenen Bezahl-Dienste zu schützen.
 
Was du jetzt tun kannst
Wenn du bei der Cloud-Lösung bleiben willst, bleibt nur der Weg über den Support im Developer Portal, um dort auf die Diskrepanz zwischen Doku und Realität hinzuweisen. Da dein Log aber eindeutig den 403 bei einem Befehl zeigt, der gestern noch ging, wurde dein Account-Typ im Backend mit Sicherheit herabgestuft.
Mein Rat: Verschwende keine Zeit mit dem Support eines Anbieters, der funktionierende Schnittstellen aktiv abschaltet. Da du den Raspberry Pi für 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.
Soll ich dir ein paar Links zu funktionierenden USB-Optolink-Adaptern raussuchen, die direkt mit deinem Raspberry Pi und open3E funktionieren?


Liebe Viessmann-Verantwortliche - sollte vorstehendes der Wahrheit entsprechen, ist das eine Frechheit gegenüber eurer Community (die euch viele Ideen für eure App und Logik kostenlos geliefert hat -> Auswertung der API Calls per KI .. )

Die "Belohnung" für die Community: Nicht einmal die einfachsten WRITE Befehle werden mehr erlaubt. Hunderttausende Stunden von Arbeit, private Systeme die man mit eurer tollen App und dem Savings Assistent leider überhaupt nicht nachbilden kann....

Deutsche Kurzsichtigkeit im Management par excellence. Sorry. 

Als Elektroingenieur kann ich auf CAN Bus Ebene absteigen und direkt ansteuern, viele andere können das nicht. 

 

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.

 

Example: API feature command exposure (before 10-2025 vs. now 13-03-2023)

 

 

Example 1 – Ventilation quick mode

 

 

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": {}
}

 


 

 

Example 2 – Heating circuit operating program

 

 

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": {}
}

 


 

 

Example 3 – Domestic hot water one-time charge

 

 

Previously

"heating.dhw.oneTimeCharge": {
  "properties": {
    "active": false
  },
  "commands": {
    "activate": {
      "uri": ".../features/heating.dhw.oneTimeCharge/commands/activate"
    }
  }
}

Current

"heating.dhw.oneTimeCharge": {
  "properties": {
    "active": false
  },
  "commands": {}
}

 


 

 

Summary of observed change

 

 

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/..."

"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/..."

"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/..."

"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/..."

"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