So I got myself an Echo Yesterday in Seattle and it's now safe and sound back in London.
But obviously as nice as it is to know the weather in Seattle - I immediately started to play....
Apologies if this has been documented elsewhere on the forum but I couldn't find before posting.
I'm having some success meddling with the address, country and timezone.
You'll need to arm yourself with a copy of request maker for Chrome so that you can mess with the API post requests.
With request maker installed you'll need to visit
http://alexa.amazon.com/Go to the settings for your echo and update the address - chose a US address - the seattle defaults are fine.
Open request maker and you'll see a call to
https://pitangui.amazon.com/api/device-preferences/You can now tamper with the raw data of the post request.
Thus far I've found that setting timezone (which is set by default to null) will OVERRIDE the timezone for the address.
Which means I can ask the time etc and get local london time ;-)
(To see which timezone is correct for you visit
https://pitangui.amazon.com/api/available-time-zones?_=1445689862656).
The raw text that I'm using is.
{"deviceAccountId":"XXXXX","deviceAddress":"23 Wenlock Road, London, N17","deviceAddressModel":{"city":"London","countryCode":"UK","county":"London","district":"Hackney","houseNumber":"901","label":"23 WA-305 NE, Bainbridge Island, N1 7SZ, United Kingdom","postalCode":"N1 7SZ","state":"London","street":"WA-305 NE"},"deviceSerialNumber":"XXX","deviceType":"AB72C64C86AW2","firstRunCompleted":true,"postalCode":"98110","responseStyle":"CONCISE","searchCustomerId":"XXXX","temperatureScale":"CELSIUS","timeZoneId":"Europe/London","voiceCastEnabled":null,"autocastToThisClient":false,"isSaveInFlight":true}
As you can see - I've varied a number of parameters which get considerably closer to my address. The API seems really sensitive to changes to the "label" field - although I've successful updated my postcode to the extent that it shows via the alex.amazon.com site.
It's not quite working for weather but I think it's probably going to be fairly easy to reverse engineer what the API is looking for.
You can mess around yourself - if you get a 200 code then the API has accepted it - 400 means no.
I'll keep looking at this and update what I find.
David