Skip to content
EN | DE

Viessmann Heatpump (API)

This page shows the nightly version. Switch to the release version.

One-time hot water preparation. The device automatically decides whether to use the heat pump or the auxiliary electric heater (if available).

Parameters

NameDescriptionValueLevel
clientidClient IDoptional
redirecturiRedirect URI

Redirect URI of the evcc instance. Must match the redirect URI set in the Viessmann developer portal.

optional
gateway_serialGateway Serial

Determined automatically after login. Alternatively enter manually (VitoCare App -> Settings -> Communication module -> Serial number)

optional
installation_idInstallation ID

Determined automatically after login.

Fallback: determine the installation id on the command line Prerequisites: curl, jq, and the following parameters: VIESSMANN_USER=<your-user> VIESSMANN_PASS=<your-password> VIESSMANN_CLIENT_ID=<your-clientid> Then execute the following to get an oauth token (n.b. it's best to paste the entire block as-is, since the intermediate 'CODE' is only valid for 20 seconds): VIESSMANN_REDIRECT_URI=<your-redirect-uri> VIESSMANN_CODE_CHALLENGE="5M5nhkBfkWZCGfLZYcTL-l7esjPUN7PpZ4rq8k4cmys" VIESSMANN_CODE_VERIFIER="6PygdmeK8JKPuuftlkc6q4ceyvjhMM_a_cJrPbcmcLc-SPjx2ZXTYr-SOofPUBydQ3McNYRy7Hibc2L2WtVLJFpOQ~Qbgic455ArKjUz9_UiTLnO6q8A3e.I_fIF8hAo" VIESSMANN_CODE=$(curl -X POST --silent \ --user $VIESSMANN_USER:$VIESSMANN_PASS \ --output /dev/null \ --dump-header - \ "https://iam.viessmann-climatesolutions.com/idp/v3/authorize?client_id=$VIESSMANN_CLIENT_ID&redirect_uri=$VIESSMANN_REDIRECT_URI&scope=IoT%20User%20offline_access&response_type=code&code_challenge=$VIESSMANN_CODE_CHALLENGE&code_challenge_method=S256" \ | grep "^location: " \ | sed 's/.*\?code=\(.*\).*/\1/' \ | tr -d '[:space:]') TOKEN_RESPONSE=$(curl -XPOST --silent \ -H "Content-Type: application/x-www-form-urlencoded" \ --data "grant_type=authorization_code&client_id=$VIESSMANN_CLIENT_ID&redirect_uri=$VIESSMANN_REDIRECT_URI&code_verifier=$VIESSMANN_CODE_VERIFIER&code=$VIESSMANN_CODE" \ https://iam.viessmann-climatesolutions.com/idp/v3/token) VIESSMANN_TOKEN=$(echo $TOKEN_RESPONSE | jq --raw-output .access_token) Finally, get the installation id: curl --silent -H "Authorization: Bearer $VIESSMANN_TOKEN" \ https://api.viessmann-climatesolutions.com/iot/v2/equipment/installations?includeGateways=true \ | jq '.data[].id'

optional
device_idDevice ID

typically 0

Default: 0
optional
Configuration example for evcc.yaml

If you don't want to configure via the UI, you can alternatively use this YAML block.

chargers:
- name: my_heating
type: template
template: viessmann
clientid: # Client ID, Configure at [app.developer.viessmann-climatesolutions.com](https://app.developer.viessmann-climatesolutions.com)
redirecturi: # Redirect URI, Redirect URI of the evcc instance. Must match the redirect URI set in the Viessmann developer portal.
gateway_serial: # Gateway Serial, Determined automatically after login. Alternatively enter manually (VitoCare App -> Settings -> Communication module -> Serial number)
installation_id: # Installation ID, Determined automatically after login. <details><summary>Fallback: determine the installation id on the command line</summary> Prerequisites: curl, jq, and the following parameters: ``` VIESSMANN_USER=<your-user> VIESSMANN_PASS=<your-password> VIESSMANN_CLIENT_ID=<your-clientid> ``` Then execute the following to get an oauth token (n.b. it's best to paste the entire block as-is, since the intermediate 'CODE' is only valid for 20 seconds): ``` VIESSMANN_REDIRECT_URI=<your-redirect-uri> VIESSMANN_CODE_CHALLENGE="5M5nhkBfkWZCGfLZYcTL-l7esjPUN7PpZ4rq8k4cmys" VIESSMANN_CODE_VERIFIER="6PygdmeK8JKPuuftlkc6q4ceyvjhMM_a_cJrPbcmcLc-SPjx2ZXTYr-SOofPUBydQ3McNYRy7Hibc2L2WtVLJFpOQ~Qbgic455ArKjUz9_UiTLnO6q8A3e.I_fIF8hAo" VIESSMANN_CODE=$(curl -X POST --silent \ --user $VIESSMANN_USER:$VIESSMANN_PASS \ --output /dev/null \ --dump-header - \ "https://iam.viessmann-climatesolutions.com/idp/v3/authorize?client_id=$VIESSMANN_CLIENT_ID&redirect_uri=$VIESSMANN_REDIRECT_URI&scope=IoT%20User%20offline_access&response_type=code&code_challenge=$VIESSMANN_CODE_CHALLENGE&code_challenge_method=S256" \ | grep "^location: " \ | sed 's/.*\?code=\(.*\).*/\1/' \ | tr -d '[:space:]') TOKEN_RESPONSE=$(curl -XPOST --silent \ -H "Content-Type: application/x-www-form-urlencoded" \ --data "grant_type=authorization_code&client_id=$VIESSMANN_CLIENT_ID&redirect_uri=$VIESSMANN_REDIRECT_URI&code_verifier=$VIESSMANN_CODE_VERIFIER&code=$VIESSMANN_CODE" \ https://iam.viessmann-climatesolutions.com/idp/v3/token) VIESSMANN_TOKEN=$(echo $TOKEN_RESPONSE | jq --raw-output .access_token) ``` Finally, get the installation id: ``` curl --silent -H "Authorization: Bearer $VIESSMANN_TOKEN" \ https://api.viessmann-climatesolutions.com/iot/v2/equipment/installations?includeGateways=true \ | jq '.data[].id' ``` </details>
device_id: 0 # Device ID, typically `0`