WW Dark Sky: Weather for Watchmaker

Instructions

If you are updating please read the Release Notes!

Introduction:

This tool will allow you to automatically get extended weather data from Dark Sky and make it available to Watchmaker. The file contains two ways for you to do this. You can install and run the WW Dark Sky app or you can import the Profiles, Tasks, and Scenes into the Tasker app. You should not do both. Using the app is simpler in almost every way, but those who are already comfortable with Tasker may prefer to use it instead.

In addition to the weather data this app also gets some astronomical data from the U.S. Naval Observatory.

General Instructions:

You will need an API key from Dark Sky. Just go to darksky.net and click on "Sign Up". Fill out the form to request a key. It will just take a few minutes.

Please consider buying a subscription to the Dark Sky app as a way of supporting the site. There is no obligation, but by using this app you are going to be using their services all the time. It only seems fair to give something back.

Setting up the App Version:

You need to have Watchmaker installed on your phone. Install the "WW Dark Sky" app that is included in this file. Then you will need to go into your phone's Settings, under App Info for WW Dark Sky. Go to the Permissions section and grant Permissions for it. The app is built using Tasker so some of the Permissions it wants are not directly related to what it does.

Why does it ask for access to your calendar? I assure you that nothing in my code tries to access your calendar. My guess is that some more general function it does use could access your Calendar if it were applied differntly. At least the Permission to use your Location makes sense.

In addition to the options under Permissions, you need to go to the Advanced section, still under the WW Dark Sky entry in App Info, and allow it to "Draw over other apps". It does not actually draw over other apps, but it does need the permission because of the way Tasker handles its user interface.

Once you have the permissions set up you can run the app. The main screen should appear. See "Setting up either version below" for instructions.

Any time the app is running, and not just during updates, a clock icon will show in the central part of the status bar at the top of your screen. That is a side effect of the "reliable alarms" setting that is needed to provide reliable updates.

Setting up the Tasker Project version:

You need to have Tasker and Watchmaker installed on your phone. In Tasker, long-hold on the Home icon in the bottom left until the menu pops up. Tap Import and select the WW Dark Sky Project XML file.

You will need to run the "WWDS Startup" task to configure the app. Tap on the task then hit the "Play" button at the bottom once it opens. The main screen should appear. See "Setting up either version below" for instructions.

Its is a good idea to enable the "Reliable Alarms" option in the Tasker Preferences to make sure that your updates trigger.

Setting up either version:

You will need to fill in your Dark Sky API Key and tap "Save" the first time the app starts. You can get your own Dark Sky API Key for free. If you tap the "Dark Sky API Key" label it will take you to their web site.

From the main screen you can select the measurement units, toggle support for hourly and daily data, toggle support for the older WU for WM tags on or off, stop or start the app, and request an immediate weather update.

Note that you will always get the first hour of hourly and day of daily data. The "Hourly" and "Daily" settings only affects the data for additional hours or days after the first.

Once you have it setup and running you can leave the main screen by tapping the "x" (close) button or by just hitting the Home button. You can return to that screen at any time by running the app.

Your location will be determined by GPS, if you have it turned on, or cell if not.

Using the Dark Sky Weather Data inside Watchmaker:

You should now be all set up. Your phone will automatically get new weather data from Dark Sky every 20 minutes based on your current GPS location. You can simply reference the new tags below from within Watchmaker just like you do the built-in tags.

Below are the Watchmaker tags along with descriptions of what they mean. The list is divided into the main Dark Sky data, the data that comes from the U.S. Naval Observatory, and an optional set of tags that duplicate most of what my previous WU for WM app provided.

One important note: There is no guarantee that every field will be populated with a value, although most of the time they will be. In cases where no value is available the field will contain a single space. You can test for that from the watchface to determine what data source you want to use or whether you want to display a particular value.

Here are the Watchmaker tags and descriptions:

Tag

Description

{tww_source}

"Dark Sky"

{tww_version}

Version Date

{tww_as}

Running under "Tasker" or as an "app"

{tww_interval}

Minutes between updates (or 0 if off)

