mypyllant-component icon indicating copy to clipboard operation
mypyllant-component copied to clipboard

Ambisense support

Open thomasgermain opened this issue 1 year ago • 43 comments

Before requesting a new feature / a new sensor

Describe the feature you want

Hello, I would like: Ambisense, "room" support:

  • climate entity for each room
  • some entity/attribute for each TRV (VR50), like signal, battery. Note, there are VR51 for ambisense (I don't have them), but is should be pretty much the same as VR50.

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"): Screenshot_2024-03-16-07-51-12-85_ab6c4a494f5f354113de683b4ea3527b_

Overview of ambisense devices (coming from parameters -> "manage devices"): Screenshot_2024-03-16-07-51-30-86_ab6c4a494f5f354113de683b4ea3527b

Detail of an ambisense device: Screenshot_2024-03-16-07-51-43-42_ab6c4a494f5f354113de683b4ea3527b

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

aiohttp.client_exceptions.ClientResponseError: 404, message='Resource Not Found', url=URL('https://api.vaillant-group.com/service-connected-control/vrc700/v1/rts/.../devices')
aiohttp.client_exceptions.ClientResponseError: 404, message='Resource Not Found', url=URL('https://api.vaillant-group.com/service-connected-control/vrc700/v1/hem/.../mpc')
[
  {
    "extra_fields": {
      "continuous_heating_start_setpoint": -26.0,
      "alternative_point": -21.0,
      "heating_circuit_bivalence_point": 0.0,
      "dhw_bivalence_point": -7.0,
      "adaptive_heating_curve": true,
      "dhw_maximum_loading_time": 60,
      "dhw_hysteresis": 5.0,
      "dhw_flow_setpoint_offset": 25.0,
      "max_flow_setpoint_heatpump_error": 25.0,
      "dhw_maximum_temperature": 80.0,
      "hybrid_control_strategy": "BIVALENCE_POINT",
      "paralell_tank_loading_allowed": true,
      "outdoor_temperature": 8.0625,
      "outdoor_temperature_average24h": 10.734375,
      "system_water_pressure": 1.9,
      "legionella_protection_start_weekday": "THURSDAY",
      "energy_manager_state": "HEATING",
      "system_off": false,
      "controller_type": "VRC700",
      "controller_revision": "R5",
      "system_scheme": 1,
      "backup_heater_type": "CONDENSING",
      "backup_heater_allowed_for": "DOMESTIC_HOT_WATER_AND_HEATING",
      "module_configuration_v_r71": 3,
      "energy_provide_power_cut_behavior": "DISABLE_HEATPUMP",
      "smart_photovoltaic_buffer_offset": 10.0,
      "external_energy_management_activation": false
    },
    "id": "...",
    "state": {
      "system": {
        "outdoor_temperature": 8.0625,
        "outdoor_temperature_average24h": 10.734375,
        "system_water_pressure": 1.9,
        "legionella_protection_start_weekday": "THURSDAY",
        "energy_manager_state": "HEATING",
        "system_off": false
      },
      "zones": [
        {
          "index": 0,
          "desired_room_temperature_setpoint_heating": 21.0,
          "desired_room_temperature_setpoint": 21.0,
          "current_special_function": "NONE"
        },
        {
          "index": 1,
          "desired_room_temperature_setpoint_heating": 20.5,
          "desired_room_temperature_setpoint": 20.5,
          "current_room_temperature": 21.0,
          "current_room_humidity": 55.0,
          "current_special_function": "NONE"
        }
      ],
      "circuits": [
        {
          "index": 0,
          "circuit_state": "HEATING",
          "current_circuit_flow_temperature": 47.5,
          "heating_circuit_flow_setpoint": 55.0,
          "calculated_energy_manager_state": "HEATING_ACTIVE"
        },
        {
          "index": 1,
          "circuit_state": "STANDBY",
          "current_circuit_flow_temperature": 34.625,
          "heating_circuit_flow_setpoint": 0.0,
          "calculated_energy_manager_state": "HEATING_STANDBY"
        }
      ],
      "dhw": [
        {
          "index": 255,
          "current_special_function": "NONE",
          "current_dhw_temperature": 50.0
        }
      ]
    },
    "properties": {
      "system": {
        "controller_type": "VRC700",
        "controller_revision": "R5",
        "system_scheme": 1,
        "backup_heater_type": "CONDENSING",
        "backup_heater_allowed_for": "DOMESTIC_HOT_WATER_AND_HEATING",
        "module_configuration_v_r71": 3,
        "energy_provide_power_cut_behavior": "DISABLE_HEATPUMP",
        "smart_photovoltaic_buffer_offset": 10.0,
        "external_energy_management_activation": false
      },
      "zones": [
        {
          "index": 0,
          "is_active": true,
          "zone_binding": "NONE",
          "associated_circuit_index": 0
        },
        {
          "index": 1,
          "is_active": true,
          "zone_binding": "CENTRAL_CONTROL",
          "associated_circuit_index": 1
        }
      ],
      "circuits": [
        {
          "index": 0,
          "mixer_circuit_type_external": "HEATING",
          "heating_circuit_type": "DIRECT_HEATING_CIRCUIT",
          "is_cooling_allowed": false
        },
        {
          "index": 1,
          "mixer_circuit_type_external": "HEATING",
          "heating_circuit_type": "MIXER_CIRCUIT_EXTERNAL",
          "is_cooling_allowed": false
        }
      ],
      "dhw": [
        {
          "index": 255,
          "min_setpoint": 35.0,
          "max_setpoint": 70.0
        }
      ]
    },
    "configuration": {
      "system": {
        "continuous_heating_start_setpoint": -26.0,
        "alternative_point": -21.0,
        "heating_circuit_bivalence_point": 0.0,
        "dhw_bivalence_point": -7.0,
        "adaptive_heating_curve": true,
        "dhw_maximum_loading_time": 60,
        "dhw_hysteresis": 5.0,
        "dhw_flow_setpoint_offset": 25.0,
        "max_flow_setpoint_heatpump_error": 25.0,
        "dhw_maximum_temperature": 80.0,
        "hybrid_control_strategy": "BIVALENCE_POINT",
        "paralell_tank_loading_allowed": true
      },
      "zones": [
        {
          "index": 0,
          "general": {
            "name": "ETAGE     ",
            "holiday_start_date_time": "2015-01-01T00:00:00Z",
            "holiday_end_date_time": "2015-01-01T00:00:00Z",
            "holiday_setpoint": 5.0
          },
          "heating": {
            "operation_mode_heating": "DAY",
            "set_back_temperature": 11.0,
            "day_temperature_heating": 21.0,
            "time_program_heating": {
              "meta_info": {
                "min_slots_per_day": 0,
                "max_slots_per_day": 3,
                "setpoint_required_per_slot": false
              },
              "monday": [],
              "tuesday": [],
              "wednesday": [],
              "thursday": [],
              "friday": [],
              "saturday": [],
              "sunday": []
            }
          },
          "desired_room_temperature_setpoint_heating": 21.0,
          "desired_room_temperature_setpoint": 21.0,
          "current_special_function": "NONE",
          "is_active": true,
          "zone_binding": "NONE",
          "associated_circuit_index": 0
        },
        {
          "index": 1,
          "general": {
            "name": "SALON     ",
            "holiday_start_date_time": "2015-01-01T00:00:00Z",
            "holiday_end_date_time": "2015-01-01T00:00:00Z",
            "holiday_setpoint": 5.0
          },
          "heating": {
            "operation_mode_heating": "AUTO",
            "set_back_temperature": 18.5,
            "day_temperature_heating": 20.5,
            "time_program_heating": {
              "meta_info": {
                "min_slots_per_day": 0,
                "max_slots_per_day": 3,
                "setpoint_required_per_slot": false
              },
              "monday": [
                {
                  "start_time": 320,
                  "end_time": 1080
                }
              ],
              "tuesday": [
                {
                  "start_time": 320,
                  "end_time": 1080
                }
              ],
              "wednesday": [
                {
                  "start_time": 320,
                  "end_time": 1080
                }
              ],
              "thursday": [
                {
                  "start_time": 320,
                  "end_time": 1080
                }
              ],
              "friday": [
                {
                  "start_time": 320,
                  "end_time": 1080
                }
              ],
              "saturday": [
                {
                  "start_time": 320,
                  "end_time": 1080
                }
              ],
              "sunday": [
                {
                  "start_time": 320,
                  "end_time": 1080
                }
              ]
            }
          },
          "desired_room_temperature_setpoint_heating": 20.5,
          "desired_room_temperature_setpoint": 20.5,
          "current_room_temperature": 21.0,
          "current_room_humidity": 55.0,
          "current_special_function": "NONE",
          "is_active": true,
          "zone_binding": "CENTRAL_CONTROL",
          "associated_circuit_index": 1
        }
      ],
      "circuits": [
        {
          "index": 0,
          "heating_curve": 4.0,
          "heating_flow_temperature_minimum_setpoint": 40.0,
          "heating_flow_temperature_maximum_setpoint": 55.0,
          "heat_demand_limited_by_outside_temperature": 24.0,
          "heating_circuit_flow_setpoint_excess_offset": 0.0,
          "setback_mode_enabled": false,
          "room_temperature_control_mode": "THERMOSTAT_FUNCTION",
          "circuit_state": "HEATING",
          "current_circuit_flow_temperature": 47.5,
          "heating_circuit_flow_setpoint": 55.0,
          "calculated_energy_manager_state": "HEATING_ACTIVE",
          "mixer_circuit_type_external": "HEATING",
          "heating_circuit_type": "DIRECT_HEATING_CIRCUIT",
          "is_cooling_allowed": false
        },
        {
          "index": 1,
          "heating_curve": 0.30357337,
          "heating_flow_temperature_minimum_setpoint": 22.0,
          "heating_flow_temperature_maximum_setpoint": 38.0,
          "heat_demand_limited_by_outside_temperature": 21.0,
          "heating_circuit_flow_setpoint_excess_offset": 0.0,
          "setback_mode_enabled": false,
          "room_temperature_control_mode": "THERMOSTAT_FUNCTION",
          "circuit_state": "STANDBY",
          "current_circuit_flow_temperature": 34.625,
          "heating_circuit_flow_setpoint": 0.0,
          "calculated_energy_manager_state": "HEATING_STANDBY",
          "mixer_circuit_type_external": "HEATING",
          "heating_circuit_type": "MIXER_CIRCUIT_EXTERNAL",
          "is_cooling_allowed": false
        }
      ],
      "dhw": [
        {
          "index": 255,
          "operation_mode_dhw": "AUTO",
          "tapping_setpoint": 55.0,
          "holiday_start_date_time": "2015-01-01T00:00:00Z",
          "holiday_end_date_time": "2015-01-01T00:00:00Z",
          "time_program_dhw": {
            "meta_info": {
              "min_slots_per_day": 0,
              "max_slots_per_day": 3,
              "setpoint_required_per_slot": false
            },
            "monday": [
              {
                "start_time": 330,
                "end_time": 360
              },
              {
                "start_time": 1050,
                "end_time": 1090
              }
            ],
            "tuesday": [
              {
                "start_time": 330,
                "end_time": 360
              },
              {
                "start_time": 1050,
                "end_time": 1090
              }
            ],
            "wednesday": [
              {
                "start_time": 330,
                "end_time": 360
              },
              {
                "start_time": 1050,
                "end_time": 1090
              }
            ],
            "thursday": [
              {
                "start_time": 330,
                "end_time": 360
              },
              {
                "start_time": 1050,
                "end_time": 1090
              }
            ],
            "friday": [
              {
                "start_time": 330,
                "end_time": 360
              },
              {
                "start_time": 1050,
                "end_time": 1090
              }
            ],
            "saturday": [
              {
                "start_time": 330,
                "end_time": 360
              },
              {
                "start_time": 1050,
                "end_time": 1090
              }
            ],
            "sunday": [
              {
                "start_time": 330,
                "end_time": 360
              },
              {
                "start_time": 1050,
                "end_time": 1090
              }
            ]
          },
          "time_program_circulation_pump": {
            "meta_info": {
              "min_slots_per_day": 0,
              "max_slots_per_day": 3,
              "setpoint_required_per_slot": false
            },
            "monday": [],
            "tuesday": [],
            "wednesday": [],
            "thursday": [],
            "friday": [],
            "saturday": [],
            "sunday": []
          },
          "current_special_function": "NONE",
          "current_dhw_temperature": 50.0,
          "min_setpoint": 35.0,
          "max_setpoint": 70.0
        }
      ]
    },
    "home": {
      "extra_fields": {
        "migration_finished_at": "2024-03-15T09:40:07.807377922Z",
        "online_state": "ONLINE"
      },
      "country_code": "BE",
      "timezone": "tzfile('/usr/share/zoneinfo/Europe/Brussels')",
      "nomenclature": "VR 920",
      "serial_number": "...",
      "state": "CLAIMED",
      "system_id": "...",
      "home_name": "Maison",
      "address": {
        "street": "...",
        "extension": null,
        "city": "...",
        "postal_code": "...",
        "country_code": "BE"
      },
      "product_information": "VR920",
      "migration_state": "FINISHED",
      "cag": false,
      "firmware_version": "0357.40.34",
      "firmware": {
        "version": "0357.40.34",
        "update_enabled": false,
        "update_required": false
      },
      "product_metadata": {
        "product_type": "VR920",
        "production_year": "17",
        "production_week": "48",
        "article_number": "..."
      }
    },
    "brand": "vaillant",
    "timezone": "tzfile('/usr/share/zoneinfo/Europe/Brussels')",
    "control_identifier": "vrc700",
    "connected": true,
    "diagnostic_trouble_codes": [
      {
        "serial_number": "...",
        "article_number": "...",
        "codes": []
      },
      {
        "serial_number": "...",
        "article_number": "...",
        "codes": []
      },
      {
        "serial_number": "...",
        "article_number": "...",
        "codes": []
      },
      {
        "serial_number": "...",
        "article_number": "...",
        "codes": []
      }
    ],
    "current_system": {
      "system_type": "UNKNOWN",
      "has_emf_capable_devices": true,
      "primary_heat_generator": null,
      "secondary_heat_generators": [],
      "electric_backup_heater": null,
      "solar_station": null,
      "ventilation": null,
      "gateway": null
    },
    "zones": [
      {
        "extra_fields": {},
        "system_id": "..",
        "general": {
          "extra_fields": {
            "holiday_setpoint": 5.0
          },
          "name": "ETAGE     ",
          "timezone": "tzfile('/usr/share/zoneinfo/Europe/Brussels')",
          "holiday_start_date_time": "2015-01-01 00:00:00+00:00",
          "holiday_end_date_time": "2015-01-01 00:00:00+00:00"
        },
        "timezone": "tzfile('/usr/share/zoneinfo/Europe/Brussels')",
        "control_identifier": "vrc700",
        "index": 0,
        "zone_binding": "NONE",
        "heating": {
          "extra_fields": {},
          "control_identifier": "vrc700",
          "operation_mode_heating": "DAY",
          "time_program_heating": {
            "extra_fields": {},
            "monday": [],
            "tuesday": [],
            "wednesday": [],
            "thursday": [],
            "friday": [],
            "saturday": [],
            "sunday": [],
            "meta_info": {
              "min_slots_per_day": 0,
              "max_slots_per_day": 3,
              "setpoint_required_per_slot": false
            }
          },
          "set_back_temperature": 11.0,
          "manual_mode_setpoint_heating": null,
          "day_temperature_heating": 21.0
        },
        "current_special_function": "NONE",
        "is_active": true,
        "heating_state": null,
        "is_cooling_allowed": null,
        "cooling": null,
        "current_room_temperature": null,
        "desired_room_temperature_setpoint_heating": 21.0,
        "desired_room_temperature_setpoint_cooling": null,
        "desired_room_temperature_setpoint": 21.0,
        "current_room_humidity": null,
        "associated_circuit_index": 0,
        "quick_veto_start_date_time": null,
        "quick_veto_end_date_time": null
      },
      {
        "extra_fields": {},
        "system_id": "...",
        "general": {
          "extra_fields": {
            "holiday_setpoint": 5.0
          },
          "name": "SALON     ",
          "timezone": "tzfile('/usr/share/zoneinfo/Europe/Brussels')",
          "holiday_start_date_time": "2015-01-01 00:00:00+00:00",
          "holiday_end_date_time": "2015-01-01 00:00:00+00:00"
        },
        "timezone": "tzfile('/usr/share/zoneinfo/Europe/Brussels')",
        "control_identifier": "vrc700",
        "index": 1,
        "zone_binding": "CENTRAL_CONTROL",
        "heating": {
          "extra_fields": {},
          "control_identifier": "vrc700",
          "operation_mode_heating": "AUTO",
          "time_program_heating": {
            "extra_fields": {},
            "monday": [
              {
                "extra_fields": {},
                "index": 0,
                "weekday_name": "monday",
                "start_time": 320,
                "end_time": 1080,
                "setpoint": null
              }
            ],
            "tuesday": [
              {
                "extra_fields": {},
                "index": 0,
                "weekday_name": "tuesday",
                "start_time": 320,
                "end_time": 1080,
                "setpoint": null
              }
            ],
            "wednesday": [
              {
                "extra_fields": {},
                "index": 0,
                "weekday_name": "wednesday",
                "start_time": 320,
                "end_time": 1080,
                "setpoint": null
              }
            ],
            "thursday": [
              {
                "extra_fields": {},
                "index": 0,
                "weekday_name": "thursday",
                "start_time": 320,
                "end_time": 1080,
                "setpoint": null
              }
            ],
            "friday": [
              {
                "extra_fields": {},
                "index": 0,
                "weekday_name": "friday",
                "start_time": 320,
                "end_time": 1080,
                "setpoint": null
              }
            ],
            "saturday": [
              {
                "extra_fields": {},
                "index": 0,
                "weekday_name": "saturday",
                "start_time": 320,
                "end_time": 1080,
                "setpoint": null
              }
            ],
            "sunday": [
              {
                "extra_fields": {},
                "index": 0,
                "weekday_name": "sunday",
                "start_time": 320,
                "end_time": 1080,
                "setpoint": null
              }
            ],
            "meta_info": {
              "min_slots_per_day": 0,
              "max_slots_per_day": 3,
              "setpoint_required_per_slot": false
            }
          },
          "set_back_temperature": 18.5,
          "manual_mode_setpoint_heating": null,
          "day_temperature_heating": 20.5
        },
        "current_special_function": "NONE",
        "is_active": true,
        "heating_state": null,
        "is_cooling_allowed": null,
        "cooling": null,
        "current_room_temperature": 21.0,
        "desired_room_temperature_setpoint_heating": 20.5,
        "desired_room_temperature_setpoint_cooling": null,
        "desired_room_temperature_setpoint": 20.5,
        "current_room_humidity": 55.0,
        "associated_circuit_index": 1,
        "quick_veto_start_date_time": null,
        "quick_veto_end_date_time": null
      }
    ],
    "circuits": [
      {
        "extra_fields": {
          "timezone": "tzfile('/usr/share/zoneinfo/Europe/Brussels')",
          "heat_demand_limited_by_outside_temperature": 24.0,
          "room_temperature_control_mode": "THERMOSTAT_FUNCTION",
          "heating_circuit_type": "DIRECT_HEATING_CIRCUIT",
          "setback_mode_enabled": false,
          "heating_circuit_flow_setpoint": 55.0,
          "heating_circuit_flow_setpoint_excess_offset": 0.0
        },
        "system_id": "...",
        "index": 0,
        "circuit_state": "HEATING",
        "mixer_circuit_type_external": "HEATING",
        "set_back_mode_enabled": null,
        "zones": [],
        "is_cooling_allowed": false,
        "current_circuit_flow_temperature": 47.5,
        "heating_curve": 4.0,
        "heating_flow_temperature_minimum_setpoint": 40.0,
        "heating_flow_temperature_maximum_setpoint": 55.0,
        "min_flow_temperature_setpoint": null,
        "calculated_energy_manager_state": "HEATING_ACTIVE"
      },
      {
        "extra_fields": {
          "timezone": "tzfile('/usr/share/zoneinfo/Europe/Brussels')",
          "heat_demand_limited_by_outside_temperature": 21.0,
          "room_temperature_control_mode": "THERMOSTAT_FUNCTION",
          "heating_circuit_type": "MIXER_CIRCUIT_EXTERNAL",
          "setback_mode_enabled": false,
          "heating_circuit_flow_setpoint": 0.0,
          "heating_circuit_flow_setpoint_excess_offset": 0.0
        },
        "system_id": "...",
        "index": 1,
        "circuit_state": "STANDBY",
        "mixer_circuit_type_external": "HEATING",
        "set_back_mode_enabled": null,
        "zones": [],
        "is_cooling_allowed": false,
        "current_circuit_flow_temperature": 34.625,
        "heating_curve": 0.30357337,
        "heating_flow_temperature_minimum_setpoint": 22.0,
        "heating_flow_temperature_maximum_setpoint": 38.0,
        "min_flow_temperature_setpoint": null,
        "calculated_energy_manager_state": "HEATING_STANDBY"
      }
    ],
    "domestic_hot_water": [
      {
        "extra_fields": {
          "timezone": "tzfile('/usr/share/zoneinfo/Europe/Brussels')",
          "holiday_end_date_time": "2015-01-01T00:00:00Z",
          "holiday_start_date_time": "2015-01-01T00:00:00Z"
        },
        "system_id": "...",
        "index": 255,
        "control_identifier": "vrc700",
        "current_special_function": "NONE",
        "max_setpoint": 70.0,
        "min_setpoint": 35.0,
        "operation_mode_dhw": "AUTO",
        "time_program_dhw": {
          "extra_fields": {},
          "monday": [
            {
              "extra_fields": {},
              "index": 0,
              "weekday_name": "monday",
              "start_time": 330,
              "end_time": 360
            },
            {
              "extra_fields": {},
              "index": 1,
              "weekday_name": "monday",
              "start_time": 1050,
              "end_time": 1090
            }
          ],
          "tuesday": [
            {
              "extra_fields": {},
              "index": 0,
              "weekday_name": "tuesday",
              "start_time": 330,
              "end_time": 360
            },
            {
              "extra_fields": {},
              "index": 1,
              "weekday_name": "tuesday",
              "start_time": 1050,
              "end_time": 1090
            }
          ],
          "wednesday": [
            {
              "extra_fields": {},
              "index": 0,
              "weekday_name": "wednesday",
              "start_time": 330,
              "end_time": 360
            },
            {
              "extra_fields": {},
              "index": 1,
              "weekday_name": "wednesday",
              "start_time": 1050,
              "end_time": 1090
            }
          ],
          "thursday": [
            {
              "extra_fields": {},
              "index": 0,
              "weekday_name": "thursday",
              "start_time": 330,
              "end_time": 360
            },
            {
              "extra_fields": {},
              "index": 1,
              "weekday_name": "thursday",
              "start_time": 1050,
              "end_time": 1090
            }
          ],
          "friday": [
            {
              "extra_fields": {},
              "index": 0,
              "weekday_name": "friday",
              "start_time": 330,
              "end_time": 360
            },
            {
              "extra_fields": {},
              "index": 1,
              "weekday_name": "friday",
              "start_time": 1050,
              "end_time": 1090
            }
          ],
          "saturday": [
            {
              "extra_fields": {},
              "index": 0,
              "weekday_name": "saturday",
              "start_time": 330,
              "end_time": 360
            },
            {
              "extra_fields": {},
              "index": 1,
              "weekday_name": "saturday",
              "start_time": 1050,
              "end_time": 1090
            }
          ],
          "sunday": [
            {
              "extra_fields": {},
              "index": 0,
              "weekday_name": "sunday",
              "start_time": 330,
              "end_time": 360
            },
            {
              "extra_fields": {},
              "index": 1,
              "weekday_name": "sunday",
              "start_time": 1050,
              "end_time": 1090
            }
          ],
          "meta_info": {
            "min_slots_per_day": 0,
            "max_slots_per_day": 3,
            "setpoint_required_per_slot": false
          }
        },
        "time_program_circulation_pump": {
          "extra_fields": {},
          "monday": [],
          "tuesday": [],
          "wednesday": [],
          "thursday": [],
          "friday": [],
          "saturday": [],
          "sunday": [],
          "meta_info": {
            "min_slots_per_day": 0,
            "max_slots_per_day": 3,
            "setpoint_required_per_slot": false
          }
        },
        "current_dhw_temperature": 50.0,
        "tapping_setpoint": 55.0
      }
    ],
    "ventilation": [],
    "devices": [],
    "mpc": {
      "devices": []
    },
    "rts": {
      "statistics": []
    }
  }
]

thomasgermain avatar Mar 16 '24 08:03 thomasgermain

Here are some information I could get, let me know if you need more:

detect ambisense capability

GET https://api.vaillant-group.com/service-connected-control/end-user-app-api/v1/api/v1/ambisense/facilities/<facility-id>/capability

{
    "rbrCapable": true
}

rooms information

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
                }
            ]
        }
    }
]

