wez / govee2mqtt

Govee2MQTT: Connect Govee lights and devices to Home Assistant
MIT License
402 stars 23 forks source link

H6154 not responding to on/off commands #40

Open techytj opened 8 months ago

techytj commented 8 months ago

I just switched over from your older Govee LAN control integration (Thanks for all your hard work in this BTW !!!) as I was having issues with the H705A constantly disconnecting / reconnecting.

Using this integration the H705A is now working great but my H6154 is not responding to on / off requests. Below is a copy of the log. Appears as though the H6154 isn't returning a LAN API IP address.....

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=core-mosquitto GOVEE_EMAIL=REDACTED GOVEE_PASSWORD=REDACTED GOVEE_MQTT_PASSWORD=REDACTED GOVEE_MQTT_USER=addons GOVEE_MQTT_PORT=1883 ++ cd /app ++ exec /app/govee serve [2024-01-10T08:40:01 INFO govee::commands::serve] Starting service. version 2024.01.09-c0925c04 [2024-01-10T08:40:01 INFO govee::commands::serve] Querying platform API for device list [2024-01-10T08:40:01 INFO govee::commands::serve] Querying undocumented API for device + room list [2024-01-10T08:40:01 INFO govee::service::iot] Connected to IoT: CONNACK code 0: Connection Accepted. [2024-01-10T08:40:01 INFO govee::commands::serve] Starting LAN discovery [2024-01-10T08:40:01 INFO govee::service::iot] IoT (re)connected with status CONNACK code 0: Connection Accepted. [2024-01-10T08:40:01 INFO govee::commands::serve] Waiting 10 seconds for LAN API discovery [2024-01-10T08:40:12 INFO govee::commands::serve] Devices returned from Govee's APIs [2024-01-10T08:40:12 INFO govee::commands::serve] media room light strip (EE:E5:A4:C1:38:94:AB:8C) sku=H6154 [2024-01-10T08:40:12 INFO govee::commands::serve] Platform API: devices.types.light. supports_rgb=true supports_brightness=true [2024-01-10T08:40:12 INFO govee::commands::serve] color_temp=Some((2000, 9000)) segment_rgb=None [2024-01-10T08:40:12 INFO govee::commands::serve] Undoc: room=None supports_iot=true ble_only=false [2024-01-10T08:40:12 INFO govee::commands::serve] [2024-01-10T08:40:12 INFO govee::commands::serve] Permanent Outdoor Lights (C2:DF:CD:38:32:30:06:66) sku=H705A [2024-01-10T08:40:12 INFO govee::commands::serve] LAN API: ip=192.168.50.62 [2024-01-10T08:40:12 INFO govee::commands::serve] Platform API: devices.types.light. supports_rgb=true supports_brightness=true [2024-01-10T08:40:12 INFO govee::commands::serve] color_temp=Some((2000, 9000)) segment_rgb=Some(0..15) [2024-01-10T08:40:12 INFO govee::commands::serve] Undoc: room=None supports_iot=true ble_only=false [2024-01-10T08:40:12 INFO govee::commands::serve] Quirk: Quirk { sku: "H705A", icon: "mdi:outdoor-lamp", supports_rgb: true, supports_brightness: true, color_temp_range: Some((2000, 9000)), avoid_platform_api: false, ble_only: false, lan_api_capable: true, device_type: Light } [2024-01-10T08:40:12 INFO govee::commands::serve] [2024-01-10T08:40:12 INFO govee::service::http] http server addr is 0.0.0.0:8056 [2024-01-10T08:40:18 INFO govee::service::hass] Wait 1.1s for hass to settle on entity configs [2024-01-10T08:40:19 INFO govee::service::hass] MQTT connected with status=CONNACK code 0: Connection Accepted. [2024-01-10T08:40:32 INFO govee::service::state] requesting update via IoT MQTT media room light strip (EE:E5:A4:C1:38:94:AB:8C) None [2024-01-10T08:40:37 INFO govee::service::hass] Command for media room light strip (EE:E5:A4:C1:38:94:AB:8C): {"state":"ON"} [2024-01-10T08:40:37 INFO govee::service::state] Using IoT API to set media room light strip (EE:E5:A4:C1:38:94:AB:8C) power state [2024-01-10T08:40:41 INFO govee::service::hass] Command for media room light strip (EE:E5:A4:C1:38:94:AB:8C): {"state":"ON"} [2024-01-10T08:40:41 INFO govee::service::state] Using IoT API to set media room light strip (EE:E5:A4:C1:38:94:AB:8C) power state [2024-01-10T08:40:47 INFO govee::service::hass] powerSwitch for EEE5A4C13894AB8C: ON [2024-01-10T08:40:47 INFO govee::service::state] Using IoT API to set media room light strip (EE:E5:A4:C1:38:94:AB:8C) power state [2024-01-10T08:40:52 INFO govee::service::hass] powerSwitch for EEE5A4C13894AB8C: ON [2024-01-10T08:40:52 INFO govee::service::state] Using IoT API to set media room light strip (EE:E5:A4:C1:38:94:AB:8C) power state

