dgreif / ring

Unofficial packages for Ring Doorbells, Cameras, Alarm System, and Smart Lighting
MIT License
1.2k stars 163 forks source link

Honeywell T6 Pro Z-Wave thermostat showing low battery when it doesn't require batteries. #987

Closed tinyboxio closed 1 month ago

tinyboxio commented 2 years ago

Bug Report

Describe the Bug

We have 3 Honeywell T6 ProSeries Z-Wave thermostats. They are showing low battery in HomeKit when it doesn't require batteries (batteries are optional).

To Reproduce

Steps to reproduce the behavior:

Expected behavior

Thermostats should not display as low battery in HomeKit if there are no batteries installed or there should be a way to turn this functionality off in the config.

Screenshots/Logs

N/A

Additional context

N/A

Homebridge Ring Config

Post homebridge-ring platform config without sensitive information


{
    "refreshToken": "xxx",
    "platform": "Ring",
    "_bridge": {
        "username": "xxx",
        "port": 35894
    }
}

Environment

dgreif commented 2 years ago

@tinyboxio can you follow the directions for the data discovery tool and post the results here?

tsightler commented 2 years ago

Hi @dgreif. I actually have one of these thermostats connected to Ring, mostly for the purpose of testing/supporting the thermostat device in ring-mqtt, so I'll try to provide the data discovery for you soon. However, I've already taken a look at it myself and I'm not really sure what to do with it because I don't believe there any way to tell the difference between a device with no battery vs a device with a completely dead battery, which I guess is to be expected.

I suppose you could assume that if, during initial startup, the battery value is 0%, then probably it doesn't have any battery in it at all, since it's unlikely that actual batteries would ever get all the way to 0%.

dgreif commented 2 years ago

Good to know. Does the Ring app show a battery associated with it?

tsightler commented 2 years ago

Not that I see, even when a battery is installed, there's no indication in the Ring app about the battery state, as far as I can tell it's in the data only. For this specific model batteries are required only if there's no 24VAC wired power supply, but even if there is, having a battery allows the unit to survive power outages of longer than a few minutes without losing the date/time settings. But of course there are many other Z-wave thermostats that may have different battery requirements.

tsightler commented 2 years ago

Device data from a thermostat with battery:

{
    "acStatus": "ok",
    "adapterType": "zwave",
    "batteryLevel": 90,
    "batteryStatus": "full",
    "categoryId": 11,
    "commStatus": "ok",
    "commandTypes": {
        "communication-poll": {
            "requiresTrust": false
        },
        "reconfigure.start": {
            "requiresTrust": false
        },
        "update-node-neighbors.start": {
            "requiresTrust": false
        }
    },
    "componentDevices": [
        {
            "rel": "0:thermostat-operating-status",
            "zid": "231d7f30-338d-uuid"
        },
        {
            "rel": "0:sensor.temperature",
            "zid": "d1c26e9e-1e5f-uuid"
        }
    ],
    "deviceFoundTime": 1628570480104,
    "deviceType": "temperature-control.thermostat",
    "lastCommTime": 1662075111739,
    "lastUpdate": 1662075111797,
    "linkQuality": "ok",
    "managerId": "zwave",
    "manufacturerName": "Honeywell / Resideo",
    "name": "Bonus Room",
    "placement": "unassigned",
    "pollInterval": 0,
    "roomId": 17,
    "setupByPluginStatus": "complete",
    "setupByUserStatus": "complete",
    "subCategoryId": 0,
    "tags": [],
    "tamperStatus": "ok",
    "zid": "fd834405-a6a4-uuid",
    "fanMode": "auto",
    "mode": "off",
    "modeSetpoints": {
        "auto": {
            "deadBand": 3.888889,
            "deadBandMin": 0.5555555,
            "setPoint": 13.88889,
            "setPointMax": 37.22222,
            "setPointMin": 4.444444
        },
        "aux": {
            "setPoint": 10,
            "setPointMax": 32.22222,
            "setPointMin": 4.444444
        },
        "cool": {
            "setPoint": 17.77778,
            "setPointMax": 37.22222,
            "setPointMin": 10
        },
        "esCool": {
            "setPoint": 29.44444,
            "setPointMax": 37.22222,
            "setPointMin": 10
        },
        "esHeat": {
            "setPoint": 16.66667,
            "setPointMax": 32.22222,
            "setPointMin": 4.444444
        },
        "heat": {
            "setPoint": 10,
            "setPointMax": 32.22222,
            "setPointMin": 4.444444
        },
        "off": {}
    },
    "supportedFanModes": [
        "on",
        "circulate",
        "auto"
    ]
}

I'll take the battery out and try to get the dump after that, but I think the battery level just goes to 0.

tinyboxio commented 1 year ago

Here is the relevant data. I figure if batteryLevel is 0 and commStatus is ok, it should be assumed that the device is plugged in and doesn't need a battery.

{
          "adapterType": "zwave",
          "batteryLevel": 0,
          "batteryStatus": "warn",
          "categoryId": 11,
          "commStatus": "ok",
          "commandTypes": {
            "communication-poll": {
              "requiresTrust": false
            },
            "reconfigure.start": {
              "requiresTrust": false
            },
            "update-node-neighbors.start": {
              "requiresTrust": false
            }
          },
          "componentDevices": [
            {
              "rel": "0:thermostat-operating-status",
              "zid": "dd1974f0-2ab1-uuid"
            },
            {
              "rel": "0:sensor.temperature",
              "zid": "ee2c44d4-f781-uuid"
            }
          ],
          "deviceFoundTime": 1652856627695,
          "deviceType": "temperature-control.thermostat",
          "lastCommTime": 1664267464705,
          "lastUpdate": 1664267464982,
          "linkQuality": "ok",
          "managerId": "zwave",
          "manufacturerName": "Honeywell / Resideo",
          "name": "Suite Thermostat",
          "placement": "unassigned",
          "pollInterval": 0,
          "roomId": 1,
          "setupByPluginStatus": "complete",
          "setupByUserStatus": "complete",
          "subCategoryId": 0,
          "tags": [],
          "tamperStatus": "ok",
          "zid": "782c415f-eb0f-uuid",
          "fanMode": "on",
          "mode": "cool",
          "modeSetpoints": {
            "auto": {
              "deadBand": 7.205556,
              "deadBandMin": 0.5555556,
              "setPoint": 16.09444,
              "setPointMax": 37.22222,
              "setPointMin": 4.444444
            },
            "cool": {
              "setPoint": 23.3,
              "setPointMax": 37.22222,
              "setPointMin": 10
            },
            "esCool": {
              "setPoint": 29.44444,
              "setPointMax": 37.22222,
              "setPointMin": 10
            },
            "esHeat": {
              "setPoint": 16.66667,
              "setPointMax": 32.22222,
              "setPointMin": 4.444444
            },
            "heat": {
              "setPoint": 8.888889,
              "setPointMax": 32.22222,
              "setPointMin": 4.444444
            },
            "off": {}
          },
          "setPoint": 23.3,
          "setPointMax": 37.22222,
          "setPointMin": 10,
          "supportedFanModes": [
            "on",
            "circulate",
            "auto"
          ]
}
tsightler commented 1 month ago

Just going to close this at this point. Realistically, the simple workaround is to put in a battery which seems reasonable.