Last changes :
16 August, 2019 - added weather id 300 (drizzle + sun)
14 October, 2018 - initial version

There is a way to get weather data directly from the Weather ACE application, so you dont need the Tasker plugin at all. All Weather ACE modules (for example the widget related module or Tasker module) also use the Weather ACE API.
Weather ACE application has API interface (based on Broadcast Intents) that allows other apps (including Tasker) get weather data on any exact day and time (the app should already contains the data), get list of locations from the app (you still need the app for define a location), start weather data update requests and get some status information.

For communication with Weather ACE application, you should use Broadcast Intents (Tasker allows to send and receive Broadcast Intents, please check https://tasker.joaoapps.com/userguide/en/intents.html for more information). The API returns data with same units of measures and language as selected in the Weather ACE app.

Weather information request
The request allows you to get weather information from the Weather ACE. Its mandatory to fill "Action" and "Data" fields.
"Action" field should contain string "mycodefab.aleph.weather.ACTION_GET_WEATHER" (without quotes).
"Data" field should not contain spaces and it has such special format:
"geo:LOCATION?[ver=1]&[date | time]=[UNIX_TIME_UTC | DATA]"
where:
"ver=1" is API version

LOCATION is [AUTO|DEFAULT|LOCATION_NAME|COORDINATES], where:
AUTO means autofollow location
DEFAULT is the last location that used in Weather ACE interface
LOCATION_NAME is the location name (should be already defined in the Weather ACE interface). Example: "Kiev", "Kiev,Ukraine"
COORDINATES its coordinates in form or "latitude,longitude". Example for Kiev (Ukraine): "50.475846,30.439603"

DATA is [today|tomorrow|now|today-HOUR|tomorrow-HOUR|tomorrow+1-4]

Some examples of weather information requests for the Data field (should be without quotes) :
"geo:AUTO?ver=1&date=today" - get today's daily weather for auto-follow (GM
"geo:DEFAULT?ver=1&time=now" - get current weather information for default location (last used in the Weather ACE app)
"geo:50.475846,30.439603?ver=1&date=tomorrow" - daily weather for tomorrow for Kiev (Ukraine), location defined as latitude and longitude.
"geo:Kiev,Ukraine?ver=1&date=tomorrow" - same as previous
"geo:Kiev,Ukraine?ver=1&date=tomorrow+1" - daily weather for Kiev (Ukraine) for next day after tomorrow (limited to 4 days atm).
"geo:DEFAULT?ver=1&date=1539993600" - daily weather for default location on October 20, 2018 (Weather ACE should contain the data or you will get error)
"geo:DEFAULT?ver=1&time=1540029600" - hourly weather for default location on October 20, 2018, 10AM UTC time (Weather ACE should contain the data or you will get error)
"geo:DEFAULT?ver=1&time=today-9" - hourly weather for today, 9AM time
"geo:DEFAULT?ver=1&time=tomorrow-20" - hourly weather for tomorrow, 8PM time

"Extra" field variables (optional):
"request_tag" with any string value. In case the variable present, the response will contains same string value in the "Extra" field with name "request_tag". The variable used as request ID. I mean, the standard Weather ACE modules use same Weather ACE interface. Also, we could send several requests to Weather ACE. So, the "request_tag" variable allows to identify exact responses to our exact request.
"receiver_package" could contains android package name (any app). In the case, Weather ACE will send response to the package (so, possible that Tasker will not be able to intercept the response). The variable is mostly for the app modules, in most cases you dont need to use it.

Weather information response
As response to your weather information request, the Weather ACE application will send Broadcast Intent with requested information.
Action field of the response, will be equal to "mycodefab.aleph.weather.WEATHER_DATA" (without quotes of course).
Extra field will contain such variables with data:
"error_desc" - will contains "OK" in case of no error or some error description in case of error (English only, all the other text fields will contain an information in language defined in Weather ACE app).
"api_version" - Weather ACE response API version. Atm, the only possible value is "1".
"place_name" - location name, for example "Kiev,Ukraine".
"place_lon" - location longitude, for example "37.6155600"
"place_lat" - location latitude
"place_autofollow" - will be equal to "1" for auto-follow (GPS) location, "0" in other cases
"is_day" - in case you will show some weather icon based on the response, "1" means that you should use day icon, "0" - night icon.
"updated" - date and time of the last update for the info in Unix Time UTC.
"weather_desc" - text description for the weather, for example "rain". It use same language as set in the Weather ACE.
"type" - possible values: "daily", "hourly" or "current". So, than you requested daily weather - the variable in the response will contains "daily"
"datetime" - Unix Time, UTC, for the weather info in the response. For daily weather in most cases it will be 0AM for the day. For hourly weather it will contain the exact hour.
"temp_max" - max temperature for the day or hour, for example "20".
"temp_min" - min temperature. Could be same as "temp_max" for hourly weather.
"pressure" - atmospheric pressure. Could be a value (example "750") or range (ex "720-749"). In most cases you will get value range only for daily weather.
"humidity" - humidity persent. Could be value (example "55") or range ("35-45").
"windspeed"
"windspeed_gusts"
"weather_id" - weather id code, see Appendix 1.
"dewpoint_max"
"dewpoint_min"
"sunrise" - unix time UTC
"sunset" - unix time UTC
"wind_degree"
"precipitation" - rain + snow
"POP" - probability of precipitation
"cloudiness"
"uvi"
"visibility"
"feelslike_max"
"feelslike_min"

All the times in the UTC! So, for example, if you want to ask for the weather data on 2AM for location with timezone GMT+03:00, you should ask for hour equal to 2(hour) + 3(timezone offset) = 5
Locations list request
The request allows you to get list of locations defined in the Weather ACE application.
"Action" field should be equal to "mycodefab.aleph.weather.ACTION_GET_LOCATIONS"
"Data" field should be equal to "geo:AUTO?ver=1"

Locations list response
"Action" field will be equal to "mycodefab.aleph.weather.LOCATIONS_DATA"
"Extra" field will have 4 variables, each of them contains locations info devided by "|":
"name" - location names list, example: "Kiev,Ukraine|Krakov,Poland|NY,USA"
"coords" - location coordinates list in format: "latitude,longitude|latitude2,longitude2|etc"
"autofollow" - autofollow location will contains "1", all the other locations "0". Example: "1|0|0"
"timezone" - location timezones, example: "GMT+02:00|GMT+02:00|GMT-04:00"

Weather data update request
You could force WeatherACE to update weather data for exact location.
"Action" field should be equal to "mycodefab.aleph.weather.ACTION_REFRESH_WEATHER"
"Data" field could specify location in the same way as for weather data request.
Examples:
"geo:AUTO?ver=1&upd=all" - update all weather info for auto-follow location
"geo:AUTO?ver=1&upd=current" - update current weather info for auto-follow location
"geo:Kiev,Ukraine?ver=1&upd=current" - update current weather info for Kiev (Ukraine), the location should be already specified in the Weather ACE.

Usefull information broadcasts
In some cases, Weather ACE could send some Broadcast Intents that allows you to catch some application related events.
"Action" field equal to "mycodefab.aleph.weather.UPDATE_FINISHED" - in case you receive such broadcast intent from Weather ACE, it means that Weather ACE just finished weather data update and got some updated info. So, its a good time to ask the weather information.
"Action" field equal to "mycodefab.aleph.weather.STARTED" - means that Weather ACE app just started.



Appendix 1
Weather id codes:
0 - unknown weather
100 - clear sky
101 - few clouds
102 - scattered clouds
103 - broken clouds
104 - overcast
200 - sun + fog or patchy fog
201 - fog
202 - mist
211 - smoke
221 - haze
231 - sand or dust whirls
291 - breezy
292 - windy
293 - squall

300 - drizzle + sun
301 - light drizzle
302 - drizzle
311 - light drizzle rain
312 - drizzle rain
321 - shower drizzle
331 - freezing drizzle
391 - heavy drizzle
392 - heavy drizzle rain
400 - snow + sun
401 - light snow
402 - show
405 - blowing snow
406 - drifting snow
410 - sleet + sun
411 - sleet
421 - shower snow
491 - heavy snow
492 - blizzard
500 - rain + sun
501 - light rain
502 - rain
512 - showers in vicinity
521 - light intensity shower rain
522 - shower rain
542 - moderate rain
552 - freezing rain
582 - heavy intensity shower rain
591 - heavy intensity rain
592 - very heavy rain
593 - extreme rain
594 - rain + ice pellets
595 - ice pellets
600 - thunderstorm + sun
601 - light thunderstorm
602 - thunderstorm
610 - thunderstorm with snow and sun
611 - thunderstorm with snow
621 - thunderstorm with light drizzle
622 - thunderstorm with drizzle
623 - thunderstorm with heavy drizzle
630 - thunderstorm with sleet and sun
631 - thunderstorm with sleet
641 - thunderstorm with light rain
642 - thunderstorm with rain
643 - thunderstorm with heavy rain
681 - thunderstorm with ice pellets
691 - heavy thunderstorm
692 - raged thunderstorm
901 - storm
902 - hail
903 - extreme cold
904 - extreme hot
905 - extreme windy
906 - hurricane
907 - tornado
908 - funnel cloud
909 - spray

© 2018 - MYCODEFAB