set quick veto

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
        }

remove quick veto

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

change mode

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"
}

thomasgermain avatar Mar 16 '24 14:03 thomasgermain

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.

signalkraft avatar Mar 18 '24 13:03 signalkraft

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.

signalkraft avatar Mar 18 '24 14:03 signalkraft

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).

thomasgermain avatar Mar 18 '24 15:03 thomasgermain

@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!

johanvh83 avatar Mar 19 '24 15:03 johanvh83

It will indeed great for Ambisense users. I will keep an eye on this threat as I am very interested.

ttuuxxeerr avatar Mar 19 '24 15:03 ttuuxxeerr

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!

Pitsaer avatar Mar 19 '24 20:03 Pitsaer

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 avatar Mar 19 '24 21:03 signalkraft

@signalkraft Wow good job! I've just updated the Beta and my VR50s are detected.

Pitsaer avatar Mar 19 '24 21:03 Pitsaer

@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')"

scoudibou avatar Mar 19 '24 21:03 scoudibou

@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' `

mikyD84 avatar Mar 19 '24 21:03 mikyD84

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!

signalkraft avatar Mar 19 '24 21:03 signalkraft

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.

thomasgermain avatar Mar 19 '24 21:03 thomasgermain

@mikyD84 let me know if https://github.com/signalkraft/mypyllant-component/releases/tag/v0.8.0b1 fixes that error

