home-assistant / core

:house_with_garden: Open source home automation that puts local control and privacy first.
https://www.home-assistant.io
Apache License 2.0
72.8k stars 30.5k forks source link

Thermostat 'up arrow' results in setting max temp instead of +0.5 degrees #6365

Closed tyfoon closed 7 years ago

tyfoon commented 7 years ago

I noticed that in 39.x the thermostat card changed slightly. The slider was replaced by an up and down 'arrow' type of symbol. Much better as the slider, especially on a mobile device, was very fiddly.

Pressing the down arrow lowers the temperature with .5 degrees C. However the up arrow makes the setpoint jump immidiately to 35 degrees instead of going up with one increment.

This happens only with thermostats that also have operation and fan fields. I also have a few danfoss radiator valves and they work fine (up arrow nicely ups the temp with .5 degrees)

**Home Assistant release (hass --version): 39.1

ghost commented 7 years ago

Hi

The arrow is really strange. I need to press it 5 times to set it up by 1 degree. It immediately changes back to the old value, if I am not hitting up or down often and fast enough.

Is there a way to revert it back to a slider in the setting?

aslansky commented 7 years ago

I also think the up/down is not the right ui element for climate control. For me when my thermostat is off it shows 4.5 degrees and then I have to press the up button a lot to get to for example 20 degrees celsius. I found the slider better for setting temperatures quickly.

ghost commented 7 years ago

Yeah, that's why I reverted back to 0.38.4 to get the slider back. I hope it will be configurable in a later release.

schotime commented 7 years ago

This is soooo annoying. Firstly the bug, and secondly that the slider is gone.

cyclingengineer commented 7 years ago

I had no problems with the slider on my mobile devices - not even a big screen as using Xperia z5 compact. I found it precise and quick to use.

With the up/down arrangement I now have issues with this UI as when I press up it constantly jumps back and then slowly ticks up as the messages get sent (using homegear to eq3 devices, which without modification has limited messaging over time so could really destroy usability for people with this setup). It also takes 8 UI interactions to go from 16 to 20 Deg C.

The behaviour of skipping back and slowly incrementing is infuriating for users of my system - so, WAF has dropped massively.

This needs to be at least a configuration option and the UI should only trigger the sending of a set point once a user has settled to avoid flooding devices with messages.

Also, maybe the slider text bubble could be made larger? Or the rotary element made so that it can be scrolled?

sdague commented 7 years ago

I think there are a few things here, so lets separate them.

First, there seems to be a bug somewhere around the environment setting to Max when it should have been just doing another step. People that are seeing that, can you provide more information on what platforms that is showing up on? Perhaps there is something in common we can figure out, because I haven't seen that with my setup which is the proliphix (but that's pretty basic property setting).

There is also a usage question, which is large range jumps. That honestly was a usage pattern I didn't imagine existed, because I had assumed an environment with timed setbacks, either natively in the thermostat or emulated in HA with rules. I'm rather surprised people are regularly manually shifting by more than a couple of degrees in an home automation environment.

For the large range jumps, for people without a setback system, perhaps some paper-input field instead? That would allow people to type in the exact number they were looking for, it seems like for a lot of folks they are doing this on a computer and that would be ideal. I also wonder if there are a few presets people are going to, where a set of preset buttons would be more ideal.

MartinHjelmare commented 7 years ago

It's already possible to create presets via eg different scenes. Totally agree that doing large range jumps on a regular basis manually seems odd. I don't think we should have different GUI interfaces for the same thing.

tyfoon commented 7 years ago

sdague is correct. There are a few things that need seperating.

I'm using a thermostat that is connected via the Vera platform.

On the usage question; I also seldom have to input large temp jumps. All is automated so generally my changes are very small (eg feels a bid cold, 1c up)

aslansky commented 7 years ago

I am using Homematic. It seems like the radiator valve is locking itself when it receives to many messages in a certain amount of time, which makes it impossible to use the up/down arrows for change of more than 5 degrees. Turning the valve off or doing a large jump is not possible with the default climate panel which is in my opinion a step backwards to the slider. Maybe a slider element with plus and minus buttons on the left/right would be a reasonable compromise.

cyclingengineer commented 7 years ago

The big jump use case isn't necessarily not having automated setback. I have individual heating zones in nearly all my rooms, but don't have presence detection in all those same rooms yet, so it's mostly going from setback to on.