{tww_units}

Units: "English" or "Metric"

{tww_units_pressure}

Pressure Units: "mb" (millibars) or "default"

{tww_hourly}

Hourly data tags enabled: "on" or "off"

{tww_daily}

Daily data tags enabled: "on" or "off"

{tww_wu}

WU for WM tags enabled: "on" or "off"

{tww_empty}

Value that indicates an empty field (" ")

{tww_update}

Last update successful: true or false

{tww_errors}

Errors since last successful update

{tww_error}

Description of last error

{tww_location}

Current Lat/Long coordinates

Last check date/time:

{tww_check_epoch}

Unix epoch

{tww_check_dec}

Day decimal (0-1)

{tww_check_date}

Date (YYYY-MM-DD) (zero padded)

{tww_check_time}

Time (hh:mm) (zero padded)

Last successful update date/time:

{tww_update_epoch}

Unix epoch

{tww_update_dec}

Day decimal (0-1)

{tww_update_date}

Date (YYYY-MM-DD) (zero padded)

{tww_update_time}

Time (hh:mm) (zero padded)

{tww_observation_location}

GPS Coordinates (latitude,longitude)

{tww_observation_latitude}

Latitude

{tww_observation_longitude}

Longitude

Last obversation date/time:

{tww_observation_epoch}

Unix epoch

{tww_observation_dec}

Day decimal (0-1)

{tww_observation_date}

Date (YYYY-MM-DD) (zero padded)

{tww_observation_time}

Time (hh:mm) (zero padded)

{tww_description}

Text description of current conditions

{tww_forecast_description}

Text description of forecast

{tww_icon}

Dark Sky icon name

{tww_icon_ds}

Dark Sky icon name

{tww_icon_ds_id}

Dark Sky icon ID

{tww_icon_wm_id}

Watchmaker icon ID

{tww_icon_wu_id}

Weather Underground icon ID

{tww_icon_ww_id}

Weather for Wwatchmaker icon ID

{tww_forecast_icon}

Dark Sky forecast icon name

{tww_forecast_icon_ds}

Dark Sky forecast icon name

{tww_forecast_icon_ds_id}

Dark Sky forecast icon ID

{tww_forecast_icon_wm_id}

Watchmaker forecast icon ID

{tww_forecast_icon_wu_id}

Weather Underground forecast icon ID

{tww_forecast_icon_ww_id}

Weather for Watchmaker forecast icon ID

{tww_temperature}

Temperature (F or C)

{tww_temperature_high}

Today's High Temperature (F or C)

{tww_temperature_low}

Today's Low Temperature (F or C)

{tww_temperature_apparent}

Apparent Temperature (F or C)

{tww_temperature_dewpoint}

Dewpoint Temperature (F or C)

{tww_humidity}

Humidity percentage (0-100)

{tww_humidity_dec}

Humidity decimal (0-1)

{tww_pressure}

Pressure (inHg, hPa, or mb)

{tww_pressure_trend}

Pressure Trend (-1, 0, or 1)

{tww_precip_probability}

Probability of Precipitation percentage (0-100)

{tww_precip_probability_dec}

Probability of Precipitation decimal (0-1)

{tww_precip_type}

Precipitation Type (rain, snow, sleet, or blank)

{tww_precip_rate}

Precipitation Rate (in or cm per hour)

{tww_wind_speed}

Wind Speed (mph or kph)

{tww_wind_bearing}

Wind Bearing (degrees)

{tww_wind_gusts}

Wind Gusts Speed (mph or kph)

{tww_visibility}

Visibility distance (mi or km)

{tww_cloud_cover}

Cloud Cover percentage (0-100)

{tww_cloud_cover_dec}

Cloud Cover decimal (0-1)

{tww_uv_index}

UV Index

{tww_ozone}

Ozone (Dobson units)

{tww_storm_distance}

Distance of nearest storm (mi or km)

{tww_storm_bearing}

Bearing to nearest storm (degrees)

{tww_day_descrition}

Text description of conditions for the day

{tww_day_icon}

