22place
WatchMaker Bug Tracking All the ideas and discussions
29 votes Vote

WCT bug

{Wct} from yahoo weather source is "unknown".

Robert Smart , 11.01.2015, 01:47
Idea status: under consideration

Comments

Robert Smart, 11.01.2015, 01:48
Forgot to mention. Location is Christchurch
mbecroft, 21.01.2015, 04:23
Same in Auckland. Sometimes it works, sometimes it doesn't.
mbecroft, 29.01.2015, 08:23
HOW TO REPEAT

Create a watch face with a text element having the expression '{wct}'.

EXPECTED RESULT

A valid weather condition description always appears on the watch face such as 'Clear' or 'Mainly cloudy'

ACTUAL RESULT

Sometimes, the text 'Unknown' appears.
mbecroft, 04.04.2015, 16:40
I investigated this further. I'm guessing WatchMaker uses the YQL weather API documented here:

https://developer.yahoo.com/weather/

When the condition reads 'unknown' in WatchMaker, this is because Yahoo is literally returning a current condition text of 'Unknown' - verified by making the query myself from the YQL console.

It seems Yahoo itself is at fault here.

Watchmaker could work around this issue as follows:

When then look instead at the 'Forecast' data for the same day, which is valid.

It would probably be better if WatchMaker simply added wunderground as on optional weather supplier. Those of us having trouble with OpenWeatherMap and Yahoo could use that instead.

I'd suggest either implementing a workaround as suggested, or closing this as WONTFIX and adding support for wunderground or, perhaps better still, user-defined JSON or XML weather sources.
mbecroft, 04.04.2015, 16:59
To clarify, because the XML formatting of my previous comment got mangled... workaround is:

if the "yweather:condition text" attribute == 'Unknown' then instead look at the "yweather:forecast text" for the current day (i.e. the first entry in the list.

I've tested this workaround and it seems reliable. There may be a better solution, though, since the Yahoo weather widget on my phone always shows a valid condition, never 'Unknown'. I don't know whether it is using the same API or doing something differently. To resolve this, someone needs to tcpdump the request from the Yahoo Android weather widget and find out how it is getting the condition data.
mbecroft, 04.04.2015, 17:55
Well I've done the work, and can provide a packet log of the Yahoo weather widget successfully querying condition text without the 'Unknown' issue.

Quick summary: the Yahoo weather widget (which always shows the correct 'Condition' text) makes requests in the clear so it's easy to see what it is doing. It makes two requests, first a 'select from geo.placefinder' to lookup the woeid based on lat/lon, then a request to weather.yahooapis.com using the previously obtained woeid.

My guess is Watchmaker may be doing a single YQL request to query.yahooapies.com. I infer this because it never does a DNS query for weather.yahooapis.com, but as it uses TLS, it's hard to see exactly which request WatchMaker is making.

My conclusion is that weather.yahooapis.com is more accurate than a YQL weather query via query.yahooapis.com.

Subject to further research, I suggest the following resolution to this issue:

* Enhance WatchMaker to use the weather.yahooapis.com API instead of the YQL weather query API.

This will most likely resolve the intermittent problem with {wct} = 'Unknown' for some locations.

So can we get an ETA on this fix? I am happy to assist by providing a packet log of the successful weather request from the Yahoo weather widget, just give me an email address where I can send it.
Bob Waterfield, 07.08.2015, 17:25
Please add weather underground.

Leave a comment