CorvetteCole / PixelWatchFace

A minimalistic and open-source watchface for WearOS

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Weather showing incorrect temperature (on Fossil Gen 5)

JacobDB opened this issue · comments

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.

I think it might just not be updating automatically

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

Yeah, still broken on 1.4.0, no updates available

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:

  • Using the OpenWeatherMap option
  • Adding a credit card to Dark Sky
  • Resetting the watch
  • Resetting the phone
  • Ensuring all available permissions are set

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...

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

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.

  • Cole

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...

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

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?

@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

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).

@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?

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.

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?

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

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

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

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)

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

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.

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

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

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.

@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)

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.

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 :(

@motorro what watch do you use?

@CorvetteCole
Fossil Gen 5 Carlyle

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

@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.

@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

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).

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.

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

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.

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

image

@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!

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.

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

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

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.

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.

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.

@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

@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.

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

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

No worries, installing now, will report back tomorrow 😊

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

@JacobDB good to hear. It should continue to work that way. I just went through a massive rewrite of all the network related code which I will release in an update later today to you guys. Should fix some small hangs you might notice when the weather is updating. Much nicer organization wise and a better way to do it. Will let you know, but if the next update also works well I will be able to close this bug!

Just released the latest update to the internal testing and beta branches @JacobDB @pchristod .

If this update works right for you guys I will close this issue and consider this bug solved! I will wait a few days to make sure

hey all, do you mind giving me an update on if this issue is still present? If not I will be closing this shortly. Thanks for your patience and help :). @JacobDB @pchristod would you like to be removed from the internal testing branch? I pushed the latest update to production.

Thanks again!

Yeah, all seems good for me. Feel free to remove me.

closed for now. Feel free to comment if you are still having problems.

Hey,
yes, you can remove me too if you like. I also didn't have any problems with the latest release, worked flawless today. Thanks!

Now it's showing temp again? This is so weird...


My temperature is still not showing, but I'm also not seeing any API calls in DarkSky.

I have Wi-Fi turned on and Bluetooth connected. I'm also enrolled in the beta updates.

It's been showing —,–°C for around 10 hours.

(Fossil Sport, FTW4019)

Screenshot_2020-03-07-03-57-15-11
IMG20200307035648
IMG20200307035641