CorvetteCole / PixelWatchFace

A minimalistic and open-source watchface for WearOS
GNU General Public License v3.0
73 stars 15 forks source link

Weather showing incorrect temperature (on Fossil Gen 5) #9

Closed JacobDB closed 4 years ago

JacobDB commented 4 years ago

Not sure what's up with this, but it seems like my watch has been showing the incorrect weather for awhile now. Honestly not sure if it's a recent change or if it was always like this and I just now noticed (only being using this watch face a few weeks).

Currently it seems like it says it's 85°F, night time, and partly cloudy. It's actually 67°F, day time, and partly cloudy.

JacobDB commented 4 years ago

I think it might just not be updating automatically

CorvetteCole commented 4 years ago

@JacobDB is this problem still present with the latest version?

JacobDB commented 4 years ago

Yeah, still broken on 1.4.0, no updates available

JacobDB commented 4 years ago

I'm still having this issue, it's very frustrating because I love this watch face but weather is kind of a key thing for me with a smart watch.

Things I've tried:

None of it makes a difference – it just won't update in the background no matter what I try. The Dark Sky API console says there are just two API calls this month, both of which where when I manually turned off and then on the Dark Sky API in the companion app.

image

Would really appreciate some help getting this solved, I've struggled to find any sort of replacement, your watch face is just too good lol...

softweaprograma commented 4 years ago

I hear you, this watchface is the best hands down. I had to tweak it to add a third line and thats the only watchface I use, I do not need to use Dark Sky for it to work. Just make sure then it starts the first time you give it permissions to access location info. If you want, you can try my apk with the third row here, I have a picture and a screenshot also in my repo here. Same as the code in the "3rd-line-weather-external" branch

CorvetteCole commented 4 years ago

hey @JacobDB this is a very weird issue because I've literally never seen it and cannot reproduce it. What watch and WearOS version are you using? I am using the built in JobScheduler API so I don't really control when it updates. What this means is the OS chooses to update depending on network conditions, usage, etc. It is part of how I maintain the great battery life. Regardless, I will attempt to build some logging tools to figure out exactly why your system configuration is failing.

JacobDB commented 4 years ago

I'm afraid I'll jinx myself by saying this, but it seems to be working again. Didn't change anything, so no idea why it's start all of a sudden. This has seemed to happen before but then it broke again, so I'm keeping my fingers crossed.

Super weird that it wouldn't update if you're just using the built-in scheduler...

CorvetteCole commented 4 years ago

1.4.0 actually replaced a janky homebrew scheduler with the official API which is why I have some visible confusion. Anyhow, let me know if it breaks again and I'll do my best to fix it

pchristod commented 4 years ago

Hey, I don't want to open another Issue but I'm having the same problem. The Weather Update has always been very unreliable but as of a few days it stopped completely refreshing itself. I have the same Weather as the last time I refreshed it manually. Manually in this case means opening the App on the Phone and toggling between Dark Sky on/off, then it refreshes once. I have not received any Wear OS nor Android Updates in the time between.

I'm normally using the Dark Sky integration with an API Key. Hardware I'm using: Pixel 4 XL on latest Android Fossil Gen 5

Of course the obvious solution steps like rebooting (both devices) haven't changed anything. Is there any way to debug this further?

CorvetteCole commented 4 years ago

@pchristod this is a very interesting issue to me. This shouldn't be a bug in my code, rather Google's. Anyhow it is clearly happening even though I cannot reproduce it. Is it still happening reliably for you? If so I might invite you to an internal testing branch so you can get a debug version of the watch face. I will try to change a few things and release a new version shortly as well to stable

JacobDB commented 4 years ago

Glad to hear it's not just me, this has been driving me crazy. It's my favorite watch face by far so it's been pretty frustrating not having weather be at all reliable.

Still happening consistently for me, but occasionally I'll get periods where it works fine (I'd say it works maybe 1% of the time).

pchristod commented 4 years ago

@CorvetteCole Yes, sure. I'm happy to help. And yes, this is happening conistently for me, much like @JacobDB says in his comment. It's exactly the same, occasionally it works but most of the time it doesn't.

I'm not sure where the problem could be. Which Watch are you using @JacobDB?

JacobDB commented 4 years ago

Same as you, Fossil Gen 5 (Carlyle).

I had a thought this morning, not sure if it matters – when I get to work I usually turn off Bluetooth on my phone. My watch remains connected to WiFi, and when I leave work, I turn Bluetooth on my phone back on. To be clear, the weather doesn't update regardless of Bluetooth status (i.e. on weekends), so it may be irrelevant, I just thought it might be worth mentioning.

CorvetteCole commented 4 years ago

This could be a device specific bug since I'm using system APIs to schedule refreshes. I'm going to look at the code a bit more and gather some information together and I'll put it here. Worst case scenario, I'll implement a separate workaround method for devices that don't work right. One more question, what version of WearOS are you on?

