I usually look for icons here:
https://www.flaticon.com/icon-packs/weather%20forecast%20pack
I am actually getting an error in weather.rules.
Says that ScriptServiceUtil is undefined for every call on it. Any ideas?
W_OWM_CondIcon contains the Icon. It downloads it straight from OWM itself. I have a script that will take the icon from the Item and save it to file so it can be used as an actual icon for the W_OWM_Cond Item.
It only works on Linux though as it uses some Linux command line tools to convert the Base64 to a usable png.
from core.rules import rule
from core.triggers import when
from configuration import weather_icon_path
import subprocess
from javax.imageio import ImageIO
from java.io import File
@rule("Weather Icon",
description="Copy the current weather conditions icon",
tags=["weather"])
@when("Item vWeather_Conditions_Icon changed")
@when("System started")
def cond_icon(event):
"""
Download the weather conditions icon from DarkSky and convert it from gif to
png.
"""
# OpenWeatherMap
# cond_icon.log.info("Fetching weather conditions icon to {} from {}"
# .format(weather_icon_path, items["vWeather_Conditions_Icon"]))
#
# results = subprocess.check_output(['/usr/bin/wget', '-q', '-O',
# weather_icon_path,
# str(items["vWeather_Conditions_Icon"])])
#
# input_file = File(weather_icon_path)
# if not input_file.exists():
# cond_icon.log.warn("Failed to fetch the weather icon!")
# return
#
# output_file = File(weather_icon_path.replace('gif', 'png'))
# ImageIO.write( ImageIO.read(input_file), 'png', output_file)
#
# results = subprocess.check_output(['rm', weather_icon_path])
# DarkSky
cond_icon.log.info("Fetching the weather conditions icon... {}".format(ir.getItem("vWeather_Conditions_Icon").state))
dl = subprocess.Popen(['/usr/bin/wget', '-qO-',
'http://argus:8080/rest/items/vWeather_Conditions_Icon/state'],
stdout=subprocess.PIPE)
dd = subprocess.Popen(['/bin/dd', 'bs=22', 'skip=1'], stdin=dl.stdout, stdout=subprocess.PIPE)
dl.wait()
f = open(weather_icon_path, "w")
subprocess.call(['/usr/bin/base64', '-d'], stdout=f, stdin=dd.stdout)
dd.wait()
Note, the DarkSky code is working just fine for OWM. I’ve left the commented out OWM code for reference and to see another way to do it. Instead of using subprocess
you would use executeCommandLine
and a shell script.
The above takes the contents of the Icon Item, saves it to a file, strips out the first 22 characters and converts the Base64 to binary png in the icons folder. The name of the file is just “weather.png”.
Then the Conditions Item uses <weather>
for the icon. It looks like this:
tl;dr - The binding downloads the icons from OWM.
OK, this looks a little outside what I’d like to do. Could I possibly map my own images based on the condition ID?
I did this once and it’s a pain. You will need to get a list of all possible weather conditions that OWM may report and then create a weather-<condition>.png
for each of those. It was easier to do with Wunderground back when I did it because they had a way to figure out that mapping. Only if I were very dedicated to having this work would I venture to do so again.
It needs to be imported at the top of the file.
import org.eclipse.smarthome.model.script.ScriptServiceUtil
I have their list, and yes, it will be a pain, but it is possible…Now, how to map it? I’ve never attempted to map images.
Yes - sorry - I missed that when using just a part of my weather rules…
Not a problem, glad it got solved…
Just like I said, you need to create a weather-<condition>.png
(or svg if that’s what you are using) for each and every condition and put it in icons/classic. Then you can use <weather>
for the Item icon and the icon will be chosen based on the state of the Item. See https://www.openhab.org/docs/configuration/items.html#dynamic-icons
gotcha
So I copied the item (and added my API to it), the rule and your frame (which I used to create its own sitemap). When I run openHAB the sitemap loads but all of the values are blank.
And here are the log comments:
2020-05-05 19:59:15.934 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item for widget org.eclipse.smarthome.model.sitemap.sitemap.Text
2020-05-05 19:59:15.958 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item ‘gW_OWM_Future’ for widget org.eclipse.smarthome.model.sitemap.sitemap.Text
2020-05-05 19:59:15.987 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item ‘gW_OWM_Future’ for widget org.eclipse.smarthome.model.sitemap.sitemap.Text
2020-05-05 19:59:16.018 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item ‘gW_OWM_Future’ for widget org.eclipse.smarthome.model.sitemap.sitemap.Text
What do I need to edit to make it work?
Thanks.
Mike
Assuming those Items/Groups exist for certain, was there an upgrade or clearing of the cache
immediately before theses errors? If so, simply restart OH. If not, verify that these Items exist and if in . items files that there isn’t an error in that file.
Sorry, I’ve been away from the computer the past few days…back to work as usual for now…I agree with Rich, sounds like you don’t have the items defined properly.
I still haven’t been able to get the rule file to work for the image changer, but I’ll have to tackle that when I have more time later this week.
Brandon -
I used NCO’s items and rules with your sitemap - which does have different items than NCO’s. Could you please post your rules and items? Thanks.
Mike
Not a problem.
The rules file:
> import org.eclipse.smarthome.model.script.ScriptServiceUtil
>
> // ***************** Extract Data from OWM hourly forecast into daily forecast
>
> rule "daily forecast for DayX"
>
> when
>
> Time cron "01 01 * * * ?" or Item W_OWM_ObservationTime changed or Item Trigger_Debug changed // every hour at x:01:01
>
> then
>
> var i = 0
>
> while ((i=i+1) < 5) {
>
> var j = i-1
>
> // check actual hour
>
> var Number hour = now.getHourOfDay
>
> var max = (((j * 24) + 12 - hour) / 3)
>
> var l = Math::round(max.floatValue)
>
> val int y = l * 3
>
> if(y > 0) { // means it's before 12 pm
>
> if(now.getHourOfDay == 0) { // at 0 am for min max temps of the entire day arranged in groups over 24 hrs
>
> // TempMin
>
> var tempMin = "G_W_Min" + j.toString // create item name string from prefix and approx hour for forecast
>
> val tempMinItem = ScriptServiceUtil.getItemRegistry.getItem(tempMin)
>
> var tempMinDay = "W_OWM_TempMinDay" + j.toString // create item name string from FC prefix and FC Day No
>
> val tempMinDayItem = ScriptServiceUtil.getItemRegistry.getItem(tempMinDay)
>
> tempMinDayItem.postUpdate(tempMinItem.state) // postUpdate to W_OWM_TempMinDay i with data from W_OWM_Time in x hours
>
> // TempMax
>
> var tempMax = "G_W_Max" + j.toString // get max value for the group covering
>
> val tempMaxItem = ScriptServiceUtil.getItemRegistry.getItem(tempMax)
>
> var tempMaxDay = "W_OWM_TempMaxDay" + j.toString // create item name string from FC prefix and FC Day No
>
> val tempMaxDayItem = ScriptServiceUtil.getItemRegistry.getItem(tempMaxDay)
>
> tempMaxDayItem.postUpdate(tempMaxItem.state) // postUpdate to W_OWM_TempMaxDay i with data from W_OWM_Time in x hours
>
> }
>
> else { // means y >= 0 && x >= 0, so before 4 am (and 12 pm)
>
> // Time
>
> var time = "W_OWM_Time" + y.toString // create item name string from prefix and approx hour for forecast
>
> val timeItem = ScriptServiceUtil.getItemRegistry.getItem(time)
>
> var timeDay = "W_OWM_TimeDay" + j.toString // create item name string from FC prefix and FC Day No
>
> val timeDayItem = ScriptServiceUtil.getItemRegistry.getItem(timeDay)
>
> timeDayItem.postUpdate(timeItem.state) // postUpdate to W_OWM_TimeDay i with data from W_OWM_Time in x hours
>
> // Cond
>
> var cond = "W_OWM_Cond" + y.toString // create item name string from prefix and approx hour for forecast
>
> val condItem = ScriptServiceUtil.getItemRegistry.getItem(cond)
>
> var condDay = "W_OWM_CondDay" + j.toString // create item name string from FC prefix and FC Day No
>
> val condDayItem = ScriptServiceUtil.getItemRegistry.getItem(condDay)
>
> condDayItem.postUpdate(condItem.state) // postUpdate to W_OWM_CondDay i with data from W_OWM_Time in x hours
>
> // CondID
>
> var condID = "W_OWM_CondID" + y.toString // create item name string from prefix and approx hour for forecast
>
> val condIDItem = ScriptServiceUtil.getItemRegistry.getItem(condID)
>
> var condIDDay = "W_OWM_CondIDDay" + j.toString // create item name string from FC prefix and FC Day No
>
> val condIDDayItem = ScriptServiceUtil.getItemRegistry.getItem(condIDDay)
>
> condIDDayItem.postUpdate(condIDItem.state) // postUpdate to W_OWM_CondIDDay i with data from W_OWM_Time in x hours
>
> // Clouds
>
> var cloud = "W_OWM_Cloud" + y.toString // create item name string from prefix and approx hour for forecast
>
> val cloudItem = ScriptServiceUtil.getItemRegistry.getItem(cloud)
>
> var cloudDay = "W_OWM_CloudDay" + j.toString // create item name string from FC prefix and FC Day No
>
> val cloudDayItem = ScriptServiceUtil.getItemRegistry.getItem(cloudDay)
>
> cloudDayItem.postUpdate(cloudItem.state) // postUpdate to W_OWM_CondIDDay i with data from W_OWM_Time in x hours
>
> // Rain
>
> var rain = "W_OWM_Rain" + y.toString // create item name string from prefix and approx hour for forecast
>
> val rainItem = ScriptServiceUtil.getItemRegistry.getItem(rain)
>
> var rainDay = "W_OWM_RainDay" + j.toString // create item name string from FC prefix and FC Day No
>
> val rainDayItem = ScriptServiceUtil.getItemRegistry.getItem(rainDay)
>
> rainDayItem.postUpdate(rainItem.state) // postUpdate to W_OWM_CondIDDay i with data from W_OWM_Time in x hours
>
> }
>
> }
>
> else { // means y < 0, so after 12 pm (and x < 0 anyway)
>
> if(j != 0) {
>
> // Time
>
> var time = "W_OWM_Time" + y.toString // create item name string from prefix and approx hour for forecast
>
> val timeItem = ScriptServiceUtil.getItemRegistry.getItem(time)
>
> var timeDay = "W_OWM_TimeDay" + j.toString // create item name string from FC prefix and FC Day No
>
> val timeDayItem = ScriptServiceUtil.getItemRegistry.getItem(timeDay)
>
> timeDayItem.postUpdate(timeItem.state) // postUpdate to W_OWM_TimeDay i with data from W_OWM_Time in x hours
>
> // Cond
>
> var cond = "W_OWM_Cond" + y.toString // create item name string from prefix and approx hour for forecast
>
> val condItem = ScriptServiceUtil.getItemRegistry.getItem(cond)
>
> var condDay = "W_OWM_CondDay" + j.toString // create item name string from FC prefix and FC Day No
>
> val condDayItem = ScriptServiceUtil.getItemRegistry.getItem(condDay)
>
> condDayItem.postUpdate(condItem.state) // postUpdate to W_OWM_CondDay i with data from W_OWM_Time in x hours
>
> // CondID
>
> var condID = "W_OWM_CondID" + y.toString // create item name string from prefix and approx hour for forecast
>
> val condIDItem = ScriptServiceUtil.getItemRegistry.getItem(condID)
>
> var condIDDay = "W_OWM_CondIDDay" + j.toString // create item name string from FC prefix and FC Day No
>
> val condIDDayItem = ScriptServiceUtil.getItemRegistry.getItem(condIDDay)
>
> condIDDayItem.postUpdate(condIDItem.state) // postUpdate to W_OWM_CondIDDay i with data from W_OWM_Time in x hours
>
> // Clouds
>
> var cloud = "W_OWM_Cloud" + y.toString // create item name string from prefix and approx hour for forecast
>
> val cloudItem = ScriptServiceUtil.getItemRegistry.getItem(cloud)
>
> var cloudDay = "W_OWM_CloudDay" + j.toString // create item name string from FC prefix and FC Day No
>
> val cloudDayItem = ScriptServiceUtil.getItemRegistry.getItem(cloudDay)
>
> cloudDayItem.postUpdate(cloudItem.state) // postUpdate to W_OWM_CondIDDay i with data from W_OWM_Time in x hours
>
> // Rain
>
> var rain = "W_OWM_Rain" + y.toString // create item name string from prefix and approx hour for forecast
>
> val rainItem = ScriptServiceUtil.getItemRegistry.getItem(rain)
>
> var rainDay = "W_OWM_RainDay" + j.toString // create item name string from FC prefix and FC Day No
>
> val rainDayItem = ScriptServiceUtil.getItemRegistry.getItem(rainDay)
>
> rainDayItem.postUpdate(rainItem.state) // postUpdate to W_OWM_CondIDDay i with data from W_OWM_Time in x hours
>
> }
>
> }
>
> }
>
> logInfo("+++ WEATHER", "Weather Forecast updated.")
>
> end
>
> // **************** END of OWM Stuff
And the items:
> /******************************************* Weather (OWM) **********************************************/
>
> String W_OWM_Key "OWM API Key" (G_jdbc)
>
> Switch WeatherThing "Weather" (G_jdbc,G_Things,Group_HabPanel_Dashboard)
>
> String Dummy
>
> Switch Trigger_Debug
>
>
>
> Group gW_OWM_Future
>
> // Open Weather Map
>
> Number:Temperature W_OWM_Temp "Temperature [%.1f %unit%]" (G_jdbc,Group_HabPanel_Dashboard) {channel="openweathermap:weather-and-forecast:a54e0a82:local:current#temperature"}
>
> Number:Dimensionless W_OWM_Humidity "Humidity [%d %unit%]" (G_jdbc,Group_HabPanel_Dashboard) {channel="openweathermap:weather-and-forecast:a54e0a82:local:current#humidity"}
>
> Number:Length W_OWM_Rain "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:current#rain"}
>
> Number:Speed W_OWM_Wind_Speed "Wind Speed [%d %unit%]" (G_jdbc,Group_HabPanel_Dashboard) {channel="openweathermap:weather-and-forecast:a54e0a82:local:current#wind-speed"}
>
> Number W_OWM_Wind_Dir "Wind Direction [SCALE(winds.scale):%s]" (G_jdbc,Group_HabPanel_Dashboard) {channel="openweathermap:weather-and-forecast:a54e0a82:local:current#wind-direction"}
>
> String W_OWM_Station_Name "Station Name [%s]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:station#name"}
>
> DateTime W_OWM_Time "Observation Time [%1$tA, %1$tB %1$td, %1$tY %1$tI:%1$tM %1$Tp]" (G_jdbc,Group_HabPanel_Dashboard) {channel="openweathermap:weather-and-forecast:a54e0a82:local:current#time-stamp"}
>
> String W_OWM_Cond "Condition [%s]" (G_jdbc,Group_HabPanel_Dashboard) {channel="openweathermap:weather-and-forecast:a54e0a82:local:current#condition"}
>
> String W_OWM_CondID "ConditionId [%s]" (G_jdbc,Group_HabPanel_Dashboard) {channel="openweathermap:weather-and-forecast:a54e0a82:local:current#condition-id"}
>
> String W_OWM_CondID_Form "Cond Formatted" (G_jdbc)
>
> Image W_OWM_CondIcon "Icon [%s]" {channel="openweathermap:weather-and-forecast:a54e0a82:local:current#icon"}
>
> Image W_CondIcon <weather>
>
> Image ImageChooser "[MAP(weather_icon.map):%s]"
>
> String W_OWM_CondIconID "IconId [%s]" (G_jdbc,Group_HabPanel_Dashboard) {channel="openweathermap:weather-and-forecast:a54e0a82:local:current#icon-id"}
>
> // ******* Forecast final items based on data below
>
> Number:Temperature W_OWM_TempMinDay0 "Temp Min [%.1f %unit%]" (G_jdbc,Group_HabPanel_Dashboard)
>
> Number:Temperature W_OWM_TempMinDay1 "Temp Min [%.1f %unit%]" (G_jdbc,Group_HabPanel_Dashboard)
>
> Number:Temperature W_OWM_TempMinDay2 "Temp Min [%.1f %unit%]" (G_jdbc,Group_HabPanel_Dashboard)
>
> Number:Temperature W_OWM_TempMinDay3 "Temp Min [%.1f %unit%]" (G_jdbc,Group_HabPanel_Dashboard)
>
> Number:Temperature W_OWM_TempMaxDay0 "Temp Max [%.1f %unit%]" (G_jdbc,Group_HabPanel_Dashboard)
>
> Number:Temperature W_OWM_TempMaxDay1 "Temp Max [%.1f %unit%]" (G_jdbc,Group_HabPanel_Dashboard)
>
> Number:Temperature W_OWM_TempMaxDay2 "Temp Max [%.1f %unit%]" (G_jdbc,Group_HabPanel_Dashboard)
>
> Number:Temperature W_OWM_TempMaxDay3 "Temp Max [%.1f %unit%]" (G_jdbc,Group_HabPanel_Dashboard)
>
> DateTime W_OWM_TimeDay0 "Observation Time" (G_jdbc,Group_HabPanel_Dashboard)
>
> DateTime W_OWM_TimeDay1 "Observation Time" (G_jdbc,Group_HabPanel_Dashboard)
>
> DateTime W_OWM_TimeDay2 "Observation Time" (G_jdbc,Group_HabPanel_Dashboard)
>
> DateTime W_OWM_TimeDay3 "Observation Time" (G_jdbc,Group_HabPanel_Dashboard)
>
> String W_OWM_CondDay0 "Conditions" (G_jdbc,Group_HabPanel_Dashboard)
>
> String W_OWM_CondDay1 "Conditions" (G_jdbc,Group_HabPanel_Dashboard)
>
> String W_OWM_CondDay2 "Conditions" (G_jdbc,Group_HabPanel_Dashboard)
>
> String W_OWM_CondDay3 "Conditions" (G_jdbc,Group_HabPanel_Dashboard)
>
> String W_OWM_CondIDDay0 "ConditionsID" (G_jdbc,G_CondID,Group_HabPanel_Dashboard)
>
> String W_OWM_CondIDDay1 "ConditionsID" (G_jdbc,G_CondID,Group_HabPanel_Dashboard)
>
> String W_OWM_CondIDDay2 "ConditionsID" (G_jdbc,G_CondID,Group_HabPanel_Dashboard)
>
> String W_OWM_CondIDDay3 "ConditionsID" (G_jdbc,G_CondID,Group_HabPanel_Dashboard)
>
> String W_OWM_CondIDDay0_Form "ConditionsID" (G_jdbc,Group_HabPanel_Dashboard)
>
> String W_OWM_CondIDDay1_Form "ConditionsID" (G_jdbc,Group_HabPanel_Dashboard)
>
> String W_OWM_CondIDDay2_Form "ConditionsID" (G_jdbc,Group_HabPanel_Dashboard)
>
> String W_OWM_CondIDDay3_Form "ConditionsID" (G_jdbc,Group_HabPanel_Dashboard)
>
> Number:Dimensionless W_OWM_CloudDay0 "FC Cloud [%.1f %unit%]" (G_jdbc,Group_HabPanel_Dashboard)
>
> Number:Dimensionless W_OWM_CloudDay1 "FC Cloud [%.1f %unit%]" (G_jdbc,Group_HabPanel_Dashboard)
>
> Number:Dimensionless W_OWM_CloudDay2 "FC Cloud [%.1f %unit%]" (G_jdbc,Group_HabPanel_Dashboard)
>
> Number:Dimensionless W_OWM_CloudDay3 "FC Cloud [%.1f %unit%]" (G_jdbc,Group_HabPanel_Dashboard)
>
> Number:Length W_OWM_RainDay0 "Forcast Rain [%.1f %unit%]" (G_jdbc,Group_HabPanel_Dashboard)
>
> Number:Length W_OWM_RainDay1 "Forcast Rain [%.1f %unit%]" (G_jdbc,Group_HabPanel_Dashboard)
>
> Number:Length W_OWM_RainDay2 "Forcast Rain [%.1f %unit%]" (G_jdbc,Group_HabPanel_Dashboard)
>
> Number:Length W_OWM_RainDay3 "Forcast Rain [%.1f %unit%]" (G_jdbc,Group_HabPanel_Dashboard)
>
> // ******* END of Forecast final items
>
> // Forecast data 3 to 96 hrs for forecasting the daily items above
>
> // G_W_Min0,G_W_Max0 are workarounds to get a min and max temp for the entire day. This will be done in rules once a day at 0 am
>
> // This is neccessary to let the min / max value fit: e.g. today at 0 am: min / max of the next 24 hrs - this will not match if it's 12 pm for instance
>
> // FC Temperature
>
> Number:Temperature W_OWM_Temp3 "Temperature [%.1f %unit%]" (G_Num,G_W_Min0,G_W_Max0,gW_OMW_Future) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours03#temperature"}
>
> Number:Temperature W_OWM_Temp6 "Temperature [%.1f %unit%]" (G_Num,G_W_Min0,G_W_Max0,gW_OMW_Future) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours06#temperature"}
>
> Number:Temperature W_OWM_Temp9 "Temperature [%.1f %unit%]" (G_Num,G_W_Min0,G_W_Max0,gW_OMW_Future) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours09#temperature"}
>
> Number:Temperature W_OWM_Temp12 "Temperature [%.1f %unit%]" (G_Num,G_W_Min0,G_W_Max0,gW_OMW_Future) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours12#temperature"}
>
> Number:Temperature W_OWM_Temp15 "Temperature [%.1f %unit%]" (G_Num,G_W_Min0,G_W_Max0,gW_OMW_Future) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours15#temperature"}
>
> Number:Temperature W_OWM_Temp18 "Temperature [%.1f %unit%]" (G_Num,G_W_Min0,G_W_Max0,gW_OMW_Future) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours18#temperature"}
>
> Number:Temperature W_OWM_Temp21 "Temperature [%.1f %unit%]" (G_Num,G_W_Min0,G_W_Max0,gW_OMW_Future) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours21#temperature"}
>
> Number:Temperature W_OWM_Temp24 "Temperature [%.1f %unit%]" (G_Num,G_W_Min0,G_W_Max0,gW_OMW_Future) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours24#temperature"}
>
> Number:Temperature W_OWM_Temp27 "Temperature [%.1f %unit%]" (G_Num,G_W_Min1,G_W_Max1) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours27#temperature"}
>
> Number:Temperature W_OWM_Temp30 "Temperature [%.1f %unit%]" (G_Num,G_W_Min1,G_W_Max1) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours30#temperature"}
>
> Number:Temperature W_OWM_Temp33 "Temperature [%.1f %unit%]" (G_Num,G_W_Min1,G_W_Max1) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours33#temperature"}
>
> Number:Temperature W_OWM_Temp36 "Temperature [%.1f %unit%]" (G_Num,G_W_Min1,G_W_Max1) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours36#temperature"}
>
> Number:Temperature W_OWM_Temp39 "Temperature [%.1f %unit%]" (G_Num,G_W_Min1,G_W_Max1) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours39#temperature"}
>
> Number:Temperature W_OWM_Temp42 "Temperature [%.1f %unit%]" (G_Num,G_W_Min1,G_W_Max1) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours42#temperature"}
>
> Number:Temperature W_OWM_Temp45 "Temperature [%.1f %unit%]" (G_Num,G_W_Min1,G_W_Max1) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours45#temperature"}
>
> Number:Temperature W_OWM_Temp48 "Temperature [%.1f %unit%]" (G_Num,G_W_Min1,G_W_Max1) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours48#temperature"}
>
> Number:Temperature W_OWM_Temp51 "Temperature [%.1f %unit%]" (G_Num,G_W_Min2,G_W_Max2) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours51#temperature"}
>
> Number:Temperature W_OWM_Temp54 "Temperature [%.1f %unit%]" (G_Num,G_W_Min2,G_W_Max2) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours54#temperature"}
>
> Number:Temperature W_OWM_Temp57 "Temperature [%.1f %unit%]" (G_Num,G_W_Min2,G_W_Max2) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours57#temperature"}
>
> Number:Temperature W_OWM_Temp60 "Temperature [%.1f %unit%]" (G_Num,G_W_Min2,G_W_Max2) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours60#temperature"}
>
> Number:Temperature W_OWM_Temp63 "Temperature [%.1f %unit%]" (G_Num,G_W_Min2,G_W_Max2) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours63#temperature"}
>
> Number:Temperature W_OWM_Temp66 "Temperature [%.1f %unit%]" (G_Num,G_W_Min2,G_W_Max2) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours66#temperature"}
>
> Number:Temperature W_OWM_Temp69 "Temperature [%.1f %unit%]" (G_Num,G_W_Min2,G_W_Max2) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours69#temperature"}
>
> Number:Temperature W_OWM_Temp72 "Temperature [%.1f %unit%]" (G_Num,G_W_Min2,G_W_Max2) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours72#temperature"}
>
> Number:Temperature W_OWM_Temp75 "Temperature [%.1f %unit%]" (G_Num,G_W_Min3,G_W_Max3) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours75#temperature"}
>
> Number:Temperature W_OWM_Temp78 "Temperature [%.1f %unit%]" (G_Num,G_W_Min3,G_W_Max3) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours78#temperature"}
>
> Number:Temperature W_OWM_Temp81 "Temperature [%.1f %unit%]" (G_Num,G_W_Min3,G_W_Max3) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours81#temperature"}
>
> Number:Temperature W_OWM_Temp84 "Temperature [%.1f %unit%]" (G_Num,G_W_Min3,G_W_Max3) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours84#temperature"}
>
> Number:Temperature W_OWM_Temp87 "Temperature [%.1f %unit%]" (G_Num,G_W_Min3,G_W_Max3) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours87#temperature"}
>
> Number:Temperature W_OWM_Temp90 "Temperature [%.1f %unit%]" (G_Num,G_W_Min3,G_W_Max3) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours90#temperature"}
>
> Number:Temperature W_OWM_Temp93 "Temperature [%.1f %unit%]" (G_Num,G_W_Min3,G_W_Max3) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours93#temperature"}
>
> Number:Temperature W_OWM_Temp96 "Temperature [%.1f %unit%]" (G_Num,G_W_Min3,G_W_Max3) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours96#temperature"}
>
> // Observation TimeStamp
>
> DateTime W_OWM_Time3 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours03#time-stamp"}
>
> DateTime W_OWM_Time6 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours06#time-stamp"}
>
> DateTime W_OWM_Time9 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours09#time-stamp"}
>
> DateTime W_OWM_Time12 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours12#time-stamp"}
>
> DateTime W_OWM_Time15 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours15#time-stamp"}
>
> DateTime W_OWM_Time18 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours18#time-stamp"}
>
> DateTime W_OWM_Time21 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours21#time-stamp"}
>
> DateTime W_OWM_Time24 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours24#time-stamp"}
>
> DateTime W_OWM_Time27 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours27#time-stamp"}
>
> DateTime W_OWM_Time30 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours30#time-stamp"}
>
> DateTime W_OWM_Time33 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours33#time-stamp"}
>
> DateTime W_OWM_Time36 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours36#time-stamp"}
>
> DateTime W_OWM_Time39 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours39#time-stamp"}
>
> DateTime W_OWM_Time42 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours42#time-stamp"}
>
> DateTime W_OWM_Time45 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours45#time-stamp"}
>
> DateTime W_OWM_Time48 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours48#time-stamp"}
>
> DateTime W_OWM_Time51 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours51#time-stamp"}
>
> DateTime W_OWM_Time54 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours54#time-stamp"}
>
> DateTime W_OWM_Time57 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours57#time-stamp"}
>
> DateTime W_OWM_Time60 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours60#time-stamp"}
>
> DateTime W_OWM_Time63 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours63#time-stamp"}
>
> DateTime W_OWM_Time66 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours66#time-stamp"}
>
> DateTime W_OWM_Time69 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours69#time-stamp"}
>
> DateTime W_OWM_Time72 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours72#time-stamp"}
>
> DateTime W_OWM_Time75 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours75#time-stamp"}
>
> DateTime W_OWM_Time78 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours78#time-stamp"}
>
> DateTime W_OWM_Time81 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours81#time-stamp"}
>
> DateTime W_OWM_Time84 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours84#time-stamp"}
>
> DateTime W_OWM_Time87 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours87#time-stamp"}
>
> DateTime W_OWM_Time90 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours90#time-stamp"}
>
> DateTime W_OWM_Time93 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours93#time-stamp"}
>
> DateTime W_OWM_Time96 "Observation Time" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours96#time-stamp"}
>
> // Conditionsition
>
> String W_OWM_Cond3 "Conditions" (G_jdbc,gW_OMW_Future) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours03#condition"}
>
> String W_OWM_Cond6 "Conditions" (G_jdbc,gW_OMW_Future) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours06#condition"}
>
> String W_OWM_Cond9 "Conditions" (G_jdbc,gW_OMW_Future) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours09#condition"}
>
> String W_OWM_Cond12 "Conditions" (G_jdbc,gW_OMW_Future) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours12#condition"}
>
> String W_OWM_Cond15 "Conditions" (G_jdbc,gW_OMW_Future) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours15#condition"}
>
> String W_OWM_Cond18 "Conditions" (G_jdbc,gW_OMW_Future) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours18#condition"}
>
> String W_OWM_Cond21 "Conditions" (G_jdbc,gW_OMW_Future) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours21#condition"}
>
> String W_OWM_Cond24 "Conditions" (G_jdbc,gW_OMW_Future) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours24#condition"}
>
> String W_OWM_Cond27 "Conditions" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours27#condition"}
>
> String W_OWM_Cond30 "Conditions" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours30#condition"}
>
> String W_OWM_Cond33 "Conditions" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours33#condition"}
>
> String W_OWM_Cond36 "Conditions" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours36#condition"}
>
> String W_OWM_Cond39 "Conditions" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours39#condition"}
>
> String W_OWM_Cond42 "Conditions" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours42#condition"}
>
> String W_OWM_Cond45 "Conditions" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours45#condition"}
>
> String W_OWM_Cond48 "Conditions" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours48#condition"}
>
> String W_OWM_Cond51 "Conditions" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours51#condition"}
>
> String W_OWM_Cond54 "Conditions" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours54#condition"}
>
> String W_OWM_Cond57 "Conditions" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours57#condition"}
>
> String W_OWM_Cond60 "Conditions" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours60#condition"}
>
> String W_OWM_Cond63 "Conditions" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours63#condition"}
>
> String W_OWM_Cond66 "Conditions" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours66#condition"}
>
> String W_OWM_Cond69 "Conditions" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours69#condition"}
>
> String W_OWM_Cond72 "Conditions" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours72#condition"}
>
> String W_OWM_Cond75 "Conditions" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours75#condition"}
>
> String W_OWM_Cond78 "Conditions" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours78#condition"}
>
> String W_OWM_Cond81 "Conditions" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours81#condition"}
>
> String W_OWM_Cond84 "Conditions" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours84#condition"}
>
> String W_OWM_Cond87 "Conditions" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours87#condition"}
>
> String W_OWM_Cond90 "Conditions" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours90#condition"}
>
> String W_OWM_Cond93 "Conditions" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours93#condition"}
>
> String W_OWM_Cond96 "Conditions" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours96#condition"}
>
> // Conditionsition ID
>
> String W_OWM_CondID3 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours03#condition-id"}
>
> String W_OWM_CondID6 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours06#condition-id"}
>
> String W_OWM_CondID9 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours09#condition-id"}
>
> String W_OWM_CondID12 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours12#condition-id"}
>
> String W_OWM_CondID15 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours15#condition-id"}
>
> String W_OWM_CondID18 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours18#condition-id"}
>
> String W_OWM_CondID21 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours21#condition-id"}
>
> String W_OWM_CondID24 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours24#condition-id"}
>
> String W_OWM_CondID27 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours27#condition-id"}
>
> String W_OWM_CondID30 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours30#condition-id"}
>
> String W_OWM_CondID33 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours33#condition-id"}
>
> String W_OWM_CondID36 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours36#condition-id"}
>
> String W_OWM_CondID39 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours39#condition-id"}
>
> String W_OWM_CondID42 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours42#condition-id"}
>
> String W_OWM_CondID45 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours45#condition-id"}
>
> String W_OWM_CondID48 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours48#condition-id"}
>
> String W_OWM_CondID51 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours51#condition-id"}
>
> String W_OWM_CondID54 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours54#condition-id"}
>
> String W_OWM_CondID57 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours57#condition-id"}
>
> String W_OWM_CondID60 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours60#condition-id"}
>
> String W_OWM_CondID63 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours63#condition-id"}
>
> String W_OWM_CondID66 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours66#condition-id"}
>
> String W_OWM_CondID69 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours69#condition-id"}
>
> String W_OWM_CondID72 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours72#condition-id"}
>
> String W_OWM_CondID75 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours75#condition-id"}
>
> String W_OWM_CondID78 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours78#condition-id"}
>
> String W_OWM_CondID81 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours81#condition-id"}
>
> String W_OWM_CondID84 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours84#condition-id"}
>
> String W_OWM_CondID87 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours87#condition-id"}
>
> String W_OWM_CondID90 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours90#condition-id"}
>
> String W_OWM_CondID93 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours93#condition-id"}
>
> String W_OWM_CondID96 "ConditionsID" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours96#condition-id"}
>
> // FC Cloudiness
>
> Number:Dimensionless W_OWM_Cloud3 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours03#cloudiness"}
>
> Number:Dimensionless W_OWM_Cloud6 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours06#cloudiness"}
>
> Number:Dimensionless W_OWM_Cloud9 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours09#cloudiness"}
>
> Number:Dimensionless W_OWM_Cloud12 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours12#cloudiness"}
>
> Number:Dimensionless W_OWM_Cloud15 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours15#cloudiness"}
>
> Number:Dimensionless W_OWM_Cloud18 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours18#cloudiness"}
>
> Number:Dimensionless W_OWM_Cloud21 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours21#cloudiness"}
>
> Number:Dimensionless W_OWM_Cloud24 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours24#cloudiness"}
>
> Number:Dimensionless W_OWM_Cloud27 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours27#cloudiness"}
>
> Number:Dimensionless W_OWM_Cloud30 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours30#cloudiness"}
>
>
> Number:Dimensionless W_OWM_Cloud33 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours33#cloudiness"}
> >
> > Number:Dimensionless W_OWM_Cloud36 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours36#cloudiness"}
> >
> > Number:Dimensionless W_OWM_Cloud39 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours39#cloudiness"}
> >
> > Number:Dimensionless W_OWM_Cloud42 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours42#cloudiness"}
> >
> > Number:Dimensionless W_OWM_Cloud45 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours45#cloudiness"}
> >
> > Number:Dimensionless W_OWM_Cloud48 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours48#cloudiness"}
> >
> > Number:Dimensionless W_OWM_Cloud51 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours51#cloudiness"}
> >
> > Number:Dimensionless W_OWM_Cloud54 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours54#cloudiness"}
> >
> > Number:Dimensionless W_OWM_Cloud57 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours57#cloudiness"}
> >
> > Number:Dimensionless W_OWM_Cloud60 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours60#cloudiness"}
> >
> > Number:Dimensionless W_OWM_Cloud63 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours63#cloudiness"}
> >
> > Number:Dimensionless W_OWM_Cloud66 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours66#cloudiness"}
> >
> > Number:Dimensionless W_OWM_Cloud69 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours69#cloudiness"}
> >
> > Number:Dimensionless W_OWM_Cloud72 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours72#cloudiness"}
> >
> > Number:Dimensionless W_OWM_Cloud75 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours75#cloudiness"}
> >
> > Number:Dimensionless W_OWM_Cloud78 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours78#cloudiness"}
> >
> > Number:Dimensionless W_OWM_Cloud81 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours81#cloudiness"}
> >
> > Number:Dimensionless W_OWM_Cloud84 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours84#cloudiness"}
> >
> > Number:Dimensionless W_OWM_Cloud87 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours87#cloudiness"}
> >
> > Number:Dimensionless W_OWM_Cloud90 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours90#cloudiness"}
> >
> > Number:Dimensionless W_OWM_Cloud93 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours93#cloudiness"}
> >
> > Number:Dimensionless W_OWM_Cloud96 "Cloud Cover [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours96#cloudiness"}
> >
> > // Forcast Rain forecast - sums up rain 3 hrs before this point in time in mm
> >
> > Number:Length W_OWM_Rain3 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours03#rain"}
> >
> > Number:Length W_OWM_Rain6 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours06#rain"}
> >
> > Number:Length W_OWM_Rain9 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours09#rain"}
> >
> > Number:Length W_OWM_Rain12 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours12#rain"}
> >
> > Number:Length W_OWM_Rain15 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours15#rain"}
> >
> > Number:Length W_OWM_Rain18 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours18#rain"}
> >
> > Number:Length W_OWM_Rain21 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours21#rain"}
> >
> > Number:Length W_OWM_Rain24 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours24#rain"}
> >
> > Number:Length W_OWM_Rain27 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours27#rain"}
> >
> > Number:Length W_OWM_Rain30 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours30#rain"}
> >
> > Number:Length W_OWM_Rain33 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours33#rain"}
> >
> > Number:Length W_OWM_Rain36 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours36#rain"}
> >
> > Number:Length W_OWM_Rain39 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours39#rain"}
> >
> > Number:Length W_OWM_Rain42 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours42#rain"}
> >
> > Number:Length W_OWM_Rain45 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours45#rain"}
> >
> > Number:Length W_OWM_Rain48 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours48#rain"}
> >
> > Number:Length W_OWM_Rain51 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours51#rain"}
> >
> > Number:Length W_OWM_Rain54 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours54#rain"}
> >
> > Number:Length W_OWM_Rain57 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours57#rain"}
> >
> > Number:Length W_OWM_Rain60 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours60#rain"}
> >
> > Number:Length W_OWM_Rain63 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours63#rain"}
> >
> > Number:Length W_OWM_Rain66 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours66#rain"}
> >
> > Number:Length W_OWM_Rain69 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours69#rain"}
> >
> > Number:Length W_OWM_Rain72 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours72#rain"}
> >
> > Number:Length W_OWM_Rain75 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours75#rain"}
> >
> > Number:Length W_OWM_Rain78 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours78#rain"}
> >
> > Number:Length W_OWM_Rain81 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours81#rain"}
> >
> > Number:Length W_OWM_Rain84 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours84#rain"}
> >
> > Number:Length W_OWM_Rain87 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours87#rain"}
> >
> > Number:Length W_OWM_Rain90 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours90#rain"}
> >
> > Number:Length W_OWM_Rain93 "Rain [%d %unit%]" (G_jdbc) {channel="openweathermap:weather-and-forecast:a54e0a82:local:forecastHours93#rain"}
> >
> > Number:Length W_OWM_Rain96 "Rain [%d %unit%]"
Hopefully something here helps you. Make sure you have the import at the top of the rules file!!! Won’t work without it…Problem I ran into. I am stepping away from my computer, so good luck.
Branden
I’ve got the items, rules and sitemap loaded (with my API), but I also need a file called winds.scale. Thanks.