Need to get round to those scenes...

On 7 Mar 2017 01:37, "Sean Dague" notifications@github.com wrote:

I think there are a few things here, so lets separate them.

First, there seems to be a bug somewhere around the environment setting to Max when it should have been just doing another step. People that are seeing that, can you provide more information on what platforms that is showing up on? Perhaps there is something in common we can figure out, because I haven't seen that with my setup which is the proliphix (but that's pretty basic property setting).

There is also a usage question, which is large range jumps. That honestly was a usage pattern I didn't imagine existed, because I had assumed an environment with timed setbacks, either natively in the thermostat or emulated in HA with rules. I'm rather surprised people are regularly manually shifting by more than a couple of degrees in an home automation environment.

For the large range jumps, for people without a setback system, perhaps some paper-input field instead? That would allow people to type in the exact number they were looking for, it seems like for a lot of folks they are doing this on a computer and that would be ideal. I also wonder if there are a few presets people are going to, where a set of preset buttons would be more ideal.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/home-assistant/home-assistant/issues/6365#issuecomment-284593095, or mute the thread https://github.com/notifications/unsubscribe-auth/ADjHRMahNhCnaeNTI_gmMjiEfkjQdhFZks5rjLTKgaJpZM4MRfNe .

schotime commented 7 years ago

@sdague I'm running into the max temp on up arrow but when using the mysensors climate component.

schotime commented 7 years ago

@sdague I think i know what it is.

I change the value from 28 -> 26, then when the temp comes back from my aircon it has 26.0 so it changes back to 26.0. If i hit the up arrow then it changes to 35.

Seems to be also the initial press. If you push down first then you can go up with no problems.

schotime commented 7 years ago

@sdague Did some more debugging on this, and the reason is because this.value is coming through as a string. eg. "23" + .05 = "230.5" which is greater than the max of 35. I was able to put a float() around my climate component but this could be easily fixed if the climate component just put a + in front of the this.value calls.

jminardi commented 7 years ago

Has there been any progress on this? I am experiencing something similar to this bug. When I first load the card I get an empty spinbox:

http://imgur.com/a/YD2uL

The up arrow moves the number up by 1, and clicking the down arrow causes the number to jump to 45 (maybe lower bounds checks are only run on down arrow click?)

After I pick a number, I have not figured out how to actually set the target.

I am also using this with an ecobee, is there any way for me to set the heating target and cooling target separately?

sdague commented 7 years ago

The giant jump makes sense if the types were breaking down, however they are all typed as Numbers. What browsers are hitting the MAX temperature bugs?

schotime commented 7 years ago

Chrome. I have debugged this and it's definitely a string coming through if the component sends a string as mentioned in my last comment.

sdague commented 7 years ago

If that's the case, this should hopefully fix it, though it seems like an odd bug there on the polymer side https://github.com/home-assistant/home-assistant-polymer/pull/288

sdague commented 7 years ago

@schotime what version of Chrome on what platform?

turbokongen commented 7 years ago

I'm going to throw in some info here: I use the generic_thermostat and a zwave thermostat, and none of these behave like this bug describes. That leads me to think that the problem lies in the backend platform not in the frontend. If it was in the frontend, all platforms would have the same problem.

schotime commented 7 years ago

It definitely seems like the value can be changed from a string to a number or viceversa from the climate component python side. Latest chrome. I could fix this by calling float on the target temp method but none of the built ins do this.

sdague commented 7 years ago

@schotime what backend platform are you using?

sdague commented 7 years ago

@schotime ah, I see mysensors, based on the theory that some platforms aren't making temperatures numbers, does the following patch help you?

diff --git a/homeassistant/components/climate/mysensors.py b/homeassistant/components/climate/mysensors.py
index adf44a818..cee377d62 100755
--- a/homeassistant/components/climate/mysensors.py
+++ b/homeassistant/components/climate/mysensors.py
@@ -67,7 +67,7 @@ class MySensorsHVAC(mysensors.MySensorsDeviceEntity, ClimateDevice):
     @property
     def current_temperature(self):
         """Return the current temperature."""
-        return self._values.get(self.gateway.const.SetReq.V_TEMP)
+        return float(self._values.get(self.gateway.const.SetReq.V_TEMP))

     @property
     def target_temperature(self):