wez commented 8 months ago

Does the H6154 have LAN API support enabled in the Govee app? That particular SKU isn't on the official list of LAN-API-supported devices from Govee, but that list isn't aggressively maintained by Govee.

If it does have LAN API support but doesn't show up in the probes, and isn't responding to the control request, then it may indicate a networking or device problem with that particular device; try power cycling it?

If it doesn't support LAN API then it is possible that is also doesn't respond to the same family of IoT commands that we're currently trying to use on it.

Can you try running this command to try turning on the device? You can also use off to try turning it off:

$ docker run --rm ghcr.io/wez/govee2mqtt /app/govee --api-key $GOVEE_API_KEY http-control --id EE:E5:A4:C1:38:94:AB:8C on
techytj commented 8 months ago

I'm running the integration through HASS OS. I ran the command on the server command line but it did not recognize the "--rm" flag. I also tried running the command through the HASS terminal addon but the docker command was not recognized.

I checked the LAN API option in the Govee app and you are right... there is no option to enable the LAN API for the H6154. However, the H6154 worked w/o issue with your Govee LAN control integration.
I tried power cycling the H6154 but that didn't work.

I had to go back to using your GoveeLAN integration for the H6154 but am using this newer integration for the H705A

Thanks for your prompt reply and for trying to help :)

kzaoaai commented 7 months ago

I have a similar issue with a different LED strip, but I believe the underlying issue is the same. It's H6121.

The status of the strip is always reflected correctly in HA, but control fails. When I tried your command above, the control works. It seems like IoT API is failing to control, while API key succeeds.

wez commented 7 months ago

Please try the latest version and let me know how you get on with it!

techytj commented 7 months ago

H6154 now turns on and off via the integration. Sometimes it's not responsive and the color changing options don't work yet but it's a great step forward !

Thanks for continuing to look in to this...

wez commented 7 months ago

Please share the logs from this updated version, especially around the commands that don't work

techytj commented 7 months ago

Here you go :