Dark Sky icon name for the day

{tww_day_icon_ds}

Dark Sky icon name for the day

{tww_day_icon_ds_id}

Dark Sky icon ID for the day

{tww_day_icon_wm_id}

Watchmaker icon ID for the day

{tww_day_icon_wu_id}

Weather Underground icon ID for the day

{tww_day_icon_ww_id}

Weather for Watchmaker icon ID for the day

{tww_hours}

Hours of hourly data available

H represents an hour number from 1 to 24

{tww_observation_epoch_hH}

Observation Epoch for hour H

{tww_observation_date_hH}

Observation Date (yyyy-mm-dd) for hour H

{tww_description_hH}

Text description of conditions for hour H

{tww_icon_hH}

Dark Sky icon name for hour H

{tww_icon_ds_hH}

Dark Sky icon name for hour H

{tww_icon_ds_id_hH}

Dark Sky icon ID for hour H

{tww_icon_wm_id_hH}

Watchmaker icon ID for hour H

{tww_icon_wu_id_hH}

Weather Underground icon ID for hour H

{tww_icon_ww_id_hH}

Weather for Watchmaker icon ID for hour H

{tww_temperature_hH}

Temperature for hour H

{tww_temperature_apparent_hH}

Apparent Temperature for hour H

{tww_temperature_dewpoint_hH}

Dewpoint Temperature for hour H

{tww_humidity_hH}

Humidity percentage (0-100) for hour H

{tww_humidity_dec_hH}

Humidity decimal (0-1) for hour H

{tww_pressure_hH}

Pressure (inHg or hPa) for hour H

{tww_precip_probability_hH}

Probability of Precipitation percentage (0-100) for hour H

{tww_precip_probability_dec_hH}

Probability of Precipitation decimal (0-1) for hour H

{tww_precip_type_hH}

Precipitation Type for hour H

{tww_precip_rate_hH}

Precipitation Rate for hour H

{tww_wind_speed_hH}

Wind Speed (mph or kph) for hour H

{tww_wind_bearing_hH}

Wind Bearing (degrees) for hour H

{tww_wind_gusts_hH}

Wind Gusts Speed (mph or kph) for hour H

{tww_visibility_hH}

Visibility distance (mi or km) for hour H

{tww_cloud_cover_hH}

Cloud Cover percentage (0-100) for hour H

{tww_cloud_cover_dec_hH}

Cloud Cover decimal (0-1) for hour H

{tww_uv_index_hH}

UV Index for hour H

{tww_ozone_hH}

Ozone (Dobson units) for hour H

{tww_week_descrition}

Text description of conditions for the week

{tww_week_icon}

Dark Sky icon name for the week

{tww_week_icon_ds}

Dark Sky icon name for the week

{tww_week_icon_ds_id}

Dark Sky icon ID for the week

{tww_week_icon_wm_id}

Watchmaker icon ID for the week

{tww_week_icon_wu_id}

Weather Underground icon ID for the week

{tww_week_icon_ww_id}

Weather for Watchmaker icon ID for the week

{tww_days}

Days of daily data available

D represents a day number from 1 to 8

{tww_observation_epoch_dD}

Observation Epoch for day D

{tww_observation_date_dD}

Observation Date (yyyy-mm-dd) for day D

{tww_description_dD}

Text description of conditions for day D

{tww_icon_dD}

Dark Sky icon name for day D

{tww_icon_ds_dD}

Dark Sky icon name for day D

{tww_icon_ds_id_dD}

Dark Sky icon ID for day D

{tww_icon_wm_id_dD}

Watchmaker icon ID for day D

{tww_icon_wu_id_dD}

Weather Underground icon ID for day D

{tww_icon_ww_id_dD}

Weather for Watchmaker icon ID for day D

{tww_temperature_high_dD}

High Temperature for day D

{tww_temperature_low_dD}

Low Temperature for day D

{tww_temperature_apparent_high_dD}

Apparent High Temperature for day D

{tww_temperature_apparent_low_dD}

Apparent Low Temperature for day D