signalkraft avatar Mar 19 '24 22:03 signalkraft

@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'

mikyD84 avatar Mar 19 '24 22:03 mikyD84

Try https://github.com/signalkraft/mypyllant-component/releases/tag/v0.8.0b2 for both the 500 and the KeyError, please.

signalkraft avatar Mar 19 '24 22:03 signalkraft

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')

Pitsaer avatar Mar 19 '24 23:03 Pitsaer

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.

ttuuxxeerr avatar Mar 20 '24 06:03 ttuuxxeerr

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

dardennejf avatar Mar 20 '24 07:03 dardennejf

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.

Grabax avatar Mar 20 '24 07:03 Grabax

  1. 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.

thomasgermain avatar Mar 20 '24 07:03 thomasgermain

  1. 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 [email protected] 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 [email protected] 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 [email protected]

Thanks in advance,

ttuuxxeerr avatar Mar 20 '24 08:03 ttuuxxeerr

This beta release also worked for me. I must say that this integration provides much more information than multimatic. Thank you.

camhef avatar Mar 20 '24 13:03 camhef

https://github.com/signalkraft/mypyllant-component/releases/tag/v0.8.0b3

Should have support for setting the target temperature in manual mode.

signalkraft avatar Mar 20 '24 21:03 signalkraft

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

dcowell avatar Mar 21 '24 16:03 dcowell

These entities seem to have been lost between v0.7.4 and v0.8.0b:

  • sensor.home_device_0_arotherm_plus_current_power
  • sensor.home_device_0_arotherm_plus_on_off_cycles
  • sensor.home_device_0_arotherm_plus_operation_time

The myVaillant app shows: Screenshot_2024-03-22-10-25-52-98_ab6c4a494f5f354113de683b4ea3527b With v0.7.4 installed I see: Screenshot_2024-03-22-10-26-13-56_c3a231c25ed346e59462e84656a70e50 With v0.8.0b4 installed I see: Screenshot_2024-03-22-10-31-20-30_c3a231c25ed346e59462e84656a70e50 Is that intentional, have they been missed or am I doing something wrong?

camhef avatar Mar 22 '24 10:03 camhef

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: image

Weazle avatar Mar 22 '24 15:03 Weazle

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.

signalkraft avatar Mar 23 '24 07:03 signalkraft

The fix above and everything else done to enable ambisense has been greatly appreciated. Thank you.

camhef avatar Mar 23 '24 09:03 camhef

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
                }
            ]
        }
    }
]

smmoroz avatar Mar 24 '24 09:03 smmoroz