GeekyEggo / GoveeController

Govee controller for the Elgato Stream Deck.
GNU General Public License v3.0
40 stars 6 forks source link

Actions not working #12

Closed coziestz closed 1 year ago

coziestz commented 2 years ago

I have setup the govee plugin with my streamdeck mini, the api key and everything was inputted correctly, it comes up with the name of my device in the dropdown menu, but when I press the stream deck button to try and do an action (ie shutting off the lights) nothing happens, a green checkmark appears over the icon, and my lights do nothing. how do I fix this?

GeekyEggo commented 2 years ago

Hey @coziestz, could I ask you to download the latest beta version and try again. Hopefully this should resolve the problem, but if it persists, could you upload the logs located at: %appdata%\Elgato\StreamDeck\Plugins\com.geekyeggo.goveecontroller.sdPlugin\logs

danielbmarshall commented 2 years ago

Same issue here for me, even after installing the latest beta and installing on Windows 11 host. Logs attached GoveeController.log .

danielbmarshall commented 2 years ago

Could this be related to the new Rate limiting released on May 4? Do I just need to add a delay of XX ms between multiaction calls? https://govee-public.s3.amazonaws.com/developer-docs/GoveeAPIReference.pdf

GeekyEggo commented 2 years ago

@danielbmarshall thanks for uploading your logs file. The problem you're encountering definitely appears to be rate limit related, although the concerning part is:

2022-05-15 09:59:27.0017 [DEBUG] GoveeController.Govee.GoveeHttpClient: Request: https://developer-api.govee.com/v1/devices/control, Response: OK {"code":200,"message":"Success","data":{}}.
2022-05-15 09:59:27.0017 [DEBUG] GoveeController.Govee.GoveeHttpClient: Request: https://developer-api.govee.com/v1/devices/control, Response: OK {"code":200,"message":"Success","data":{}}.
2022-05-15 09:59:27.0364 [DEBUG] GoveeController.Services.GoveeService: Reading devices from cache.
2022-05-15 09:59:27.1204 [DEBUG] GoveeController.Govee.GoveeHttpClient: Request: https://developer-api.govee.com/v1/devices/control, Response: OK {"code":200,"message":"Success","data":{}}.
2022-05-15 09:59:27.2495 [DEBUG] GoveeController.Services.GoveeService: Reading devices from cache.
2022-05-15 09:59:27.3364 [DEBUG] GoveeController.Govee.GoveeHttpClient: Request: https://developer-api.govee.com/v1/devices/control, Response: OK {"code":200,"message":"Success","data":{}}.
2022-05-15 09:59:27.4665 [DEBUG] GoveeController.Services.GoveeService: Reading devices from cache.
2022-05-15 09:59:27.5525 [DEBUG] GoveeController.Govee.GoveeHttpClient: Request: https://developer-api.govee.com/v1/devices/control, Response: OK {"code":200,"message":"Success","data":{}}.
2022-05-15 09:59:27.6836 [DEBUG] GoveeController.Services.GoveeService: Reading devices from cache.
2022-05-15 09:59:27.8183 [DEBUG] GoveeController.Govee.GoveeHttpClient: Request: https://developer-api.govee.com/v1/devices/control, Response: OK {"code":200,"message":"Success","data":{}}.
2022-05-15 09:59:27.9012 [DEBUG] GoveeController.Services.GoveeService: Reading devices from cache.
2022-05-15 09:59:27.9795 [DEBUG] GoveeController.Govee.GoveeHttpClient: Request: https://developer-api.govee.com/v1/devices/control, Response: OK {"code":200,"message":"Success","data":{}}.
2022-05-15 09:59:28.1329 [DEBUG] GoveeController.Services.GoveeService: Reading devices from cache.
2022-05-15 09:59:28.2118 [DEBUG] GoveeController.Govee.GoveeHttpClient: Request: https://developer-api.govee.com/v1/devices/control, Response: OK {"code":200,"message":"Success","data":{}}.
2022-05-15 09:59:28.3345 [DEBUG] GoveeController.Services.GoveeService: Reading devices from cache.
2022-05-15 09:59:28.4169 [DEBUG] GoveeController.Govee.GoveeHttpClient: Request: https://developer-api.govee.com/v1/devices/control, Response: OK {"code":200,"message":"Success","data":{}}.
2022-05-15 09:59:28.5356 [DEBUG] GoveeController.Services.GoveeService: Reading devices from cache.
2022-05-15 09:59:28.6144 [DEBUG] GoveeController.Govee.GoveeHttpClient: Request: https://developer-api.govee.com/v1/devices/control, Response: OK {"code":200,"message":"Success","data":{}}.
2022-05-15 09:59:28.7380 [DEBUG] GoveeController.Services.GoveeService: Reading devices from cache.
2022-05-15 09:59:28.7766 [DEBUG] GoveeController.Govee.GoveeHttpClient: Request: https://developer-api.govee.com/v1/devices/control, Response: TooManyRequests Rate limit exceeded, retry in 58 seconds..
2022-05-15 09:59:28.7766 [ERROR] GoveeController.Govee.GoveeHttpClient: Request: https://developer-api.govee.com/v1/devices/control, Response: TooManyRequests.

