Skip to content
forked from openviess/PyViCare

Python Library to access Viessmann ViCare API

License

Notifications You must be signed in to change notification settings

BloB77/PyViCare

Repository files navigation

PyViCare

Implements an object to interact with the Viessmann ViCare API. The OAuth2 authentication token can optionally be stored in a file to be reused. Tokens are automatically renewed.

A few nice feature removed from the app are available though the API (Comfort and Eco modes).

Version 0.1.0

Note that the version 0.1.0 DOES BREAK a few things. ViCareSession is now removed. You can now use the following objects:

from PyViCare.PyViCareDevice import Device # generic device
from PyViCare.PyViCareGazBoiler import GazBoiler # gaz boiler
from PyViCare.PyViCareHeatPump import HeatPump # heat pump

Device Features / Errors

Depending on the device, some features are not available/supported. This results in a raising of a PyViCareNotSupportedFeatureError if the dedicated method is called. This is most likely not a bug, but a limitation of the device itself.

Basic usage

Simple example:

import sys
import logging
sys.path.insert(0, 'PyViCare')
from PyViCare.PyViCareGazBoiler import GazBoiler

t=GazBoiler("email@domain","password","token.save")
print(t.getDomesticHotWaterConfiguredTemperature()) 
print(t.getDomesticHotWaterStorageTemperature())
print(t.getOutsideTemperature())
print(t.getRoomTemperature())
print(t.getSupplyTemperature())
print(t.getOutsideTemperature()) 
print(t.getHeatingCurveShift()) 
print(t.getHeatingCurveSlope()) 
print(t.getBoilerTemperature())
print(t.getActiveProgram())
print(t.getPrograms())

print(t.getCurrentDesiredTemperature())
print(t.getMonthSinceLastService())
print(t.getLastServiceDate())

print(t.getDesiredTemperatureForProgram("comfort"))
print(t.getActiveMode())

print(t.getDesiredTemperatureForProgram("comfort"))
print(t.setProgramTemperature("comfort",21))
print(t.activateProgram("comfort"))
print(t.setDomesticHotWaterTemperature(59))
print(t.activateProgram("comfort"))
print(t.deactivateComfort())

Postman example

Follow these steps to access the API in Postman:

  1. Create an access token in the Authorization tab with type OAuth 2.0 and following inputs:

    • Client id: 79742319e39245de5f91d15ff4cac2a8
    • Secret id: 8ad97aceb92c5892e102b093c7c083fa
    • Callback url: vicare://oauth-callback/everest
    • Auth url: https://iam.viessmann.com/idp/v1/authorize
    • Access token url: https://iam.viessmann.com/idp/v1/token
    • Scope: openid

    A login popup will open. Enter your ViCare username and password.

  2. Use this URL to access your installationId and gatewaySerial:

    https://api.viessmann-platform.io/general-management/installations

    • installationId is entities[0].properties.id
    • gatewaySerial is entities[0].entities[0].properties.serial
  3. Use above data to replace {installationId} and {gatewaySerial} in this URL to investigate the Viessmann API:

    https://api.viessmann-platform.io/operational-data/v1/installations/{installationId}/gateways/{gatewaySerial}/devices/0/features

Types of heatings

  • Use GazBoiler for gas heatings
  • Use HeatPump for heat pumps
  • Use FuelCell for fuel cells

Rate Limits

Due to latest changes in the Viessmann API rate limits can be hit. In that case a PyViCareRateLimitError is raised. You can read from the error (limitResetDate) when the rate limit is reset.

About

Python Library to access Viessmann ViCare API

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%