Giter Club home page Giter Club logo

Comments (3)

tsightler avatar tsightler commented on June 20, 2024 1

As far as I can see this is not a bug, but rather is by design as the current thermostat implementation does not use the thermostat-operating-status virtual device and thus it will always be hidden (it's hidden for my Honeywell thermostat as well).

Right now the way Current Heating Cooling State is updates is that it uses the current temperature, mode and set point to algorithmically "estimate" what the current operating state is likely to be. In other words, if the mode is "heat" and the current temperature is below the set point, then it assumes the state is "HEAT", if the mode was "cool" and the current temperature is above the set point, then it assumes the state is "COOL". The logic is a little more complex than this, but that's the jist of it, it doesn't use the actual reporting mode.

This is not a perfect implementation as it will not reflect the current operating state 100% of the time. For example, on my thermostat the Homebridge operating state will switch to "Off" as soon as the temperature rises to be the same as the set temperature, however, my thermostat will keep the unit running for quite a bit longer to get closer to the mid-point.

I'm not sure why it was implemented this way vs using the thermostat-operating-status. If I remember correctly it was contributed by another user many years ago (2020) and it doesn't appear to have had any significant changes in that time, so I assume it is mostly good enough for most users.

from ring.

tsightler avatar tsightler commented on June 20, 2024

Took another quick glance through the code and verified that the behavior above is correct/expected as the code is written today. The thermostat-operating-status will always show as a hidden accessory because it is not listed in ignoreHiddenDeviceTypes but it has no specific class handler so it will be logged as a hidden accessory, however, as it is not used in the thermostat device this has no impact.

What probably should happen:

  1. Add a device RingDeviceType to ring-client-api for thermostat-operating-status
  2. Add this type to ignoreHiddenDeviceTypes
  3. Modify thermostat class to actually use thermostat-operating-status instead of ignoring it (should be ease as device is available via onComponentDevices which is already used for the Temperature Sensor

I know this works because I already use this same basic logic in ring-mqtt. I'll try to do this for the next version, however, that probably won't be until sometime next month as I have limited time available at the moment.

For now however, I'm going to close this issue since, as currently written, it is expected that the thermostat operating status is a hidden accessory so the request about unhiding an the accessory is invalid.

from ring.

millhoo avatar millhoo commented on June 20, 2024

Thanks, @tsightler for the looking into this and the explanation.

I had an IFTTT plugin and automation set up to log every time the thermostat changed current operating status to "heat" or "off". It was working in that it the current operating status would come on and the go off in 2 minutes even though the boiler was still heating. Based on your explanation, I now understand that to be by design or a function of the algorithm estimating the current operating status.

Thanks, again.

from ring.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.