JacobDB commented 4 years ago

I'm on Wear OS 2.13, System Version H, Security Patch January 1, 2020

pchristod commented 4 years ago

Ok, this narrows it down I guess. Having the same watch is a strong indicator. I have it the other way around Jacob, I turn BT off (on my phone) when I go to sleep so the watch is on WiFi and turn it on when I go to work. But I also don't think that matters because I haven't seen any difference.

@CorvetteCole I'll write down every version in case you need it:

WearOS: 2.13 System: H Home App: 2.32 January Sec Patch

CorvetteCole commented 4 years ago

The turning off of bluetooth may actually be where this bug originates from. I'm wondering if the API I'm using doesn't "see" wifi as having a network connection and instead waits for bluetooth. I am checking on how I have the time delay set up but it will increase how long it waits between every attempt after every failure. So this might be related. Could one of you try leaving bluetooth on and seeing if that "fixes" it? If so I will be able to fix this relatively easily

pchristod commented 4 years ago

That would make sense if BT were off, however when I'm using my watch actively (meaning wearing it) BT is always on. During those times it doesn't refresh. Maybe I didn't express this properly in my last post, sorry. In easy terms: Wearing the watch = BT is always on Not wearing the Watch = BT is off (however only on the Smartphone, not the watch)

CorvetteCole commented 4 years ago

Yes, but after enough failures the watch will wait for up to I believe 3 days before trying again. In case you were camping or somewhere without internet so I don't destroy your battery life. It is possible the watch has simply scheduled the update too far out after enough failures. I'm reviewing the code shortly to check if this could be our problem

pchristod commented 4 years ago

Ah, that would make sense. Good explanation. Thank you for looking into it, please do let me know if I can help in any way.

JacobDB commented 4 years ago

I'm leaving Bluetooth on today to see how it goes, will report back.

JacobDB commented 4 years ago

Left Bluetooth on all day yesterday, and so far this morning; it seems to have helped, but I don't think it entirely solved the issue. I definitely saw it update a few times yesterday, but it also got stuck a couple of times forcing me to reset it (turn the DarkSky API off and on). This morning when I woke up it just showed "–" for the weather, so I again reset it, but it doesn't seem to be updating itself.

The past few days I've been getting a good few API calls, but today it's been stuck at 2 all morning.

image

CorvetteCole commented 4 years ago

Does your watch stay on and connected all night while charging? It is curious that it displays "-". This would mean that it lost the weather object that was kept in memory somehow. This is potentially shaping up as a WearOS/fossil bug I'll need to workaround

On Thu, Feb 27, 2020, 10:27 AM Jacob Bearce notifications@github.com wrote:

Left Bluetooth on all day yesterday, and so far this morning; it seems to have helped, but I don't think it entirely solved the issue. I definitely saw it update a few times yesterday, but it also got stuck a couple of times forcing me to reset it (turn the DarkSky API off and on). This morning when I woke up it just showed "–" for the weather, so I again reset it, but it doesn't seem to be updating itself.

The past few days I've been getting a good few API calls, but today it's been stuck at 2 all morning.

[image: image] https://user-images.githubusercontent.com/1123997/75458176-0e8ca280-5943-11ea-94e7-374ac6bb276e.png

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/CorvetteCole/PixelWatchFace/issues/9?email_source=notifications&email_token=AESS5DJSPQVK4RQG52HUG33RE7LXLA5CNFSM4I5GPFSKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOENEYFFI#issuecomment-592020117, or unsubscribe https://github.com/notifications/unsubscribe-auth/AESS5DM4TFB7KMINVB6NMDLRE7LXLANCNFSM4I5GPFSA .

JacobDB commented 4 years ago

I mean, I literally just plugged stuff in to charge, I didn't turn my watch or phone off, or adjust any settings or anything, so as far as I'm aware I'd think it'd stay connected.

CorvetteCole commented 4 years ago

@JacobDB @pchristod if you could send the Google account email you would like to use to corvettecole@gmail.com I will add you to the internal testing track on the play store. Beware, this version contains unfinished features and potential bugs (in-dev)

A37stKpDodi4BEr65TXb commented 4 years ago

Hi, I have the same issue of weather not updating on my Fossil Gen 5 Carlyle. I do however put my watch in airplane mode overnight so it's completely disconnected.

motorro commented 4 years ago

Hi, Excluding phone app from power saving seems to help. Weather has been updating for two days already. So it might be the scheduler problem (just an assumption) Android 8.1 and Fossil Gen5

