Skip to content

[Device Support Request] Full implementation of BOSCH Radiator Thermostat II (BTH-RA) Β #2476

@dierochade

Description

@dierochade

Problem description

I use skyconnect+zha.
I am able to pair the device using zha.permit with install code and source-ieee.

It then shows up with 4 entitys:

(screenshot below)

  1. [button.bosch_rbsh_trv0_zb_eu_identify]

     BOSCH RBSH-TRV0-ZB-EU Identify
     unknown	device_class: identify
     friendly_name: BOSCH RBSH-TRV0-ZB-EU Identify
    
  2. [climate.bosch_rbsh_trv0_zb_eu_thermostat]

     BOSCH RBSH-TRV0-ZB-EU Thermostat
     heat	hvac_modes: off, heat
     min_temp: 5
     max_temp: 30
     current_temperature: 24.6
     temperature: 21
     system_mode: [<SystemMode.Heat: 4>]/heat
     occupied_cooling_setpoint: 2300
     occupied_heating_setpoint: 2100
     friendly_name: BOSCH RBSH-TRV0-ZB-EU Thermostat
     supported_features: 1
    
  3. [sensor.bosch_rbsh_trv0_zb_eu_battery]

     BOSCH RBSH-TRV0-ZB-EU Battery
     100	state_class: measurement
     battery_voltage: 3.1
     unit_of_measurement: %
     device_class: battery
     friendly_name: BOSCH RBSH-TRV0-ZB-EU Battery
    
  4. [sensor.bosch_rbsh_trv0_zb_eu_hvac_action]

     BOSCH RBSH-TRV0-ZB-EU HVAC action
     unknown	friendly_name: BOSCH RBSH-TRV0-ZB-EU HVAC action
    

I have got two main issues:

  1. The state of climate.bosch entity is always "heating". If I change the target temparature I can hear the motor of the device closing/opening the valve, but it doesnt change the state.
    If I do set the state manually in the developer tools, it changes but switches back after some seconds.
    Besides, the HVAC action (entity 4) is shown as "unknown" all the time.

  2. Most attributes are missing

From the integration via z2m it is known that there are many more attributes, some are importat/useful:

window open, boost, position of the valve, temperature offset, disabling of internal temp sensor, many more ++

As far as I understand, these attributes can be manipulated via a set command in z2m....

Additional wish

The device got a nice led color ring that can show status. I do not know if the led can be manipulated or is controlled locally by the device solely?

Solution description

Quirk?

Screenshots/Video

Screenshots/Video

FireShot Capture 072 - Developer Tools – Home Assistant - 192 168 100 56

Device signature

Device signature
{
  "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.EndDevice: 2>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress: 128>, manufacturer_code=4617, maximum_buffer_size=127, 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=True, *is_full_function_device=False, *is_mains_powered=False, *is_receiver_on_when_idle=False, *is_router=False, *is_security_capable=False)",
  "endpoints": {
    "1": {
      "profile_id": "0x0104",
      "device_type": "0x0301",
      "input_clusters": [
        "0x0000",
        "0x0001",
        "0x0003",
        "0x0004",
        "0x0020",
        "0x0201",
        "0x0204",
        "0x0b05"
      ],
      "output_clusters": [
        "0x000a",
        "0x0019"
      ]
    }
  },
  "manufacturer": "BOSCH",
  "model": "RBSH-TRV0-ZB-EU",
  "class": "zigpy.device.Device"
}

Diagnostic information