The intention of the cache is to prevent multiple calls to the API, which appears may not be the case. I'm not sure if this is a direct result of the changes to the Govee API so it will need further investigation.

The logs do indicate the API can't find any of your devices though; is this what you would expect?

danielbmarshall commented 2 years ago

The devices are expected to be there, and are powered on and are confirmed as receiving instructions via wireless from the mobile Android app. The scenario I'm trying to reproduce essentially is a "push button" enabling of a Scheme/Plan using the Stream Deck. I have 7 Govee lights for which I am using a Multi Action for each. Turn On > Adjust Brightness >Adjust Color . By stacking the actions, it allows me to accomplish what I normally would have to open the app for and choose a Scheme/Plan. Previous to May, everything worked exactly as expected. Currently, the first few lights change, but the rest do nothing (which seems to be when it hits the api limits). I let everything sit overnight, and tried again, but same results Govee Home GoveeController.log 2022-05-16 07_44_09-Stream Deck 2022-05-16 07_44_31-Stream Deck 2022-05-16 07_45_00-Stream Deck .

GeekyEggo commented 2 years ago

Thank you for the detailed description @danielbmarshall, it really helps when debugging issues such as these.

Referring to the API documentation it should be possible to run the actions you've listed. The limits are:

As these are per device, I'm confused as to why throttling is occurring. I suspect the plugin is being throttled due to an issue with "get devices", which subsequently is throttling all requests. Sadly I've been unable to investigate things further yet, but will hopefully find time this week.

jordanrvillarreal commented 2 years ago

I have a similar issue going on, but it doesn't appear to be tied to the API rate limits. I've attached a sanitized log. Mac client, using the latest beta you've linked in this thread. The log shows that the refreshes are occurring so it's at least interfacing properly up front. Device list populates. However, when I press a button on the Stream Deck it doesn't make a call out. I've confirmed this using Wireshark, filtering for all the public IPs that resolve to developer-api.govee.com.

If I hard code an API call into Postman and call it from the same machine, it executes without issue.

Any advice or help would be appreciated.

GoveeController.log

GeekyEggo commented 2 years ago

@danielbmarshall are you also running on macOS? I'm a little perplexed as to what's happening, as this evening I've run some tests locally and everything seems fine... as is typically the case when trying to encounter the problem, lol. 😅

I've created beta 1.2.1 which improves logging further. Could I ask you and @jordanrvillarreal to retry, and upload the new log files.

jordanrvillarreal commented 2 years ago

Ok, so I can pretty safely say my issue had nothing to do with the plug in at this point. For me, and it took a bit to catch on, my entire Stream Deck had stopped accepting button presses. Even simple things like navigating through folders had broken but I didn't notice it as I was focused on this plug-in. So with a series of uninstalls, reboots, OS upgrades, etc... It started working for me. I did put the new beta on and can confirm that it is, at very least, working for me.

danielbmarshall commented 2 years ago

Thank you for your patience! Windows 11 host, fully patched. Downloaded and installed the Beta 1.2.1. Restarted the Govee software app several times for good measure on the PC, and cleared the existing logs. Pressed the "Chill" multi action button on the Stream Deck, with no apparent affect on lighting as a result. I've attached the logs as well as grabbing the pertinent section from the Profile (manifest.json) for the multi action. Later tonight I may just backup the profile and do a complete uninstall and start with just a clean SD with just the Govee multi action and see if there is a different outcome. I'll send the logs and update if I get a different result. GoveeController.log Chill.json.txt

GeekyEggo commented 2 years ago

Thanks @danielbmarshall, I've checked the logs and confusingly it looks like they aren't from the latest beta. I suspect this might be Stream Deck being funky. Could I ask you to...

  1. Exit Stream Deck.
  2. Navigate to the plugin folder %APPDATA%\Elgato\StreamDeck\Plugins.
  3. Delete com.geekyeggo.goveecontroller.sdPlugin.
  4. Run the beta installer.
danielbmarshall commented 2 years ago

Plugin folder deleted and beta 1.2.1 installed. New log file attached. GoveeController.log

GeekyEggo commented 1 year ago

Consolidating this into #20, which will hopefully fix some HTTP errors.