Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Device Support Request] ACOVA Alcantara heater support in ZHA #2921

Open
stadros83 opened this issue Jan 19, 2024 · 4 comments
Open

[Device Support Request] ACOVA Alcantara heater support in ZHA #2921

stadros83 opened this issue Jan 19, 2024 · 4 comments

Comments

@stadros83
Copy link

stadros83 commented Jan 19, 2024

Problem description

Hello

I just bought a zigbee heater, the Acova Alcantara.
I can pair it to ZHA and get entities but there is a "bug".

If I change the temperature using ZHA, the heater stop being "usable" in HA (while still in box mode - so connected to ZHA).

If I hit "heat" it goes to "Frost Free" (so out of box mode). So there is a problem of mode here, it should go (or stay) in "box mode".

If I change the temperature on the heater (while it is still in box mode), the locelace card come back by itself and I can then change the temperature again, but just for few secondes.
It seems to be as soon as the heater goes to "heat_cool" (so still in box mode but not actually heating).

My heater can only be controlled when climate.NAME_thermostat is set with system_mode: "[<SystemMode.Emergency_Heating: 1>]/heat"

If I have this it is NOT working :
system_mode: "[<SystemMode.Auto: 1>]/heat_cool"

I've added two videos.

I'm not the only one with this issue : https://community.home-assistant.io/t/acova-alcantara-radiator-with-install-code/469444

I'm not a developper but I can provide logs or whatever is needed :) !

Solution description

I would like to be able to change the temperature of the heater without losing connection to it.

Screenshots/Video

[Screenshots/Video]

https://www.youtube.com/shorts/aE4h_aS2h_M

https://youtu.be/ECUnDe4aqBM

Device signature

Device signature
{
  "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.Router: 1>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.FullFunctionDevice|MainsPowered|RxOnWhenIdle|AllocateAddress: 142>, manufacturer_code=4098, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False)",
  "endpoints": {
    "1": {
      "profile_id": "0x0104",
      "device_type": "0x0301",
      "input_clusters": [
        "0x0000",
        "0x0003",
        "0x0201"
      ],
      "output_clusters": [
        "0x0003"
      ]
    },
    "2": {
      "profile_id": "0x0104",
      "device_type": "0x0107",
      "input_clusters": [
        "0x0000",
        "0x0003",
        "0x0406"
      ],
      "output_clusters": [
        "0x0003"
      ]
    },
    "3": {
      "profile_id": "0x0104",
      "device_type": "0x0001",
      "input_clusters": [
        "0x0000",
        "0x0003",
        "0x000f"
      ],
      "output_clusters": [
        "0x0003"
      ]
    },
    "242": {
      "profile_id": "0xa1e0",
      "device_type": "0x0061",
      "input_clusters": [],
      "output_clusters": [
        "0x0021"
      ]
    }
  },
  "manufacturer": "ZEHNDER GROUP VAUX ANDIGNY      ",
  "model": "ALCANTARA2 D1.00P1.02Z1.00",
  "class": "zigpy.device.Device"
}

Diagnostic information