Diagnostic information
{
  "home_assistant": {
    "installation_type": "Home Assistant OS",
    "version": "2023.7.1",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.11.4",
    "docker": true,
    "arch": "x86_64",
    "timezone": "Europe/Berlin",
    "os_name": "Linux",
    "os_version": "6.1.34",
    "supervisor": "2023.07.1",
    "host_os": "Home Assistant OS 10.3",
    "docker_version": "23.0.6",
    "chassis": "vm",
    "run_as_root": true
  },
  "custom_components": {
    "dreame_vacuum": {
      "version": "v0.16.4",
      "requirements": [
        "pillow",
        "numpy",
        "pybase64",
        "requests",
        "pycryptodome",
        "python-miio>=0.5.6",
        "py-mini-racer"
      ]
    },
    "hacs": {
      "version": "1.32.1",
      "requirements": [
        "aiogithubapi>=22.10.1"
      ]
    },
    "nodered": {
      "version": "1.2.0",
      "requirements": []
    }
  },
  "integration_manifest": {
    "domain": "zha",
    "name": "Zigbee Home Automation",
    "after_dependencies": [
      "onboarding",
      "usb"
    ],
    "codeowners": [
      "@dmulcahey",
      "@adminiuga",
      "@puddly"
    ],
    "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"
    ],
    "requirements": [
      "bellows==0.35.8",
      "pyserial==3.5",
      "pyserial-asyncio==0.6",
      "zha-quirks==0.0.101",
      "zigpy-deconz==0.21.0",
      "zigpy==0.56.1",
      "zigpy-xbee==0.18.1",
      "zigpy-zigate==0.11.0",
      "zigpy-znp==0.11.2"
    ],
    "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": "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": "_slzb-06._tcp.local.",
        "name": "slzb-06*"
      }
    ],
    "is_built_in": true
  },
  "data": {
    "ieee": "**REDACTED**",
    "nwk": 59249,
    "manufacturer": "BOSCH",
    "model": "RBSH-TRV0-ZB-EU",
    "name": "BOSCH RBSH-TRV0-ZB-EU",
    "quirk_applied": false,
    "quirk_class": "zigpy.device.Device",
    "manufacturer_code": 4617,
    "power_source": "Battery or Unknown",
    "lqi": 255,
    "rssi": -63,
    "last_seen": "2023-07-15T08:31:40",
    "available": true,
    "device_type": "EndDevice",
    "signature": {
      "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.EndDevice: 2>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress: 128>, manufacturer_code=4617, maximum_buffer_size=127, 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=True, *is_full_function_device=False, *is_mains_powered=False, *is_receiver_on_when_idle=False, *is_router=False, *is_security_capable=False)",
      "endpoints": {
        "1": {
          "profile_id": "0x0104",
          "device_type": "0x0301",
          "input_clusters": [
            "0x0000",
            "0x0001",
            "0x0003",
            "0x0004",
            "0x0020",
            "0x0201",
            "0x0204",
            "0x0b05"
          ],
          "output_clusters": [
            "0x000a",
            "0x0019"
          ]
        }
      },
      "manufacturer": "BOSCH",
      "model": "RBSH-TRV0-ZB-EU"
    },
    "active_coordinator": false,
    "entities": [
      {
        "entity_id": "button.bosch_rbsh_trv0_zb_eu_identify",
        "name": "BOSCH RBSH-TRV0-ZB-EU"
      },
      {
        "entity_id": "climate.bosch_rbsh_trv0_zb_eu_thermostat",
        "name": "BOSCH RBSH-TRV0-ZB-EU"
      },
      {
        "entity_id": "sensor.bosch_rbsh_trv0_zb_eu_battery",
        "name": "BOSCH RBSH-TRV0-ZB-EU"
      },
      {
        "entity_id": "sensor.bosch_rbsh_trv0_zb_eu_hvac_action",
        "name": "BOSCH RBSH-TRV0-ZB-EU"
      }
    ],
    "neighbors": [],
    "routes": [],
    "endpoint_names": [
      {
        "name": "THERMOSTAT"
      }
    ],
    "user_given_name": null,
    "device_reg_id": "8a705142eda33efd541b5bdceb7ac9c7",
    "area_id": null,
    "cluster_details": {
      "1": {
        "device_type": {
          "name": "THERMOSTAT",
          "id": 769
        },
        "profile_id": 260,
        "in_clusters": {
          "0x0000": {
            "endpoint_attribute": "basic",
            "attributes": {
              "0x0004": {
                "attribute_name": "manufacturer",
                "value": "BOSCH"
              },
              "0x0005": {
                "attribute_name": "model",
                "value": "RBSH-TRV0-ZB-EU"
              }
            },
            "unsupported_attributes": {}
          },
          "0x0001": {
            "endpoint_attribute": "power",
            "attributes": {
              "0x0021": {
                "attribute_name": "battery_percentage_remaining",
                "value": 200
              },
              "0x0020": {
                "attribute_name": "battery_voltage",
                "value": 31
              }
            },
            "unsupported_attributes": {}
          },
          "0x0003": {
            "endpoint_attribute": "identify",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0004": {
            "endpoint_attribute": "groups",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0020": {
            "endpoint_attribute": "poll_control",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0201": {
            "endpoint_attribute": "thermostat",
            "attributes": {
              "0x001b": {
                "attribute_name": "ctrl_sequence_of_oper",
                "value": 2
              },
              "0x0000": {
                "attribute_name": "local_temperature",
                "value": 2480
              },
              "0x0016": {
                "attribute_name": "max_heat_setpoint_limit",
                "value": 3000
              },
              "0x0015": {
                "attribute_name": "min_heat_setpoint_limit",
                "value": 500
              },
              "0x0011": {
                "attribute_name": "occupied_cooling_setpoint",
                "value": 2300
              },
              "0x0012": {
                "attribute_name": "occupied_heating_setpoint",
                "value": 2100
              },
              "0x001c": {
                "attribute_name": "system_mode",
                "value": 4
              }
            },
            "unsupported_attributes": {
              "0x0002": {
                "attribute_name": "occupancy"
              },
              "0x0003": {
                "attribute_name": "abs_min_heat_setpoint_limit"
              },
              "0x0004": {
                "attribute_name": "abs_max_heat_setpoint_limit"
              },
              "0x0005": {
                "attribute_name": "abs_min_cool_setpoint_limit"
              },
              "0x0007": {
                "attribute_name": "pi_cooling_demand"
              },
              "0x0008": {
                "attribute_name": "pi_heating_demand"
              },
              "0x0006": {
                "attribute_name": "abs_max_cool_setpoint_limit"
              },
              "0x001e": {
                "attribute_name": "running_mode"
              },
              "0x0013": {
                "attribute_name": "unoccupied_cooling_setpoint"
              },
              "0x0014": {
                "attribute_name": "unoccupied_heating_setpoint"
              },
              "0x0029": {
                "attribute_name": "running_state"
              },
              "0x0017": {
                "attribute_name": "min_cool_setpoint_limit"
              },
              "0x0018": {
                "attribute_name": "max_cool_setpoint_limit"
              }
            }
          },
          "0x0204": {
            "endpoint_attribute": "thermostat_ui",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0b05": {
            "endpoint_attribute": "diagnostic",
            "attributes": {},
            "unsupported_attributes": {}
          }
        },
        "out_clusters": {
          "0x000a": {
            "endpoint_attribute": "time",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0019": {
            "endpoint_attribute": "ota",
            "attributes": {},
            "unsupported_attributes": {}
          }
        }
      }
    }
  }
}

Additional information

https://www.zigbee2mqtt.io/devices/BTH-RA.html

Koenkk/zigbee2mqtt#14926

https://zigbee.blakadder.com/Bosch_BTH-RA.html

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions