openviess / PyViCare

Python Library to access Viessmann ViCare API
Apache License 2.0
140 stars 91 forks source link

Feature Request: Support more complex devices/hybrid devices and device groups #430

Open noseshimself opened 1 month ago

noseshimself commented 1 month ago

It seems that the library detects a system consisting of multiple separate components only as one of these. In my case it is a CU401-B that is detected as gas heating but consists of (at least) a gas burner and a air-to-water heat pump (and has been expanded by a separate buffer also under control of the central controller. In a more complex case you might even encounter a Vitocontrol M or HS because someone built a hybrid system of whatever he likes (e.g. a pellet burner and a water-to-water heat pump cooling his solar panels). The simplest solution would be adding a device type "hybrid system"/"big bag of assorted nuts" and let the consumer figure out what to do with all of it which would work for me but I expect this to become more and more interesting for multi-tenant buildings where everybody should get access to his own energy management data.

config_entry-CU401B.json

CFenner commented 1 month ago

Would it be possible for you to also get the data from your gateway directly from the API?

CFenner commented 1 month ago

Use https://documentation.viessmann.com/installationgatewayfeatures-featuresapi-mw-iot/v2#installationgatewayfeatures-featuresapi-mw-iot_Get_gateway_features

noseshimself commented 1 month ago

Would it be possible for you to also get the data from your gateway directly from the API?

If I found out how to this I might.

Using https://api.viessmann.com/iot/v1/equipment/installations?includeGateways=true I got my installationmid and my gatewayserial. Inserting them into https://api.viessmann.com/iot/v2/features/installations/undefined/gateways/undefined/features I'm getting a

{
  "viErrorId": "|ca25eada-49c46946e5668e6d.",
  "errorType": "EVEREST_ERROR",
  "message": "",
  "extendedPayload": {
    "code": "404",
    "reason": "Client does not exist"
  }
}

Sorry. Above my paygrade. Just close it; I will survive ignoring my heating system.