{tww_temperature_dewpoint_dD}

Dewpoint Temperature for day D

{tww_humidity_dD}

Humidity percentage (0-100) for day D

{tww_humidity_dec_dD}

Humidity decimal (0-1) for day D

{tww_pressure_dD}

Pressure (inHg or hPa) for day D

{tww_precip_probability_dD}

Probability of Precipitation percentage (0-100) for day D

{tww_precip_probability_dec_dD}

Probability of Precipitation decimal (0-1) for day D

{tww_precip_type_dD}

Precipitation Type for day D

{tww_precip_rate_dD}

Precipitation Rate for day D

{tww_wind_speed_dD}

Wind Speed (mph or kph) for day D

{tww_wind_bearing_dD}

Wind Bearing (degrees) for day D

{tww_wind_gusts_dD}

Wind Gusts Speed (mph or kph) for day D

{tww_visibility_dD}

Visibility distance (mi or km) for day D

{tww_cloud_cover_dD}

Cloud Cover percentage (0-100) for day D

{tww_cloud_cover_dec_dD}

Cloud Cover decimal (0-1) for day D

{tww_uv_index_dD}

UV Index for day D

{tww_ozone_dD}

Ozone (Dobson units) for day D

USNO:

Tag

Description

{tww_usno_update}

Last USNO Update Successful: true or false

{tww_usno_errors}

Errors since last successful USNO update

{tww_usno_error}

Description of last USNO error

Last USNO Check date/time:

{tww_usno_check_epoch}

Unix epoch

{tww_usno_check_dec}

Day decimal (0-1)

{tww_usno_check_date}

Date (YYYY-MM-DD) (zero padded)

{tww_usno_check_time}

Time (hh:mm) (zero padded)

Last successful USNO update date/time:

{tww_usno_update_epoch}

Unix epoch

{tww_usno_update_dec}

Day decimal (0-1)

{tww_usno_update_date}

Date (YYYY-MM-DD) (zero padded)

{tww_usno_update_time}

Time (hh:mm) (zero padded)

{tww_moon_age_dec}

Moon Age (Phase) decimal (0-1)

{tww_moon_age_days}

Moon Age (Phase) days (0-29)

{tww_moon_age_wm}

Moon Age (Phase) for Watchmaker (1-9)

Moon Rise date/time

{tww_moon_rise_epoch}

Unix epoch

{tww_moon_rise_dec}

day decimal (0-1)

{tww_moon_rise_time}

time (hh:mm) (zero padded)

Moon Set date/time

{tww_moon_set_epoch}

Unix epoch

{tww_moon_set_dec}

day decimal (0-1)

{tww_moon_set_time}

time (hh:mm) (zero padded)

Sun Rise

{tww_sun_rise_epoch}

Unix epoch

{tww_sun_rise_dec}

day decimal (0-1)

{tww_sun_rise_time}

time (hh:mm) (zero padded)

Sun Set date/time

{tww_sun_set_epoch}

Unix epoch

{tww_sun_set_dec}

day decimal (0-1)

{tww_sun_set_time}

time (hh:mm) (zero padded)

WU:

Tag

Description

{twu_version}

{tww_version}

{twu_as}

{tww_as}

{twu_interval}

{tww_interval}

{twu_units}

{tww_units}

{twu_update_time}

Last successful update date/time (YYYY-MM-DD hh.mm)

{twu_update_location}

{tww_location}

{twu_update_astronomy}

"Get"

{twu_update_tides}

"Skip"

{twu_overall_errors}

{tww_errors}

{twu_conditions_errors}

{tww_errors}

{twu_forecast_errors}

{tww_errors}

{twu_astronomy_errors}

{tww_errors}

{twu_tides_errors}

{tww_errors}

{twu_empty}

{tww_empty}

{twu_time}

Observation date/time (YYYY-MM-DD hh.mm)

{twu_location}

{tww_observation_location}

{twu_area}

blank

{twu_city}

blank

{twu_state}

blank

{twu_country}

blank

{twu_description}

{tww_description}

{twu_icon}

{tww_icon_ds}

{twu_icon_id}

{tww_icon_wu_id}

{twu_wm_icon_id}

{tww_icon_wm_id}

{twu_temperature}

{tww_temperature}

{twu_temperature_high}

{tww_temperature_high}

{twu_temperature_low}

{tww_temperature_low}

{twu_feelslike}

{tww_temperature_apparent}

{twu_dewpoint}

{tww_temperature_dewpoint}

{twu_humidity}

{tww_humidity}

{twu_pressure}

{tww_pressure}

{twu_pressure_trend}

Pressure Trend ("+", "0", or "-")

{twu_wind_speed}

{tww_wind_speed}

{twu_wind_bearing}

{tww_wind_bearing}

{twu_wind_gusts}

{tww_wind_gusts}

{twu_visibility}

{tww_visibility}

{twu_moon_age_dec}

{tww_moon_age_dec}

{twu_moon_age}

{tww_moon_age_days}

{twu_moon_age_wm}

{tww_moon_age_wm}

{twu_moon_rise_dec}

{tww_moon_rise_dec}

{twu_moon_rise}

{tww_moon_rise_time}

{twu_moon_set_dec}

{tww_moon_set_dec}

{twu_moon_set}

{tww_moon_set_time}

{twu_sun_rise_dec}

{tww_sun_rise_dec}

{twu_sun_rise}

{tww_sun_rise_time}

{twu_sun_set_dec}

{tww_sun_set_dec}

{twu_sun_set}

{tww_sun_set_time}

{twu_periods}

Periods of daily data available

P represents a period number from 1 to 4

{twu_epoch_pP}

{tww_observation_epoch_dD}

{twu_date_pP}

{tww_observation_date_dD}

{twu_description_pP}

{tww_description_dD}

{twu_icon_pP}

{tww_icon_ds_dD}

{twu_icon_id_pP}

{tww_icon_wu_id_dD}

{twu_wm_icon_id_pP}

{tww_icon_wm_id_dD}

{twu_temperature_high_pP}

{tww_temperature_high_dD}

{twu_temperature_low_pP}

{tww_temperature_low_dD}

{twu_pop_pP}

{tww_precip_probability_dD}

{twu_qpf_pP}

{tww_precip_rate_dD}

Note: Values which are not available are reported as a the value of the {tww_empty} tag, which can be used for comparisons. {tww_empty} is currently set to a single space (" "), but that could change at some point in the future. Comparing with {tww_empty} will always work.

Icons:

The Icon ID values are provided to make it easier to build icon "sprites" in Watchmaker:
{tww_icon_ds_id} provides numbers from 1 to 10 for the Dark Sky icons.
{tww_icon_wm_id} provides values from 1 to 9 that correspond to the standard 3x3 weather icon elements used in Watchmaker.
{tww_icon_wu_id} provides values from 1 to 20 for implementing the Weather Underground icon set.
{tww_icon_ww_id} works with an extended variant of the Weather Underground icon set that adds a "wind" icon.

Icon IDs for use with Watchmaker:

DS

WM

WU

WW

Name

1

1

18

18

clear-day

2

1

6

6

clear-night

3

6

15

15

rain

4

8

17

17

snow

5

8

16

16

sleet

6

1

6

21

wind

7

9

9

9

fog

8

2

13

13

cloudy

9

2

13

13

partly-cloudy-day

10

3

11

11

partly-cloudy-night

Troubleshooting:

You can tell whether you are getting errors by checking the {tww_errors} count. It shows the number of errors since the last successful weather lookup. Any number other than zero indicates that there has been at least one failure.

If there has been an error you can tap the error counters on the main screen to see a more detailed explanation of what went wrong. The {tww_error} and {tww_usno_error} tags contain the same information that you see on the error screen.

Conclusion:

I have tried to make this as simple as possible to setup. Please email problems, questions, suggestions, and feedback to support@apps.aslanrefuge.org. I'm sure there are bugs to be found. :-}

I owe credit and thanks to /u/DutchOfBurdock for implementing his own solution and letting the rest of us see his work.