PS: Irrelevant, I guess. Never done WearOS - thought there is some phone task with a sync. Took a look at the source - and there is no :(

CorvetteCole commented 4 years ago

@motorro what watch do you use?

motorro commented 4 years ago

@CorvetteCole Fossil Gen 5 Carlyle

CorvetteCole commented 4 years ago

excluding the phone app from power saving should have 0 effect as the watch face is not dependent upon phone syncing

motorro commented 4 years ago

@CorvetteCole, yes. I've admitted it in PS to original post after source review :( Just left it there as a false assumption so others may skip it at once :) It seemed to work for me because watchface has started to display some weather info since power adjustment. It was "--" most of the time before.

CorvetteCole commented 4 years ago

@JacobDB @pchristod any luck with the latest version?

I added a set flex period in hopes that that might workaround any bugs regarding scheduling on the Fossil Gen 5

JacobDB commented 4 years ago

So far it does seem better – I haven't reset the API today, and it's been updating correctly all morning (currently 29 API calls today).

CorvetteCole commented 4 years ago

I made a change which added a "flex interval" for when the recurring weather updates need to be completed. Basically, I am telling the OS now that it needs to check for weather every 30 minutes. But it can run the weather check any time within 15 minutes of the end of the 30 minute period. I have my suspicions that strictly scheduling this flex interval may get around this bug on the Fossil Gen 5.

CorvetteCole commented 4 years ago

@JacobDB I am hoping this fix lasts because it is a relatively easy workaround to implement

pchristod commented 4 years ago

Hey, I have not yet been able to test it thourougly. I usually don't use my watch on weekends very much so its easier to verify it beginning next week when I use it for work again.

JacobDB commented 4 years ago

It seemed better for a day or two, but this past weekend and today it's back to its normal weirdness...

image

CorvetteCole commented 4 years ago

@JacobDB that is interesting but disappointing. I'm going to add some logging to it and then release that update to you guys. Will let you download some logs from the phone app so I can hopefully get a better idea of what is going on. Will update you in a little bit!

lorenzo-geromel commented 4 years ago

I can confidently confirm that I have the same problem on my Huawei Watch 2 (LEO-BX9), Wear OS 2.13, App Home 2.32, Oreo 8.0.0 (definitely not the H update, never received it). I put some logs here and there, and I saw that the initWeatherUpdater() is called as expected, and the PeriodicWorkRequest is queued correctly, but I can't see any of the logs that I put into the startWork() method of the WeatherUpdateWorker. The only way I get to update the weather info is by turning on/off the show temperature/show weather as icon from the phone app. I don't think it has anything to do with the problem, but I use a Google Pixel 4 XL running Android 10; I usually never turn off bluetooth. The issue seems to seems to remain unchanged using either OpenWeatherMap or DarkSky.

CorvetteCole commented 4 years ago

that is some good information @lorenzo-geromel but raises more questions than answers. I have no idea why it wouldn't start the work. This is especially hard because I cannot reproduce this issue on my end at all

CorvetteCole commented 4 years ago

Turning on/off temperature/weather uses a OneTimeWorkRequest instead of the periodic one so at least that is bug free. I'm beginning to wonder if periodic work is broken on some WearOS devices and versions. My Skagen Falster 2 works fine

pchristod commented 4 years ago

Hey, I tried the current debugging version yesterday and today and could see definite improvements like Jacob in that timeframe but then it started to get weird again like he says. Another Question: Isn't it possible to use another implementation, like Google itself for problematic devices (the two we know of). Or would that change nothing? Because Watch Faces utilizing the Wear OS Weather complication for example don't seem to have that problem.

CorvetteCole commented 4 years ago

hey @pchristod I am not aware of a Wear OS weather complication, but if there is one I might like to integrate that in favor of my current system. In regards to using another implementation, I switched from a previous implementation to using the system JobScheduler to reduce code complexity and error on my end, and I guess I am trying to avoid re-introducing that. But it could definitely be done.

pchristod commented 4 years ago

Hey @CorvetteCole maybe I misphrased that. With another implementation I meant using the Wear OS one. I'm not sure but aren't the Stock Watchfaces like the Fossil ones doing it like that? Select the WearOS Weather complication and display the weather through that. So it's all on a system level rather than being handled by the application itself.

CorvetteCole commented 4 years ago

@pchristod you are right, however, that would require a user to pick the complication. Or at least I haven't figured out how to just get the weather complication. I'm trying to only allow weather there, but I suppose I could consider opening the weather line up to any complication

CorvetteCole commented 4 years ago

@JacobDB @pchristod I released a new update to the internal testing branch which doesn't schedule period requests as often. This could potentially help. I have some other ideas for fixing this I am working on.

CorvetteCole commented 4 years ago

anyone who is having problems, do you mind uninstalling the watch face and reinstalling it? Or just update to the latest version and clear the data. I am wondering if we have an old weatherupdaterworker that has stuck around and no longer works properly

CorvetteCole commented 4 years ago

hate to bug you all with comments here, but I've made a significant change to how I handle weather updates in the latest internal release (released about 10 min ago). If you could test it out and let me know, I think it should fix your issue. @pchristod @JacobDB

JacobDB commented 4 years ago

No worries, installing now, will report back tomorrow 😊

JacobDB commented 4 years ago

Things are looking good so far, I've had about 20 requests to the API today with no futzing with the app.