Open thomasgermain opened 6 months ago
Here are some information I could get, let me know if you need more:
GET https://api.vaillant-group.com/service-connected-control/end-user-app-api/v1/api/v1/ambisense/facilities/<facility-id>/capability
{
"rbrCapable": true
}
GET https://api.vaillant-group.com/service-connected-control/end-user-app-api/v1/api/v1/ambisense/facilities/<facility_id>/rooms
(bathroom (="salle de bain") should be the most interesting one, since it has some time program defined).
[
{
"roomConfiguration": {
"buttonLock": null,
"currentHumidity": null,
"currentTemperature": 19.4,
"devices": [
{
"deviceType": "TRV",
"lowBat": false,
"name": "Chambre Jules",
"rssi": -64,
"rssiPeer": -65,
"sgtin": "xxx",
"unreach": false
}
],
"iconId": "BEDROOM",
"name": "Chambre Jules",
"operationMode": "auto",
"quickVetoEndTime": null,
"temperatureSetpoint": 18.0,
"windowState": false
},
"roomIndex": 3,
"timeprogram": {
"friday": [],
"monday": [],
"saturday": [],
"sunday": [],
"thursday": [],
"tuesday": [],
"wednesday": []
}
},
{
"roomConfiguration": {
"buttonLock": null,
"currentHumidity": null,
"currentTemperature": 19.8,
"devices": [
{
"deviceType": "TRV",
"lowBat": false,
"name": "Chambre parentale",
"rssi": -68,
"rssiPeer": -62,
"sgtin": "xxx",
"unreach": false
}
],
"iconId": "BEDROOM",
"name": "Chambre parentale",
"operationMode": "auto",
"quickVetoEndTime": null,
"temperatureSetpoint": 16.0,
"windowState": false
},
"roomIndex": 0,
"timeprogram": {
"friday": [],
"monday": [],
"saturday": [],
"sunday": [],
"thursday": [],
"tuesday": [],
"wednesday": []
}
},
{
"roomConfiguration": {
"buttonLock": null,
"currentHumidity": null,
"currentTemperature": 19.4,
"devices": [
{
"deviceType": "TRV",
"lowBat": false,
"name": "Chambre Lucie",
"rssi": -68,
"rssiPeer": -68,
"sgtin": "xxx",
"unreach": false
}
],
"iconId": "BEDROOM",
"name": "Chambre Lucie",
"operationMode": "auto",
"quickVetoEndTime": null,
"temperatureSetpoint": 18.0,
"windowState": false
},
"roomIndex": 2,
"timeprogram": {
"friday": [],
"monday": [],
"saturday": [],
"sunday": [],
"thursday": [],
"tuesday": [],
"wednesday": []
}
},
{
"roomConfiguration": {
"buttonLock": false,
"currentHumidity": null,
"currentTemperature": 23.4,
"devices": [
{
"deviceType": "TRV",
"lowBat": false,
"name": "Radiateur salle de bain",
"rssi": -79,
"rssiPeer": -75,
"sgtin": "xxx",
"unreach": false
},
{
"deviceType": "TRV",
"lowBat": false,
"name": "Sèche serviette salle de bain",
"rssi": -55,
"rssiPeer": -56,
"sgtin": "xxx",
"unreach": false
}
],
"iconId": "BATHROOM",
"name": "Salle de bain",
"operationMode": "auto",
"quickVetoEndTime": null,
"temperatureSetpoint": 21.0,
"windowState": false
},
"roomIndex": 1,
"timeprogram": {
"friday": [
{
"startTime": 0,
"temperatureSetpoint": 19.5
},
{
"startTime": 360,
"temperatureSetpoint": 22.0
},
{
"startTime": 990,
"temperatureSetpoint": 25.0
},
{
"startTime": 1150,
"temperatureSetpoint": 19.5
}
],
"monday": [
{
"startTime": 0,
"temperatureSetpoint": 19.5
},
{
"startTime": 360,
"temperatureSetpoint": 22.0
},
{
"startTime": 990,
"temperatureSetpoint": 25.0
},
{
"startTime": 1150,
"temperatureSetpoint": 19.5
}
],
"saturday": [
{
"startTime": 0,
"temperatureSetpoint": 19.5
},
{
"startTime": 360,
"temperatureSetpoint": 22.0
},
{
"startTime": 990,
"temperatureSetpoint": 25.0
},
{
"startTime": 1150,
"temperatureSetpoint": 19.5
}
],
"sunday": [
{
"startTime": 0,
"temperatureSetpoint": 19.5
},
{
"startTime": 360,
"temperatureSetpoint": 22.0
},
{
"startTime": 990,
"temperatureSetpoint": 25.0
},
{
"startTime": 1150,
"temperatureSetpoint": 19.5
}
],
"thursday": [
{
"startTime": 0,
"temperatureSetpoint": 19.5
},
{
"startTime": 360,
"temperatureSetpoint": 22.0
},
{
"startTime": 990,
"temperatureSetpoint": 25.0
},
{
"startTime": 1150,
"temperatureSetpoint": 19.5
}
],
"tuesday": [
{
"startTime": 0,
"temperatureSetpoint": 19.5
},
{
"startTime": 360,
"temperatureSetpoint": 22.0
},
{
"startTime": 990,
"temperatureSetpoint": 25.0
},
{
"startTime": 1150,
"temperatureSetpoint": 19.5
}
],
"wednesday": [
{
"startTime": 0,
"temperatureSetpoint": 19.5
},
{
"startTime": 360,
"temperatureSetpoint": 22.0
},
{
"startTime": 990,
"temperatureSetpoint": 25.0
},
{
"startTime": 1150,
"temperatureSetpoint": 19.5
}
]
}
}
]
PUT https://api.vaillant-group.com/service-connected-control/end-user-app-api/v1/api/v1/ambisense/facilities/<facility-id>/rooms/1/configuration/quick-veto
payload:
{
"duration": 180,
"temperatureSetpoint": 20.5
}
reponse:
{
"correlationId": "1e7721f9-c0ab-4e93-8ba3-a73129f5164f"
}
rooms looks like:
{
"roomConfiguration": {
"buttonLock": false,
"currentHumidity": null,
"currentTemperature": 23.5,
"devices": [
{
"deviceType": "TRV",
"lowBat": false,
"name": "Radiateur salle de bain",
"rssi": -79,
"rssiPeer": -75,
"sgtin": "xxx",
"unreach": false
},
{
"deviceType": "TRV",
"lowBat": false,
"name": "Sèche serviette salle de bain",
"rssi": -55,
"rssiPeer": -56,
"sgtin": "xxx",
"unreach": false
}
],
"iconId": "BATHROOM",
"name": "Salle de bain",
"operationMode": "auto",
"quickVetoEndTime": "2024-03-16T16:41:28.646Z", #<-- timezone UTC
"temperatureSetpoint": 20.5, #<--
"windowState": false
}
DELETE https://api.vaillant-group.com/service-connected-control/end-user-app-api/v1/api/v1/ambisense/facilities/<facility-id>/rooms/1/configuration/quick-veto
PUT https://api.vaillant-group.com/service-connected-control/end-user-app-api/v1/api/v1/ambisense/facilities/<facility-id>/rooms/0/configuration/operation-mode
{
"operationMode": "auto"
}
or
{
"operationMode": "manual"
}
or
{
"operationMode": "off"
}
That looks great, thanks for the thorough information! I'll have a look and see what I can come up with, based on your test data and the reverse engineered endpoints.
https://github.com/signalkraft/myPyllant/commit/df7115346a51c2103fe34b46081f1d84dde6fc59
Bit of progress here, but the HA component side of things is still missing and will take more time.
I'll have a look and see if I can make a PR (I guess it will be easier for me to test things like mode, quick veto and so).
@signalkraft and @thomasgermain also using Ambisense and looking forward for compatibilty in the new myVAILLANT environment! Many, many thanks for your effort to both of you!
It will indeed great for Ambisense users. I will keep an eye on this threat as I am very interested.
Hi :-) I'm very interested because in addition to my underfloor heating, I use 5 VR50 Ambisense for my radiators. And with the multimatic application in H.A, everything worked. But I had to upgrade to MyVaillant. So good luck with the development and many thanks!
Please updated to the latest beta release of the component and let me know if Ambisense rooms work as expected: https://github.com/signalkraft/mypyllant-component/releases/tag/v0.8.0b0
@signalkraft Wow good job! I've just updated the Beta and my VR50s are detected.
@signalkraft it seems working for me too ! Thanks
Edit: It's recognized but I'm unable to change t°, the message is : "Échec de l'appel du service climate/set_temperature. 500, message='Internal Server Error', url=URL('https://api.vaillant-group.com/service-connected-control/end-user-app-api/v1/api/v1/ambisense/facilities/XXXX/rooms/0/configuration/quick-veto')"
@signalkraft just did the update to latest release, but no device was found
`Deze fout is ontstaan door een aangepaste integratie.
Logger: custom_components.mypyllant.coordinator Bron: helpers/update_coordinator.py:318 integratie: myVAILLANT (documentation, issues) First occurred: 22:44:43 (2 gebeurtenissen) Laatst gelogd: 22:44:43
Unexpected error fetching myVAILLANT data: System.init() missing 1 required positional argument: 'properties' Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 318, in _async_refresh self.data = await self._async_update_data() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/mypyllant/coordinator.py", line 165, in _async_update_data data = [ ^ File "/usr/local/lib/python3.12/site-packages/myPyllant/api.py", line 355, in get_systems system = System.from_api( ^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/myPyllant/models.py", line 769, in from_api system: System = super().from_api(data) ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/myPyllant/models.py", line 74, in from_api return cls(data) ^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/pydantic/dataclasses.py", line 322, in new_init handle_extra_init(self, *args, *kwargs) File "/usr/local/lib/python3.12/site-packages/pydantic/dataclasses.py", line 286, in handle_extra_init init(self, args, **{k: v for k, v in kwargs.items() if k in self.__dataclass_fields}) TypeError: System.init__() missing 1 required positional argument: 'properties' `
The Vaillant API has been a bit hit and miss today, 500 errors usually indicate something wrong on their side. Maybe try again tomorrow and let me know if the error persist!
Same problem as @mikyD84, HTTP 500 while setting the quick veto, but the annoying this is that I can set it myPyllant lib directly :/.
I'll dig further tomorrow.
@mikyD84 let me know if https://github.com/signalkraft/mypyllant-component/releases/tag/v0.8.0b1 fixes that error
@signalkraft no not yet, different error now
Deze fout is ontstaan door een aangepaste integratie.
Logger: custom_components.mypyllant.coordinator Bron: helpers/update_coordinator.py:318 integratie: myVAILLANT (documentation, issues) First occurred: 23:21:06 (4 gebeurtenissen) Laatst gelogd: 23:21:26
Unexpected error fetching myVAILLANT data: 'time_program_heating' Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 318, in _async_refresh self.data = await self._async_update_data() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/mypyllant/coordinator.py", line 165, in _async_update_data data = [ ^ File "/usr/local/lib/python3.12/site-packages/myPyllant/api.py", line 355, in get_systems system = System.from_api( ^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/myPyllant/models.py", line 773, in from_api Zone.from_api( File "/usr/local/lib/python3.12/site-packages/myPyllant/models.py", line 383, in from_api data["heating"] = ZoneHeating.from_api( ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/myPyllant/models.py", line 287, in from_api **data["time_program_heating"]
KeyError: 'time_program_heating'
Try https://github.com/signalkraft/mypyllant-component/releases/tag/v0.8.0b2 for both the 500 and the KeyError, please.
Try https://github.com/signalkraft/mypyllant-component/releases/tag/v0.8.0b2 for both the 500 and the KeyError, please.
In H.A, if I change the temperature, the set point changes and resets to the default after several seconds, and I've just noticed the same problem in the MyVaillant ios application. So I think there's a problem on their side for the moment. Have a nice evening ;-)
2 errors :
Enregistreur: myPyllant.api Source: /usr/local/lib/python3.12/site-packages/myPyllant/api.py:1126 S'est produit pour la première fois: 00:05:31 (3 occurrences) Dernier enregistrement: 00:06:59
Could not get RTS data Traceback (most recent call last): File "/usr/local/lib/python3.12/site-packages/myPyllant/api.py", line 1121, in get_rts response = await self.aiohttp_session.get( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/aiohttp/client.py", line 691, in _request await raise_for_status(resp) File "/usr/local/lib/python3.12/site-packages/myPyllant/http_client.py", line 50, in on_raise_for_status response.raise_for_status() File "/usr/local/lib/python3.12/site-packages/aiohttp/client_reqrep.py", line 1060, in raise_for_status raise ClientResponseError( aiohttp.client_exceptions.ClientResponseError: 404, message='Resource Not Found', url=URL('https://api.vaillant-group.com/service-connected-control/vrc700/v1/rts/bb17a8f7-051e-4d39-b0f8-c855086f9e1f/devices')
AND
Enregistreur: myPyllant.api Source: /usr/local/lib/python3.12/site-packages/myPyllant/api.py:1145 S'est produit pour la première fois: 00:05:31 (3 occurrences) Dernier enregistrement: 00:06:59
Could not get MPC data Traceback (most recent call last): File "/usr/local/lib/python3.12/site-packages/myPyllant/api.py", line 1140, in get_mpc response = await self.aiohttp_session.get( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/aiohttp/client.py", line 691, in _request await raise_for_status(resp) File "/usr/local/lib/python3.12/site-packages/myPyllant/http_client.py", line 50, in on_raise_for_status response.raise_for_status() File "/usr/local/lib/python3.12/site-packages/aiohttp/client_reqrep.py", line 1060, in raise_for_status raise ClientResponseError( aiohttp.client_exceptions.ClientResponseError: 404, message='Resource Not Found', url=URL('https://api.vaillant-group.com/service-connected-control/vrc700/v1/hem/bb17a8f7-051e-4d39-b0f8-c855086f9e1f/mpc')
Hi all,
Thanks for your effort. See my feedback using the version https://github.com/signalkraft/mypyllant-component/releases/tag/v0.8.0b2
I have 14 ambisenses splitter in 8 rooms, after updating to 0.8.0b2 I am able to see them as a device within myvaillant HA. Only odd functional issue is the following:
1) Open a device "office" 2) the card shows 18 degree Auto and in the ambisense I can read 18 degree. 3) If I update in the card to 5 degrees, the ambisense moves to 5 degrees however after a few seconds the HA card come back to 18 degree although the ambisense is still displaying 5 degrees. I checked the iOS APP of Myvaillant and it is also showing 18 degree.
In short, the command is send to ambisense and remains active in the ambisense, however the configuration is back to Auto for HA and myvaillant without changing it in the ambisese.
Let me know if you need any sort of log.
Thanks again for your effort.
great job, it works I just switched from Multimatic to myvaillant following the update. It might just be nice if we could choose the duration of modification of the VR50 valve when we change the temperature. Maybe for a next update
Hello everyone!
i got the Upgrade from Multimatic to myvaillant.
@signalkraft i installed your last beta version on HA but i cant see my VR51 devices. Is this a bug or are the devices still missing?
thanks for your help and effort.
- If I update in the card to 5 degrees, the ambisense moves to 5 degrees however after a few seconds the HA card come back to 18 degree although the ambisense is still displaying 5 degrees. I checked the iOS APP of Myvaillant and it is also showing 18 degree.
What do you mean by the ambisense
? The valve itself ?
If myVaillant app is showing 18, the integration will show 18 as well, because the integration will rely on what is coming from vaillant server (as well as the mobile app).
Anyway, you could try to increase Delay before refreshing data after updates
. I personally have set 15 seconds there, to let some time to vaillant server to update accordingly.
- If I update in the card to 5 degrees, the ambisense moves to 5 degrees however after a few seconds the HA card come back to 18 degree although the ambisense is still displaying 5 degrees. I checked the iOS APP of Myvaillant and it is also showing 18 degree.
What do you mean by
the ambisense
? The valve itself ? If myVaillant app is showing 18, the integration will show 18 as well, because the integration will rely on what is coming from vaillant server (as well as the mobile app).Anyway, you could try to increase
Delay before refreshing data after updates
. I personally have set 15 seconds there, to let some time to vaillant server to update accordingly.
Yes , ambisense I meant VR50 valve. I changed the configuration mentioned to 15 seconds and rebooted HA. I tried again with similar results, this time I activated the debug log to try to catch what happens.
logs:
024-03-20 09:10:18.460 ERROR (MainThread) [pyhap.characteristic] TargetHeatingCoolingState: value=0 is an invalid value. 2024-03-20 09:15:47.951 DEBUG (MainThread) [custom_components.mypyllant.climate] Setting temperature on despacho with params {'entity_id': ['climate.casa_despacho'], 'temperature': 8.0} 2024-03-20 09:15:47.952 DEBUG (MainThread) [custom_components.mypyllant.climate] Setting quick veto on despacho with params {'temperature': 8.0} 2024-03-20 09:15:53.445 DEBUG (MainThread) [custom_components.mypyllant.coordinator] Manually updated myVAILLANT data 2024-03-20 09:15:53.490 DEBUG (MainThread) [custom_components.mypyllant.coordinator] Waiting 15s before refreshing data 2024-03-20 09:16:08.490 DEBUG (MainThread) [custom_components.mypyllant.coordinator] Starting async update data for SystemCoordinator 2024-03-20 09:16:08.491 DEBUG (MainThread) [custom_components.mypyllant.coordinator] Refreshing token for mymail@maymail.com 2024-03-20 09:16:10.162 DEBUG (MainThread) [custom_components.mypyllant.climate] Removing quick veto on despacho 2024-03-20 09:16:10.374 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [547229160000] 409, message='Conflict', url=URL('https://api.vaillant-group.com/service-connected-control/end-user-app-api/v1/api/v1/ambisense/facilities/f7704a95-376b-4c6c-bd1e-06544768de72/rooms/7/configuration/quick-veto') Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 239, in handle_call_service response = await hass.services.async_call( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/core.py", line 2319, in async_call response_data = await coro ^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/core.py", line 2356, in _execute_service return await target(service_call) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 905, in entity_service_call single_response = await _handle_entity_call( ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 975, in _handle_entity_call result = await task ^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/components/climate/init.py", line 716, in async_handle_set_preset_mode_service await self.async_set_preset_mode(preset_mode) File "/config/custom_components/mypyllant/climate.py", line 827, in async_set_preset_mode await self.remove_quick_veto() File "/config/custom_components/mypyllant/climate.py", line 780, in remove_quick_veto await self.coordinator.api.cancel_quick_veto_ambisense_room(self.room) File "/usr/local/lib/python3.12/site-packages/myPyllant/api.py", line 1268, in cancel_quick_veto_ambisense_room await self.aiohttp_session.delete(url, headers=self.get_authorized_headers()) File "/usr/local/lib/python3.12/site-packages/aiohttp/client.py", line 691, in _request await raise_for_status(resp) File "/usr/local/lib/python3.12/site-packages/myPyllant/http_client.py", line 50, in on_raise_for_status response.raise_for_status() File "/usr/local/lib/python3.12/site-packages/aiohttp/client_reqrep.py", line 1060, in raise_for_status raise ClientResponseError( aiohttp.client_exceptions.ClientResponseError: 409, message='Conflict', url=URL('https://api.vaillant-group.com/service-connected-control/end-user-app-api/v1/api/v1/ambisense/facilities/f7704a95-376b-4c6c-bd1e-06544768de72/rooms/7/configuration/quick-veto') 2024-03-20 09:16:13.565 DEBUG (MainThread) [custom_components.mypyllant.coordinator] Finished fetching myVAILLANT data in 5.075 seconds (success: True) 2024-03-20 09:16:19.895 DEBUG (MainThread) [custom_components.mypyllant.climate] Setting temperature on despacho with params {'entity_id': ['climate.casa_despacho'], 'temperature': 8.0} 2024-03-20 09:16:19.895 DEBUG (MainThread) [custom_components.mypyllant.climate] Setting quick veto on despacho with params {'temperature': 8.0} 2024-03-20 09:16:19.986 DEBUG (MainThread) [custom_components.mypyllant.coordinator] Manually updated myVAILLANT data 2024-03-20 09:16:20.029 DEBUG (MainThread) [custom_components.mypyllant.coordinator] Waiting 15s before refreshing data 2024-03-20 09:16:27.031 DEBUG (MainThread) [custom_components.mypyllant.coordinator] Manually updated myVAILLANT data 2024-03-20 09:16:27.073 DEBUG (MainThread) [custom_components.mypyllant.coordinator] Waiting 15s before refreshing data 2024-03-20 09:16:31.177 DEBUG (MainThread) [custom_components.mypyllant.climate] Setting temperature on despacho with params {'entity_id': ['climate.casa_despacho'], 'temperature': 10.0} 2024-03-20 09:16:31.177 DEBUG (MainThread) [custom_components.mypyllant.climate] Setting quick veto on despacho with params {'temperature': 10.0} 2024-03-20 09:16:31.310 DEBUG (MainThread) [custom_components.mypyllant.coordinator] Manually updated myVAILLANT data 2024-03-20 09:16:31.355 DEBUG (MainThread) [custom_components.mypyllant.coordinator] Waiting 15s before refreshing data 2024-03-20 09:16:35.031 DEBUG (MainThread) [custom_components.mypyllant.coordinator] Starting async update data for SystemCoordinator 2024-03-20 09:16:35.031 DEBUG (MainThread) [custom_components.mypyllant.coordinator] Waiting 96s until token refresh for mymail@maymail.com 2024-03-20 09:16:37.683 DEBUG (MainThread) [custom_components.mypyllant.coordinator] Finished fetching myVAILLANT data in 2.652 seconds (success: True) 2024-03-20 09:16:47.731 DEBUG (MainThread) [custom_components.mypyllant.coordinator] Starting async update data for SystemCoordinator 2024-03-20 09:16:47.732 DEBUG (MainThread) [custom_components.mypyllant.coordinator] Waiting 83s until token refresh for mymail@maymail.com
Thanks in advance,
This beta release also worked for me. I must say that this integration provides much more information than multimatic. Thank you.
https://github.com/signalkraft/mypyllant-component/releases/tag/v0.8.0b3
Should have support for setting the target temperature in manual mode.
Every since switching to the beta version (v0.8.0b4) to try my Ambisense system, I have no devices or entities showing - my account details are correct. Using V7.0.4 by main heating loops were shown - Home, Home Circuit 0, Home Circuit 1, Home Domestic Hot Water 0 and Home Zone ZONE 1 (Circuit 0).
My system logs, one error followed by multiple warning are given. The error and first warning are shown below.
Thank you to everyone for all the hard work on this software.
Logger: custom_components.mypyllant.coordinator Source: helpers/update_coordinator.py:318 integration: myVAILLANT (documentation, issues) First occurred: 09:09:18 (3 occurrences) Last logged: 15:47:58
Unexpected error fetching myVAILLANT data: 'NoneType' object has no attribute 'upper' Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 318, in _async_refresh self.data = await self._async_update_data() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/mypyllant/coordinator.py", line 169, in _async_update_data data = [ ^ File "/usr/local/lib/python3.12/site-packages/myPyllant/api.py", line 355, in get_systems system = System.from_api( ^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/myPyllant/models.py", line 810, in from_api AmbisenseRoom.from_api(system_id=system.id, **r) for r in ambisense_rooms ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/myPyllant/models.py", line 736, in from_api data["room_configuration"] = AmbisenseRoomConfiguration.from_api( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/myPyllant/models.py", line 717, in from_api data["operation_mode"].upper() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: 'NoneType' object has no attribute 'upper'
And warnings of the form...
Logger: custom_components.mypyllant.binary_sensor Source: custom_components/mypyllant/binary_sensor.py:33 integration: myVAILLANT (documentation, issues) First occurred: 09:09:19 (3 occurrences) Last logged: 15:47:59
No system data, skipping binary sensors
These entities seem to have been lost between v0.7.4 and v0.8.0b:
The myVaillant app shows: With v0.7.4 installed I see: With v0.8.0b4 installed I see: Is that intentional, have they been missed or am I doing something wrong?
Switched from Multimatic to MyVaillant this week and installed this integration today as the old one did not work anymore. Missed the Ambisense radiator knobs and found this thread. Great to see the dev @thomasgermain from the Multimatic integration partnering up with @signalkraft to add this to his integration. That is the true power of opensource.
After getting the beta release I can confirm the finding from @camhef that are some things removed:
Please enable the RTS & MPC options in the configuration of the integration, they're off by default because a lot of users got 404 errors all the time. There will be a big warning about this in the release notes of the final release as well.
The fix above and everything else done to enable ambisense has been greatly appreciated. Thank you.
Great job! ambisense devices are finally available in HA as climate entities. But calendars are not available, although timeprogram
is in the response (see below). Is this feature already implemented?
[
{
"roomIndex": 0,
"roomConfiguration": {
"name": "Entrance",
"temperatureSetpoint": 22,
"operationMode": "auto",
"currentTemperature": 24.1,
"currentHumidity": null,
"buttonLock": null,
"windowState": false,
"devices": [
{
"name": "Entrance",
"sgtin": "XXX1",
"deviceType": "TRV",
"lowBat": false,
"unreach": false,
"rssi": -72,
"rssiPeer": -69
}
],
"iconId": "HOBBY_ROOM",
"quickVetoEndTime": null
},
"timeprogram": {
"monday": [],
"tuesday": [],
"wednesday": [],
"thursday": [],
"friday": [],
"saturday": [],
"sunday": []
}
},
{
"roomIndex": 3,
"roomConfiguration": {
"name": "Bedroom",
"temperatureSetpoint": 4.5,
"operationMode": "off",
"currentTemperature": 23.4,
"currentHumidity": null,
"buttonLock": null,
"windowState": false,
"devices": [
{
"name": "Bedroom",
"sgtin": "XXX2",
"deviceType": "TRV",
"lowBat": false,
"unreach": false,
"rssi": -55,
"rssiPeer": -60
}
],
"iconId": "BEDROOM",
"quickVetoEndTime": null
},
"timeprogram": {
"monday": [],
"tuesday": [],
"wednesday": [],
"thursday": [],
"friday": [],
"saturday": [],
"sunday": []
}
},
{
"roomIndex": 1,
"roomConfiguration": {
"name": "Office",
"temperatureSetpoint": 20,
"operationMode": "auto",
"currentTemperature": 21.7,
"currentHumidity": null,
"buttonLock": false,
"windowState": false,
"devices": [
{
"name": "Office",
"sgtin": "XXX3",
"deviceType": "TRV",
"lowBat": false,
"unreach": false,
"rssi": -75,
"rssiPeer": -75
}
],
"iconId": "OFFICE",
"quickVetoEndTime": null
},
"timeprogram": {
"monday": [
{
"startTime": 0,
"temperatureSetpoint": 19
},
{
"startTime": 360,
"temperatureSetpoint": 20
},
{
"startTime": 1260,
"temperatureSetpoint": 19
}
],
"tuesday": [
{
"startTime": 0,
"temperatureSetpoint": 19
},
{
"startTime": 360,
"temperatureSetpoint": 20
},
{
"startTime": 1260,
"temperatureSetpoint": 19
}
],
"wednesday": [
{
"startTime": 0,
"temperatureSetpoint": 19
},
{
"startTime": 360,
"temperatureSetpoint": 20
},
{
"startTime": 1260,
"temperatureSetpoint": 19
}
],
"thursday": [
{
"startTime": 0,
"temperatureSetpoint": 19
},
{
"startTime": 360,
"temperatureSetpoint": 20
},
{
"startTime": 1260,
"temperatureSetpoint": 19
}
],
"friday": [
{
"startTime": 0,
"temperatureSetpoint": 19
},
{
"startTime": 360,
"temperatureSetpoint": 20
},
{
"startTime": 1260,
"temperatureSetpoint": 19
}
],
"saturday": [
{
"startTime": 0,
"temperatureSetpoint": 19
},
{
"startTime": 360,
"temperatureSetpoint": 20
},
{
"startTime": 1260,
"temperatureSetpoint": 19
}
],
"sunday": [
{
"startTime": 0,
"temperatureSetpoint": 19
},
{
"startTime": 360,
"temperatureSetpoint": 20
},
{
"startTime": 1260,
"temperatureSetpoint": 19
}
]
}
},
{
"roomIndex": 4,
"roomConfiguration": {
"name": "Kids",
"temperatureSetpoint": 4.5,
"operationMode": "off",
"currentTemperature": 20,
"currentHumidity": null,
"buttonLock": null,
"windowState": false,
"devices": [
{
"name": "Kids",
"sgtin": "XXX4",
"deviceType": "TRV",
"lowBat": false,
"unreach": false,
"rssi": -75,
"rssiPeer": -71
}
],
"iconId": "CHILDREN_ROOM",
"quickVetoEndTime": null
},
"timeprogram": {
"monday": [],
"tuesday": [],
"wednesday": [],
"thursday": [],
"friday": [],
"saturday": [],
"sunday": []
}
},
{
"roomIndex": 2,
"roomConfiguration": {
"name": "Living room",
"temperatureSetpoint": 20,
"operationMode": "auto",
"currentTemperature": 22.9,
"currentHumidity": null,
"buttonLock": false,
"windowState": false,
"devices": [
{
"name": "Living room",
"sgtin": "XXX5",
"deviceType": "TRV",
"lowBat": false,
"unreach": false,
"rssi": -66,
"rssiPeer": -65
}
],
"iconId": "LIVING_ROOM",
"quickVetoEndTime": null
},
"timeprogram": {
"monday": [
{
"startTime": 0,
"temperatureSetpoint": 19
},
{
"startTime": 420,
"temperatureSetpoint": 20
},
{
"startTime": 1320,
"temperatureSetpoint": 19
}
],
"tuesday": [
{
"startTime": 0,
"temperatureSetpoint": 19
},
{
"startTime": 420,
"temperatureSetpoint": 20
},
{
"startTime": 1320,
"temperatureSetpoint": 19
}
],
"wednesday": [
{
"startTime": 0,
"temperatureSetpoint": 19
},
{
"startTime": 420,
"temperatureSetpoint": 20
},
{
"startTime": 1320,
"temperatureSetpoint": 19
}
],
"thursday": [
{
"startTime": 0,
"temperatureSetpoint": 19
},
{
"startTime": 420,
"temperatureSetpoint": 20
},
{
"startTime": 1320,
"temperatureSetpoint": 19
}
],
"friday": [
{
"startTime": 0,
"temperatureSetpoint": 19
},
{
"startTime": 420,
"temperatureSetpoint": 20
},
{
"startTime": 1320,
"temperatureSetpoint": 19
}
],
"saturday": [
{
"startTime": 0,
"temperatureSetpoint": 19
},
{
"startTime": 420,
"temperatureSetpoint": 20
},
{
"startTime": 1410,
"temperatureSetpoint": 19
}
],
"sunday": [
{
"startTime": 0,
"temperatureSetpoint": 19
},
{
"startTime": 420,
"temperatureSetpoint": 20
},
{
"startTime": 1410,
"temperatureSetpoint": 19
}
]
}
}
]
Is this feature already implemented?
No, someone would need to tell me the endpoints for timeprograms on Ambisense devices. @thomasgermain did you have time to check for the endpoint?
Hi everyone!
Still cant see my VR 51 thermostats.
Is this feature already implemented?
No, someone would need to tell me the endpoints for timeprograms on Ambisense devices. @thomasgermain did you have time to check for the endpoint?
GET/PUT to url = f"{await self.get_api_base()}/api/v1/ambisense/facilities/{room.system_id}/rooms/{room.room_index}/timeprogram"
. I'm busy creating a PR, only PUT is needed I guess ? Timeprogram is already available via get_ambisense_rooms
Hi everyone!
Still cant see my VR 51 thermostats.
@Grabax Do you have any errors in the log ?
My system logs, one error followed by multiple warning are given. The error and first warning are shown below.
@dcowell Could you generate test data (-> https://github.com/signalkraft/myPyllant?tab=readme-ov-file#contributing-test-data).
only PUT is needed I guess
I think so!
@dcowell Could you generate test data
You can also use the home assistant service.
only PUT is needed I guess
I think so!
@dcowell Could you generate test data
You can also use the home assistant service.
Thank you @signalkraft for looking at this. I have removed some digits from the first three serial numbers and IDs. I hope this is ok - if not, please let me know and I'll sort it out. Happy to test anything if it would assist.
homes:
- homeName: 99d73f365c9fa331f33b13c2ee5c3568699f
serialNumber: 07d0a780d5fb5df9c65a1482dcd5d273bdac
systemId: e89f1adbbd1d543633bc749643814ea0cc6f
productMetadata:
productType: VR920
productionYear: "19"
productionWeek: "21"
articleNumber: "0020252923"
state: CLAIMED
migrationState: FINISHED
migrationFinishedAt: "2024-03-20T09:54:29.371206854Z"
onlineState: ONLINE
firmware:
version: 0357.40.34
updateEnabled: true
updateRequired: false
nomenclature: VR 920
cag: false
countryCode: GB
productInformation: VR920
firmwareVersion: 0357.40.34
e89f1adbbd1d543633bc749643814ea0cc6f:
control_identifier:
controlIdentifier: vrc700
time_zone:
timeZone: Europe/London
diagnostic_trouble_codes:
- serialNumber: 9080034f05a2b6a352f916820632e6149fe04338
articleNumber: "0020197207"
codes:
- code: "3"
type: MAINTENANCE
title: Issues with your heating system
description: Your heating system reported errors. Please check it.
occurrenceTimestamp: "2024-03-20T09:57:52Z"
- serialNumber: daba3c52fc18b581738a132c0a02f0238b98bea8
articleNumber: "0010021832"
codes: []
- serialNumber: 07d0a780d5fb5df9c65a1482dcd5d273bdacf210
articleNumber: "0020252923"
codes: []
- serialNumber: 7859ddbacb164eb95510e1bc6241d74bd3f365b2
articleNumber: "0000000000"
codes: []
connection_status:
connected: true
system:
state:
system:
outdoorTemperature: 4.5664062
outdoorTemperatureAverage24h: 7.2109375
systemWaterPressure: 1.6
legionellaProtectionStartWeekday: "OFF"
energyManagerState: HEATING
systemOff: false
zones:
- index: 0
desiredRoomTemperatureSetpointHeating: 20
desiredRoomTemperatureSetpoint: 20
currentRoomTemperature: 14.125
currentRoomHumidity: 57
currentSpecialFunction: NONE
circuits:
- index: 0
circuitState: HEATING
currentCircuitFlowTemperature: 64.5
heatingCircuitFlowSetpoint: 63.86703
calculatedEnergyManagerState: HEATING_ACTIVE
- index: 2
circuitState: STANDBY
heatingCircuitFlowSetpoint: 0
calculatedEnergyManagerState: HEATING_STANDBY
domesticHotWater:
- index: 255
currentSpecialFunction: NONE
currentDomesticHotWaterTemperature: 65.125
properties:
system:
controllerType: VRC700
controllerRevision: R4
systemScheme: 2
backupHeaterType: CONDENSING
backupHeaterAllowedFor: DOMESTIC_HOT_WATER_AND_HEATING
moduleConfigurationVR71: 3
energyProvidePowerCutBehavior: DISABLE_HEATPUMP
smartPhotovoltaicBufferOffset: 10
externalEnergyManagementActivation: false
zones:
- index: 0
isActive: true
zoneBinding: CENTRAL_CONTROL
associatedCircuitIndex: 0
circuits:
- index: 0
mixerCircuitTypeExternal: HEATING
heatingCircuitType: DIRECT_HEATING_CIRCUIT
isCoolingAllowed: false
- index: 2
mixerCircuitTypeExternal: HEATING
heatingCircuitType: DIRECT_HEATING_CIRCUIT
isCoolingAllowed: false
domesticHotWater:
- index: 255
minSetpoint: 35
maxSetpoint: 70
configuration:
system:
continuousHeatingStartSetpoint: -26
alternativePoint: -21
heatingCircuitBivalencePoint: 0
domesticHotWaterBivalencePoint: -7
adaptiveHeatingCurve: false
domesticHotWaterMaximumLoadingTime: 45
domesticHotWaterHysteresis: 5
domesticHotWaterFlowSetpointOffset: 25
maxFlowSetpointHeatpumpError: 25
domesticHotWaterMaximumTemperature: 80
hybridControlStrategy: BIVALENCE_POINT
paralellTankLoadingAllowed: false
zones:
- index: 0
general:
name: ZONE 1
holidayStartDateTime: "2015-01-01T00:00:00Z"
holidayEndDateTime: "2015-01-01T00:00:00Z"
holidaySetpoint: 5
heating:
operationModeHeating: DAY
setBackTemperature: 15
dayTemperatureHeating: 20
timeProgramHeating:
metaInfo:
minSlotsPerDay: 0
maxSlotsPerDay: 3
setpointRequiredPerSlot: false
monday:
- startTime: 300
endTime: 1440
tuesday:
- startTime: 300
endTime: 1440
wednesday:
- startTime: 300
endTime: 1440
thursday:
- startTime: 300
endTime: 1440
friday:
- startTime: 300
endTime: 1440
saturday:
- startTime: 450
endTime: 1410
sunday:
- startTime: 450
endTime: 1320
circuits:
- index: 0
heatingCurve: 2.599999
heatingFlowTemperatureMinimumSetpoint: 15
heatingFlowTemperatureMaximumSetpoint: 90
heatDemandLimitedByOutsideTemperature: 50
heatingCircuitFlowSetpointExcessOffset: 0
setbackModeEnabled: true
roomTemperatureControlMode: NON
- index: 2
heatingCurve: 1.2
heatingFlowTemperatureMinimumSetpoint: 15
heatingFlowTemperatureMaximumSetpoint: 90
heatDemandLimitedByOutsideTemperature: 21
heatingCircuitFlowSetpointExcessOffset: 0
setbackModeEnabled: false
roomTemperatureControlMode: NON
domesticHotWater:
- index: 255
operationModeDomesticHotWater: AUTO
tappingSetpoint: 65
holidayStartDateTime: "2015-01-01T00:00:00Z"
holidayEndDateTime: "2015-01-01T00:00:00Z"
timeProgramDomesticHotWater:
metaInfo:
minSlotsPerDay: 0
maxSlotsPerDay: 3
setpointRequiredPerSlot: false
monday:
- startTime: 330
endTime: 420
- startTime: 1200
endTime: 1230
tuesday:
- startTime: 330
endTime: 420
- startTime: 1200
endTime: 1230
wednesday:
- startTime: 330
endTime: 420
- startTime: 1200
endTime: 1230
thursday:
- startTime: 330
endTime: 420
- startTime: 1200
endTime: 1230
friday:
- startTime: 330
endTime: 420
- startTime: 1200
endTime: 1230
saturday:
- startTime: 330
endTime: 420
- startTime: 1200
endTime: 1230
sunday:
- startTime: 330
endTime: 420
- startTime: 1200
endTime: 1230
timeProgramCirculationPump:
metaInfo:
minSlotsPerDay: 0
maxSlotsPerDay: 3
setpointRequiredPerSlot: false
monday:
- startTime: 360
endTime: 1320
tuesday:
- startTime: 360
endTime: 1320
wednesday:
- startTime: 360
endTime: 1320
thursday:
- startTime: 360
endTime: 1320
friday:
- startTime: 360
endTime: 1320
saturday:
- startTime: 450
endTime: 1410
sunday:
- startTime: 450
endTime: 1320
current_system:
system_type: UNKNOWN
has_emf_capable_devices: false
primary_heat_generator: null
secondary_heat_generators: []
electric_backup_heater: null
solar_station: null
ventilation: null
gateway: null
mpc:
devices: []
rts:
statistics: []
rbr:
rbrCapable: true
rooms:
- roomIndex: 0
roomConfiguration:
name: Kitchen
temperatureSetpoint: 17
operationMode: auto
currentTemperature: 16.9
currentHumidity: null
buttonLock: false
windowState: false
devices:
- name: Kitchen Rad
sgtin: 3014F59C280013D9B00044B0
deviceType: TRV
lowBat: false
unreach: false
rssi: -55
rssiPeer: -55
iconId: KITCHEN
quickVetoEndTime: null
timeprogram:
monday:
- startTime: 0
temperatureSetpoint: 17
tuesday:
- startTime: 0
temperatureSetpoint: 17
wednesday:
- startTime: 0
temperatureSetpoint: 17
thursday:
- startTime: 0
temperatureSetpoint: 17
friday:
- startTime: 0
temperatureSetpoint: 17
saturday:
- startTime: 0
temperatureSetpoint: 17
sunday:
- startTime: 0
temperatureSetpoint: 17
- roomIndex: 5
roomConfiguration:
name: Pippa Bedroom
temperatureSetpoint: null
operationMode: null
currentTemperature: null
currentHumidity: null
buttonLock: null
windowState: null
devices:
- name: Pippa Bedroom Rad
sgtin: 3014F59C280013DCF0000A2B
deviceType: TRV
lowBat: null
unreach: true
rssi: null
rssiPeer: null
iconId: BEDROOM
quickVetoEndTime: null
timeprogram:
monday: []
tuesday: []
wednesday: []
thursday: []
friday: []
saturday: []
sunday: []
- roomIndex: 3
roomConfiguration:
name: Master Bedroom
temperatureSetpoint: 19
operationMode: auto
currentTemperature: 20.2
currentHumidity: null
buttonLock: false
windowState: false
devices:
- name: Master Bedroom Rad
sgtin: 3014F59C280013DCF00009CC
deviceType: TRV
lowBat: false
unreach: false
rssi: -69
rssiPeer: -68
iconId: BEDROOM
quickVetoEndTime: null
timeprogram:
monday:
- startTime: 0
temperatureSetpoint: 20
- startTime: 360
temperatureSetpoint: 19
- startTime: 1260
temperatureSetpoint: 20
tuesday:
- startTime: 0
temperatureSetpoint: 20
- startTime: 360
temperatureSetpoint: 19
- startTime: 1260
temperatureSetpoint: 20
wednesday:
- startTime: 0
temperatureSetpoint: 20
- startTime: 360
temperatureSetpoint: 19
- startTime: 1260
temperatureSetpoint: 20
thursday:
- startTime: 0
temperatureSetpoint: 20
- startTime: 360
temperatureSetpoint: 19
- startTime: 1260
temperatureSetpoint: 20
friday:
- startTime: 0
temperatureSetpoint: 20
- startTime: 360
temperatureSetpoint: 19
- startTime: 1260
temperatureSetpoint: 20
saturday:
- startTime: 0
temperatureSetpoint: 20
- startTime: 360
temperatureSetpoint: 19
- startTime: 1260
temperatureSetpoint: 20
sunday:
- startTime: 0
temperatureSetpoint: 20
- startTime: 360
temperatureSetpoint: 19
- startTime: 1260
temperatureSetpoint: 20
- roomIndex: 1
roomConfiguration:
name: Dining Room
temperatureSetpoint: 15
operationMode: auto
currentTemperature: 17
currentHumidity: null
buttonLock: false
windowState: false
devices:
- name: Dining Room Rad
sgtin: 3014F59C280013D9B000451C
deviceType: TRV
lowBat: false
unreach: false
rssi: -66
rssiPeer: -66
iconId: DINING_ROOM
quickVetoEndTime: null
timeprogram:
monday:
- startTime: 0
temperatureSetpoint: 15
tuesday:
- startTime: 0
temperatureSetpoint: 15
wednesday:
- startTime: 0
temperatureSetpoint: 15
thursday:
- startTime: 0
temperatureSetpoint: 15
friday:
- startTime: 0
temperatureSetpoint: 15
saturday:
- startTime: 0
temperatureSetpoint: 15
sunday:
- startTime: 0
temperatureSetpoint: 15
- roomIndex: 4
roomConfiguration:
name: Joseph Bedroom
temperatureSetpoint: 18
operationMode: auto
currentTemperature: 20.1
currentHumidity: null
buttonLock: null
windowState: false
devices:
- name: Joseph Bedroom Rad
sgtin: 3014F59C280013DCF0000AAA
deviceType: TRV
lowBat: false
unreach: false
rssi: -76
rssiPeer: -69
iconId: BEDROOM
quickVetoEndTime: null
timeprogram:
monday: []
tuesday: []
wednesday: []
thursday: []
friday: []
saturday: []
sunday: []
- roomIndex: 2
roomConfiguration:
name: Living Room
temperatureSetpoint: 18
operationMode: auto
currentTemperature: 19.7
currentHumidity: null
buttonLock: null
windowState: false
devices:
- name: Living Room Rad
sgtin: 3014F59C280013D9B0004A03
deviceType: TRV
lowBat: false
unreach: false
rssi: -70
rssiPeer: -72
iconId: LIVING_ROOM
quickVetoEndTime: null
timeprogram:
monday: []
tuesday: []
wednesday: []
thursday: []
friday: []
saturday: []
sunday: []
@thomasgermain i checked the Log and yes i get Errors! And Unfortunately is it not VR 51 Thermostats, it was VR50s so my mistake
i hope someone can help :)
Here is a preview from the Debug Log :
2024-03-25 05:52:30.690 DEBUG (MainThread) [custom_components.mypyllant.climate] Setting up zone climate entity services for <EntityPlatform domain=climate platform_name=mypyllant config_entry=<homeassistant.config_entries.ConfigEntry object at 0x7faa1032c130>> 2024-03-25 05:52:30.703 ERROR (MainThread) [homeassistant.components.climate] Error adding entities for domain climate with platform mypyllant Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 507, in async_add_entities await asyncio.gather(tasks) File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 662, in _async_add_entity capabilities=entity.capability_attributes, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/components/climate/init.py", line 276, in capability_attributes supported_features = self.supported_features ^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/mypyllant/climate.py", line 515, in supported_features | ClimateEntityFeature.TURN_OFF ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/enum.py", line 784, in getattr raise AttributeError(name) from None AttributeError: TURN_OFF 2024-03-25 05:52:30.712 ERROR (MainThread) [homeassistant.components.climate] Error adding entities for domain climate with platform mypyllant Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 507, in async_add_entities await asyncio.gather(tasks) File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 662, in _async_add_entity capabilities=entity.capability_attributes, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/components/climate/init.py", line 276, in capability_attributes supported_features = self.supported_features ^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/mypyllant/climate.py", line 828, in supported_features | ClimateEntityFeature.TURN_OFF ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/enum.py", line 784, in getattr raise AttributeError(name) from None AttributeError: TURN_OFF 2024-03-25 05:52:30.718 ERROR (MainThread) [homeassistant.components.climate] Error while setting up mypyllant platform for climate Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 367, in _async_setup_platform await asyncio.gather(pending) File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 507, in async_add_entities await asyncio.gather(tasks) File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 662, in _async_add_entity capabilities=entity.capability_attributes, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/components/climate/init.py", line 276, in capability_attributes supported_features = self.supported_features ^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/mypyllant/climate.py", line 515, in supported_features | ClimateEntityFeature.TURN_OFF ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/enum.py", line 784, in getattr raise AttributeError(name) from None AttributeError: TURN_OFF
@Grabax you need to update to at least HA 2024.2.
@dcowell thanks for the test data, I integrated it and fixed a few things. Should work in the latest beta version.
For everyone else: There's experimental support for ambisense time programs in v0.8.3b0 with the set_time_program
service and a calendar entity. Especially the latter is very experimental, because Ambisense room thermostats work differently than the other time schedules.
@dcowell thanks for the test data, I integrated it and fixed a few things. Should work in the latest beta version.
Thankyou @signalkraft - I can now see my Ambisense system. That is fantastic!
@signalkraft now it is working Thanks! :)
hello,
it should be also interesting to have the following data: VR50 ambisense battery level and link quality
thank you in advance
hello,
it should be also interesting to have the following data: VR50 ambisense battery level and link quality
thank you in advance
I can see battery and signal information available in the state attribute of my TRVs
devices:
- extra_fields: {}
device_type: TRV
name: Cloakroom radiator
sgtin: 3014F59***
unreach: false
low_bat: false
rssi: -82
rssi_peer: -69
but it might take a bit of effort to extract the data and make it useful.
Oh yes, I didn't pay attention to this info. I know how to retrieve that then. Thank you for pointing g me in this direction.
EL
After update from 0.8.3
to 0.8.11
I lost all my ambisense thermostats. I downgraded the component to 0.8.3
, but ambisense thermostats were still missing.
I found that this because Vaillant API returns
Starting GET to https://api.vaillant-group.com/service-connected-control/end-user-app-api/v1/api/v1/ambisense/facilities/XXX/capability
Got response for GET to https://api.vaillant-group.com/service-connected-control/end-user-app-api/v1/api/v1/ambisense/facilities/XXX/capability: {"rbrCapable":false}
So, I just set ambisense_capability = True
inmyPyllant/api.py
to avoid rbrCapable
check. And surprisingly it worked.
2024-07-07 20:29:54.065 DEBUG (MainThread) [myPyllant.http_client] Starting request TraceRequestStartParams(method='GET', url=URL('https://api.vaillant-group.com/service-connected-control/end-user-app-api/v1/api/v1/ambisense/facilities/XXX/rooms'), ...
2024-07-07 20:29:54.498 DEBUG (MainThread) [myPyllant.http_client] Got response [{"roomIndex":0,"roomConfiguration":{"name":"Прихожая","temperatureSetpoint":21.0,"operationMode":"auto","currentTemperature":28.0,"currentHumidity":null,"buttonLock":false,"windowState":false,"devices":[{"name":"Прихожая","sgtin":"3014F59C28000A19B0000419","deviceType":"TRV","lowBat":false,"unreach":false,"rssi":-71,"rssiPeer":-72}],"iconId":"HOBBY_ROOM","quickVetoEndTime":null},"timeprogram":{"monday":[{"startTime":0,"temperatureSetpoint":18.0},{"startTime":360,"temperatureSetpoint":21.0},{"startTime":1200,"temperatureSetpoint":18.0}],"tuesday":[{"startTime":0,"temperatureSetpoint":18.0},{"startTime":360,"temperatureSetpoint":21.0},{"startTime":1200,"temperatureSetpoint":18.0}],"wednesday":[{"startTime":0,"temperatureSetpoint":18.0},{"startTime":360,"temperatureSetpoint":21.0},{"startTime":1200,"temperatureSetpoint":18.0}],"thursday":[{"startTime":0,"temperatureSetpoint":18.0},{"startTime":360,"temperatureSetpoint":21.0},{"startTime":1200,"temperatureSetpoint":18.0}],"friday":[{"startTime":0,"temperatureSetpoint":18.0},{"startTime":360,"temperatureSetpoint":21.0},{"startTime":1200,"temperatureSetpoint":18.0}],"saturday":[{"startTime":0,"temperatureSetpoint":18.0},{"startTime":480,"temperatureSetpoint":21.0},{"startTime":1260,"temperatureSetpoint":18.0}],"sunday":[{"startTime":0,"temperatureSetpoint":18.0},{"startTime":480,"temperatureSetpoint":21.0},{"startTime":1260,"temperatureSetpoint":18.0}]}},{"roomIndex":3,"roomConfiguration":{"name":"Спальня","temperatureSetpoint":22.0,"operationMode":"auto","currentTemperature":30.1,"currentHumidity":null,"buttonLock":false,"windowState":false,"devices":[{"name":"Спальня","sgtin":"3014F59C28000A19B00035BE","deviceType":"TRV","lowBat":false,"unreach":false,"rssi":-58,"rssiPeer":-57}],"iconId":"BEDROOM","quickVetoEndTime":null},"timeprogram":{"monday":[{"startTime":0,"temperatureSetpoint":19.0},{"startTime":360,"temperatureSetpoint":22.0},{"startTime":570,"temperatureSetpoint":19.0},{"startTime":1020,"temperatureSetpoint":22.0},{"startTime":1320,"temperatureSetpoint":19.0}],"tuesday":[{"startTime":0,"temperatureSetpoint":19.0},{"startTime":360,"temperatureSetpoint":22.0},{"startTime":570,"temperatureSetpoint":19.0},{"startTime":1020,"temperatureSetpoint":22.0},{"startTime":1320,"temperatureSetpoint":19.0}],"wednesday":[{"startTime":0,"temperatureSetpoint":19.0},{"startTime":360,"temperatureSetpoint":22.0},{"startTime":570,"temperatureSetpoint":19.0},{"startTime":1020,"temperatureSetpoint":22.0},{"startTime":1320,"temperatureSetpoint":19.0}],"thursday":[{"startTime":0,"temperatureSetpoint":19.0},{"startTime":360,"temperatureSetpoint":22.0},{"startTime":570,"temperatureSetpoint":19.0},{"startTime":1020,"temperatureSetpoint":22.0},{"startTime":1320,"temperatureSetpoint":19.0}],"friday":[{"startTime":0,"temperatureSetpoint":19.0},{"startTime":360,"temperatureSetpoint":22.0},{"startTime":570,"temperatureSetpoint":19.0},{"startTime":1020,"temperatureSetpoint":22.0},{"startTime":1320,"temperatureSetpoint":19.0}],"saturday":[{"startTime":0,"temperatureSetpoint":19.0},{"startTime":360,"temperatureSetpoint":22.0},{"startTime":1320,"temperatureSetpoint":19.0}],"sunday":[{"startTime":0,"temperatureSetpoint":19.0},{"startTime":360,"temperatureSetpoint":22.0},{"startTime":1320,"temperatureSetpoint":19.0}]}},{"roomIndex":1,"roomConfiguration":{"name":"Офис","temperatureSetpoint":20.0,"operationMode":"auto","currentTemperature":29.5,"currentHumidity":null,"buttonLock":false,"windowState":false,"devices":[{"name":"Офис","sgtin":"3014F59C28000A19B000415A","deviceType":"TRV","lowBat":false,"unreach":false,"rssi":-77,"rssiPeer":-80}],"iconId":"OFFICE","quickVetoEndTime":null},"timeprogram":{"monday":[{"startTime":0,"temperatureSetpoint":19.0},{"startTime":360,"temperatureSetpoint":20.0},{"startTime":1260,"temperatureSetpoint":19.0}],"tuesday":[{"startTime":0,"temperatureSetpoint":19.0},{"startTime":360,"temperatureSetpoint":20.0},{"startTime":1260,"temperatureSetpoint":19.0}],"wednesday":[{"startTime":0,"temperatureSetpoint":19.0},{"startTime":360,"temperatureSetpoint":20.0},{"startTime":1260,"temperatureSetpoint":19.0}],"thursday":[{"startTime":0,"temperatureSetpoint":19.0},{"startTime":360,"temperatureSetpoint":20.0},{"startTime":1260,"temperatureSetpoint":19.0}],"friday":[{"startTime":0,"temperatureSetpoint":19.0},{"startTime":360,"temperatureSetpoint":20.0},{"startTime":1260,"temperatureSetpoint":19.0}],"saturday":[{"startTime":0,"temperatureSetpoint":19.0},{"startTime":360,"temperatureSetpoint":20.0},{"startTime":1260,"temperatureSetpoint":19.0}],"sunday":[{"startTime":0,"temperatureSetpoint":19.0},{"startTime":360,"temperatureSetpoint":20.0},{"startTime":1260,"temperatureSetpoint":19.0}]}},{"roomIndex":4,"roomConfiguration":{"name":"Детская","temperatureSetpoint":22.0,"operationMode":"auto","currentTemperature":28.0,"currentHumidity":null,"buttonLock":null,"windowState":false,"devices":[{"name":"Детская","sgtin":"3014F59C28000A19B0003601","deviceType":"TRV","lowBat":false,"unreach":false,"rssi":-76,"rssiPeer":-75}],"iconId":"CHILDREN_ROOM","quickVetoEndTime":null},"timeprogram":{"monday":[],"tuesday":[],"wednesday":[],"thursday":[],"friday":[],"saturday":[],"sunday":[]}},{"roomIndex":2,"roomConfiguration":{"name":"Гостиная","temperatureSetpoint":20.0,"operationMode":"auto","currentTemperature":29.4,"currentHumidity":null,"buttonLock":false,"windowState":false,"devices":[{"name":"Гостиная","sgtin":"3014F59C28000A19B00017E0","deviceType":"TRV","lowBat":false,"unreach":false,"rssi":-72,"rssiPeer":-70}],"iconId":"LIVING_ROOM","quickVetoEndTime":null},"timeprogram":{"monday":[{"startTime":0,"temperatureSetpoint":19.0},{"startTime":420,"temperatureSetpoint":20.0},{"startTime":1320,"temperatureSetpoint":19.0}],"tuesday":[{"startTime":0,"temperatureSetpoint":19.0},{"startTime":420,"temperatureSetpoint":20.0},{"startTime":1320,"temperatureSetpoint":19.0}],"wednesday":[{"startTime":0,"temperatureSetpoint":19.0},{"startTime":420,"temperatureSetpoint":20.0},{"startTime":1320,"temperatureSetpoint":19.0}],"thursday":[{"startTime":0,"temperatureSetpoint":19.0},{"startTime":420,"temperatureSetpoint":20.0},{"startTime":1320,"temperatureSetpoint":19.0}],"friday":[{"startTime":0,"temperatureSetpoint":19.0},{"startTime":420,"temperatureSetpoint":20.0},{"startTime":1320,"temperatureSetpoint":19.0}],"saturday":[{"startTime":0,"temperatureSetpoint":19.0},{"startTime":420,"temperatureSetpoint":20.0},{"startTime":1410,"temperatureSetpoint":19.0}],"sunday":[{"startTime":0,"temperatureSetpoint":19.0},{"startTime":420,"temperatureSetpoint":20.0},{"startTime":1410,"temperatureSetpoint":19.0}]}}]
As far as I can see, rbrCapable is not needed now. @signalkraft can you please review the situation? If needed, I'm ready to beta-test new releases.
Before requesting a new feature / a new sensor
Describe the feature you want
Hello, I would like: Ambisense, "room" support:
The rooms are basically "overriding" a zone (the zone "ETAGE" in my case). Rooms are managing this zone behind the scene. So, IMO, the climate entity for this zone should not appear anymore in the integration.
Screenshot
Overview of the rooms + zone (coming from top right "four squares"):
Overview of ambisense devices (coming from parameters -> "manage devices"):
Detail of an ambisense device:
Export data
I don't see anything related to ambisense, but maybe you will ? It sounds like another endpoint has to be called, if you have any idea, I can call it. I'm busy doing the https://signalkraft.com/mypyllant-component/3-reverse-engineering/ setup, I'll let you know what I found