HELP - weather Binding not working

Perfect thanks, sunrise and sunset now working.

Only the persistence left to get working now, I have the rrd4j in my addons but think I am missing the persistence configuration.

See the wiki for how to configure persistence. With rrd4j make sure to use an every minute strategy or else your charts and history queries will not work.

All working now, thanks for the help :smile:

@rlkoshak Just in case anyone else runs into this there is a extra ] after the 2nd aqua in the sitemap for the Today’s Min

Text item=Weather_Temp_Min valuecolor=[>77=“orange”,>60=“green”,>40=“aqua]”,<=40=“blue”]

Also you have minimum 4 times in the items file but I don’t think that is shown anywhere. I think it should be min max and min max.

Thanks for this great example. Took me awhile but I think its working. Now to convert it to WUnderground.

One more thing. how do you get the top level weather icon? I see it in your screenshot but not in the example code?

Edit: Fixed the missing icons. I guess I thought download zip was enough. Also couldn’t do the download/convert using sudo. Had to do it in my user folder and then copy over.

Thanks. That error was still in my actual sitemap. Good catch.

That too is an error still in my sitemap. Clearly I don’t use my sitemap too much. :slight_smile: Unfortunately that post is too old for me to go back and correct.

Good eye.

At the risk of resurrecting an old thread, there have been changes made in OH 1.8 that make the example I listed in the above postings no longer valid. Changes had to be made in order to support OH 2 which resulted in the removal of the item: tag. This means we can no longer reference an Item’s state in the webview.

See above for links to how to get the icons and the .map file. My updated config is as follows:

String      Condition_Id    "Weather is [MAP(yahoo_weather_code.map):%s]"       (Weather)       { weather="locationId=home, type=condition, property=id" }

// Weather panel
Group           gWeather_Chart (gWeather)
Number          Weather_Temperature     "Outside Temperature [%.0f] °F" <temperature>   (gWeather_Chart)        { weather="locationId=home, type=temperature, property=current, unit=fahrenheit" }
Number          Weather_Humidity        "Outside Humidity [%d%%]"               <temperature>   (gWeather)              { weather="locationId=home, type=athmosphere, property=humidity" }
Number          Weather_Pressure        "Barometric Pressure [%.2f in]" <temperature>   (gWeather)              { weather="locationId=home, type=athmosphere, property=pressure, unit=inches" }
Number          Weather_Pressure_Chart_Period   "Chart Period"
Number          Weather_Temp_Min        "Today's Minimum [%.0f] °F"     <temperature>   (gWeather_Chart)
Number          Weather_Temp_Max        "Today's Maximum [%.0f] °F"     <temperature>   (gWeather_Chart)
Number          Weather_Chart_Period             "Chart Period"
DateTime        Weather_LastUpdate "Last Update [%1$ta %1$tr]"          <clock>
Number          Weather_Humidity_Chart_Period   "Chart Period"

Rules

rule "Update max and min temperatures"
when
        Item Weather_Temperature changed or
        Time cron "1 0 0 * * ?" or
        System started
then
        val startOfDay = now.withTimeAtStartOfDay
        if(Weather_Temperature != null) {
        postUpdate(Weather_Temp_Max, Weather_Temperature.maximumSince(startOfDay).state)
        postUpdate(Weather_Temp_Min, Weather_Temperature.minimumSince(startOfDay).state)
    }
end