Diagnostic information
{
  "home_assistant": {
    "installation_type": "Home Assistant OS",
    "version": "2024.1.3",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.11.6",
    "docker": true,
    "arch": "x86_64",
    "timezone": "Europe/Paris",
    "os_name": "Linux",
    "os_version": "6.1.71-haos",
    "supervisor": "2023.12.1",
    "host_os": "Home Assistant OS 11.4",
    "docker_version": "24.0.7",
    "chassis": "embedded",
    "run_as_root": true
  },
  "custom_components": {
    "alarmo": {
      "version": "v1.9.13",
      "requirements": []
    },
    "sonos_cloud": {
      "version": "0.3.5",
      "requirements": []
    },
    "hacs": {
      "version": "1.33.0",
      "requirements": [
        "aiogithubapi>=22.10.1"
      ]
    },
    "frigate": {
      "version": "4.0.1",
      "requirements": [
        "pytz==2022.7"
      ]
    },
    "rtetempo": {
      "version": "1.3.2",
      "requirements": [
        "requests-oauthlib>=1.3.1"
      ]
    }
  },
  "integration_manifest": {
    "domain": "zha",
    "name": "Zigbee Home Automation",
    "after_dependencies": [
      "onboarding",
      "usb"
    ],
    "codeowners": [
      "@dmulcahey",
      "@adminiuga",
      "@puddly",
      "@TheJulianJES"
    ],
    "config_flow": true,
    "dependencies": [
      "file_upload"
    ],
    "documentation": "https://www.home-assistant.io/integrations/zha",
    "iot_class": "local_polling",
    "loggers": [
      "aiosqlite",
      "bellows",
      "crccheck",
      "pure_pcapy3",
      "zhaquirks",
      "zigpy",
      "zigpy_deconz",
      "zigpy_xbee",
      "zigpy_zigate",
      "zigpy_znp",
      "universal_silabs_flasher"
    ],
    "requirements": [
      "bellows==0.37.6",
      "pyserial==3.5",
      "pyserial-asyncio==0.6",
      "zha-quirks==0.0.109",
      "zigpy-deconz==0.22.4",
      "zigpy==0.60.4",
      "zigpy-xbee==0.20.1",
      "zigpy-zigate==0.12.0",
      "zigpy-znp==0.12.1",
      "universal-silabs-flasher==0.0.15",
      "pyserial-asyncio-fast==0.11"
    ],
    "usb": [
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*2652*",
        "known_devices": [
          "slae.sh cc2652rb stick"
        ]
      },
      {
        "vid": "1A86",
        "pid": "55D4",
        "description": "*sonoff*plus*",
        "known_devices": [
          "sonoff zigbee dongle plus v2"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*sonoff*plus*",
        "known_devices": [
          "sonoff zigbee dongle plus"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*tubeszb*",
        "known_devices": [
          "TubesZB Coordinator"
        ]
      },
      {
        "vid": "1A86",
        "pid": "7523",
        "description": "*tubeszb*",
        "known_devices": [
          "TubesZB Coordinator"
        ]
      },
      {
        "vid": "1A86",
        "pid": "7523",
        "description": "*zigstar*",
        "known_devices": [
          "ZigStar Coordinators"
        ]
      },
      {
        "vid": "1CF1",
        "pid": "0030",
        "description": "*conbee*",
        "known_devices": [
          "Conbee II"
        ]
      },
      {
        "vid": "0403",
        "pid": "6015",
        "description": "*conbee*",
        "known_devices": [
          "Conbee III"
        ]
      },
      {
        "vid": "10C4",
        "pid": "8A2A",
        "description": "*zigbee*",
        "known_devices": [
          "Nortek HUSBZB-1"
        ]
      },
      {
        "vid": "0403",
        "pid": "6015",
        "description": "*zigate*",
        "known_devices": [
          "ZiGate+"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*zigate*",
        "known_devices": [
          "ZiGate"
        ]
      },
      {
        "vid": "10C4",
        "pid": "8B34",
        "description": "*bv 2010/10*",
        "known_devices": [
          "Bitron Video AV2010/10"
        ]
      }
    ],
    "zeroconf": [
      {
        "type": "_esphomelib._tcp.local.",
        "name": "tube*"
      },
      {
        "type": "_zigate-zigbee-gateway._tcp.local.",
        "name": "*zigate*"
      },
      {
        "type": "_zigstar_gw._tcp.local.",
        "name": "*zigstar*"
      },
      {
        "type": "_uzg-01._tcp.local.",
        "name": "uzg-01*"
      },
      {
        "type": "_slzb-06._tcp.local.",
        "name": "slzb-06*"
      }
    ],
    "is_built_in": true
  },
  "data": {
    "ieee": "**REDACTED**",
    "nwk": 54234,
    "manufacturer": "ZEHNDER GROUP VAUX ANDIGNY      ",
    "model": "ALCANTARA2 D1.00P1.02Z1.00",
    "name": "ZEHNDER GROUP VAUX ANDIGNY       ALCANTARA2 D1.00P1.02Z1.00",
    "quirk_applied": false,
    "quirk_class": "zigpy.device.Device",
    "quirk_id": null,
    "manufacturer_code": 4098,
    "power_source": "Mains",
    "lqi": 47,
    "rssi": null,
    "last_seen": "2024-01-19T15:55:29",
    "available": true,
    "device_type": "Router",
    "signature": {
      "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.Router: 1>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.FullFunctionDevice|MainsPowered|RxOnWhenIdle|AllocateAddress: 142>, manufacturer_code=4098, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False)",
      "endpoints": {
        "1": {
          "profile_id": "0x0104",
          "device_type": "0x0301",
          "input_clusters": [
            "0x0000",
            "0x0003",
            "0x0201"
          ],
          "output_clusters": [
            "0x0003"
          ]
        },
        "2": {
          "profile_id": "0x0104",
          "device_type": "0x0107",
          "input_clusters": [
            "0x0000",
            "0x0003",
            "0x0406"
          ],
          "output_clusters": [
            "0x0003"
          ]
        },
        "3": {
          "profile_id": "0x0104",
          "device_type": "0x0001",
          "input_clusters": [
            "0x0000",
            "0x0003",
            "0x000f"
          ],
          "output_clusters": [
            "0x0003"
          ]
        },
        "242": {
          "profile_id": "0xa1e0",
          "device_type": "0x0061",
          "input_clusters": [],
          "output_clusters": [
            "0x0021"
          ]
        }
      },
      "manufacturer": "ZEHNDER GROUP VAUX ANDIGNY      ",
      "model": "ALCANTARA2 D1.00P1.02Z1.00"
    },
    "active_coordinator": false,
    "entities": [
      {
        "entity_id": "sensor.radiateur_bureau_action_cvc",
        "name": "ZEHNDER GROUP VAUX ANDIGNY       ALCANTARA2 D1.00P1.02Z1.00"
      },
      {
        "entity_id": "number.radiateur_bureau_decalage_de_temperature_locale",
        "name": "ZEHNDER GROUP VAUX ANDIGNY       ALCANTARA2 D1.00P1.02Z1.00"
      },
      {
        "entity_id": "binary_sensor.radiateur_bureau_entree_binaire",
        "name": "ZEHNDER GROUP VAUX ANDIGNY       ALCANTARA2 D1.00P1.02Z1.00"
      },
      {
        "entity_id": "button.radiateur_bureau_identifier",
        "name": "ZEHNDER GROUP VAUX ANDIGNY       ALCANTARA2 D1.00P1.02Z1.00"
      },
      {
        "entity_id": "binary_sensor.radiateur_bureau_occupation",
        "name": "ZEHNDER GROUP VAUX ANDIGNY       ALCANTARA2 D1.00P1.02Z1.00"
      },
      {
        "entity_id": "climate.radiateur_bureau_thermostat",
        "name": "ZEHNDER GROUP VAUX ANDIGNY       ALCANTARA2 D1.00P1.02Z1.00"
      }
    ],
    "neighbors": [],
    "routes": [],
    "endpoint_names": [
      {
        "name": "THERMOSTAT"
      },
      {
        "name": "OCCUPANCY_SENSOR"
      },
      {
        "name": "LEVEL_CONTROL_SWITCH"
      },
      {
        "name": "PROXY_BASIC"
      }
    ],
    "user_given_name": "RADIATEUR_BUREAU",
    "device_reg_id": "913fa7524cd6f60befea07fbd54df1ba",
    "area_id": "bureau",
    "cluster_details": {
      "1": {
        "device_type": {
          "name": "THERMOSTAT",
          "id": 769
        },
        "profile_id": 260,
        "in_clusters": {
          "0x0000": {
            "endpoint_attribute": "basic",
            "attributes": {
              "0x0004": {
                "attribute_name": "manufacturer",
                "value": "ZEHNDER GROUP VAUX ANDIGNY      "
              },
              "0x0005": {
                "attribute_name": "model",
                "value": "ALCANTARA2 D1.00P1.02Z1.00"
              }
            },
            "unsupported_attributes": {}
          },
          "0x0003": {
            "endpoint_attribute": "identify",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0201": {
            "endpoint_attribute": "thermostat",
            "attributes": {
              "0x0004": {
                "attribute_name": "abs_max_heat_setpoint_limit",
                "value": 2800
              },
              "0x0003": {
                "attribute_name": "abs_min_heat_setpoint_limit",
                "value": 700
              },
              "0x001b": {
                "attribute_name": "ctrl_sequence_of_oper",
                "value": 2
              },
              "0x0000": {
                "attribute_name": "local_temperature",
                "value": 700
              },
              "0x0010": {
                "attribute_name": "local_temperature_calibration",
                "value": 0
              },
              "0x0002": {
                "attribute_name": "occupancy",
                "value": 1
              },
              "0x0011": {
                "attribute_name": "occupied_cooling_setpoint",
                "value": 2600
              },
              "0x0012": {
                "attribute_name": "occupied_heating_setpoint",
                "value": 700
              },
              "0x001e": {
                "attribute_name": "running_mode",
                "value": 4
              },
              "0x0029": {
                "attribute_name": "running_state",
                "value": 0
              },
              "0x001c": {
                "attribute_name": "system_mode",
                "value": 1
              },
              "0x0014": {
                "attribute_name": "unoccupied_heating_setpoint",
                "value": 800
              }
            },
            "unsupported_attributes": {
              "0x0015": {
                "attribute_name": "min_heat_setpoint_limit"
              },
              "0x0018": {
                "attribute_name": "max_cool_setpoint_limit"
              },
              "0x0007": {
                "attribute_name": "pi_cooling_demand"
              },
              "0x0005": {
                "attribute_name": "abs_min_cool_setpoint_limit"
              },
              "0x0006": {
                "attribute_name": "abs_max_cool_setpoint_limit"
              },
              "0x0008": {
                "attribute_name": "pi_heating_demand"
              },
              "0x0016": {
                "attribute_name": "max_heat_setpoint_limit"
              },
              "0x0013": {
                "attribute_name": "unoccupied_cooling_setpoint"
              },
              "0x0017": {
                "attribute_name": "min_cool_setpoint_limit"
              }
            }
          }
        },
        "out_clusters": {
          "0x0003": {
            "endpoint_attribute": "identify",
            "attributes": {},
            "unsupported_attributes": {}
          }
        }
      },
      "2": {
        "device_type": {
          "name": "OCCUPANCY_SENSOR",
          "id": 263
        },
        "profile_id": 260,
        "in_clusters": {
          "0x0000": {
            "endpoint_attribute": "basic",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0003": {
            "endpoint_attribute": "identify",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0406": {
            "endpoint_attribute": "occupancy",
            "attributes": {
              "0x0000": {
                "attribute_name": "occupancy",
                "value": 1
              }
            },
            "unsupported_attributes": {}
          }
        },
        "out_clusters": {
          "0x0003": {
            "endpoint_attribute": "identify",
            "attributes": {},
            "unsupported_attributes": {}
          }
        }
      },
      "3": {
        "device_type": {
          "name": "LEVEL_CONTROL_SWITCH",
          "id": 1
        },
        "profile_id": 260,
        "in_clusters": {
          "0x0000": {
            "endpoint_attribute": "basic",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0003": {
            "endpoint_attribute": "identify",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x000f": {
            "endpoint_attribute": "binary_input",
            "attributes": {
              "0x0055": {
                "attribute_name": "present_value",
                "value": 0
              },
              "0x006f": {
                "attribute_name": "status_flags",
                "value": 0
              }
            },
            "unsupported_attributes": {}
          }
        },
        "out_clusters": {
          "0x0003": {
            "endpoint_attribute": "identify",
            "attributes": {},
            "unsupported_attributes": {}
          }
        }
      },
      "242": {
        "device_type": {
          "name": "PROXY_BASIC",
          "id": 97
        },
        "profile_id": 41440,
        "in_clusters": {},
        "out_clusters": {
          "0x0021": {
            "endpoint_attribute": "green_power",
            "attributes": {},
            "unsupported_attributes": {}
          }
        }
      }
    }
  }
}

Logs

Logs
[Paste the logs here]

Custom quirk

Custom quirk
[Paste your custom quirk here]

Additional information

No response

@stadros83
Copy link
Author

stadros83 commented Jan 21, 2024

I've seen in the developpers tools, on climate.NAME_thermostat :

If I have this it is NOT working :
system_mode: "[<SystemMode.Auto: 1>]/heat_cool"

If I have this it IS working :
system_mode: "[<SystemMode.Emergency_Heating: 1>]/heat"

@stadros83
Copy link
Author

It seems that the problem is coming from SystemMode.AUTO.
For HA Auto means that the heater is controled by a schedule, but for this manufacturer AUTO means that the heater is in box mode and can receive commands.

@stadros83
Copy link
Author

I want to add that I can control the heater from ZHA by changing the value of occupied_heating_setpoint.

Example :

  • service: zha.set_zigbee_cluster_attribute
    data:
    cluster_type: in
    ieee: xx:xx:xx
    endpoint_id: 1
    cluster_id: 513
    attribute: 18
    value: "1200" // value is in celsius * 100, so here 12 degres

@stadros83
Copy link
Author

No one :( ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant