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

H7131 Space Heater: HA switch controls seem mismatched #59

Closed
phurth opened this issue Jan 12, 2024 · 20 comments
Closed

H7131 Space Heater: HA switch controls seem mismatched #59

phurth opened this issue Jan 12, 2024 · 20 comments

Comments

@phurth
Copy link

phurth commented Jan 12, 2024

Govee Device SKU

H7131

Govee2MQTT Version

2024.01.11-9564506d

Describe the issue

After installing and configuring the add-on I have noted a number of anomalies in the operation of the heater's switches in HA. In the included screenshot:

  1. This switch is apparently a light control, however the toggle actually turns the heater on/off (in addition to working to control the light color and brightness).
  2. The Nightlight Toggle switch seems to only work intermittently, and at any rate is redundant with control 1).
  3. The Power Switch is what I would expect to use to turn the heater on/off, and it does work but seems to conflict with control 1).

h7131_ha_switch_mismatch

The other controls (auto, fan, and gearMode parameters) are confusing as to why they are 3 separate controls. As I understand it, the working mode for this device is a single property with 5 possible values:

"properties":{"mode":{"options":[{"name":"Low","value":"1"},{"name":"Medium","value":"2"},{"name":"High","value":"3"},{"name":"Fan","value":"4"},{"name":"Auto","value":"5"}]}}

Please let me know if you'd like me to do any testing or need additional info. Thanks!

Startup Diagnostics

s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
GOVEE_API_KEY=REDACTED
GOVEE_MQTT_HOST=192.168.1.49
GOVEE_EMAIL=REDACTED
GOVEE_PASSWORD=REDACTED
GOVEE_MQTT_PASSWORD=REDACTED
GOVEE_MQTT_USER=ecowitt2mqtt
GOVEE_MQTT_PORT=1883
++ cd /app
++ exec /app/govee serve
[2024-01-12T09:55:10 INFO  govee::commands::serve] Starting service. version 2024.01.11-9564506d
[2024-01-12T09:55:10 INFO  govee::commands::serve] Querying platform API for device list
[2024-01-12T09:55:11 INFO  govee::commands::serve] Querying undocumented API for device + room list
[2024-01-12T09:55:13 INFO  govee::service::iot] Connected to IoT: CONNACK code 0: Connection Accepted.
[2024-01-12T09:55:13 INFO  govee::commands::serve] Starting LAN discovery
[2024-01-12T09:55:13 INFO  govee::service::iot] IoT (re)connected with status CONNACK code 0: Connection Accepted.
[2024-01-12T09:55:13 INFO  govee::commands::serve] Waiting 10 seconds for LAN API discovery
[2024-01-12T09:55:23 INFO  govee::commands::serve] Devices returned from Govee's APIs
[2024-01-12T09:55:23 INFO  govee::commands::serve] H5074_E454 (A7:90:A4:C1:38:AA:E4:54 H5074)
[2024-01-12T09:55:23 INFO  govee::commands::serve]   Undoc: room=None supports_iot=false ble_only=true
[2024-01-12T09:55:23 WARN  govee::commands::serve]   Unknown device type. Cannot map to Home Assistant.
[2024-01-12T09:55:23 INFO  govee::commands::serve] 
[2024-01-12T09:55:23 INFO  govee::commands::serve] Smart Space Heater (REDACTED H7131)
[2024-01-12T09:55:23 INFO  govee::commands::serve]   Platform API: devices.types.heater. supports_rgb=true supports_brightness=true
[2024-01-12T09:55:23 INFO  govee::commands::serve]                 color_temp=None segment_rgb=None
[2024-01-12T09:55:23 INFO  govee::commands::serve]   Undoc: room=None supports_iot=true ble_only=false
[2024-01-12T09:55:23 INFO  govee::commands::serve] 
[2024-01-12T09:55:23 INFO  govee::commands::serve] H5074_8B55 (B7:08:A4:C1:38:D5:8B:55 H5074)
[2024-01-12T09:55:23 INFO  govee::commands::serve]   Undoc: room=None supports_iot=false ble_only=true
[2024-01-12T09:55:23 WARN  govee::commands::serve]   Unknown device type. Cannot map to Home Assistant.
[2024-01-12T09:55:23 INFO  govee::commands::serve] 
[2024-01-12T09:55:23 INFO  govee::commands::serve] H5074_24DB (AB:30:A4:C1:38:C8:24:DB H5074)
[2024-01-12T09:55:23 INFO  govee::commands::serve]   Undoc: room=None supports_iot=false ble_only=true
[2024-01-12T09:55:23 WARN  govee::commands::serve]   Unknown device type. Cannot map to Home Assistant.
[2024-01-12T09:55:23 INFO  govee::commands::serve] 
[2024-01-12T09:55:23 INFO  govee::service::http] http server addr is 0.0.0.0:8056
[2024-01-12T09:55:28 WARN  govee::cache] request https://openapi.api.govee.com/router/api/v1/device/scenes status 200: OK: parsing https://openapi.api.govee.com/router/api/v1/device/scenes response: Failed with status 400 Bad Request Bad Request: Request to https://openapi.api.govee.com/router/api/v1/device/scenes failed with code 400 Bad Request devices not support this instance. Full response: {"requestId":"uuid","msg":"devices not support this instance","code":400,"payload":{"sku":"H7131","device":"REDACTED"}}, will use prior results
[2024-01-12T09:55:28 ERROR govee::hass_mqtt::light] Unable to list scenes for Smart Space Heater (REDACTED H7131): list_scene_names: get_scene_caps: request https://openapi.api.govee.com/router/api/v1/device/scenes status 200: OK: parsing https://openapi.api.govee.com/router/api/v1/device/scenes response: Failed with status 400 Bad Request Bad Request: Request to https://openapi.api.govee.com/router/api/v1/device/scenes failed with code 400 Bad Request devices not support this instance. Full response: {"requestId":"uuid","msg":"devices not support this instance","code":400,"payload":{"sku":"H7131","device":"REDACTED"}}
[2024-01-12T09:55:28 WARN  govee::hass_mqtt::enumerator] Do something about Mode nightlightScene for Smart Space Heater (REDACTED H7131) DeviceCapability { kind: Mode, instance: "nightlightScene", parameters: Some(Enum { options: [EnumOption { name: "Flame", value: Number(1), extras: {} }, EnumOption { name: "Rainbow", value: Number(2), extras: {} }, EnumOption { name: "Rhythm", value: Number(3), extras: {} }, EnumOption { name: "Easy", value: Number(4), extras: {} }, EnumOption { name: "Sleep", value: Number(5), extras: {} }] }), alarm_type: None, event_state: None }
[2024-01-12T09:55:28 WARN  govee::hass_mqtt::enumerator] Do something about TemperatureSetting targetTemperature for Smart Space Heater (REDACTED H7131) DeviceCapability { kind: TemperatureSetting, instance: "targetTemperature", parameters: Some(Struct { fields: [StructField { field_name: "autoStop", field_type: Enum { options: [EnumOption { name: "Auto Stop", value: Number(1), extras: {} }, EnumOption { name: "Maintain", value: Number(0), extras: {} }] }, default_value: Some(Number(0)), required: false }, StructField { field_name: "temperature", field_type: Integer { unit: None, range: IntegerRange { min: 5, max: 30, precision: 1 } }, default_value: None, required: true }, StructField { field_name: "unit", field_type: Enum { options: [EnumOption { name: "Celsius", value: String("Celsius"), extras: {} }, EnumOption { name: "Fahrenheit", value: String("Fahrenheit"), extras: {} }] }, default_value: Some(String("Celsius")), required: true }] }), alarm_type: None, event_state: None }
[2024-01-12T09:55:28 INFO  govee::service::hass] Wait 500ms for hass to settle on 10 entity configs
[2024-01-12T09:55:29 INFO  govee::service::hass] MQTT connected with status=CONNACK code 0: Connection Accepted.
[2024-01-12T09:55:41 ERROR govee::hass_mqtt::light] Unable to list scenes for Smart Space Heater (REDACTED H7131): list_scene_names: get_scene_caps: request https://openapi.api.govee.com/router/api/v1/device/scenes status 200: OK: parsing https://openapi.api.govee.com/router/api/v1/device/scenes response: Failed with status 400 Bad Request Bad Request: Request to https://openapi.api.govee.com/router/api/v1/device/scenes failed with code 400 Bad Request devices not support this instance. Full response: {"requestId":"uuid","msg":"devices not support this instance","code":400,"payload":{"sku":"H7131","device":"REDACTED"}}
[2024-01-12T09:55:41 WARN  govee::hass_mqtt::enumerator] Do something about Mode nightlightScene for Smart Space Heater (REDACTED H7131) DeviceCapability { kind: Mode, instance: "nightlightScene", parameters: Some(Enum { options: [EnumOption { name: "Flame", value: Number(1), extras: {} }, EnumOption { name: "Rainbow", value: Number(2), extras: {} }, EnumOption { name: "Rhythm", value: Number(3), extras: {} }, EnumOption { name: "Easy", value: Number(4), extras: {} }, EnumOption { name: "Sleep", value: Number(5), extras: {} }] }), alarm_type: None, event_state: None }
[2024-01-12T09:55:41 WARN  govee::hass_mqtt::enumerator] Do something about TemperatureSetting targetTemperature for Smart Space Heater (REDACTED H7131) DeviceCapability { kind: TemperatureSetting, instance: "targetTemperature", parameters: Some(Struct { fields: [StructField { field_name: "autoStop", field_type: Enum { options: [EnumOption { name: "Auto Stop", value: Number(1), extras: {} }, EnumOption { name: "Maintain", value: Number(0), extras: {} }] }, default_value: Some(Number(0)), required: false }, StructField { field_name: "temperature", field_type: Integer { unit: None, range: IntegerRange { min: 5, max: 30, precision: 1 } }, default_value: None, required: true }, StructField { field_name: "unit", field_type: Enum { options: [EnumOption { name: "Celsius", value: String("Celsius"), extras: {} }, EnumOption { name: "Fahrenheit", value: String("Fahrenheit"), extras: {} }] }, default_value: Some(String("Celsius")), required: true }] }), alarm_type: None, event_state: None }

Additional Logs

No response

Home Assistant Logs

No response

Anything else?

No response

@phurth phurth changed the title HA switch controls seem mismatched H7131 HA switch controls seem mismatched Jan 12, 2024
@wez wez changed the title H7131 HA switch controls seem mismatched H7131 Space Heater: HA switch controls seem mismatched Jan 12, 2024
wez added a commit that referenced this issue Jan 13, 2024
This was actually harmless, but noisy.  The cause was that Govee
API returns this error message when trying to list the available
scenes for the device. When I started this project the API returned
an empty list, but as of a few days ago they made it return an
error condition for devices that don't support scenes. We ignore
the error and continue, so it didn't harm anything, it was
just noisy.

refs: #58
refs: #50
refs: #59
refs: #56
@wez
Copy link
Owner

wez commented Jan 13, 2024

The errors about listing scenes should be resolved in the latest version of the addon. The other issue(s) still need attention.

wez added a commit that referenced this issue Jan 13, 2024
This commit introduces temperature (and humidity) units awareness
to the quirks layer, and defines some quirks for a handful of
devices.

These quirks allow us to correctly interpret the sensor readings
returned from the platform API for these devices, which do not
have any other metadata available from Govee to aid with this.

refs: #58
refs: #56
refs: #47

It may also help to avoid misinterpreting the device power state
with the rgb light state on devices that are not primarily
lights, such as certain kinds of space heaters and humidifiers,
and with some light strips.

refs: #59
refs: #49
wez added a commit that referenced this issue Jan 16, 2024
For devices that report temperature settings, this commit
will now expose a number entity in Celsius that will change
the target temperature when set.

None of the govee device metadata I've see so far report
the current temperature target, so this entity works in
optimistic mode.

It's possible that hass will keep it greyed out until
a value is reported for it, which will be kinda sucky.

refs: #30
refs: #47
refs: #56
refs: #59
refs: #69
refs: #75
wez added a commit that referenced this issue Jan 16, 2024
* *Important*: when upgrading from an earlier version,
  you should delete any devices that have temperature
  sensors or controls and then stop the addon/docker container
  and ensure that you have set the temperature scale to your
  preference, then start the addon/container again.

This commit introduces a configuration option to specify your
preferred temperature scale as either "C" or "F" for Celsius
or Farenheit, respectively.

Entities created in home assistant will be set to use those units,
and convert to the underlying device units.

Since I don't own any devices with this characteristics, this change
has not been tested with real devices and it may not work; please
file an issue if you're having trouble with this!

refs: #30
refs: #47
refs: #56
refs: #59
refs: #69
refs: #75
@wez
Copy link
Owner

wez commented Jan 16, 2024

Temperature related entities have changed in the latest version of the addon.
There are some steps you need to take when upgrading:

  • Delete any devices that have temperature sensors or controls
  • Stop the addon/docker container
  • Ensure that you have set the new temperature scale configuration to your preference
  • Start the addon/container again.