[2024-01-13T10:42:22 INFO govee::commands::serve] [2024-01-13T10:42:22 INFO govee::service::http] http server addr is 0.0.0.0:8056 [2024-01-13T10:42:27 INFO govee::service::hass] Wait 1.3s for hass to settle on 26 entity configs [2024-01-13T10:42:29 INFO govee::service::hass] MQTT connected with status=CONNACK code 0: Connection Accepted. [2024-01-13T10:42:42 INFO govee::service::state] requesting update via Platform API media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) None [2024-01-13T10:42:59 INFO govee::service::hass] Command for media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154): {"state":"ON"} [2024-01-13T10:42:59 INFO govee::service::state] Using Platform API to set media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) power state [2024-01-13T10:43:01 INFO govee::service::state] Polling media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) to get latest state after control [2024-01-13T10:43:01 INFO govee::service::state] requesting update via Platform API media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) Some(DeviceState { on: false, online: Some(true), kelvin: 0, color: DeviceColor { r: 127, g: 172, b: 255 }, brightness: 197, scene: None, source: "PLATFORM API", updated: 2024-01-13T15:42:42.515743967Z }) [2024-01-13T10:43:13 INFO govee::service::hass] Command for media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154): {"state":"ON","brightness":26} [2024-01-13T10:43:13 INFO govee::service::state] Using Platform API to set media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) brightness [2024-01-13T10:43:13 INFO govee::service::state] Polling media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) to get latest state after control [2024-01-13T10:43:13 INFO govee::service::state] requesting update via Platform API media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) Some(DeviceState { on: true, online: None, kelvin: 0, color: DeviceColor { r: 127, g: 172, b: 255 }, brightness: 197, scene: None, source: "AWS IoT API", updated: 2024-01-13T15:43:03.846981580Z }) [2024-01-13T10:43:18 INFO govee::service::hass] Command for media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154): {"state":"ON","brightness":100} [2024-01-13T10:43:18 INFO govee::service::state] Using Platform API to set media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) brightness [2024-01-13T10:43:18 INFO govee::service::state] Polling media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) to get latest state after control [2024-01-13T10:43:18 INFO govee::service::state] requesting update via Platform API media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) Some(DeviceState { on: true, online: None, kelvin: 0, color: DeviceColor { r: 127, g: 172, b: 255 }, brightness: 69, scene: None, source: "AWS IoT API", updated: 2024-01-13T15:43:14.843679217Z }) [2024-01-13T10:43:20 INFO govee::service::hass] Command for media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154): {"state":"ON","color_temp":500} [2024-01-13T10:43:20 INFO govee::service::state] Using Platform API to set media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) color temperature [2024-01-13T10:43:21 INFO govee::service::hass] Command for media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154): {"state":"ON","color_temp":500} [2024-01-13T10:43:21 INFO govee::service::state] Using Platform API to set media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) color temperature [2024-01-13T10:43:21 INFO govee::service::state] Polling media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) to get latest state after control [2024-01-13T10:43:21 INFO govee::service::state] requesting update via Platform API media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) Some(DeviceState { on: true, online: None, kelvin: 0, color: DeviceColor { r: 127, g: 172, b: 255 }, brightness: 254, scene: None, source: "AWS IoT API", updated: 2024-01-13T15:43:20.431487193Z }) [2024-01-13T10:43:22 INFO govee::service::hass] Command for media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154): {"state":"ON","color_temp":230} [2024-01-13T10:43:22 INFO govee::service::state] Using Platform API to set media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) color temperature [2024-01-13T10:43:22 INFO govee::service::state] Polling media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) to get latest state after control [2024-01-13T10:43:22 INFO govee::service::state] requesting update via Platform API media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) Some(DeviceState { on: true, online: Some(true), kelvin: 0, color: DeviceColor { r: 127, g: 172, b: 255 }, brightness: 254, scene: None, source: "PLATFORM API", updated: 2024-01-13T15:43:22.120493552Z }) [2024-01-13T10:43:23 INFO govee::service::hass] Command for media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154): {"state":"ON","color_temp":149} [2024-01-13T10:43:23 INFO govee::service::state] Using Platform API to set media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) color temperature [2024-01-13T10:43:23 INFO govee::service::state] Polling media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) to get latest state after control [2024-01-13T10:43:23 INFO govee::service::state] requesting update via Platform API media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) Some(DeviceState { on: true, online: Some(true), kelvin: 0, color: DeviceColor { r: 127, g: 172, b: 255 }, brightness: 254, scene: None, source: "PLATFORM API", updated: 2024-01-13T15:43:23.005203391Z }) [2024-01-13T10:43:23 INFO govee::service::hass] Command for media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154): {"state":"ON","color_temp":111} [2024-01-13T10:43:23 INFO govee::service::state] Using Platform API to set media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) color temperature [2024-01-13T10:43:24 INFO govee::service::state] Polling media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) to get latest state after control [2024-01-13T10:43:24 INFO govee::service::state] requesting update via Platform API media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) Some(DeviceState { on: true, online: Some(true), kelvin: 0, color: DeviceColor { r: 127, g: 172, b: 255 }, brightness: 254, scene: None, source: "PLATFORM API", updated: 2024-01-13T15:43:23.680806721Z }) [2024-01-13T10:43:24 INFO govee::service::hass] Command for media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154): {"state":"ON","color_temp":149} [2024-01-13T10:43:24 INFO govee::service::state] Using Platform API to set media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) color temperature [2024-01-13T10:43:24 INFO govee::service::hass] Command for media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154): {"state":"ON","color_temp":230} [2024-01-13T10:43:24 INFO govee::service::state] Using Platform API to set media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) color temperature [2024-01-13T10:43:24 INFO govee::service::state] Polling media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) to get latest state after control [2024-01-13T10:43:24 INFO govee::service::state] requesting update via Platform API media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) Some(DeviceState { on: true, online: Some(true), kelvin: 0, color: DeviceColor { r: 127, g: 172, b: 255 }, brightness: 254, scene: None, source: "PLATFORM API", updated: 2024-01-13T15:43:24.243685643Z }) [2024-01-13T10:43:26 INFO govee::service::hass] Command for media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154): {"state":"ON","color":{"r":127,"g":172,"b":255}} [2024-01-13T10:43:26 INFO govee::service::state] Using Platform API to set media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) color [2024-01-13T10:43:26 INFO govee::service::state] Polling media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) to get latest state after control [2024-01-13T10:43:26 INFO govee::service::state] requesting update via Platform API media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) Some(DeviceState { on: true, online: Some(true), kelvin: 0, color: DeviceColor { r: 127, g: 172, b: 255 }, brightness: 254, scene: None, source: "PLATFORM API", updated: 2024-01-13T15:43:25.065819213Z }) [2024-01-13T10:43:28 INFO govee::service::hass] Command for media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154): {"state":"ON","effect":"Care"} [2024-01-13T10:43:28 INFO govee::service::state] Using Platform API to set media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) to scene Care [2024-01-13T10:43:31 INFO govee::service::hass] Command for media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154): {"state":"ON","effect":"Active"} [2024-01-13T10:43:31 INFO govee::service::state] Using Platform API to set media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) to scene Active [2024-01-13T10:43:33 INFO govee::service::hass] Command for media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154): {"state":"ON","color_temp":149} [2024-01-13T10:43:33 INFO govee::service::state] Using Platform API to set media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) color temperature [2024-01-13T10:43:33 INFO govee::service::state] Polling media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) to get latest state after control [2024-01-13T10:43:33 INFO govee::service::state] requesting update via Platform API media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) Some(DeviceState { on: true, online: Some(true), kelvin: 0, color: DeviceColor { r: 127, g: 172, b: 255 }, brightness: 254, scene: None, source: "PLATFORM API", updated: 2024-01-13T15:43:26.960785880Z }) [2024-01-13T10:43:34 INFO govee::service::hass] Command for media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154): {"state":"ON","color_temp":111} [2024-01-13T10:43:34 INFO govee::service::state] Using Platform API to set media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) color temperature [2024-01-13T10:43:34 INFO govee::service::state] Polling media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) to get latest state after control [2024-01-13T10:43:34 INFO govee::service::state] requesting update via Platform API media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) Some(DeviceState { on: true, online: Some(true), kelvin: 0, color: DeviceColor { r: 127, g: 172, b: 255 }, brightness: 254, scene: None, source: "PLATFORM API", updated: 2024-01-13T15:43:33.893453540Z }) [2024-01-13T10:43:35 INFO govee::service::hass] Command for media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154): {"state":"ON","color_temp":500} [2024-01-13T10:43:35 INFO govee::service::state] Using Platform API to set media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) color temperature [2024-01-13T10:43:35 INFO govee::service::hass] Command for media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154): {"state":"ON","color_temp":230} [2024-01-13T10:43:35 INFO govee::service::state] Using Platform API to set media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) color temperature [2024-01-13T10:43:35 INFO govee::service::state] Polling media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) to get latest state after control [2024-01-13T10:43:35 INFO govee::service::state] requesting update via Platform API media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) Some(DeviceState { on: true, online: Some(true), kelvin: 0, color: DeviceColor { r: 127, g: 172, b: 255 }, brightness: 254, scene: None, source: "PLATFORM API", updated: 2024-01-13T15:43:35.142160152Z }) [2024-01-13T10:43:35 INFO govee::service::hass] Command for media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154): {"state":"ON","color":{"r":255,"g":110,"b":84}} [2024-01-13T10:43:35 INFO govee::service::state] Using Platform API to set media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) color [2024-01-13T10:43:35 INFO govee::service::state] Polling media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) to get latest state after control [2024-01-13T10:43:35 INFO govee::service::state] requesting update via Platform API media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) Some(DeviceState { on: true, online: Some(true), kelvin: 0, color: DeviceColor { r: 127, g: 172, b: 255 }, brightness: 254, scene: None, source: "PLATFORM API", updated: 2024-01-13T15:43:35.142160152Z }) [2024-01-13T10:43:35 INFO govee::service::hass] Command for media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154): {"state":"ON","color":{"r":127,"g":172,"b":255}} [2024-01-13T10:43:35 INFO govee::service::state] Using Platform API to set media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) color [2024-01-13T10:43:35 INFO govee::service::hass] Command for media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154): {"state":"ON","color":{"r":215,"g":150,"b":255}} [2024-01-13T10:43:35 INFO govee::service::state] Using Platform API to set media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) color [2024-01-13T10:43:35 INFO govee::service::state] Polling media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) to get latest state after control [2024-01-13T10:43:35 INFO govee::service::state] requesting update via Platform API media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) Some(DeviceState { on: true, online: Some(true), kelvin: 0, color: DeviceColor { r: 127, g: 172, b: 255 }, brightness: 254, scene: None, source: "PLATFORM API", updated: 2024-01-13T15:43:35.696353577Z }) [2024-01-13T10:43:40 INFO govee::service::hass] Command for media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154): {"state":"OFF"} [2024-01-13T10:43:40 INFO govee::service::state] Using Platform API to set media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) power state [2024-01-13T10:43:41 INFO govee::service::state] Polling media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) to get latest state after control [2024-01-13T10:43:41 INFO govee::service::state] requesting update via Platform API media room light strip (EE:E5:A4:C1:38:94:AB:8C H6154) Some(DeviceState { on: true, online: None, kelvin: 0, color: DeviceColor { r: 127, g: 172, b: 255 }, brightness: 254, scene: None, source: "AWS IoT API", updated: 2024-01-13T15:43:41.522909832Z })

wez commented 7 months ago

Those logs indicate no errors when asking Govee's platform API to carry out the actions you requested. It seems as though the issue is on Govee's side and I suggest you reach out to their support folks to see if they are aware of issues controlling this device through their new platform API

techytj commented 7 months ago

Thanks for your prompt reply ! I'll try to reach out to Govee for assistance.

In closing, I'll just mention that these functions continue to work with your older Govee LAN control integration.

wez commented 7 months ago

That's using the older REST API, while this one is using their newer Platform API. I may have to add the option of using the old API here in govee2mqtt as well.

kzaoaai commented 7 months ago

H6121 working now, thanks!

adam-cobb commented 7 months ago

Happy to raise a separate issue if appropriate, but this all looks similar to the issues I'm seeing with my H6159 . This used to work fine in the older integration but when I made the switch over to this one I'm not unable to control this device.

It reflects the state correctly but just doesn't respond to control requests.

I believe it needs to be over the IOT API as it doesn't seem to give me the option to enable LAN support for this device, but as I say it used to work with the old integration.

Thanks.