Difference between revisions of "TWC Weather"

From webCoRE Wiki - Web-enabled Community's own Rule Engine
Jump to: navigation, search
m (Fixed weather icons that are no longer hosted by SmartThings)
 
(119 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
The <code>$twcweather</code> system variable provides data from The Weather Company following the shutdown of the Weather Underground API that powered <code>$weather</code>. <code>$twcweather</code> was introduced in webCoRE v0.3.10a.20190223. See sample data below which is available for webCoRE installs running on the SmartThings platform.
 
The <code>$twcweather</code> system variable provides data from The Weather Company following the shutdown of the Weather Underground API that powered <code>$weather</code>. <code>$twcweather</code> was introduced in webCoRE v0.3.10a.20190223. See sample data below which is available for webCoRE installs running on the SmartThings platform.
 +
 +
Note: If you discover useful data that is not listed here, feel free to post in [https://community.webcore.co/t/twcweather-observations/12605?u=wcmore this thread] so we can update this page accordingly.
 +
 +
If you are interested in data for bad weather alerts, try: [[$twcweather.alerts|$twcweather.alerts]].
  
 
=Conditions=
 
=Conditions=
Line 9: Line 13:
 
|-
 
|-
 
| <code>$twcweather.conditions.cloudCeiling</code>
 
| <code>$twcweather.conditions.cloudCeiling</code>
| <code>null</code>
+
| <code>null, 100, 2100, 8500</code>
 
|-
 
|-
 
| <code>$twcweather.conditions.cloudCoverPhrase</code>
 
| <code>$twcweather.conditions.cloudCoverPhrase</code>
| <code>"Clear"</code>
+
| <code>"Clear", "Partly Cloudy", "Mostly Cloudy", "Cloudy"</code>
 
|-
 
|-
 
| <code>$twcweather.conditions.dayOfWeek</code>
 
| <code>$twcweather.conditions.dayOfWeek</code>
Line 18: Line 22:
 
|-
 
|-
 
| <code>$twcweather.conditions.dayOrNight</code>
 
| <code>$twcweather.conditions.dayOrNight</code>
| <code>"D"</code>
+
| <code>"D", "N"</code>
 
|-
 
|-
 
| <code>$twcweather.conditions.expirationTimeUtc</code>
 
| <code>$twcweather.conditions.expirationTimeUtc</code>
Line 45: Line 49:
 
|-
 
|-
 
| <code>$twcweather.conditions.pressureAltimeter</code>
 
| <code>$twcweather.conditions.pressureAltimeter</code>
| <code>1018.29</code>
+
| <code>1018.29
 +
29.95, 30.14</code>
 
|-
 
|-
 
| <code>$twcweather.conditions.pressureChange</code>
 
| <code>$twcweather.conditions.pressureChange</code>
Line 54: Line 59:
 
|-
 
|-
 
| <code>$twcweather.conditions.pressureTendencyCode</code>
 
| <code>$twcweather.conditions.pressureTendencyCode</code>
| <code>2</code>
+
| <code>0, 1, 2
 +
(Representing "Steady", "Rising", "Falling" respectively)</code>
 
|-
 
|-
 
| <code>$twcweather.conditions.pressureTendencyTrend</code>
 
| <code>$twcweather.conditions.pressureTendencyTrend</code>
| <code>"Falling"</code>
+
| <code>"Steady", "Rising", "Falling"</code>
 
|-
 
|-
 
| <code>$twcweather.conditions.relativeHumidity</code>
 
| <code>$twcweather.conditions.relativeHumidity</code>
Line 84: Line 90:
 
|-
 
|-
 
| <code>$twcweather.conditions.temperature</code>
 
| <code>$twcweather.conditions.temperature</code>
| <code>10</code>
+
| <code>10, 72</code>
 
|-
 
|-
 
| <code>$twcweather.conditions.temperatureChange24Hour</code>
 
| <code>$twcweather.conditions.temperatureChange24Hour</code>
| <code>-2</code>
+
| <code>-2, 9</code>
 
|-
 
|-
 
| <code>$twcweather.conditions.temperatureDewPoint</code>
 
| <code>$twcweather.conditions.temperatureDewPoint</code>
| <code>2</code>
+
| <code>2, 62</code>
 
|-
 
|-
 
| <code>$twcweather.conditions.temperatureFeelsLike</code>
 
| <code>$twcweather.conditions.temperatureFeelsLike</code>
| <code>9</code>
+
| <code>9, 75</code>
 
|-
 
|-
 
| <code>$twcweather.conditions.temperatureHeatIndex</code>
 
| <code>$twcweather.conditions.temperatureHeatIndex</code>
| <code>10</code>
+
| <code>10, 75</code>
 
|-
 
|-
 
| <code>$twcweather.conditions.temperatureMax24Hour</code>
 
| <code>$twcweather.conditions.temperatureMax24Hour</code>
| <code>12</code>
+
| <code>12, 75</code>
 
|-
 
|-
 
| <code>$twcweather.conditions.temperatureMaxSince7Am</code>
 
| <code>$twcweather.conditions.temperatureMaxSince7Am</code>
| <code>10</code>
+
| <code>10, 75</code>
 
|-
 
|-
 
| <code>$twcweather.conditions.temperatureMin24Hour</code>
 
| <code>$twcweather.conditions.temperatureMin24Hour</code>
| <code>-3</code>
+
| <code>-3, 58</code>
 
|-
 
|-
 
| <code>$twcweather.conditions.temperatureWindChill</code>
 
| <code>$twcweather.conditions.temperatureWindChill</code>
| <code>9</code>
+
| <code>9, 72</code>
 
|-
 
|-
 
| <code>$twcweather.conditions.uvDescription</code>
 
| <code>$twcweather.conditions.uvDescription</code>
| <code>"Low"</code>
+
| <code>"Extreme", "Very High", "High", "Moderate", "Low", "No Report", "Not Available"
 +
(Extreme=11-16  Very High=8-10  High=6-7  Moderate=3-5  Low=0-2  No Report=-1  Not Available=-2)</code>
 
|-
 
|-
 
| <code>$twcweather.conditions.uvIndex</code>
 
| <code>$twcweather.conditions.uvIndex</code>
Line 129: Line 136:
 
|-
 
|-
 
| <code>$twcweather.conditions.windDirectionCardinal</code>
 
| <code>$twcweather.conditions.windDirectionCardinal</code>
| <code>"S"</code>
+
| <code>"S", "SSE", "SE", "ESE", "E", "ENE", "NE", "NNE", "N", "NNW", "NW", "WNW", "W", "WSW", "SW", "SSW", "CALM", "VAR"</code>
 
|-
 
|-
 
| <code>$twcweather.conditions.windGust</code>
 
| <code>$twcweather.conditions.windGust</code>
| <code>null</code>
+
| <code>null, 22</code>
 
|-
 
|-
 
| <code>$twcweather.conditions.windSpeed</code>
 
| <code>$twcweather.conditions.windSpeed</code>
Line 138: Line 145:
 
|-
 
|-
 
| <code>$twcweather.conditions.wxPhraseLong</code>
 
| <code>$twcweather.conditions.wxPhraseLong</code>
| <code>"Sunny"</code>
+
(weather phrase up to 32 characters)
 +
| <code>"Clear", "Cloudy", "Cloudy/Wind", "Fair", "Fair/Wind", "Flurries", "Fog", "Frozen Rain Mix", "Heavy Rain", "Heavy Rain/Wind", "Light Rain", "Light Rain/Wind", "Light Rain with Thunder", "Light Snow", "Mostly Cloudy", "Mostly Cloudy/Wind", "Partly Cloudy", "Partly Cloudy/Wind", "Rain/Freezing Rain", "Rain Shower", "Rain Shower/Wind", "Rain Shower with Thunder", "Rain/Snow", "Rain/Wind", "Showers in the Vicinity", "Snow Shower", "Snow Shower/Wind", "Snow/Wind", "Sunny", "Sunny/Wind"</code>
 
|-
 
|-
 
| <code>$twcweather.conditions.wxPhraseMedium</code>
 
| <code>$twcweather.conditions.wxPhraseMedium</code>
| <code>"Sunny"</code>
+
(weather phrase up to 22? characters)
 +
| <code>"Clear", "Cloudy", "Cloudy/Wind", "Fair", "Fair/Wind", "Flurries", "Fog", "Heavy Rain", "Heavy Rain/Wind", "Ice/Snow", "Light Rain", "Light Rain and Thunder", "Light Rain/Wind", "Light Snow", "Mostly Cloudy", "Mostly Cloudy/Wind", "Partly Cloudy", "Partly Cloudy/Wind", "Rain/Freezing Rain", "Rain Shower", "Rain Shower and Thunder", "Rain Shower/Wind", "Rain/Snow", "Rain/Wind", "Showers in Vicinity", "Snow Shower", "Snow Shower/Wind", "Snow/Wind", "Sunny", "Sunny/Wind"</code>
 
|-
 
|-
 
| <code>$twcweather.conditions.wxPhraseShort</code>
 
| <code>$twcweather.conditions.wxPhraseShort</code>
| <code>"Sunny"</code>
+
(weather phrase up to 12 characters)
 +
| <code>"Clear", "Cloudy", "Cloudy/Wind", "Fair", "Fair/Wind", "Flurries", "Fog", "Frz Rain", "Heavy Rain", "Ice/Snow", "Light Rain", "Light Snow", "M Cldy/Wind", "M Cloudy", "P Cldy/Wind", "P Cloudy", "Rain Shower", "Rain/Snow", "Rain/Thunder", "Rain/Wind", "Showers Near", "Snow Shower", "Snow/Wind", "Shower/Wind", "Sunny", "Sun/Wind"</code>
 
|}
 
|}
  
 
=Forecast=
 
=Forecast=
 +
 +
15 day forecast; append the index to get an individual day. For example, <code>$twcweather.forecast.temperatureMin[0]</code> is today's low temperature.
 +
 +
Normally, [0] is today's data, and [1] is tomorrow's data... but [[WCmore's_Graphs|initial observations]] indicate that the data shifts over to a new day at approximately 3:15am, not at midnight, as one would expect.  So from midnight to about 3:15am, the [0] data will likely be displaying '''yesterday's''' data, and [1] will be the '''current''' day.  Once the data shifts over, then [0] will go back to being today, and [1] being tomorrow.  <br>
 +
(IE: 20+ hours a day, [0] is today... 3+ hours a day, [1] is today... with events during the 3am hour potentially going in either direction)
 +
 +
To add to this confusion, some [0] dataPoints (for today) vanish shortly after 3pm.  <br>
 +
(IE:$twcweather.forecast.temperatureMax[0] returns null all afternoon and into the early morning hours)
 +
 +
⃰ clears throat ⃰ <br>  A special "Thank you" to TWC for forcing us to add extra code to work around this convoluted logic.
 +
 +
To see a real life example, we can look at <code>$twcweather.forecast.dayOfWeek[0]</code>
 +
 +
* Fri at 11:03pm returned Friday ✅
 +
* Sat at 12:03am returned Friday ❌
 +
* Sat at 01:03am returned Friday ❌
 +
* Sat at 02:03am returned Friday ❌
 +
* Sat at 03:03am returned Friday ❌
 +
* Sat at 04:03am returned Saturday ✅ (Finally!)
 +
 +
2022 Edit: I have created a [https://community.webcore.co/t/twcweather-forecast-preserve-data-lost-at-3-oclock/20396?u=wcmore piston] to out-smart this craziness.
 +
  
 
{| class="mw-datatable"
 
{| class="mw-datatable"
Line 175: Line 207:
 
|  
 
|  
 
  [
 
  [
     "Waxing Gibbous",
+
     "First Quarter",
     "Waxing Gibbous",
+
    "Full Moon",
     "Waxing Gibbous",
+
    "Last Quarter",
     "Full Moon"
+
    "New Moon",
 +
    "Waning Crescent",
 +
     "Waning Gibbous",
 +
     "Waxing Crescent",
 +
     "Waxing Gibbous"
 
  ]
 
  ]
 
|-
 
|-
Line 184: Line 220:
 
|
 
|
 
  [
 
  [
     "WXG",
+
     "F",
     "WXG",
+
    "FQ",
     "WXG",
+
    "LQ",
     "F"
+
    "N",
 +
    "WNC",
 +
     "WNG",
 +
     "WXC",
 +
     "WXG"
 
  ]
 
  ]
 
|-
 
|-
Line 240: Line 280:
 
  [
 
  [
 
     "A few clouds. Highs in the low 50s and lows in the upper 30s.",
 
     "A few clouds. Highs in the low 50s and lows in the upper 30s.",
     "Cloudy, periods of rain. Highs in the upper 40s with temperatures nearly steady overnight.",
+
     "Chance of afternoon showers. Highs in the mid 60s and lows in the mid 50s.",
 
     "Cloudy with rain. Highs in the mid 50s and lows in the upper 30s.",
 
     "Cloudy with rain. Highs in the mid 50s and lows in the upper 30s.",
 +
    "Cloudy. Highs in the low 50s and lows in the low 40s.",
 +
    "Mix of sun and clouds. Highs in the mid 60s and lows in the low 50s.",
 +
    "More sun than clouds. Highs in the low 70s and lows in the upper 50s.",
 
     "Mostly sunny. Highs in the upper 40s and lows in the low 30s."
 
     "Mostly sunny. Highs in the upper 40s and lows in the low 30s."
 +
    "Partly cloudy. Highs in the mid 60s and lows in the low 50s.",
 +
    "Plenty of sun. Highs in the upper 60s and lows in the upper 50s.",
 +
    "Rain and wind. Highs in the low 50s and lows in the low 40s.",
 +
    "Scattered thunderstorms possible. Highs in the mid 60s and lows in the mid 50s.",
 +
    "Showers possible in the afternoon. Highs in the upper 60s and lows in the upper 50s.",
 +
    "Showers possible. Highs in the upper 60s and lows in the upper 50s.",
 +
    "Times of sun and clouds. Highs in the mid 60s and lows in the mid 50s."
 
  ]
 
  ]
 
|-
 
|-
Line 264: Line 314:
 
|-
 
|-
 
| <code>$twcweather.forecast.sunriseTimeLocal</code>
 
| <code>$twcweather.forecast.sunriseTimeLocal</code>
 +
(This prediction bounces around, as seen [https://community.webcore.co/t/twc-sunrise-set-forecast-conditions-slightly-different/17578/30?u=wcmore here])
 
|
 
|
 
  [
 
  [
Line 282: Line 333:
 
|-
 
|-
 
| <code>$twcweather.forecast.sunsetTimeLocal</code>
 
| <code>$twcweather.forecast.sunsetTimeLocal</code>
 +
(This prediction bounces around, as seen [https://community.webcore.co/t/twc-sunrise-set-forecast-conditions-slightly-different/17578/30?u=wcmore here])
 
|
 
|
 
  [
 
  [
Line 334: Line 386:
 
     1545480000
 
     1545480000
 
  ]
 
  ]
 +
|}
 +
 +
==Partial day forecast==
 +
 +
The forecast includes morning and evening data for various attributes. The indexes begin at 0 for "this morning" so 2 is tomorrow morning and 3 is tomorrow evening (see the <code>daypartName</code> value). To show an icon for tonight's weather you would get the icon code with the expression <code>$twcweather.forecast.daypart[0].iconCode[1]</code>
 +
 +
Note that the first value for some attributes may be blank in the evening. For example, running a piston in the morning you may get <code>$twcweather.forecast.daypart[0].cloudCover => [ 25, 79, 100, ...]</code> but that same evening <code>$twcweather.forecast.daypart[0].cloudCover => [ null, 79, 100, ...]</code>.
 +
 +
[[WCmore's_Graphs#twcweather.forecast.daypart|Preliminary testing]] shows that today's morning/daytime data [0] turns null shortly after 3PM each day, and the next day's data shifts to [0] and [1] shortly after 3AM.  This means from approximately 3PM to 3AM, you will find [0] to be null, and [1] will show data from the evening/night in progress.  This also means that at about 3AM, the data for the night in progress vanishes, and is replaced with data for the following day/night.
 +
 +
2022 Edit: I have created a [https://community.webcore.co/t/twcweather-forecast-preserve-data-lost-at-3-oclock/20396?u=wcmore piston] to out-smart this craziness.
 +
 +
{| class="wikitable" style="margin: auto;"
 +
| Here's my findings over 20 days/40 events: … ([[WCmore's_Graphs#twcweather.forecast.daypart|Graph shown here]])
 +
* 22 changed between 2:58 and 3:10  (55% of the time)
 +
* 10 changed between 3:10 and 3:20  (25% of the time)
 +
*  8 changed between 3:20 and 3:36  (20% of the time)
 +
|}
 +
 +
 +
{| class="mw-datatable"
 +
|-
 +
! Expression
 +
! Sample value
 
|-
 
|-
 
| <code>$twcweather.forecast.daypart[0].cloudCover</code>
 
| <code>$twcweather.forecast.daypart[0].cloudCover</code>
 
|
 
|
 
  [
 
  [
     16,
+
     14,
 
     79,
 
     79,
     100,
+
     100
    100,
 
    99,
 
    85,
 
    32,
 
    14
 
 
  ]
 
  ]
 
|-
 
|-
Line 351: Line 422:
 
|
 
|
 
  [
 
  [
    "D",
 
    "N",
 
    "D",
 
    "N",
 
    "D",
 
    "N",
 
 
     "D",
 
     "D",
 
     "N"
 
     "N"
Line 379: Line 444:
 
     34,
 
     34,
 
     27,
 
     27,
    12,
 
    12,
 
 
     12,
 
     12,
 
     26,
 
     26,
    34,
 
 
     33
 
     33
 
  ]
 
  ]
Line 392: Line 454:
 
     3400,
 
     3400,
 
     2700,
 
     2700,
    1200,
 
    1200,
 
 
     1200,
 
     1200,
 
     2600,
 
     2600,
    3400,
 
 
     3300
 
     3300
 
  ]
 
  ]
Line 419: Line 478:
 
     20,
 
     20,
 
     100,
 
     100,
     90,
+
     90
    100,
 
    20,
 
    0,
 
    0
 
 
  ]
 
  ]
 
|-
 
|-
Line 429: Line 484:
 
|
 
|
 
  [
 
  [
     "rain",
+
     null,
    "precip",
 
    "rain",
 
    "rain",
 
    "rain",
 
 
     "precip",
 
     "precip",
 
     "rain",
 
     "rain",
     "precip"
+
     "snow"
 
  ]
 
  ]
 
|-
 
|-
Line 442: Line 493:
 
|
 
|
 
  [
 
  [
    0,
 
 
     0,
 
     0,
 
     0.93,
 
     0.93,
 
     0.51,
 
     0.51,
     0.48,
+
     0.48
    0,
 
    0,
 
    0
 
 
  ]
 
  ]
 
|-
 
|-
Line 469: Line 516:
 
  [
 
  [
 
     null,
 
     null,
     null,
+
     "Q1021",   (Winds could occasionally gust over 40 mph)
     null,
+
     "Q5015",   (Slight chance of a rain shower.)
     null,
+
     "Q5053",  (Locally heavier rainfall possible)
     "Q8003",
+
    "Q8001",   (A stray shower or thunderstorm is possible.)
     null,
+
     "Q8003",   (Thunder possible.)
     null,
+
     "Q8005",   (A stray shower or thunderstorm is possible early.)
     null
+
     "Q8035",   (Gusty winds and small hail are possible.)
 +
     "Q902",    (Areas of patchy fog.)
 +
    "Q904"    (Areas of patchy fog early.)
 
  ]
 
  ]
 
|-
 
|-
 
| <code>$twcweather.forecast.daypart[0].qualifierPhrase</code>
 
| <code>$twcweather.forecast.daypart[0].qualifierPhrase</code>
 +
(null is the most common result here)
 
|
 
|
 
  [
 
  [
 
     null,
 
     null,
     null,
+
     "A few storms may be severe.",
     null,
+
    "A shower is possible early.",
     null,
+
    "A stray afternoon thunderstorm is possible.",
     "Thunder possible.",
+
    "A stray severe thunderstorm is possible.",
     null,
+
    "A stray thunderstorm is possible throughout the evening.",
     null,
+
    "A stray shower or thunderstorm is possible.",
     null
+
    "A stray shower or thunderstorm is possible early.",
 +
    "Areas of patchy fog.",
 +
    "Areas of patchy fog developing.",
 +
    "Areas of patchy fog early.",
 +
    "Continued very hot.",
 +
    "Damaging winds, large hail and possibly a tornado with some storms.",
 +
    "Gusty winds and small hail are possible.",
 +
    "Higher wind gusts possible.",
 +
    "Localized flooding is possible.",
 +
    "Locally heavier rainfall possible",
 +
    "Locally heavy rainfall possible.",
 +
    "Potential for flooding rains.",
 +
    "Potential for heavy rainfall.",  
 +
     "Potential for severe thunderstorms.",  
 +
     "Slight chance of a rain shower.",  
 +
     "Thunder possible.",  
 +
     "Very hot.",  
 +
     "Watching the tropics.",  
 +
     "Winds could occasionally gust over 40 mph"
 
  ]
 
  ]
 
|-
 
|-
Line 496: Line 564:
 
     63,
 
     63,
 
     85,
 
     85,
    93,
 
 
     96,
 
     96,
    92,
 
 
     76,
 
     76,
     55,
+
     55
    72
 
 
  ]
 
  ]
 
|-
 
|-
Line 507: Line 572:
 
|
 
|
 
  [
 
  [
    "",
 
    "",
 
    "",
 
    "",
 
    "",
 
    "",
 
 
     "",
 
     "",
 
     ""
 
     ""
Line 559: Line 618:
 
|
 
|
 
  [
 
  [
     "No thunder",
+
     null,
     "No thunder",
+
     "No thunder",  
     "No thunder",
+
     "Thunder possible",  
     "No thunder",
+
     "Thunder expected",  
     "Thunder possible",
+
     "Severe thunderstorms possible",  
     "No thunder",
+
     "Severe thunderstorms likely",  
     "No thunder",
+
     "High risk of severe thunderstorms"
    "No thunder"
 
 
  ]
 
  ]
 
|-
 
|-
Line 572: Line 630:
 
|
 
|
 
  [
 
  [
     0,
+
     null,
     0,
+
     0,   ("No thunder")
     0,
+
     1,   ("Thunder possible")
     0,
+
     2,   ("Thunder expected")
     1,
+
     3,   ("Severe thunderstorms possible")
     0,
+
     4,   ("Severe thunderstorms likely")
     0,
+
     5    ("High risk of severe thunderstorms")
    0
 
 
  ]
 
  ]
 
|-
 
|-
Line 585: Line 642:
 
|
 
|
 
  [
 
  [
 +
    null,
 
     "Low",
 
     "Low",
     "Low",
+
     "Moderate",
     "Low",
+
     "High",
     "Low",
+
     "Very High",
     "Low",
+
     "Extreme"
    "Low",
 
    "Low",
 
    "Low"
 
 
  ]
 
  ]
 
|-
 
|-
Line 637: Line 692:
 
|
 
|
 
  [
 
  [
    "Winds light and variable.",
 
 
     "Winds light and variable.",
 
     "Winds light and variable.",
 
     "Winds NE at 5 to 10 mph.",
 
     "Winds NE at 5 to 10 mph.",
    "Winds light and variable.",
 
 
     "Winds SSW at 5 to 10 mph.",
 
     "Winds SSW at 5 to 10 mph.",
     "Winds WNW at 5 to 10 mph.",
+
     "Winds WNW at 5 to 10 mph."
    "Winds WNW at 5 to 10 mph.",
 
    "Winds light and variable."
 
 
  ]
 
  ]
 
|-
 
|-
Line 660: Line 711:
 
  ]
 
  ]
 
|-
 
|-
| <code>$twcweather.forecast.daypart[0].wxPhraseLong</code>
+
| <code>$twcweather.forecast.daypart[0].wxPhraseLong
 +
(weather phrase up to 32 characters)</code>
 
|
 
|
 
  [
 
  [
 +
    null,
 +
    "AM Clouds/PM Sun",
 +
    "AM Showers",
 +
    "AM Thunderstorms",
 +
    "Clouds Early/Clearing Late",
 +
    "Cloudy",
 +
    "Few Showers",
 +
    "Fog Late",
 +
    "Foggy",
 +
    "Isolated Thunderstorms",
 +
    "Mostly Clear",
 +
    "Mostly Clear/Wind",
 +
    "Mostly Cloudy",
 
     "Mostly Sunny",
 
     "Mostly Sunny",
     "Mostly Cloudy",
+
     "Partly Cloudy",
     "Rain",
+
     "PM Showers",
 +
    "PM Thunderstorms",
 
     "Rain",
 
     "Rain",
     "Rain",
+
     "Rain Late",
     "Cloudy",
+
     "Rain/Wind",
     "Mostly Sunny",
+
    "Rain/Wind Early",
     "Mostly Clear"
+
    "Scattered Thunderstorms",
 +
    "Showers",
 +
    "Showers Early",
 +
    "Showers Late",
 +
     "Sunny",
 +
     "Thunderstorms",
 +
    "Thunderstorms Early",
 +
    "Thunderstorms Late"
 
  ]
 
  ]
 
|-
 
|-
| <code>$twcweather.forecast.daypart[0].wxPhraseShort</code>
+
| <code>$twcweather.forecast.daypart[0].wxPhraseShort
 +
(weather phrase up to 12 characters)</code>
 
|
 
|
 
  [
 
  [
 +
    "AM Showers",
 +
    "Clear",
 +
    "Cloudy",
 +
    "Few Showers",
 +
    "M Clear",
 +
    "M Clr/Wind",
 +
    "M Cloudy",
 
     "M Sunny",
 
     "M Sunny",
     "M Cloudy",
+
     "P Cloudy",
     "Rain",
+
     "PM Showers",
    "Rain",
 
 
     "Rain",
 
     "Rain",
     "Cloudy",
+
     "Rain Late",
     "M Sunny",
+
     "Rain/Wind",
     "M Clear"
+
     "Sct T-Storms",
 +
    "Showers",
 +
    "Shwrs Early",
 +
    "Shwrs Late",
 +
    "T-Storms"
 
  ]
 
  ]
 
|}
 
|}
Line 705: Line 789:
 
| 0
 
| 0
 
| Tornado
 
| Tornado
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/00.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/00.png" height="50"/>
 
<code>:twc-0:</code>
 
<code>:twc-0:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/0.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/0.svg" height="50"/>
 
<code>:wu-v4-0:</code>
 
<code>:wu-v4-0:</code>
 
|-
 
|-
 
| 1
 
| 1
 
| Tropical Storm
 
| Tropical Storm
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/01.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/01.png" height="50"/>
 
<code>:twc-1:</code>
 
<code>:twc-1:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/1.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/1.svg" height="50"/>
 
<code>:wu-v4-1:</code>
 
<code>:wu-v4-1:</code>
 
|-
 
|-
 
| 2
 
| 2
 
| Hurricane
 
| Hurricane
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/02.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/02.png" height="50"/>
 
<code>:twc-2:</code>
 
<code>:twc-2:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/2.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/2.svg" height="50"/>
 
<code>:wu-v4-2:</code>
 
<code>:wu-v4-2:</code>
 
|-
 
|-
 
| 3
 
| 3
 
| Strong Storms
 
| Strong Storms
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/03.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/03.png" height="50"/>
 
<code>:twc-3:</code>
 
<code>:twc-3:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/3.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/3.svg" height="50"/>
 
<code>:wu-v4-3:</code>
 
<code>:wu-v4-3:</code>
 
|-
 
|-
 
| 4
 
| 4
 
| Thunder and Hail
 
| Thunder and Hail
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/04.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/04.png" height="50"/>
 
<code>:twc-4:</code>
 
<code>:twc-4:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/4.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/4.svg" height="50"/>
 
<code>:wu-v4-4:</code>
 
<code>:wu-v4-4:</code>
 
|-
 
|-
 
| 5
 
| 5
 
| Rain to Snow Showers
 
| Rain to Snow Showers
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/05.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/05.png" height="50"/>
 
<code>:twc-5:</code>
 
<code>:twc-5:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/5.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/5.svg" height="50"/>
 
<code>:wu-v4-5:</code>
 
<code>:wu-v4-5:</code>
 
|-
 
|-
 
| 6
 
| 6
 
| Rain / Sleet
 
| Rain / Sleet
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/06.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/06.png" height="50"/>
 
<code>:twc-6:</code>
 
<code>:twc-6:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/6.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/6.svg" height="50"/>
 
<code>:wu-v4-6:</code>
 
<code>:wu-v4-6:</code>
 
|-
 
|-
 
| 7
 
| 7
 
| Wintry Mix Snow / Sleet
 
| Wintry Mix Snow / Sleet
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/07.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/07.png" height="50"/>
 
<code>:twc-7:</code>
 
<code>:twc-7:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/7.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/7.svg" height="50"/>
 
<code>:wu-v4-7:</code>
 
<code>:wu-v4-7:</code>
 
|-
 
|-
 
| 8
 
| 8
 
| Freezing Drizzle
 
| Freezing Drizzle
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/08.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/08.png" height="50"/>
 
<code>:twc-8:</code>
 
<code>:twc-8:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/8.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/8.svg" height="50"/>
 
<code>:wu-v4-8:</code>
 
<code>:wu-v4-8:</code>
 
|-
 
|-
 
| 9
 
| 9
 
| Drizzle
 
| Drizzle
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/09.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/09.png" height="50"/>
 
<code>:twc-9:</code>
 
<code>:twc-9:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/9.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/9.svg" height="50"/>
 
<code>:wu-v4-9:</code>
 
<code>:wu-v4-9:</code>
 
|-
 
|-
 
| 10
 
| 10
 
| Freezing Rain
 
| Freezing Rain
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/10.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/10.png" height="50"/>
 
<code>:twc-10:</code>
 
<code>:twc-10:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/10.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/10.svg" height="50"/>
 
<code>:wu-v4-10:</code>
 
<code>:wu-v4-10:</code>
 
|-
 
|-
 
| 11
 
| 11
 
| Light Rain
 
| Light Rain
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/11.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/11.png" height="50"/>
 
<code>:twc-11:</code>
 
<code>:twc-11:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/11.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/11.svg" height="50"/>
 
<code>:wu-v4-11:</code>
 
<code>:wu-v4-11:</code>
 
|-
 
|-
 
| 12
 
| 12
 
| Rain
 
| Rain
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/12.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/12.png" height="50"/>
 
<code>:twc-12:</code>
 
<code>:twc-12:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/12.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/12.svg" height="50"/>
 
<code>:wu-v4-12:</code>
 
<code>:wu-v4-12:</code>
 
|-
 
|-
 
| 13
 
| 13
 
| Scattered Flurries
 
| Scattered Flurries
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/13.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/13.png" height="50"/>
 
<code>:twc-13:</code>
 
<code>:twc-13:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/13.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/13.svg" height="50"/>
 
<code>:wu-v4-13:</code>
 
<code>:wu-v4-13:</code>
 
|-
 
|-
 
| 14
 
| 14
 
| Light Snow
 
| Light Snow
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/14.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/14.png" height="50"/>
 
<code>:twc-14:</code>
 
<code>:twc-14:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/14.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/14.svg" height="50"/>
 
<code>:wu-v4-14:</code>
 
<code>:wu-v4-14:</code>
 
|-
 
|-
 
| 15
 
| 15
 
| Blowing / Drifting Snow
 
| Blowing / Drifting Snow
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/15.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/15.png" height="50"/>
 
<code>:twc-15:</code>
 
<code>:twc-15:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/15.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/15.svg" height="50"/>
 
<code>:wu-v4-15:</code>
 
<code>:wu-v4-15:</code>
 
|-
 
|-
 
| 16
 
| 16
 
| Snow
 
| Snow
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/16.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/16.png" height="50"/>
 
<code>:twc-16:</code>
 
<code>:twc-16:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/16.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/16.svg" height="50"/>
 
<code>:wu-v4-16:</code>
 
<code>:wu-v4-16:</code>
 
|-
 
|-
 
| 17
 
| 17
 
| Hail
 
| Hail
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/17.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/17.png" height="50"/>
 
<code>:twc-17:</code>
 
<code>:twc-17:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/17.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/17.svg" height="50"/>
 
<code>:wu-v4-17:</code>
 
<code>:wu-v4-17:</code>
 
|-
 
|-
 
| 18
 
| 18
 
| Sleet
 
| Sleet
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/18.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/18.png" height="50"/>
 
<code>:twc-18:</code>
 
<code>:twc-18:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/18.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/18.svg" height="50"/>
 
<code>:wu-v4-18:</code>
 
<code>:wu-v4-18:</code>
 
|-
 
|-
 
| 19
 
| 19
 
| Blowing Dust / Sandstorm
 
| Blowing Dust / Sandstorm
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/19.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/19.png" height="50"/>
 
<code>:twc-19:</code>
 
<code>:twc-19:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/19.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/19.svg" height="50"/>
 
<code>:wu-v4-19:</code>
 
<code>:wu-v4-19:</code>
 
|-
 
|-
 
| 20
 
| 20
 
| Foggy
 
| Foggy
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/20.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/20.png" height="50"/>
 
<code>:twc-20:</code>
 
<code>:twc-20:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/20.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/20.svg" height="50"/>
 
<code>:wu-v4-20:</code>
 
<code>:wu-v4-20:</code>
 
|-
 
|-
 
| 21
 
| 21
 
| Haze / Windy
 
| Haze / Windy
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/21.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/21.png" height="50"/>
 
<code>:twc-21:</code>
 
<code>:twc-21:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/21.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/21.svg" height="50"/>
 
<code>:wu-v4-21:</code>
 
<code>:wu-v4-21:</code>
 
|-
 
|-
 
| 22
 
| 22
 
| Smoke / Windy
 
| Smoke / Windy
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/22.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/22.png" height="50"/>
 
<code>:twc-22:</code>
 
<code>:twc-22:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/22.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/22.svg" height="50"/>
 
<code>:wu-v4-22:</code>
 
<code>:wu-v4-22:</code>
 
|-
 
|-
 
| 23
 
| 23
 
| Breezy
 
| Breezy
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/23.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/23.png" height="50"/>
 
<code>:twc-23:</code>
 
<code>:twc-23:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/23.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/23.svg" height="50"/>
 
<code>:wu-v4-23:</code>
 
<code>:wu-v4-23:</code>
 
|-
 
|-
 
| 24
 
| 24
 
| Blowing Spray / Windy
 
| Blowing Spray / Windy
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/24.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/24.png" height="50"/>
 
<code>:twc-24:</code>
 
<code>:twc-24:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/24.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/24.svg" height="50"/>
 
<code>:wu-v4-24:</code>
 
<code>:wu-v4-24:</code>
 
|-
 
|-
 
| 25
 
| 25
 
| Frigid / Ice Crystals
 
| Frigid / Ice Crystals
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/25.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/25.png" height="50"/>
 
<code>:twc-25:</code>
 
<code>:twc-25:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/25.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/25.svg" height="50"/>
 
<code>:wu-v4-25:</code>
 
<code>:wu-v4-25:</code>
 
|-
 
|-
 
| 26
 
| 26
 
| Cloudy
 
| Cloudy
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/26.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/26.png" height="50"/>
 
<code>:twc-26:</code>
 
<code>:twc-26:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/26.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/26.svg" height="50"/>
 
<code>:wu-v4-26:</code>
 
<code>:wu-v4-26:</code>
 
|-
 
|-
 
| 27
 
| 27
 
| Mostly Cloudy
 
| Mostly Cloudy
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/27.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/27.png" height="50"/>
 
<code>:twc-27:</code>
 
<code>:twc-27:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/27.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/27.svg" height="50"/>
 
<code>:wu-v4-27:</code>
 
<code>:wu-v4-27:</code>
 
|-
 
|-
 
| 28
 
| 28
 
| Mostly Cloudy
 
| Mostly Cloudy
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/28.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/28.png" height="50"/>
 
<code>:twc-28:</code>
 
<code>:twc-28:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/28.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/28.svg" height="50"/>
 
<code>:wu-v4-28:</code>
 
<code>:wu-v4-28:</code>
 
|-
 
|-
 
| 29
 
| 29
 
| Partly Cloudy
 
| Partly Cloudy
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/29.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/29.png" height="50"/>
 
<code>:twc-29:</code>
 
<code>:twc-29:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/29.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/29.svg" height="50"/>
 
<code>:wu-v4-29:</code>
 
<code>:wu-v4-29:</code>
 
|-
 
|-
 
| 30
 
| 30
 
| Partly Cloudy
 
| Partly Cloudy
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/30.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/30.png" height="50"/>
 
<code>:twc-30:</code>
 
<code>:twc-30:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/30.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/30.svg" height="50"/>
 
<code>:wu-v4-30:</code>
 
<code>:wu-v4-30:</code>
 
|-
 
|-
 
| 31
 
| 31
 
| Clear
 
| Clear
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/31.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/31.png" height="50"/>
 
<code>:twc-31:</code>
 
<code>:twc-31:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/31.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/31.svg" height="50"/>
 
<code>:wu-v4-31:</code>
 
<code>:wu-v4-31:</code>
 
|-
 
|-
 
| 32
 
| 32
 
| Sunny
 
| Sunny
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/32.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/32.png" height="50"/>
 
<code>:twc-32:</code>
 
<code>:twc-32:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/32.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/32.svg" height="50"/>
 
<code>:wu-v4-32:</code>
 
<code>:wu-v4-32:</code>
 
|-
 
|-
 
| 33
 
| 33
 
| Fair / Mostly Clear
 
| Fair / Mostly Clear
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/33.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/33.png" height="50"/>
 
<code>:twc-33:</code>
 
<code>:twc-33:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/33.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/33.svg" height="50"/>
 
<code>:wu-v4-33:</code>
 
<code>:wu-v4-33:</code>
 
|-
 
|-
 
| 34
 
| 34
 
| Fair / Mostly Sunny
 
| Fair / Mostly Sunny
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/34.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/34.png" height="50"/>
 
<code>:twc-34:</code>
 
<code>:twc-34:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/34.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/34.svg" height="50"/>
 
<code>:wu-v4-34:</code>
 
<code>:wu-v4-34:</code>
 
|-
 
|-
 
| 35
 
| 35
 
| Mixed Rain & Hail
 
| Mixed Rain & Hail
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/35.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/35.png" height="50"/>
 
<code>:twc-35:</code>
 
<code>:twc-35:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/35.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/35.svg" height="50"/>
 
<code>:wu-v4-35:</code>
 
<code>:wu-v4-35:</code>
 
|-
 
|-
 
| 36
 
| 36
 
| Hot
 
| Hot
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/36.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/36.png" height="50"/>
 
<code>:twc-36:</code>
 
<code>:twc-36:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/36.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/36.svg" height="50"/>
 
<code>:wu-v4-36:</code>
 
<code>:wu-v4-36:</code>
 
|-
 
|-
 
| 37
 
| 37
 
| Isolated Thunderstorms
 
| Isolated Thunderstorms
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/37.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/37.png" height="50"/>
 
<code>:twc-37:</code>
 
<code>:twc-37:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/37.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/37.svg" height="50"/>
 
<code>:wu-v4-37:</code>
 
<code>:wu-v4-37:</code>
 
|-
 
|-
 
| 38
 
| 38
 
| Thunderstorms
 
| Thunderstorms
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/38.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/38.png" height="50"/>
 
<code>:twc-38:</code>
 
<code>:twc-38:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/38.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/38.svg" height="50"/>
 
<code>:wu-v4-38:</code>
 
<code>:wu-v4-38:</code>
 
|-
 
|-
 
| 39
 
| 39
 
| Scattered Showers
 
| Scattered Showers
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/39.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/39.png" height="50"/>
 
<code>:twc-39:</code>
 
<code>:twc-39:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/39.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/39.svg" height="50"/>
 
<code>:wu-v4-39:</code>
 
<code>:wu-v4-39:</code>
 
|-
 
|-
 
| 40
 
| 40
 
| Heavy Rain
 
| Heavy Rain
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/40.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/40.png" height="50"/>
 
<code>:twc-40:</code>
 
<code>:twc-40:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/40.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/40.svg" height="50"/>
 
<code>:wu-v4-40:</code>
 
<code>:wu-v4-40:</code>
 
|-
 
|-
 
| 41
 
| 41
 
| Scattered Snow Showers
 
| Scattered Snow Showers
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/41.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/41.png" height="50"/>
 
<code>:twc-41:</code>
 
<code>:twc-41:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/41.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/41.svg" height="50"/>
 
<code>:wu-v4-41:</code>
 
<code>:wu-v4-41:</code>
 
|-
 
|-
 
| 42
 
| 42
 
| Heavy Snow
 
| Heavy Snow
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/42.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/42.png" height="50"/>
 
<code>:twc-42:</code>
 
<code>:twc-42:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/42.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/42.svg" height="50"/>
 
<code>:wu-v4-42:</code>
 
<code>:wu-v4-42:</code>
 
|-
 
|-
 
| 43
 
| 43
 
| Blizzard
 
| Blizzard
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/43.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/43.png" height="50"/>
 
<code>:twc-43:</code>
 
<code>:twc-43:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/43.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/43.svg" height="50"/>
 
<code>:wu-v4-43:</code>
 
<code>:wu-v4-43:</code>
 
|-
 
|-
 
| 44
 
| 44
 
| Not Available (N/A)
 
| Not Available (N/A)
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/44.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/44.png" height="50"/>
 
<code>:twc-44:</code>
 
<code>:twc-44:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/44.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/44.svg" height="50"/>
 
<code>:wu-v4-44:</code>
 
<code>:wu-v4-44:</code>
 
|-
 
|-
 
| 45
 
| 45
 
| Scattered Showers
 
| Scattered Showers
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/45.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/45.png" height="50"/>
 
<code>:twc-45:</code>
 
<code>:twc-45:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/45.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/45.svg" height="50"/>
 
<code>:wu-v4-45:</code>
 
<code>:wu-v4-45:</code>
 
|-
 
|-
 
| 46
 
| 46
 
| Scattered Snow Showers
 
| Scattered Snow Showers
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/46.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/46.png" height="50"/>
 
<code>:twc-46:</code>
 
<code>:twc-46:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/46.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/46.svg" height="50"/>
 
<code>:wu-v4-46:</code>
 
<code>:wu-v4-46:</code>
 
|-
 
|-
 
| 47
 
| 47
 
| Scattered Thunderstorms
 
| Scattered Thunderstorms
| style="text-align: center" | <img src="https://smartthings-twc-icons.s3.amazonaws.com/47.png" height="50"/>
+
| style="text-align: center" | <img src="https://cdn.jsdelivr.net/gh/imnotbob/webCoRE@hubitat-patches/resources/icons/47.png" height="50"/>
 
<code>:twc-47:</code>
 
<code>:twc-47:</code>
| style="text-align: center" | <img src="https://icons.wxug.com/i/c/v4/47.svg" height="50"/>
+
| style="text-align: center" | <img src="https://www.wunderground.com/static/i/c/v4/47.svg" height="50"/>
 
<code>:wu-v4-47:</code>
 
<code>:wu-v4-47:</code>
 
|}
 
|}
Line 1,044: Line 1,128:
 
Several additional icon sets are available but all have a much more limited set of icons. We have ensured that the <code>$twcWeather</code> icon code numbers map to an approximately accurate representation in the old icon sets. While the old sets work we encourage use of the more expressive TWC and WU v4 icon sets.
 
Several additional icon sets are available but all have a much more limited set of icons. We have ensured that the <code>$twcWeather</code> icon code numbers map to an approximately accurate representation in the old icon sets. While the old sets work we encourage use of the more expressive TWC and WU v4 icon sets.
  
All of the icon sets described on the original [[Weather Icons|Weather#Weather_Icons]] page work with the new codes, for example <code>:wu-b-36:</code> maps to the "sunny" icon in the "B" icon set.
+
All of the icon sets described on the original [[Weather#Weather_Icons | Weather Icons]] page work with the new codes, for example <code>:wu-b-36:</code> maps to the "sunny" icon in the "B" icon set.

Latest revision as of 14:41, 17 November 2022

The $twcweather system variable provides data from The Weather Company following the shutdown of the Weather Underground API that powered $weather. $twcweather was introduced in webCoRE v0.3.10a.20190223. See sample data below which is available for webCoRE installs running on the SmartThings platform.

Note: If you discover useful data that is not listed here, feel free to post in this thread so we can update this page accordingly.

If you are interested in data for bad weather alerts, try: $twcweather.alerts.

Conditions

Expression Sample value
$twcweather.conditions.cloudCeiling null, 100, 2100, 8500
$twcweather.conditions.cloudCoverPhrase "Clear", "Partly Cloudy", "Mostly Cloudy", "Cloudy"
$twcweather.conditions.dayOfWeek "Wednesday"
$twcweather.conditions.dayOrNight "D", "N"
$twcweather.conditions.expirationTimeUtc 1545249077
$twcweather.conditions.iconCode 32
$twcweather.conditions.iconCodeExtend 3200
$twcweather.conditions.obsQualifierCode null
$twcweather.conditions.obsQualifierSeverity null
$twcweather.conditions.precip1Hour 0
$twcweather.conditions.precip6Hour 0
$twcweather.conditions.precip24Hour 0
$twcweather.conditions.pressureAltimeter 1018.29

29.95, 30.14

$twcweather.conditions.pressureChange -2.71
$twcweather.conditions.pressureMeanSeaLevel 1018.5
$twcweather.conditions.pressureTendencyCode 0, 1, 2

(Representing "Steady", "Rising", "Falling" respectively)

$twcweather.conditions.pressureTendencyTrend "Steady", "Rising", "Falling"
$twcweather.conditions.relativeHumidity 55
$twcweather.conditions.snow1Hour 0
$twcweather.conditions.snow6Hour 0
$twcweather.conditions.snow24Hour 0
$twcweather.conditions.sunriseTimeLocal "2018-12-19T07:28:58-0500"
$twcweather.conditions.sunriseTimeUtc 1545222538
$twcweather.conditions.sunsetTimeLocal "2018-12-19T17:10:52-0500"
$twcweather.conditions.sunsetTimeUtc 1545257452
$twcweather.conditions.temperature 10, 72
$twcweather.conditions.temperatureChange24Hour -2, 9
$twcweather.conditions.temperatureDewPoint 2, 62
$twcweather.conditions.temperatureFeelsLike 9, 75
$twcweather.conditions.temperatureHeatIndex 10, 75
$twcweather.conditions.temperatureMax24Hour 12, 75
$twcweather.conditions.temperatureMaxSince7Am 10, 75
$twcweather.conditions.temperatureMin24Hour -3, 58
$twcweather.conditions.temperatureWindChill 9, 72
$twcweather.conditions.uvDescription "Extreme", "Very High", "High", "Moderate", "Low", "No Report", "Not Available"

(Extreme=11-16 Very High=8-10 High=6-7 Moderate=3-5 Low=0-2 No Report=-1 Not Available=-2)

$twcweather.conditions.uvIndex 1
$twcweather.conditions.validTimeLocal "2018-12-19T14:41:17-0500"
$twcweather.conditions.validTimeUtc 1545248477
$twcweather.conditions.visibility 16.09
$twcweather.conditions.windDirection 180
$twcweather.conditions.windDirectionCardinal "S", "SSE", "SE", "ESE", "E", "ENE", "NE", "NNE", "N", "NNW", "NW", "WNW", "W", "WSW", "SW", "SSW", "CALM", "VAR"
$twcweather.conditions.windGust null, 22
$twcweather.conditions.windSpeed 6
$twcweather.conditions.wxPhraseLong

(weather phrase up to 32 characters)

"Clear", "Cloudy", "Cloudy/Wind", "Fair", "Fair/Wind", "Flurries", "Fog", "Frozen Rain Mix", "Heavy Rain", "Heavy Rain/Wind", "Light Rain", "Light Rain/Wind", "Light Rain with Thunder", "Light Snow", "Mostly Cloudy", "Mostly Cloudy/Wind", "Partly Cloudy", "Partly Cloudy/Wind", "Rain/Freezing Rain", "Rain Shower", "Rain Shower/Wind", "Rain Shower with Thunder", "Rain/Snow", "Rain/Wind", "Showers in the Vicinity", "Snow Shower", "Snow Shower/Wind", "Snow/Wind", "Sunny", "Sunny/Wind"
$twcweather.conditions.wxPhraseMedium

(weather phrase up to 22? characters)

"Clear", "Cloudy", "Cloudy/Wind", "Fair", "Fair/Wind", "Flurries", "Fog", "Heavy Rain", "Heavy Rain/Wind", "Ice/Snow", "Light Rain", "Light Rain and Thunder", "Light Rain/Wind", "Light Snow", "Mostly Cloudy", "Mostly Cloudy/Wind", "Partly Cloudy", "Partly Cloudy/Wind", "Rain/Freezing Rain", "Rain Shower", "Rain Shower and Thunder", "Rain Shower/Wind", "Rain/Snow", "Rain/Wind", "Showers in Vicinity", "Snow Shower", "Snow Shower/Wind", "Snow/Wind", "Sunny", "Sunny/Wind"
$twcweather.conditions.wxPhraseShort

(weather phrase up to 12 characters)

"Clear", "Cloudy", "Cloudy/Wind", "Fair", "Fair/Wind", "Flurries", "Fog", "Frz Rain", "Heavy Rain", "Ice/Snow", "Light Rain", "Light Snow", "M Cldy/Wind", "M Cloudy", "P Cldy/Wind", "P Cloudy", "Rain Shower", "Rain/Snow", "Rain/Thunder", "Rain/Wind", "Showers Near", "Snow Shower", "Snow/Wind", "Shower/Wind", "Sunny", "Sun/Wind"

Forecast

15 day forecast; append the index to get an individual day. For example, $twcweather.forecast.temperatureMin[0] is today's low temperature.

Normally, [0] is today's data, and [1] is tomorrow's data... but initial observations indicate that the data shifts over to a new day at approximately 3:15am, not at midnight, as one would expect. So from midnight to about 3:15am, the [0] data will likely be displaying yesterday's data, and [1] will be the current day. Once the data shifts over, then [0] will go back to being today, and [1] being tomorrow.
(IE: 20+ hours a day, [0] is today... 3+ hours a day, [1] is today... with events during the 3am hour potentially going in either direction)

To add to this confusion, some [0] dataPoints (for today) vanish shortly after 3pm.
(IE:$twcweather.forecast.temperatureMax[0] returns null all afternoon and into the early morning hours)

⃰ clears throat ⃰
A special "Thank you" to TWC for forcing us to add extra code to work around this convoluted logic.

To see a real life example, we can look at $twcweather.forecast.dayOfWeek[0]

  • Fri at 11:03pm returned Friday ✅
  • Sat at 12:03am returned Friday ❌
  • Sat at 01:03am returned Friday ❌
  • Sat at 02:03am returned Friday ❌
  • Sat at 03:03am returned Friday ❌
  • Sat at 04:03am returned Saturday ✅ (Finally!)

2022 Edit: I have created a piston to out-smart this craziness.


Expression Sample value
$twcweather.forecast.dayOfWeek
[
    "Wednesday",
    "Thursday",
    "Friday",
    "Saturday"
]
$twcweather.forecast.expirationTimeUtc
[
    1545251268,
    1545251268,
    1545251268,
    1545251268
]
$twcweather.forecast.moonPhase
[
    "First Quarter",
    "Full Moon",
    "Last Quarter",
    "New Moon",
    "Waning Crescent",
    "Waning Gibbous",
    "Waxing Crescent",
    "Waxing Gibbous"
]
$twcweather.forecast.moonPhaseCode
[
    "F",
    "FQ",
    "LQ",
    "N",
    "WNC",
    "WNG",
    "WXC",
    "WXG"
]
$twcweather.forecast.moonPhaseDay
[
    11,
    12,
    13,
    15
]
$twcweather.forecast.moonriseTimeLocal
[
    "2018-12-19T15:04:06-0500",
    "2018-12-20T15:44:43-0500",
    "2018-12-21T16:32:25-0500",
    "2018-12-22T17:26:58-0500"
]
$twcweather.forecast.moonriseTimeUtc
[
    1545249846,
    1545338683,
    1545427945,
    1545517618
]
$twcweather.forecast.moonsetTimeLocal
[
    "2018-12-19T03:50:48-0500",
    "2018-12-20T04:56:24-0500",
    "2018-12-21T06:03:51-0500",
    "2018-12-22T07:11:16-0500"
]
$twcweather.forecast.moonsetTimeUtc
[
    1545209448,
    1545299784,
    1545390231,
    1545480676
]
$twcweather.forecast.narrative
[
    "A few clouds. Highs in the low 50s and lows in the upper 30s.",
    "Chance of afternoon showers. Highs in the mid 60s and lows in the mid 50s.",
    "Cloudy with rain. Highs in the mid 50s and lows in the upper 30s.",
    "Cloudy. Highs in the low 50s and lows in the low 40s.",
    "Mix of sun and clouds. Highs in the mid 60s and lows in the low 50s.",
    "More sun than clouds. Highs in the low 70s and lows in the upper 50s.",
    "Mostly sunny. Highs in the upper 40s and lows in the low 30s."
    "Partly cloudy. Highs in the mid 60s and lows in the low 50s.",
    "Plenty of sun. Highs in the upper 60s and lows in the upper 50s.",
    "Rain and wind. Highs in the low 50s and lows in the low 40s.",
    "Scattered thunderstorms possible. Highs in the mid 60s and lows in the mid 50s.",
    "Showers possible in the afternoon. Highs in the upper 60s and lows in the upper 50s.",
    "Showers possible. Highs in the upper 60s and lows in the upper 50s.",
    "Times of sun and clouds. Highs in the mid 60s and lows in the mid 50s."
]
$twcweather.forecast.qpf
[
    0,
    1.44,
    0.49,
    0
]
$twcweather.forecast.qpfSnow
[
    0,
    0,
    0,
    0
]
$twcweather.forecast.sunriseTimeLocal

(This prediction bounces around, as seen here)

[
    "2018-12-19T07:28:58-0500",
    "2018-12-20T07:29:31-0500",
    "2018-12-21T07:30:02-0500",
    "2018-12-22T07:30:32-0500"
]
$twcweather.forecast.sunriseTimeUtc
[
    1545222538,
    1545308971,
    1545395402,
    1545481832
]
$twcweather.forecast.sunsetTimeLocal

(This prediction bounces around, as seen here)

[
    "2018-12-19T17:10:52-0500",
    "2018-12-20T17:11:19-0500",
    "2018-12-21T17:11:47-0500",
    "2018-12-22T17:12:18-0500"
]
$twcweather.forecast.sunsetTimeUtc
[
    1545257452,
    1545343879,
    1545430307,
    1545516738
]
$twcweather.forecast.temperatureMax
[
    51,
    49,
    54,
    49
]
$twcweather.forecast.temperatureMin
[
    38,
    47,
    37,
    31
]
$twcweather.forecast.validTimeLocal
[
    "2018-12-19T07:00:00-0500",
    "2018-12-20T07:00:00-0500",
    "2018-12-21T07:00:00-0500",
    "2018-12-22T07:00:00-0500"
]
$twcweather.forecast.validTimeUtc
[
    1545220800,
    1545307200,
    1545393600,
    1545480000
]

Partial day forecast

The forecast includes morning and evening data for various attributes. The indexes begin at 0 for "this morning" so 2 is tomorrow morning and 3 is tomorrow evening (see the daypartName value). To show an icon for tonight's weather you would get the icon code with the expression $twcweather.forecast.daypart[0].iconCode[1]

Note that the first value for some attributes may be blank in the evening. For example, running a piston in the morning you may get $twcweather.forecast.daypart[0].cloudCover => [ 25, 79, 100, ...] but that same evening $twcweather.forecast.daypart[0].cloudCover => [ null, 79, 100, ...].

Preliminary testing shows that today's morning/daytime data [0] turns null shortly after 3PM each day, and the next day's data shifts to [0] and [1] shortly after 3AM. This means from approximately 3PM to 3AM, you will find [0] to be null, and [1] will show data from the evening/night in progress. This also means that at about 3AM, the data for the night in progress vanishes, and is replaced with data for the following day/night.

2022 Edit: I have created a piston to out-smart this craziness.

Here's my findings over 20 days/40 events: … (Graph shown here)
* 22 changed between 2:58 and 3:10   (55% of the time)
* 10 changed between 3:10 and 3:20   (25% of the time)
*  8 changed between 3:20 and 3:36   (20% of the time)


Expression Sample value
$twcweather.forecast.daypart[0].cloudCover
[
    14,
    79,
    100
]
$twcweather.forecast.daypart[0].dayOrNight
[
    "D",
    "N"
]
$twcweather.forecast.daypart[0].daypartName
[
    "Today",
    "Tonight",
    "Tomorrow",
    "Tomorrow night",
    "Friday",
    "Friday night",
    "Saturday",
    "Saturday night"
]
$twcweather.forecast.daypart[0].iconCode
[
    34,
    27,
    12,
    26,
    33
]
$twcweather.forecast.daypart[0].iconCodeExtend
[
    3400,
    2700,
    1200,
    2600,
    3300
]
$twcweather.forecast.daypart[0].narrative
[
    "Lots of sunshine. High 51F. Winds light and variable.",
    "Partly cloudy early followed by cloudy skies overnight. Low 38F. Winds light and variable.",
    "Rain likely. High 49F. Winds NE at 5 to 10 mph. Chance of rain 100%. Rainfall near an inch.",
    "Rain likely. Low 47F. Winds light and variable. Chance of rain 90%. Rainfall near a half an inch.",
    "Periods of rain. Thunder possible. High 54F. Winds SSW at 5 to 10 mph. Chance of rain 100%.",
    "Cloudy. Low 37F. Winds WNW at 5 to 10 mph.",
    "A few clouds early, otherwise mostly sunny. High 49F. Winds WNW at 5 to 10 mph.",
    "Clear to partly cloudy. Low 31F. Winds light and variable."
]
$twcweather.forecast.daypart[0].precipChance
[
    0,
    20,
    100,
    90
]
$twcweather.forecast.daypart[0].precipType
[
    null,
    "precip",
    "rain",
    "snow"
]
$twcweather.forecast.daypart[0].qpf
[
    0,
    0.93,
    0.51,
    0.48
]
$twcweather.forecast.daypart[0].qpfSnow
[
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0
]
$twcweather.forecast.daypart[0].qualifierCode
[
    null,
    "Q1021",   (Winds could occasionally gust over 40 mph)
    "Q5015",   (Slight chance of a rain shower.)
    "Q5053",   (Locally heavier rainfall possible)
    "Q8001",   (A stray shower or thunderstorm is possible.)
    "Q8003",   (Thunder possible.)
    "Q8005",   (A stray shower or thunderstorm is possible early.)
    "Q8035",   (Gusty winds and small hail are possible.)
    "Q902",    (Areas of patchy fog.)
    "Q904"     (Areas of patchy fog early.)
]
$twcweather.forecast.daypart[0].qualifierPhrase

(null is the most common result here)

[
    null,
    "A few storms may be severe.", 
    "A shower is possible early.", 
    "A stray afternoon thunderstorm is possible.", 
    "A stray severe thunderstorm is possible.", 
    "A stray thunderstorm is possible throughout the evening.", 
    "A stray shower or thunderstorm is possible.", 
    "A stray shower or thunderstorm is possible early.", 
    "Areas of patchy fog.", 
    "Areas of patchy fog developing.", 
    "Areas of patchy fog early.", 
    "Continued very hot.", 
    "Damaging winds, large hail and possibly a tornado with some storms.", 
    "Gusty winds and small hail are possible.", 
    "Higher wind gusts possible.", 
    "Localized flooding is possible.", 
    "Locally heavier rainfall possible", 
    "Locally heavy rainfall possible.", 
    "Potential for flooding rains.", 
    "Potential for heavy rainfall.", 
    "Potential for severe thunderstorms.", 
    "Slight chance of a rain shower.", 
    "Thunder possible.", 
    "Very hot.", 
    "Watching the tropics.", 
    "Winds could occasionally gust over 40 mph"
]
$twcweather.forecast.daypart[0].relativeHumidity
[
    63,
    85,
    96,
    76,
    55
]
$twcweather.forecast.daypart[0].snowRange
[
    "",
    ""
]
$twcweather.forecast.daypart[0].temperature
[
    51,
    38,
    49,
    47,
    54,
    37,
    49,
    31
]
$twcweather.forecast.daypart[0].temperatureHeatIndex
[
    50,
    43,
    48,
    50,
    54,
    46,
    48,
    39
]
$twcweather.forecast.daypart[0].temperatureWindChill
[
    44,
    39,
    41,
    46,
    43,
    34,
    33,
    32
]
$twcweather.forecast.daypart[0].thunderCategory
[
    null,
    "No thunder", 
    "Thunder possible", 
    "Thunder expected", 
    "Severe thunderstorms possible", 
    "Severe thunderstorms likely", 
    "High risk of severe thunderstorms"
]
$twcweather.forecast.daypart[0].thunderIndex
[
    null,
    0,   ("No thunder")
    1,   ("Thunder possible")
    2,   ("Thunder expected")
    3,   ("Severe thunderstorms possible")
    4,   ("Severe thunderstorms likely")
    5    ("High risk of severe thunderstorms")
]
$twcweather.forecast.daypart[0].uvDescription
[
    null,
    "Low",
    "Moderate",
    "High",
    "Very High",
    "Extreme"
]
$twcweather.forecast.daypart[0].uvIndex
[
    1,
    0,
    1,
    0,
    1,
    0,
    2,
    0
]
$twcweather.forecast.daypart[0].windDirection
[
    173,
    44,
    51,
    125,
    208,
    292,
    282,
    274
]
$twcweather.forecast.daypart[0].windDirectionCardinal
[
    "S",
    "NE",
    "NE",
    "SE",
    "SSW",
    "WNW",
    "WNW",
    "W"
]
$twcweather.forecast.daypart[0].windPhrase
[
    "Winds light and variable.",
    "Winds NE at 5 to 10 mph.",
    "Winds SSW at 5 to 10 mph.",
    "Winds WNW at 5 to 10 mph."
]
$twcweather.forecast.daypart[0].windSpeed
[
    3,
    1,
    6,
    5,
    9,
    9,
    9,
    3
]
$twcweather.forecast.daypart[0].wxPhraseLong

(weather phrase up to 32 characters)

[
    null,
    "AM Clouds/PM Sun",
    "AM Showers",
    "AM Thunderstorms",
    "Clouds Early/Clearing Late",
    "Cloudy",
    "Few Showers",
    "Fog Late",
    "Foggy",
    "Isolated Thunderstorms",
    "Mostly Clear",
    "Mostly Clear/Wind",
    "Mostly Cloudy",
    "Mostly Sunny",
    "Partly Cloudy",
    "PM Showers",
    "PM Thunderstorms",
    "Rain",
    "Rain Late",
    "Rain/Wind",
    "Rain/Wind Early",
    "Scattered Thunderstorms",
    "Showers",
    "Showers Early",
    "Showers Late",
    "Sunny",
    "Thunderstorms",
    "Thunderstorms Early", 
    "Thunderstorms Late"
]
$twcweather.forecast.daypart[0].wxPhraseShort

(weather phrase up to 12 characters)

[
    "AM Showers",
    "Clear",
    "Cloudy",
    "Few Showers",
    "M Clear", 
    "M Clr/Wind", 
    "M Cloudy",
    "M Sunny",
    "P Cloudy",
    "PM Showers",
    "Rain",
    "Rain Late",
    "Rain/Wind",
    "Sct T-Storms",
    "Showers",
    "Shwrs Early",
    "Shwrs Late",
    "T-Storms"
]

Weather Icons

Usage

Choose an icon set below and use it with the iconCode values from $twcweather. The following examples can be used in the Value field.

Current Weather using the "TWC" icon set: :twc-{$twcweather.conditions.iconCode}:

Forecast Day using the "WU v4" icon set: :wu-v4-{$twcweather.forecast.daypart[0].iconCode[INDEX]} note: You will need to change [INDEX] to a value from 0-7 (0 being the next forecasted half day/night and 7 being the 3rd day/night)

Code Description TWC Icon WU v4 Icon
0 Tornado

:twc-0:

:wu-v4-0:

1 Tropical Storm

:twc-1:

:wu-v4-1:

2 Hurricane

:twc-2:

:wu-v4-2:

3 Strong Storms

:twc-3:

:wu-v4-3:

4 Thunder and Hail

:twc-4:

:wu-v4-4:

5 Rain to Snow Showers

:twc-5:

:wu-v4-5:

6 Rain / Sleet

:twc-6:

:wu-v4-6:

7 Wintry Mix Snow / Sleet

:twc-7:

:wu-v4-7:

8 Freezing Drizzle

:twc-8:

:wu-v4-8:

9 Drizzle

:twc-9:

:wu-v4-9:

10 Freezing Rain

:twc-10:

:wu-v4-10:

11 Light Rain

:twc-11:

:wu-v4-11:

12 Rain

:twc-12:

:wu-v4-12:

13 Scattered Flurries

:twc-13:

:wu-v4-13:

14 Light Snow

:twc-14:

:wu-v4-14:

15 Blowing / Drifting Snow

:twc-15:

:wu-v4-15:

16 Snow

:twc-16:

:wu-v4-16:

17 Hail

:twc-17:

:wu-v4-17:

18 Sleet

:twc-18:

:wu-v4-18:

19 Blowing Dust / Sandstorm

:twc-19:

:wu-v4-19:

20 Foggy

:twc-20:

:wu-v4-20:

21 Haze / Windy

:twc-21:

:wu-v4-21:

22 Smoke / Windy

:twc-22:

:wu-v4-22:

23 Breezy

:twc-23:

:wu-v4-23:

24 Blowing Spray / Windy

:twc-24:

:wu-v4-24:

25 Frigid / Ice Crystals

:twc-25:

:wu-v4-25:

26 Cloudy

:twc-26:

:wu-v4-26:

27 Mostly Cloudy

:twc-27:

:wu-v4-27:

28 Mostly Cloudy

:twc-28:

:wu-v4-28:

29 Partly Cloudy

:twc-29:

:wu-v4-29:

30 Partly Cloudy

:twc-30:

:wu-v4-30:

31 Clear

:twc-31:

:wu-v4-31:

32 Sunny

:twc-32:

:wu-v4-32:

33 Fair / Mostly Clear

:twc-33:

:wu-v4-33:

34 Fair / Mostly Sunny

:twc-34:

:wu-v4-34:

35 Mixed Rain & Hail

:twc-35:

:wu-v4-35:

36 Hot

:twc-36:

:wu-v4-36:

37 Isolated Thunderstorms

:twc-37:

:wu-v4-37:

38 Thunderstorms

:twc-38:

:wu-v4-38:

39 Scattered Showers

:twc-39:

:wu-v4-39:

40 Heavy Rain

:twc-40:

:wu-v4-40:

41 Scattered Snow Showers

:twc-41:

:wu-v4-41:

42 Heavy Snow

:twc-42:

:wu-v4-42:

43 Blizzard

:twc-43:

:wu-v4-43:

44 Not Available (N/A)

:twc-44:

:wu-v4-44:

45 Scattered Showers

:twc-45:

:wu-v4-45:

46 Scattered Snow Showers

:twc-46:

:wu-v4-46:

47 Scattered Thunderstorms

:twc-47:

:wu-v4-47:

Old icon sets

Several additional icon sets are available but all have a much more limited set of icons. We have ensured that the $twcWeather icon code numbers map to an approximately accurate representation in the old icon sets. While the old sets work we encourage use of the more expressive TWC and WU v4 icon sets.

All of the icon sets described on the original Weather Icons page work with the new codes, for example :wu-b-36: maps to the "sunny" icon in the "B" icon set.