If your device has a temperature reading, there is now only a single sensor entity that will report the value using the temperature scale that you configured with govee2mqtt. (There isn't a simple way to automatically get this from hass).

If your device has a temperature control, there should now be a number entity that will allow you to set the temperature.
It will use the temperature scale that you configured with govee2mqtt.

@phurth
Copy link
Author

phurth commented Jan 16, 2024

After updating following the instructions provided, I now see the ambient temperature (sensorTemperature) from the heater displayed in HA in °F which is correct.

@wez
Copy link
Owner

wez commented Jan 17, 2024

what's left todo here?

@phurth
Copy link
Author

phurth commented Jan 17, 2024

The temp problem was the separate issue I created (#58) which is resolved (thanks!). This issue with mismatched control remains. I do see that some things have changed with the latest version, but several control issues remain (this is with the latest - 2024.01.17-2c728a28):

First, here's what is working:

  • Nightlight Toggle (although all it does is turn the light on/off providing no ability to change color/brightness - see below)
  • Oscillation Toggle
  • Power Switch
  • The light entity (light.smart_space_heater in my case) does work to change color and brightness, but the power control actually is turning the entire unit on/off - see below.

What is not working:

  • The light entity (in my case light.smart_space_heater) actually turns the entire heater unit on/off rather than just the light.
  • Nightlight Toggle is a simple switch, not a light with light controls (color, brightness)
  • Smart Space Heater Target Temperature has 2 issues: first, changing it doesn't appear to do anything, second, the values on the slider appear to be °C (should be °F)

What appears to be working but is confusing:

  • The modes and mode change buttons. The heater has 5 possible modes: Heat-Low, Heat-Medium, Heat-High, Fan, & Auto. I'm not sure what gearMode is, although since it has 3 possible positions, I assume it is the 3 different heat levels. Perhaps the "Mode" drop down could just list the 5 modes and then eliminate the 3 separate mode parameter entities.

@wez
Copy link
Owner

wez commented Jan 17, 2024

Smart Space Heater Target Temperature has 2 issues: first, changing it doesn't appear to do anything,

Please share the logs from the addon when you try to control this.
Likewise for any of the other misbehaving controls.

  • the values on the slider appear to be °C (should be °F)

Did you set the new temperature_scale configuration for the addon configuration to F? The default is C.

  • The light entity (in my case light.smart_space_heater) actually turns the entire heater unit on/off rather than just the light.

I believe this to be a govee platform API issue. I see the same thing when using the platform API on my humidifier.
However, using reverse-engineered IoT allows better control over this.

  • Nightlight Toggle is a simple switch, not a light with light controls (color, brightness)

The metadata returned for your device (which you shared in #58 (comment)) shows:

      {
        "alarmType": null,
        "eventState": null,
        "instance": "nightlightToggle",
        "parameters": {
          "dataType": "ENUM",
          "options": [
            {
              "name": "on",
              "value": 1
            },
            {
              "name": "off",
              "value": 0
            }
          ]
        },
        "type": "devices.capabilities.toggle"
      },

So all we know about this is that it is a toggle switch that we can ask to be turned on or off.

  • The modes and mode change buttons. The heater has 5 possible modes: Heat-Low, Heat-Medium, Heat-High, Fan, & Auto. I'm not sure what gearMode is, although since it has 3 possible positions, I assume it is the 3 different heat levels. Perhaps the "Mode" drop down could just list the 5 modes and then eliminate the 3 separate mode parameter entities.

I'll put in a quirk that will map gearMode (which is how Govee's API refers to that) as individual preset buttons.
That way you can choose to rename them to something more meaningful.
If you can confirm which level number matches up to which of those labels, I can expand this to default the names to those labels.
I can't do this based solely on the data provided by Govee, because it just doesn't have that information.

@phurth
Copy link
Author

phurth commented Jan 17, 2024

Tackling the easy questions first :)

  • Yes - I have the new temperature scale set in the add-on configuration (set to F)
  • Nightlight Toggle is only one property that can be set for the light on the unit. There are 4 settable properties: toggle (on/off), range (brightness), color_setting (RGB), and mode (list of predefined scenes, which I don't personally care about, but is configurable).

{ "alarmType": null, "eventState": null, "instance": "nightlightToggle", "parameters": { "dataType": "ENUM", "options": [ { "name": "on", "value": 1 }, { "name": "off", "value": 0 } ] }, "type": "devices.capabilities.toggle" }, { "alarmType": null, "eventState": null, "instance": "brightness", "parameters": { "dataType": "INTEGER", "range": { "max": 100, "min": 1, "precision": 1 }, "unit": null }, "type": "devices.capabilities.range" }, { "alarmType": null, "eventState": null, "instance": "colorRgb", "parameters": { "dataType": "INTEGER", "range": { "max": 16777215, "min": 0, "precision": 1 }, "unit": null }, "type": "devices.capabilities.color_setting" }, { "alarmType": null, "eventState": null, "instance": "nightlightScene", "parameters": { "dataType": "ENUM", "options": [ { "name": "Flame", "value": 1 }, { "name": "Rainbow", "value": 2 }, { "name": "Rhythm", "value": 3 }, { "name": "Easy", "value": 4 }, { "name": "Sleep", "value": 5 } ] }, "type": "devices.capabilities.mode" }

  • After installing the latest update I am seeing only a single button which sets gearMode 3. Should there be three buttons, one for each possible value? Also, the mapping is gearMode 1 = low, gearMode 2 = medium, and gearMode 3 = high.

@wez
Copy link
Owner

wez commented Jan 17, 2024

the various buttons should be fixed in 2024.01.17-29afb853, which I only just pushed. Can you update to that and let me know? I recommend deleting the device and restarting the entity to make sure they get mapped in correctly.

@phurth
Copy link
Author

phurth commented Jan 17, 2024

So, something changed for me with setting the target temp after installing the most recent version: I am now seeing the target temp in °F, and it is changing the setting on the unit, so that's better. Unfortunately, the numeric slider in the UI only lets me toggle the target temp between 41° and 74.8° which is weird. Log:

[2024-01-17T12:13:15 INFO govee::hass_mqtt::climate] Command: set-temperature for F4D2D4ADFCF19670: 41 [2024-01-17T12:13:15 INFO govee::service::state] Using Platform API to set Smart Space Heater (F4:D2:D4:AD:FC:F1:96:70 H7131) target temperature to 41°F [2024-01-17T12:13:15 INFO govee::platform_api] control_device result: ControlDeviceResponse { request_id: "uuid", code: 200, message: "success", capability: ControlDeviceResponseCapability { kind: TemperatureSetting, instance: "targetTemperature", value: Object {"temperature": Number(5.0), "unit": String("Celsius")}, state: Object {"status": String("success")} } } [2024-01-17T12:13:15 WARN govee::hass_mqtt::enumerator] Do something about Mode nightlightScene for Smart Space Heater (F4:D2:D4:AD:FC:F1:96:70 H7131) DeviceCapability { kind: Mode, instance: "nightlightScene", parameters: Some(Enum { options: [EnumOption { name: "Flame", value: Number(1), extras: {} }, EnumOption { name: "Rainbow", value: Number(2), extras: {} }, EnumOption { name: "Rhythm", value: Number(3), extras: {} }, EnumOption { name: "Easy", value: Number(4), extras: {} }, EnumOption { name: "Sleep", value: Number(5), extras: {} }] }), alarm_type: None, event_state: None } [2024-01-17T12:13:17 INFO govee::hass_mqtt::climate] Command: set-temperature for F4D2D4ADFCF19670: 74.8 [2024-01-17T12:13:17 ERROR govee::service::hass] While dispatching Message { topic: "gv2mqtt/F4D2D4ADFCF19670/set-temperature/targettemperature/°F", payload: "74.8", qos: AtMostOnce, retain: false, mid: 0 }: Unknown temperature scale .8

@wez
Copy link
Owner

wez commented Jan 17, 2024

Please install 2024.01.17-29afb853 which has a fix for that issue as well

@phurth
Copy link
Author

phurth commented Jan 17, 2024

the various buttons should be fixed in 2024.01.17-29afb853, which I only just pushed. Can you update to that and let me know? I recommend deleting the device and restarting the entity to make sure they get mapped in correctly.

Sort of. Deleted the device and installed 2024.01.17-29afb853. There are now buttons for all of the modes but there are also some duplicates:

@phurth
Copy link
Author

phurth commented Jan 17, 2024

Please install 2024.01.17-29afb853 which has a fix for that issue as well

The Target Temp slider still only toggles between 41 and 74.8 °F, but it is now labeled as 10°F.

@wez
Copy link
Owner

wez commented Jan 17, 2024

Hmm, I'm not sure that the UI is showing the right stuff there, because the buttons ending with Parameter are no longer being generated in the code. Sometimes you need to force it to reload to notice the current state.

I've pushed a new update:

  • Install it
  • Delete the device
  • Restart the addon
  • Force refresh the UI after it has had a chance to re-register the device
    and let's see what shows up!

wez added a commit that referenced this issue Jan 17, 2024
We were converting eg: 1C in 33.8F which is the correct absolute
value, but nonsense when talking about deltas.

refs: #30
refs: #59
@wez
Copy link
Owner

wez commented Jan 17, 2024

slider step size should be fixed in 2024.01.17-e8eb8dd7

@phurth
Copy link
Author

phurth commented Jan 17, 2024

Nice! Ok, here's what I'm seeing now.

  • There are now 5 buttons, each one activates the proper mode.
  • The target temp slider now both scales/adjusts properly and sets the heater's target temp. Minor issue is if I look in the Govee app, the target temp is being set one degree less than what I set on the slider in HA (e.g. set HA to 70, app shows 69) - maybe a rounding issue?
  • There is still a "Mode" drop down with Auto, Fan, and gearMode items. This seems superfluous with the 5 separate buttons.

@phurth
Copy link
Author

phurth commented Jan 17, 2024

Just noticed the temperature sensor is showing unavailable, but the addon log (as well as direct Postman calls) are getting 500 errors when trying to get the device state. I imagine this means something is up with Govee's endpoint which should hopefully clear up on its own soon.

Edit: the /control endpoint seems fine, it's just the /state endpoint that is throwing errors.

wez added a commit that referenced this issue Jan 18, 2024
@wez
Copy link
Owner

wez commented Jan 18, 2024

I think the only thing left to tackle now is rounding/precision for the temperature setting

@phurth
Copy link
Author

phurth commented Jan 18, 2024

Just installed the latest (2024.01.17-5df26edb) and this is really coming together nicely - thanks again! There are just a couple initial things I'm noticing though I haven't thoroughly tested everything yet:

  • The target temperature slider works, but is initially set to the lowest setting (41°) even though the heater is set (through the app) to a target temp of 70°. In other words, it doesn't seem to get the current state of the target temp and apply it to the slider.
  • The power control on the light entity still entirely turns off the heater, not just the light. Maybe it's a fault in the API, but the light switch should just turn off the light and the separate Nightlight Toggle should not be necessary.
  • Regarding the Mode drop down: I think you could have either the buttons or a drop down, but both seems redundant. I'd prefer to just have the drop-down to select from the 5 modes, but others may want buttons for different use cases. Either way, the drop down only has one gearMode value rather than 3 (low, medium, high).

@wez
Copy link
Owner

wez commented Jan 18, 2024

Just installed the latest (2024.01.17-5df26edb) and this is really coming together nicely - thanks again! There are just a couple initial things I'm noticing though I haven't thoroughly tested everything yet:

* The target temperature slider works, but is initially set to the lowest setting (41°) even though the heater is set (through the app) to a target temp of 70°. In other words, it doesn't seem to get the current state of the target temp and apply it to the slider.

This is expected: the Platform API has no way to read this value and if we don't set it to something, HA will prevent using the entity to change it.

* The power control on the light entity still entirely turns off the heater, not just the light. Maybe it's a fault in the API, but the light switch should just turn off the light and the separate Nightlight Toggle should not be necessary.

This is how the API works; it's a bug on Govee's side. Reverse engineering the IoT packets will likely resolve this in the same way that it decouples these things on my humidifier, but that requires sniffing BLE control packets to get it right.

* Regarding the Mode drop down: I think you could have either the buttons or a drop down, but both seems redundant. I'd prefer to just have the drop-down to select from the 5 modes, but others may want buttons for different use cases. Either way, the drop down only has one gearMode value rather than 3 (low, medium, high).

This is a side effect of how kooky the mode handling is in the API; it's a tiered enum with inner enums for different modes.
Since different devices report slightly weird and wacky metadata, I'm opting to leave these potentially redundant control entities present.

You always have the option in HA to hide entities you don't want to see, in order to reduce clutter.

@phurth
Copy link
Author

phurth commented Jan 18, 2024

Awesome - I think this closes everything I'd reported in this issue. If I notice anything new I'll raise a new issue.

@phurth phurth closed this as completed Jan 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants