Viessmann Heatpump (API)
One-time hot water preparation. The device automatically decides whether to use the heat pump or the auxiliary electric heater (if available).
Parameters
| Name | Description | Value | Level |
|---|---|---|---|
clientid | Client ID Configure at app.developer.viessmann-climatesolutions.com | optional | |
redirecturi | Redirect URI Redirect URI of the evcc instance. Must match the redirect URI set in the Viessmann developer portal. | optional | |
gateway_serial | Gateway Serial VitoConnect serial number (VitoCare App -> Settings -> Communication module -> Serial number) | optional | |
installation_id | Installation ID Unfortunately you cannot simply lookup this number in the Viessmann app - instead you need to use the following commands on the command line... we're aware this is not for every user, but currently we don't have a better workflow... | optional | |
device_id | Device ID typically | 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: https://evcc.example.org/providerauth/callback # Redirect URI, Redirect URI of the evcc instance. Must match the redirect URI set in the Viessmann developer portal. gateway_serial: # Gateway Serial, VitoConnect serial number (VitoCare App -> Settings -> Communication module -> Serial number) installation_id: # Installation ID, Unfortunately you cannot simply lookup this number in the Viessmann app - instead you need to use the following commands on the command line... we're aware this is not for every user, but currently we don't have a better workflow...<br/> 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' ``` device_id: 0 # Device ID, typically `0`