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] Danfoss Ally eTRV0100 - other features than just temperature and setpoint #1726

Closed
OZ1SEJ opened this issue Aug 30, 2022 · 10 comments
Labels
enhancement Improve an existing quirk stale Issue is inactivate and might get closed soon

Comments

@OZ1SEJ
Copy link

OZ1SEJ commented Aug 30, 2022

Is your feature request related to a problem? Please describe.
Currently, the Danfoss Ally integration supports a temperature sensor (what's the current temperature at the valve?) and a temperature control (setpoint).

Describe the solution you'd like
According to https://zigbee.blakadder.com/Danfoss_014G2461.html the device supports

  • % opening
  • child lock
  • external temperature sensor
  • local temperature battery
  • open window detection
  • ota
  • thermostat

...of which only "local temperature battery" (I suppose) and "thermostat" are currently supported in ZHA. The other parameters seem to be available by creating template sensors, but I believe these ought to be directly available.

EDIT: Also, the current implementation allows to change HVAC mode between "Heat" and "Off", which actually isn't supported by the device. So I believe this should be removed.

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=4678, 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=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": 260,
      "device_type": "0x0301",
      "in_clusters": [
        "0x0000",
        "0x0001",
        "0x0003",
        "0x000a",
        "0x0020",
        "0x0201",
        "0x0204",
        "0x0b05"
      ],
      "out_clusters": [
        "0x0000",
        "0x0019"
      ]
    }
  },
  "manufacturer": "Danfoss",
  "model": "eTRV0100",
  "class": "zhaquirks.danfoss.thermostat.DanfossThermostat"
}
Diagnostic information
{
  "home_assistant": {
    "installation_type": "Home Assistant OS",
    "version": "2022.8.7",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.10.5",
    "docker": true,
    "arch": "aarch64",
    "timezone": "Europe/Copenhagen",
    "os_name": "Linux",
    "os_version": "5.15.32-v8",
    "supervisor": "2022.08.5",
    "host_os": "Home Assistant OS 8.5",
    "docker_version": "20.10.14",
    "chassis": "embedded",
    "run_as_root": true
  },
  "custom_components": {
    "hacs": {
      "version": "1.26.2",
      "requirements": [
        "aiogithubapi>=22.2.4"
      ]
    },
    "danfoss_ally": {
      "version": "v1.0.7",
      "requirements": [
        "pydanfossally==0.0.26"
      ]
    }
  },
  "integration_manifest": {
    "domain": "zha",
    "name": "Zigbee Home Automation",
    "config_flow": true,
    "documentation": "https://www.home-assistant.io/integrations/zha",
    "requirements": [
      "bellows==0.33.1",
      "pyserial==3.5",
      "pyserial-asyncio==0.6",
      "zha-quirks==0.0.78",
      "zigpy-deconz==0.18.0",
      "zigpy==0.50.2",
      "zigpy-xbee==0.15.0",
      "zigpy-zigate==0.9.2",
      "zigpy-znp==0.8.2"
    ],
    "usb": [
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*2652*",
        "known_devices": [
          "slae.sh cc2652rb stick"
        ]
      },
      {
        "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"
        ]
      }
    ],
    "codeowners": [
      "@dmulcahey",
      "@adminiuga",
      "@puddly"
    ],
    "zeroconf": [
      {
        "type": "_esphomelib._tcp.local.",
        "name": "tube*"
      },
      {
        "type": "_zigate-zigbee-gateway._tcp.local.",
        "name": "*zigate*"
      }
    ],
    "after_dependencies": [
      "onboarding",
      "usb",
      "zeroconf"
    ],
    "iot_class": "local_polling",
    "loggers": [
      "aiosqlite",
      "bellows",
      "crccheck",
      "pure_pcapy3",
      "zhaquirks",
      "zigpy",
      "zigpy_deconz",
      "zigpy_xbee",
      "zigpy_zigate",
      "zigpy_znp"
    ],
    "is_built_in": true
  },
  "data": {
    "ieee": "**REDACTED**",
    "nwk": 49386,
    "manufacturer": "Danfoss",
    "model": "eTRV0100",
    "name": "Danfoss eTRV0100",
    "quirk_applied": true,
    "quirk_class": "zhaquirks.danfoss.thermostat.DanfossThermostat",
    "manufacturer_code": 4678,
    "power_source": "Battery or Unknown",
    "lqi": 33,
    "rssi": null,
    "last_seen": "2022-08-30T23:01:51",
    "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=4678, 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=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": 260,
          "device_type": "0x0301",
          "in_clusters": [
            "0x0000",
            "0x0001",
            "0x0003",
            "0x000a",
            "0x0020",
            "0x0201",
            "0x0204",
            "0x0b05"
          ],
          "out_clusters": [
            "0x0000",
            "0x0019"
          ]
        }
      }
    },
    "active_coordinator": false,
    "entities": [
      {
        "entity_id": "button.danfoss_etrv0100_identifybutton",
        "name": "Danfoss eTRV0100"
      },
      {
        "entity_id": "climate.danfoss_etrv0100_thermostat",
        "name": "Danfoss eTRV0100"
      },
      {
        "entity_id": "sensor.danfoss_etrv0100_battery",
        "name": "Danfoss eTRV0100"
      },
      {
        "entity_id": "sensor.danfoss_etrv0100_thermostathvacaction",
        "name": "Danfoss eTRV0100"
      }
    ],
    "neighbors": [],
    "endpoint_names": [
      {
        "name": "THERMOSTAT"
      }
    ],
    "user_given_name": null,
    "device_reg_id": "c74d0b34d3812a6db3b087d4600c2337",
    "area_id": "badevaerelse_1_sal",
    "cluster_details": {
      "1": {
        "device_type": {
          "name": "THERMOSTAT",
          "id": 769
        },
        "profile_id": 260,
        "in_clusters": {
          "0x0000": {
            "endpoint_attribute": "basic",
            "attributes": {
              "0x0004": {
                "attribute_name": "manufacturer",
                "value": "Danfoss"
              },
              "0x0005": {
                "attribute_name": "model",
                "value": "eTRV0100"
              }
            },
            "unsupported_attributes": {}
          },
          "0x0001": {
            "endpoint_attribute": "power",
            "attributes": {
              "0x0020": {
                "attribute_name": "battery_voltage",
                "value": 32
              },
              "0x0021": {
                "attribute_name": "battery_percentage_remaining",
                "value": 192
              }
            },
            "unsupported_attributes": {
              "0x0031": {
                "attribute_name": "battery_size"
              },
              "0x0033": {
                "attribute_name": "battery_quantity"
              }
            }
          },
          "0x0003": {
            "endpoint_attribute": "identify",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x000a": {
            "endpoint_attribute": "time",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0020": {
            "endpoint_attribute": "poll_control",
            "attributes": {
              "0x0000": {
                "attribute_name": "checkin_interval",
                "value": 13200
              }
            },
            "unsupported_attributes": {}
          },
          "0x0201": {
            "endpoint_attribute": "thermostat",
            "attributes": {
              "0x0000": {
                "attribute_name": "local_temperature",
                "value": 2342
              },
              "0x0003": {
                "attribute_name": "abs_min_heat_setpoint_limit",
                "value": 500
              },
              "0x0004": {
                "attribute_name": "abs_max_heat_setpoint_limit",
                "value": 3500
              },
              "0x0008": {
                "attribute_name": "pi_heating_demand",
                "value": 0
              },
              "0x0012": {
                "attribute_name": "occupied_heating_setpoint",
                "value": 500
              },
              "0x0015": {
                "attribute_name": "min_heat_setpoint_limit",
                "value": 500
              },
              "0x0016": {
                "attribute_name": "max_heat_setpoint_limit",
                "value": 3500
              },
              "0x001b": {
                "attribute_name": "ctrl_sequence_of_oper",
                "value": 2
              },
              "0x001c": {
                "attribute_name": "system_mode",
                "value": 4
              },
              "0x0030": {
                "attribute_name": "setpoint_change_source",
                "value": 2
              },
              "0x4000": {
                "attribute_name": "etrv_open_windows_detection",
                "value": 0
              },
              "0x4031": {
                "attribute_name": "heat_supply_request",
                "value": 0
              },
              "0x404a": {
                "attribute_name": "load_estimate_radiator",
                "value": -1
              },
              "0x404d": {
                "attribute_name": "adaptation_run_status",
                "value": 0
              }
            },
            "unsupported_attributes": {
              "0x0002": {
                "attribute_name": "occupancy"
              },
              "0x0005": {
                "attribute_name": "abs_min_cool_setpoint_limit"
              },
              "0x0029": {
                "attribute_name": "running_state"
              },
              "0x0007": {
                "attribute_name": "pi_cooling_demand"
              },
              "0x0006": {
                "attribute_name": "abs_max_cool_setpoint_limit"
              },
              "0x001e": {
                "attribute_name": "running_mode"
              },
              "0x0011": {
                "attribute_name": "occupied_cooling_setpoint"
              },
              "0x0013": {
                "attribute_name": "unoccupied_cooling_setpoint"
              },
              "0x0014": {
                "attribute_name": "unoccupied_heating_setpoint"
              },
              "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": {
          "0x0000": {
            "endpoint_attribute": "basic",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0019": {
            "endpoint_attribute": "ota",
            "attributes": {},
            "unsupported_attributes": {}
          }
        }
      }
    }
  }
}
Additional logs
Paste any additional debug logs here.
Don't remove the extra line breaks outside the ``` marks.

N/A

Additional context
This is the device view. As can be seen, many of the supported parameters are not shown.
billede

@mhaas
Copy link

mhaas commented Sep 1, 2022

Would it be possible to map the non-functional "off" state to the lowest possible temperature instead?

@OZ1SEJ
Copy link
Author

OZ1SEJ commented Sep 3, 2022

That certainly sounds like a good idea.

@stachjankowski
Copy link

If anyone would be interested in implementing these changes, here is the documentation.
https://assets.danfoss.com/documents/202524/AU417130778872en-000101.pdf

@Caius-Bonus
Copy link
Contributor

Caius-Bonus commented Jan 29, 2023

I have implemented all attributes mentioned in the documentation and have opened pull requests in the relevant repositories:
home-assistant/core#86907
#2150
Note that just installing the quirk is not enough to get entities in home assistant.

@github-actions
Copy link

There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest version and check if that solves the issue. Let us know if that works for you by adding a comment 👍 This issue has now been marked as stale and will be closed if no further activity occurs. Thank you for your contributions.

@github-actions github-actions bot added the stale Issue is inactivate and might get closed soon label Jul 28, 2023
@jkozera
Copy link

jkozera commented Aug 2, 2023

#2150 is still not merged. I was testing #2150 over the winter by patching it into my HA instance together with home-assistant/core#86907, and it seemed to work well.

Copy link

There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest version and check if that solves the issue. Let us know if that works for you by adding a comment 👍 This issue has now been marked as stale and will be closed if no further activity occurs. Thank you for your contributions.

@github-actions github-actions bot added the stale Issue is inactivate and might get closed soon label Jan 29, 2024
@OZ1SEJ
Copy link
Author

OZ1SEJ commented Jan 30, 2024

Due to this issue, I switched from ZHA to Zigbee2MQTT a long time ago. If this has since been remedied in ZHA, please feel free to close this issue...

@github-actions github-actions bot removed the stale Issue is inactivate and might get closed soon label Jan 30, 2024
@bieniu
Copy link

bieniu commented Jan 30, 2024

Still valid.

Copy link

There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest version and check if that solves the issue. Let us know if that works for you by adding a comment 👍 This issue has now been marked as stale and will be closed if no further activity occurs. Thank you for your contributions.

@github-actions github-actions bot added the stale Issue is inactivate and might get closed soon label Jul 28, 2024
@github-actions github-actions bot closed this as not planned Won't fix, can't repro, duplicate, stale Aug 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Improve an existing quirk stale Issue is inactivate and might get closed soon
Projects
None yet
Development

No branches or pull requests

7 participants