chomupashchuk / ariston-remotethermo-home-assistant-v2

Ariston NET remotethermo integration for Home Assistant based on API
MIT License
94 stars 22 forks source link

Support multizone #45

Closed vmanuel closed 2 years ago

vmanuel commented 2 years ago

With the 2.x relase (caused by changes in all Ariston services), multizone support was broken.

I could make some calls ang get some values in nodered.

For example, to get some data, POST to https://www.ariston-net.remotethermo.com/R2/PlantHome/GetData/ with this load

msg.payload = { "features": { .... }, "useCache": false, "zone": 1, "filter": { "notEssentials": false, "progId": null, "plant": true, "zone": true, "dhw": true } }

for zone 1.

I don't know if it is easy to make chages in your module to make it work again.

And thanks for your work!!

chomupashchuk commented 2 years ago

I have focused on Android requests instead of web page (only few exceptions for additional data). I use Fiddler with its proxy to which phone with running application is connected to. Data needs to be collected on how data is being read and set for additional zones.

vmanuel commented 2 years ago

OK, Thx.Fiddler installed.

In this case, if i check zone 2, in Fiddler:

POST /api/v2/remote/dataItems//get?umsys=si Load: {"useCache":false,"items":[{"id":"OutsideTemp","zn":0},{"id":"Weather","zn":0},{"id":"PlantMode","zn":0},{"id":"Holiday","zn":0},{"id":"AutomaticThermoregulation","zn":0},{"id":"IsFlameOn","zn":0},{"id":"ZoneHeatRequest","zn":2},{"id":"ZoneMode","zn":2},{"id":"ZoneDesiredTemp","zn":2},{"id":"ZoneMeasuredTemp","zn":2},{"id":"ZoneDeroga","zn":2},{"id":"ZoneComfortTemp","zn":2},{"id":"HeatingFlowTemp","zn":2},{"id":"CoolingFlowTemp","zn":2},{"id":"HeatingFlowOffset","zn":2},{"id":"CoolingFlowOffset","zn":2}],"features":{"zones":[{"num":1,"name":"Upstairs","roomSens":true,"geofenceDeroga":false,"isHidden":false},{"num":2,"name":"Sleeping area","roomSens":true,"geofenceDeroga":false,"isHidden":false},{"num":3,"name":"Living area","roomSens":false,"geofenceDeroga":false,"isHidden":false},{"num":4,"name":"Basement","roomSens":true,"geofenceDeroga":false,"isHidden":false}],"solar":false,"convBoiler":false,"commBoiler":false,"hpSys":false,"hybridSys":false,"cascadeSys":false,"dhwProgSupported":false,"virtualZones":false,"hasVmc":false,"extendedTimeProg":false,"hasBoiler":true,"pilotSupported":true,"isVmcR2":false,"isEvo2":false,"dhwHidden":true,"dhwBoilerPresent":false,"dhwModeChangeable":true,"hvInputOff":false,"autoThermoReg":true,"hasMetering":true,"weatherProvider":1,"hasFireplace":false,"hasSlp":false,"hasEm20":false,"hasTwoCoolingTemp":false,"bmsActive":false,"hpCascadeSys":false,"hpCascadeConfig":-1,"bufferTimeProgAvailable ":false,"distinctHeatCoolSetpoints":false,"hasZoneNames":false,"preHeatingSupported":false,"zigbeeActive":false},"culture":"es-ES"}

Response:

{"items":[{"id":"OutsideTemp","zone":0,"kind":1,"min":-3277.0,"max":3276.0,"step":1.0,"value":3276.0,"decimals":0,"readOnly":true,"error":false,"invalid":false,"unit":"°C"},{"id":"Weather","zone":0,"kind":1,"min":0.0,"max":255.0,"step":1.0,"value":1.0,"decimals":0,"readOnly":true,"error":false,"invalid":false,"unit":""},{"id":"PlantMode","zone":0,"kind":2,"min":0.0,"max":0.0,"step":0.0,"value":5.0,"decimals":0,"options":[0,1,2,5],"optTexts":["Verano","Invierno","Sólo calefacción","OFF"],"readOnly":false,"error":false,"invalid":false},{"id":"AutomaticThermoregulation","zone":0,"kind":3,"min":0.0,"max":0.0,"step":0.0,"value":1.0,"decimals":0,"options":[0,1],"readOnly":false,"error":false,"invalid":false},{"id":"IsFlameOn","zone":0,"kind":3,"min":0.0,"max":0.0,"step":0.0,"value":0.0,"decimals":0,"options":[0,1],"readOnly":false,"error":false,"invalid":false},{"id":"ZoneHeatRequest","zone":2,"kind":2,"min":0.0,"max":0.0,"step":0.0,"value":0.0,"decimals":0,"options":[0,1],"optTexts":["OFF","ON"],"readOnly":true,"error":false,"invalid":false},{"id":"ZoneMode","zone":2,"kind":2,"min":0.0,"max":0.0,"step":0.0,"value":3.0,"decimals":0,"options":[0,2,3],"optTexts":["OFF","Manual","Program. calefacción"],"readOnly":false,"error":false,"invalid":false},{"id":"ZoneDesiredTemp","zone":2,"kind":1,"min":-3276.8,"max":3276.7,"step":0.5,"value":18.0,"decimals":1,"readOnly":true,"error":false,"invalid":false,"unit":"°C"},{"id":"ZoneMeasuredTemp","zone":2,"kind":1,"min":-3276.8,"max":3276.7,"step":0.5,"value":30.3,"decimals":1,"readOnly":true,"error":false,"invalid":false,"unit":"°C"},{"id":"ZoneComfortTemp","zone":2,"kind":1,"min":10.0,"max":30.0,"step":0.5,"value":21.5,"decimals":1,"readOnly":false,"error":false,"invalid":false,"unit":"°C"},{"id":"HeatingFlowTemp","zone":2,"kind":1,"min":35.0,"max":82.0,"step":1.0,"value":50.0,"decimals":0,"readOnly":false,"error":false,"invalid":false,"unit":"°C"},{"id":"HeatingFlowOffset","zone":2,"kind":1,"min":-14.0,"max":14.0,"step":1.0,"value":0.0,"decimals":0,"readOnly":false,"error":false,"invalid":false,"unit":""},{"id":"Holiday","zone":0,"kind":3,"min":0.0,"max":0.0,"step":0.0,"value":0.0,"decimals":0,"options":[0,1],"readOnly":false,"error":false,"invalid":false},{"id":"ZoneDeroga","zone":2,"kind":1,"min":10.0,"max":30.0,"step":0.5,"value":0.0,"decimals":1,"readOnly":false,"error":false,"invalid":false}]}

chomupashchuk commented 2 years ago

Data about multiple requests has to be gathered. I do not plan to look int9 this in the near future due to personal matters

vmanuel commented 2 years ago

OK, I'm sorry for the personal matters... I will try myself starting from your code (at least read states and sensors)

Thx

chomupashchuk commented 2 years ago

This is not a trivial update and multiple things have to be handled:

I have only 1 zone in my boiler so I cannot test myself without access to boiler with multiple zones or for someone to constantly test the updates (that slows the process a lot). Lately I have little free time and I do need some time off and the impact would most likely require probably few days of constant work. I can look into this, but not sure when i'll start to do so (maybe this week, maybe next - don't know)

chomupashchuk commented 2 years ago

ariston.zip You may try attached version. Include num_ch_zones: <number of zones> in configuration.yaml under ariston. The entities would change name for CH objects, so old ones would have to be deleted manually.

vmanuel commented 2 years ago

Working!!!

Thank you!!

chomupashchuk commented 2 years ago

included in 2.0.12