Sitemap:

                // Weather
                Text item=Condition_Id icon="yahoo_weather" {
                        Frame {
                            Webview url="/weather?locationId=home&layout=example&iconset=colorful" height=13

                                Text item=Weather_LastUpdate visibility=[Weather_LastUpdate>30] valuecolor=[Weather_LastUpdate>120="orange", Weather_LastUpda
te>300="red"]
                                Text item=Weather_Temperature valuecolor=[Weather_LastUpdate=="Uninitialized"="lightgray",Weather_LastUpdate>90="lightgray",>77="orange",>60="green",>40="aqua",<=40="blue"]{
                                Frame {
                                        Text item=Weather_Temp_Max valuecolor=[>77="orange",>60="green",>40="aqua",<=40="blue"]
                                        Text item=Weather_Temp_Min valuecolor=[>77="orange",>60="green",>40="aqua",<=40="blue"]
                                }
                                Frame {
                                        Switch item=Weather_Chart_Period label="Period" mappings=[0="Hour", 1="Day", 2="Week"]
                                                Image url="http://user:password@localhost:8080/rrdchart.png?items=Weather_Temperature,Weather_Temp_Max,Weather_Temp_Min&period=h" refresh=6000 visibility=[Weather_Chart_Period==0, Weather_Chart_Period=="Uninitialized"]
                                                Image url="http://user:password@localhost:8080/rrdchart.png?items=Weather_Temperature,Weather_Temp_Max,Weather_Temp_Min&period=D" refresh=30000 visibility=[Weather_Chart_Period==1]
                                                Image url="http://user:password@localhost:8080/rrdchart.png?items=Weather_Temperature,Weather_Temp_Max,Weather_Temp_Min&period=W" refresh=30000 visibility=[Weather_Chart_Period==2]
                                }
                            }
                            Text item=Weather_Humidity {
                                Frame {
                                        Switch item=Weather_Humidity_Chart_Period label="Period" mappings=[0="Hour", 1="Day", 2="Week"]
                                                Image url="http://user:password@localhost:8080/rrdchart.png?items=Weather_Humidity&period=h" refresh=6000 visibility=[Weather_Humidity_Chart_Period==0, Weather_Humidity_Chart_Period=="Uninitialized"]
                                                Image url="http://user:password@localhost:8080/rrdchart.png?items=Weather_Humidity&period=D" refresh=30000 visibility=[Weather_Humidity_Chart_Period==1]
                                                Image url="http://user:password@localhost:8080/rrdchart.png?items=Weather_Humidity&period=W" refresh=30000 visibility=[Weather_Humidity_Chart_Period==2]
                                }
                            }
                            Text item=Weather_Pressure {
                                Frame {
                                        Switch item=Weather_Pressure_Chart_Period label="Period" mappings=[0="Hour", 1="Day", 2="Week"]
                                                Image url="http://user:password@localhost:8080/rrdchart.png?items=Weather_Pressure&period=h" refresh=6000 visibility=[Weather_Pressure_Chart_Period==0, Weather_Pressure_Chart_Period=="Uninitialized"]
                                                Image url="http://user:password@localhost:8080/rrdchart.png?items=Weather_Pressure&period=D" refresh=30000 visibility=[Weather_Pressure_Chart_Period==1]
                                                Image url="http://user:password@localhost:8080/rrdchart.png?items=Weather_Pressure&period=W" refresh=30000 visibility=[Weather_Pressure_Chart_Period==2]
                                }
                            }
                            Text item=Sunrise_Time
                            Text item=Sunset_Time
                            Text item=Twilight_Time
                        }

                }

Webview (most of the changes are here):

<!DOCTYPE html>
<html>
<head>
        <meta http-equiv="Content-type" CONTENT="text/html; charset=utf-8">
        <link rel="stylesheet" type="text/css" href="weather-data/layouts/example.css" />
        <script type="text/javascript" src="weather-data/layouts/example.js"></script>
</head>

<body id="weather-body" onload="formatIframe()">
        <div id="weather-location-name">${config:name}, ${weather:condition.observationTime(%1$td/%1$tm/%1$tY %1$tH:%1$tM)}

        <table id="weather-table">
                <tr>
                        <td rowspan="2"><img id="weather-icon" src="weather-data/images/${param:iconset}/${weather:condition.commonId}.png"/></td>
                        <td id="weather-temp">${weather:temperature.current(%.1f)[fahrenheit]}</td>
                        <td id="weather-temp-sign">°F</td>
                </tr>
                <tr>
                        <td colspan="2">
                                <table id="weather-table-details">
                                        <tr>
                                                <td>Humidity:</td>
                                                <td>${weather:atmosphere.humidity}%</td>
                                        </tr>
                                        <tr>
                                                <td>Pressure:</td>
                                                <td>${weather:atmosphere.pressure(%.1f)[inches]} in</td>
                                        </tr>
                                </table>
                        </td>
                </tr>
        </table>

        <table id="weather-forecast-table">
                <tr>
                        <td>Today</td>
                        <td>${forecast(1):condition.observationTime(%1$tA)}</td>
                        <td>${forecast(2):condition.observationTime(%1$tA)}</td>
                </tr>
                <tr>
                        <td><img src="weather-data/images/${param:iconset}/${forecast(0):condition.commonId}.png"/></td>
                        <td><img src="weather-data/images/${param:iconset}/${forecast(1):condition.commonId}.png"/></td>
                        <td><img src="weather-data/images/${param:iconset}/${forecast(2):condition.commonId}.png"/></td>
                </tr>
                <tr>
                        <td class="temp-max">${forecast(0):temperature.max(%.1f)[fahrenheit]} °F</td>
                        <td class="temp-max">${forecast(1):temperature.max(%.1f)[fahrenheit]} °F</td>
                        <td class="temp-max">${forecast(2):temperature.max(%.1f)[fahrenheit]} °F</td>
                </tr>
                <tr>
                        <td class="temp-min">${forecast(0):temperature.min(%.1f)[fahrenheit]} °F</td>
                        <td class="temp-min">${forecast(1):temperature.min(%.1f)[fahrenheit]} °F</td>
                        <td class="temp-min">${forecast(2):temperature.min(%.1f)[fahrenheit]} °F</td>
                </tr>
        </table>

</body>

</html>
4 Likes

Am I right, if I assume that the expression above just gets the information directly from yahoo and not just displaying the value of the according item?

That is correct, the data is coming directly from the weather binding (whatever provider you have configured as your default, not necessarily Yahoo!). As of 1.8 you can no longer put the values of Items into your webview.

So the good news is you don’t need to create an Item to represent all the values in your webview. The bad news is you can now only put weather binding info into your webview. In my update you will notice that I lost the ability to display sunrise and sunset times.

1 Like

Consequently there is no option any more to map the forecast weekdays to German weekdays?
Wunderground API mentiones that German would be set by DL.
But this tweak did not help.
Neither using DE…
Anyone who got 1.8 running with German forecast?

1 Like

So we lost an important feature! I was using the weather binding to make a house state monitor UI with several items state (weather of course, temperature, humidity, air quality, etc.). Is there any alternative? HTTP binding?
Thank you.

You could build a nice looking UI as described in this thread:

If you had a tablet running Android 5.x you could use this cool new app:

I really like the webview rlkoshak put together and hope to try it soon but for the meantime i followed the wiki and got the Webview HTML working.

I got everything working on my computer but on the app when I try to access the weather it says it : Cannot GET /Weather?locatioId=home&layout=example&iconset=colorful

I have no issues on my computer it loads just fine but not on my iphone app. It doesnt matter if I am on local wifi or data both result in the error. Everything else in the app works I can change switches on and off and such.

Im very new to Openhab and rather new to coding and any help would be greatly appreciated.

Thanks for all the work @rlkoshak on this awesome thread, and all of your help! I’m running OH 1.81, and converted to C for F. I noticed this before converting, but get this in the sitemap:

Any idea what I may have done wrong?

not sure why all of the ?? are appearing.

Thanks

I suspect the “??” are due to mismatched character sets somewhere along the way to the browser. It might be fixed with a well placed ; charset="utf-8" in the HTML that drives this UI.

Thanks @watou! Sorry right after I posted this it was late and I went to bed. While lying there I thought how silly it was for me not to post my code…

Also, once I get this UI layed out, and all my items working, I can’t WAIT to try out your awesome

Anyhow here it is, I do have a charset=utf-8 at the top of the html layout. Here is the code:

<!DOCTYPE html>
${config:name}, ${weather:condition.observationTime(%1$td/%1$tm/%1$tY %1$tH:%1$tM)}
    <table id="weather-table">
            <tr>
                    <td rowspan="2"><img id="weather-icon" src="weather-data/images/${param:iconset}/${weather:condition.commonId}.png"/></td>
                    <td id="weather-temp">${weather:temperature.current(%.1f)[celsius]}</td>
                    <td id="weather-temp-sign">°C</td>
            </tr>
            <tr>
                    <td colspan="2">
                            <table id="weather-table-details">
                                    <tr>
                                            <td>Humidity:</td>
                                            <td>${weather:atmosphere.humidity}%</td>
                                    </tr>
                                    <tr>
                                            <td>Pressure:</td>
                                            <td>${weather:atmosphere.pressure(%.1f)[inches]} in</td>
                                    </tr>
                            </table>
                    </td>
            </tr>
    </table>

    <table id="weather-forecast-table">
            <tr>
                    <td>Today</td>
                    <td>${forecast(1):condition.observationTime(%1$tA)}</td>
                    <td>${forecast(2):condition.observationTime(%1$tA)}</td>
            </tr>
            <tr>
                    <td><img src="weather-data/images/${param:iconset}/${forecast(0):condition.commonId}.png"/></td>
                    <td><img src="weather-data/images/${param:iconset}/${forecast(1):condition.commonId}.png"/></td>
                    <td><img src="weather-data/images/${param:iconset}/${forecast(2):condition.commonId}.png"/></td>
            </tr>
            <tr>
                    <td class="temp-max">${forecast(0):temperature.max(%.2f)[celsius]} °C</td>
                    <td class="temp-max">${forecast(1):temperature.max(%.2f)[celsius]} °C</td>
                    <td class="temp-max">${forecast(2):temperature.max(%.2f)[celsius]} °C</td>
            </tr>
            <tr>
                    <td class="temp-min">${forecast(0):temperature.min(%.2f)[celsius]} °C</td>
                    <td class="temp-min">${forecast(1):temperature.min(%.2f)[celsius]} °C</td>
                    <td class="temp-min">${forecast(2):temperature.min(%.2f)[celsius]} °C</td>
            </tr>
    </table>

Here is the sitemap for the weather section:

/* Weather */

Frame {
Text item=Condition_Id icon=“yahoo_weather” {Frame {
Webview url="/weather?locationId=home&layout=example&iconset=colorful" height=13

                            Text item=Weather_LastUpdate visibility=[Weather_LastUpdate>30] valuecolor=[Weather_LastUpdate>120="orange", Weather_LastUpdate>300="red"]
                            Text item=Weather_Temperature valuecolor=[Weather_LastUpdate=="Uninitialized"="lightgray",Weather_LastUpdate>90="lightgray",>77="orange",>60="green",>40="aqua",<=40="blue"]{
                            Frame {
                                    Text item=Weather_Temp_Max valuecolor=[>77="orange",>60="green",>40="aqua",<=40="blue"]
                                    Text item=Weather_Temp_Min valuecolor=[>77="orange",>60="green",>40="aqua",<=40="blue"]
                            }
                            Frame {
                                    Switch item=Weather_Chart_Period label="Period" mappings=[0="Hour", 1="Day", 2="Week"]
                                            Image url="http://openhab:password@localhost:8080/rrdchart.png?items=Weather_Temperature,Weather_Temp_Max,Weather_Temp_Min&period=h" refresh=6000 visibility=[Weather_Chart_Period==0, Weather_Chart_Period=="Uninitialized"]
                                            Image url="http://openhab:password@localhost:8080/rrdchart.png?items=Weather_Temperature,Weather_Temp_Max,Weather_Temp_Min&period=D" refresh=30000 visibility=[Weather_Chart_Period==1]
                                            Image url="http://openhab:password@localhost:8080/rrdchart.png?items=Weather_Temperature,Weather_Temp_Max,Weather_Temp_Min&period=W" refresh=30000 visibility=[Weather_Chart_Period==2]
                            }
                        }
                        Text item=Weather_Humidity {
                            Frame {
                                    Switch item=Weather_Humidity_Chart_Period label="Period" mappings=[0="Hour", 1="Day", 2="Week"]
                                            Image url="http://openhab:password@localhost:8080/rrdchart.png?items=Weather_Humidity&period=h" refresh=6000 visibility=[Weather_Humidity_Chart_Period==0, Weather_Humidity_Chart_Period=="Uninitialized"]
                                            Image url="http://openhab:password@localhost:8080/rrdchart.png?items=Weather_Humidity&period=D" refresh=30000 visibility=[Weather_Humidity_Chart_Period==1]
                                            Image url="http://openhab:password@localhost:8080/rrdchart.png?items=Weather_Humidity&period=W" refresh=30000 visibility=[Weather_Humidity_Chart_Period==2]
                            }
                        }
                        Text item=Weather_Pressure {
                            Frame {
                                    Switch item=Weather_Pressure_Chart_Period label="Period" mappings=[0="Hour", 1="Day", 2="Week"]
                                            Image url="http://openhab:password@localhost:8080/rrdchart.png?items=Weather_Pressure&period=h" refresh=6000 visibility=[Weather_Pressure_Chart_Period==0, Weather_Pressure_Chart_Period=="Uninitialized"]
                                            Image url="http://openhab:password@localhost:8080/rrdchart.png?items=Weather_Pressure&period=D" refresh=30000 visibility=[Weather_Pressure_Chart_Period==1]
                                            Image url="http://openhab:password@localhost:8080/rrdchart.png?items=Weather_Pressure&period=W" refresh=30000 visibility=[Weather_Pressure_Chart_Period==2]
                            }
                        }
                    }

            }
}

/* End Weather */

And the items file:

/* Weather Start */

String Condition_Id “Weather is [MAP(yahoo_weather_code.map):%s]” (Weather) { weather=“locationId=home, type=condition, property=id” }

// Weather panel
Group gWeather_Chart (gWeather)
Number Weather_Temperature “Outside Temperature [%.2f °C] °C” (gWeather_Chart) { weather=“locationId=home, type=temperature, property=current, unit=celsius” }
Number Weather_Humidity “Outside Humidity [%d%%]” (gWeather) { weather=“locationId=home, type=athmosphere, property=humidity” }
Number Weather_Pressure “Barometric Pressure [%.2f in]” (gWeather) { weather=“locationId=home, type=athmosphere, property=pressure, unit=inches” }
Number Weather_Pressure_Chart_Period “Chart Period”
Number Weather_Temp_Min “Today’s Minimum [%.2f °C] °C” (gWeather_Chart)
Number Weather_Temp_Max “Today’s Maximum [%.2f °C] °C” (gWeather_Chart)
Number Weather_Chart_Period “Chart Period”
DateTime Weather_LastUpdate “Last Update [%1$ta %1$tr]”
Number Weather_Humidity_Chart_Period “Chart Period”

/* Weather End */

In the UI, I noticed I am not also getting the Outside temperature to populate, or the Max / Min Variables to populate:

Thanks very much for the help! Greatly appreciated!

I wonder if it might be related to the extra bit of text in your item labels, like "Outside Temperature [%.2f °C] °C" should normally be "Outside Temperature [%.2f °C]".

Also, I wonder if your HTML layout would show the proper symbol using &deg; instead of °?

Thanks @watou for the ideas. I tried changing them, but no luck. I switched back to “F” just for testing, but it didn’t seem to make a difference. I get the following in debug, so seems to be working:

2016-02-21 19:13:37.677 [DEBUG] [o.o.b.w.i.scheduler.WeatherJob] - Starting Weather job for location 'home'
2016-02-21 19:13:37.905 [DEBUG] [.w.i.p.AbstractWeatherProvider] - YAHOO[home]: Weather[Temperature[current=-5.0,min=<null>,max=<null>,feel=-9.360661724172394,dewpoint=<null>],Atmosphere[humidity=51,visibility=<null>,pressure=1019.3,pressureTrend=<null>,ozone=<null>,uvIndex=<null>],Clouds[percent=<null>],Condition[text=Partly Cloudy,lastUpdate=Sun Feb 21 19:13:37 EST 2016,observationTime=Sun Feb 21 18:00:00 EST 2016,id=29,icon=<null>,commonId=partly-cloudy-night],Precipitation[rain=0.0,snow=0.0,probability=<null>,total=<null>],Wind[speed=19.31,direction=NNW,degree=340,gust=<null>,chill=-11.0],Station[name=<null>,id=<null>,latitude=<null>,longitude=<null>],<null>]
2016-02-21 19:13:37.905 [DEBUG] [.w.i.p.AbstractWeatherProvider] - YAHOO[home]: Forecast[day=0,Temperature[current=<null>,min=-18.0,max=1.0,feel=<null>,dewpoint=<null>],Atmosphere[humidity=<null>,visibility=<null>,pressure=<null>,pressureTrend=<null>,ozone=<null>,uvIndex=<null>],Clouds[percent=<null>],Condition[text=Clear,lastUpdate=Sun Feb 21 19:13:37 EST 2016,observationTime=Sun Feb 21 00:00:00 EST 2016,id=31,icon=<null>,commonId=clear-night],Precipitation[rain=0.0,snow=0.0,probability=<null>,total=<null>],Wind[speed=<null>,direction=<null>,degree=<null>,gust=<null>,chill=<null>],Station[name=<null>,id=<null>,latitude=<null>,longitude=<null>],<null>]
2016-02-21 19:13:37.906 [DEBUG] [.w.i.p.AbstractWeatherProvider] - YAHOO[home]: Forecast[day=1,Temperature[current=<null>,min=-19.0,max=-8.0,feel=<null>,dewpoint=<null>],Atmosphere[humidity=<null>,visibility=<null>,pressure=<null>,pressureTrend=<null>,ozone=<null>,uvIndex=<null>],Clouds[percent=<null>],Condition[text=Mostly Sunny,lastUpdate=Sun Feb 21 19:13:37 EST 2016,observationTime=Mon Feb 22 00:00:00 EST 2016,id=34,icon=<null>,commonId=partly-cloudy-day],Precipitation[rain=0.0,snow=0.0,probability=<null>,total=<null>],Wind[speed=<null>,direction=<null>,degree=<null>,gust=<null>,chill=<null>],Station[name=<null>,id=<null>,latitude=<null>,longitude=<null>],<null>]
2016-02-21 19:13:37.906 [DEBUG] [.w.i.p.AbstractWeatherProvider] - YAHOO[home]: Forecast[day=2,Temperature[current=<null>,min=-10.0,max=-6.0,feel=<null>,dewpoint=<null>],Atmosphere[humidity=<null>,visibility=<null>,pressure=<null>,pressureTrend=<null>,ozone=<null>,uvIndex=<null>],Clouds[percent=<null>],Condition[text=Partly Cloudy,lastUpdate=Sun Feb 21 19:13:37 EST 2016,observationTime=Tue Feb 23 00:00:00 EST 2016,id=30,icon=<null>,commonId=partly-cloudy-day],Precipitation[rain=0.0,snow=0.0,probability=<null>,total=<null>],Wind[speed=<null>,direction=<null>,degree=<null>,gust=<null>,chill=<null>],Station[name=<null>,id=<null>,latitude=<null>,longitude=<null>],<null>]
2016-02-21 19:13:37.906 [DEBUG] [.w.i.p.AbstractWeatherProvider] - YAHOO[home]: Forecast[day=3,Temperature[current=<null>,min=0.0,max=1.0,feel=<null>,dewpoint=<null>],Atmosphere[humidity=<null>,visibility=<null>,pressure=<null>,pressureTrend=<null>,ozone=<null>,uvIndex=<null>],Clouds[percent=<null>],Condition[text=Snow,lastUpdate=Sun Feb 21 19:13:37 EST 2016,observationTime=Wed Feb 24 00:00:00 EST 2016,id=16,icon=<null>,commonId=snow],Precipitation[rain=0.0,snow=0.0,probability=<null>,total=<null>],Wind[speed=<null>,direction=<null>,degree=<null>,gust=<null>,chill=<null>],Station[name=<null>,id=<null>,latitude=<null>,longitude=<null>],<null>]
2016-02-21 19:13:37.907 [DEBUG] [.w.i.p.AbstractWeatherProvider] - YAHOO[home]: Forecast[day=4,Temperature[current=<null>,min=-6.0,max=4.0,feel=<null>,dewpoint=<null>],Atmosphere[humidity=<null>,visibility=<null>,pressure=<null>,pressureTrend=<null>,ozone=<null>,uvIndex=<null>],Clouds[percent=<null>],Condition[text=Showers,lastUpdate=Sun Feb 21 19:13:37 EST 2016,observationTime=Thu Feb 25 00:00:00 EST 2016,id=11,icon=<null>,commonId=few-showers],Precipitation[rain=0.0,snow=0.0,probability=<null>,total=<null>],Wind[speed=<null>,direction=<null>,degree=<null>,gust=<null>,chill=<null>],Station[name=<null>,id=<null>,latitude=<null>,longitude=<null>],<null>]





2016-02-21 17:13:31.540 [DEBUG] [o.u.i.items.ItemUIRegistryImpl] - Cannot retrieve item null for widget org.openhab.model.sitemap.Frame
2016-02-21 17:13:31.540 [DEBUG] [o.u.i.items.ItemUIRegistryImpl] - Cannot retrieve item null for widget org.openhab.model.sitemap.Frame
2016-02-21 17:13:31.541 [DEBUG] [t.i.s.MapTransformationService] - transformation resulted in 'Partly Cloudy (Day)'
2016-02-21 17:13:31.541 [DEBUG] [o.u.i.items.ItemUIRegistryImpl] - Cannot retrieve item null for widget org.openhab.model.sitemap.Frame
2016-02-21 17:13:31.542 [DEBUG] [o.u.i.items.ItemUIRegistryImpl] - Cannot retrieve item null for widget org.openhab.model.sitemap.Text
2016-02-21 17:13:31.542 [DEBUG] [o.u.i.items.ItemUIRegistryImpl] - Cannot retrieve item null for widget org.openhab.model.sitemap.Frame
2016-02-21 17:13:31.543 [DEBUG] [o.u.i.items.ItemUIRegistryImpl] - Cannot retrieve item null for widget org.openhab.model.sitemap.Frame
2016-02-21 17:13:31.544 [DEBUG] [o.u.i.items.ItemUIRegistryImpl] - Cannot retrieve item null for widget org.openhab.model.sitemap.Frame
2016-02-21 17:13:31.544 [DEBUG] [o.u.i.items.ItemUIRegistryImpl] - Cannot retrieve item null for widget org.openhab.model.sitemap.Text

Below is the HTML file output:

<!DOCTYPE html>
<html>
<head>
        <meta http-equiv="Content-type" CONTENT="text/html; charset=utf-8">
        <link rel="stylesheet" type="text/css" href="weather-data/layouts/example.css" />
        <script type="text/javascript" src="weather-data/layouts/example.js"></script>
</head>

<body id="weather-body" onload="formatIframe()">
        <div id="weather-location-name">${config:name}, ${weather:condition.observationTime(%1$td/%1$tm/%1$tY %1$tH:%1$tM)}

        <table id="weather-table">
                <tr>
                        <td rowspan="2"><img id="weather-icon" src="weather-data/images/${param:iconset}/${weather:condition.commonId}.png"/></td>
                        <td id="weather-temp">${weather:temperature.current(%.1f)[fahrenheit]}</td>
                        <td id="weather-temp-sign">°F</td>
                </tr>
                <tr>
                        <td colspan="2">
                                <table id="weather-table-details">
                                        <tr>
                                                <td>Humidity:</td>
                                                <td>${weather:atmosphere.humidity}%</td>
                                        </tr>
                                        <tr>
                                                <td>Pressure:</td>
                                                <td>${weather:atmosphere.pressure(%.2f)[inches]} in</td>
                                        </tr>
                                </table>
                        </td>
                </tr>
        </table>

        <table id="weather-forecast-table">
                <tr>
                        <td>Today</td>
                        <td>${forecast(1):condition.observationTime(%1$tA)}</td>
                        <td>${forecast(2):condition.observationTime(%1$tA)}</td>
                </tr>
                <tr>
                        <td><img src="weather-data/images/${param:iconset}/${forecast(0):condition.commonId}.png"/></td>
                        <td><img src="weather-data/images/${param:iconset}/${forecast(1):condition.commonId}.png"/></td>
                        <td><img src="weather-data/images/${param:iconset}/${forecast(2):condition.commonId}.png"/></td>
                </tr>
                <tr>
                        <td class="temp-max">${forecast(0):temperature.max(%.2f)[fahrenheit]} °F</td>
                        <td class="temp-max">${forecast(1):temperature.max(%.2f)[fahrenheit]} °F</td>
                        <td class="temp-max">${forecast(2):temperature.max(%.2f)[fahrenheit]} °F</td>
                </tr>
                <tr>
                        <td class="temp-min">${forecast(0):temperature.min(%.2f)[fahrenheit]} °F</td>
                        <td class="temp-min">${forecast(1):temperature.min(%.2f)[fahrenheit]} °F</td>
                        <td class="temp-min">${forecast(2):temperature.min(%.2f)[fahrenheit]} °F</td>
                </tr>
        </table>

</body>

</html>

Here is the items file:

/* Weather Start */

String      Condition_Id    "Weather is [MAP(yahoo_weather_code.map):%s]"       (Weather)       { weather="locationId=home, type=condition, property=id" }

// Weather panel
Group           gWeather_Chart (gWeather)
Number          Weather_Temperature     "Outside Temperature [%.2f °F]" <temperature>   (gWeather_Chart)        { weather="locationId=home, type=temperature, property=current, unit=fahrenheit" }
Number          Weather_Humidity        "Outside Humidity [%d%%]"   	<temperature>   (gWeather)              { weather="locationId=home, type=athmosphere, property=humidity" }
Number          Weather_Pressure        "Barometric Pressure [%.2f in]" <temperature>   (gWeather)              { weather="locationId=home, type=athmosphere, property=pressure, unit=inches" }
Number          Weather_Pressure_Chart_Period   "Chart Period"
Number          Weather_Temp_Min        "Today's Minimum [%.0f °F]"     <temperature>   (gWeather_Chart)
Number          Weather_Temp_Max        "Today's Maximum [%.0f °F]"     <temperature>   (gWeather_Chart)
Number          Weather_Chart_Period   	"Chart Period"
DateTime        Weather_LastUpdate 		"Last Update [%1$ta %1$tr]"          <clock>
Number          Weather_Humidity_Chart_Period   "Chart Period"

/* Weather End */

And Sitemap:

/* Weather */
Frame {
                Text item=Condition_Id icon="yahoo_weather" {Frame {
                            Webview url="/weather?locationId=home&layout=example&iconset=colorful" height=13

                                Text item=Weather_LastUpdate visibility=[Weather_LastUpdate>30] valuecolor=[Weather_LastUpdate>120="orange", Weather_LastUpdate>300="red"]
                                Text item=Weather_Temperature valuecolor=[Weather_LastUpdate=="Uninitialized"="lightgray",Weather_LastUpdate>90="lightgray",>77="orange",>60="green",>40="aqua",<=40="blue"]{
                                Frame {
                                        Text item=Weather_Temp_Max valuecolor=[>77="orange",>60="green",>40="aqua",<=40="blue"]
                                        Text item=Weather_Temp_Min valuecolor=[>77="orange",>60="green",>40="aqua",<=40="blue"]
                                }
                                Frame {
                                        Switch item=Weather_Chart_Period label="Period" mappings=[0="Hour", 1="Day", 2="Week"]
                                                Image url="http://openhab:password@localhost:8080/rrdchart.png?items=Weather_Temperature,Weather_Temp_Max,Weather_Temp_Min&period=h" refresh=6000 visibility=[Weather_Chart_Period==0, Weather_Chart_Period=="Uninitialized"]
                                                Image url="http://openhab:password@localhost:8080/rrdchart.png?items=Weather_Temperature,Weather_Temp_Max,Weather_Temp_Min&period=D" refresh=30000 visibility=[Weather_Chart_Period==1]
                                                Image url="http://openhab:password@localhost:8080/rrdchart.png?items=Weather_Temperature,Weather_Temp_Max,Weather_Temp_Min&period=W" refresh=30000 visibility=[Weather_Chart_Period==2]
                                }
                            }
                            Text item=Weather_Humidity {
                                Frame {
                                        Switch item=Weather_Humidity_Chart_Period label="Period" mappings=[0="Hour", 1="Day", 2="Week"]
                                                Image url="http://openhab:password@localhost:8080/rrdchart.png?items=Weather_Humidity&period=h" refresh=6000 visibility=[Weather_Humidity_Chart_Period==0, Weather_Humidity_Chart_Period=="Uninitialized"]
                                                Image url="http://openhab:password@localhost:8080/rrdchart.png?items=Weather_Humidity&period=D" refresh=30000 visibility=[Weather_Humidity_Chart_Period==1]
                                                Image url="http://openhab:password@localhost:8080/rrdchart.png?items=Weather_Humidity&period=W" refresh=30000 visibility=[Weather_Humidity_Chart_Period==2]
                                }
                            }
                            Text item=Weather_Pressure {
                                Frame {
                                        Switch item=Weather_Pressure_Chart_Period label="Period" mappings=[0="Hour", 1="Day", 2="Week"]
                                                Image url="http://openhab:password@localhost:8080/rrdchart.png?items=Weather_Pressure&period=h" refresh=6000 visibility=[Weather_Pressure_Chart_Period==0, Weather_Pressure_Chart_Period=="Uninitialized"]
                                                Image url="http://openhab:password@localhost:8080/rrdchart.png?items=Weather_Pressure&period=D" refresh=30000 visibility=[Weather_Pressure_Chart_Period==1]
                                                Image url="http://openhab:password@localhost:8080/rrdchart.png?items=Weather_Pressure&period=W" refresh=30000 visibility=[Weather_Pressure_Chart_Period==2]
                                }
                            }
                        }

                }
	}
/* End Weather */

This is with weather binding 1.81

Again, thank you all kindly for the help.

Image of most current:

You tried this and no difference? And you also removed the bit at the end of your labels after the ]?

Hi @shep,

I had the same issue and fixed it by using the ASCI code for °C:

<td class="temp-max">${forecast(0):temperature.max(%.0f)}&deg;C</td>

Hope it works for you as well.