Announcing OpenWeatherMap binding for Eclipse SmartHome / openHAB

Unfortunately, Yes. I agree. That is one of the biggest disadvantages of the OWM API. :slightly_frowning_face:

Iā€™m on OH 2.4-M6 now and saw that the OpenWeatherMap-Binding is available. But when trying to read the docu, i got an ā€œerror 404ā€. Is there a docu elsewhere available ?

Yes, it is: https://github.com/eclipse/smarthome/blob/master/extensions/binding/org.eclipse.smarthome.binding.openweathermap/README.md

1 Like

thx @cweitkamp. Iā€™ll try my luck

I installed the OpenWeatherMap-Binding via Paper UI.

owm.things:

Bridge openweathermap:weather-api:api "OpenWeatherMap Account" [apikey="my-api-key 1- 32", refreshInterval=30, language="de"] {
    Thing weather-and-forecast local "Local Weather And Forecast" [location="12.34567,1.2345", forecastHours=06, forecastDays=6]
}

owm.items:

Group                gOWM
String               localStationId                           "ID [%s]"                                                                             (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:station#id" }
String               localStationName                         "Name [%s]"                                                                           (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:station#name" }
Location             localStationLocation                     "Location [%2$sĀ°N %3$sĀ°E]"                                              <location>    (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:station#location" }
                                                              
DateTime             localLastMeasurement                     "Timestamp of last measurement [%1$tY-%1$tm-%1$tdT%1$tH:%1$tM:%1$tS]"   <time>        (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:current#time-stamp" }
String               localCurrentCondition                    "Current condition [%s]"                                                <sun_clouds>  (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:current#condition" }
Image                localCurrentConditionIcon                "Icon"                                                                                (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:current#icon" }
Number:Temperature   localCurrentTemperature                  "Current temperature [%.1f %unit%]"                                     <temperature> (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:current#temperature" }
Number:Pressure      localCurrentPressure                     "Current barometric pressure [%.1f %unit%]"                             <pressure>    (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:current#pressure" }
Number:Dimensionless localCurrentHumidity                     "Current atmospheric humidity [%d %unit%]"                              <humidity>    (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:current#humidity" }
Number:Speed         localCurrentWindSpeed                    "Current wind speed [%.1f km/h]"                                        <wind>        (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:current#wind-speed" }
Number:Angle         localCurrentWindDirection                "Current wind direction [%d %unit%]"                                    <wind>        (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:current#wind-direction" }
Number:Dimensionless localCurrentCloudiness                   "Current cloudiness [%d %unit%]"                                        <clouds>      (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:current#cloudiness" }
Number:Length        localCurrentRainVolume                   "Current rain volume [%.1f %unit%]"                                     <rain>        (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:current#rain" }
Number:Length        localCurrentSnowVolume                   "Current snow volume [%.1f %unit%]"                                     <snow>        (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:current#snow" }

DateTime             localDailyForecastTodayTimestamp         "Timestamp of forecast [%1$tY-%1$tm-%1$td]"                             <time>        (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastToday#time-stamp" }
String               localDailyForecastTodayCondition         "Condition for today [%s]"                                              <sun_clouds>  (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastToday#condition" }
Image                localDailyForecastTodayConditionIcon     "Icon"                                                                                (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastToday#icon" }
Number:Temperature   localDailyForecastTodayMinTemperature    "Minimum temperature for today [%.1f %unit%]"                           <temperature> (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastToday#min-temperature" }
Number:Temperature   localDailyForecastTodayMaxTemperature    "Maximum temperature for today [%.1f %unit%]"                           <temperature> (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastToday#max-temperature" }
Number:Pressure      localDailyForecastTodayPressure          "Barometric pressure for today [%.1f %unit%]"                           <pressure>    (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastToday#pressure" }
Number:Dimensionless localDailyForecastTodayHumidity          "Atmospheric humidity for today [%d %unit%]"                            <humidity>    (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastToday#humidity" }
Number:Speed         localDailyForecastTodayWindSpeed         "Wind speed for today [%.1f km/h]"                                      <wind>        (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastToday#wind-speed" }
Number:Angle         localDailyForecastTodayWindDirection     "Wind direction for today [%d %unit%]"                                  <wind>        (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastToday#wind-direction" }
Number:Dimensionless localDailyForecastTodaytCloudiness       "Cloudiness for today [%d %unit%]"                                      <clouds>      (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastToday#cloudiness" }
Number:Length        localDailyForecastTodayRainVolume        "Rain volume for today [%.1f %unit%]"                                   <rain>        (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastToday#rain" }
Number:Length        localDailyForecastTodaySnowVolume        "Snow volume for today [%.1f %unit%]"                                   <snow>        (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastToday#snow" }

DateTime             localDailyForecastTomorrowTimestamp      "Timestamp of forecast [%1$tY-%1$tm-%1$td]"                             <time>        (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastTomorrow#time-stamp" }
String               localDailyForecastTomorrowCondition      "Condition for tomorrow [%s]"                                           <sun_clouds>  (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastTomorrow#condition" }
Image                localDailyForecastTomorrowConditionIcon  "Icon"                                                                                (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastTomorrow#icon" }
Number:Temperature   localDailyForecastTomorrowMinTemperature "Minimum temperature for tomorrow [%.1f %unit%]"                        <temperature> (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastTomorrow#min-temperature" }
Number:Temperature   localDailyForecastTomorrowMaxTemperature "Maximum temperature for tomorrow [%.1f %unit%]"                        <temperature> (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastTomorrow#max-temperature" }


DateTime             localDailyForecastDay2Timestamp          "Timestamp of forecast [%1$tY-%1$tm-%1$td]"                             <time>        (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastDay2#time-stamp" }
String               localDailyForecastDay2Condition          "Condition in 2 days [%s]"                                              <sun_clouds>  (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastDay2#condition" }
Image                localDailyForecastDay2ConditionIcon      "Icon"                                                                                (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastDay2#icon" }
Number:Temperature   localDailyForecastDay2MinTemperature     "Minimum temperature in 2 days [%.1f %unit%]"                           <temperature> (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastDay2#min-temperature" }
Number:Temperature   localDailyForecastDay2MaxTemperature     "Maximum temperature in 2 days [%.1f %unit%]"                           <temperature> (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastDay2#max-temperature" }

String               localHourlyForecast03Condition           "Condition for the next three hours [%s]"                               <sun_clouds>  (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastHours03#condition" }
Image                localHourlyForecast03ConditionIcon       "Icon"                                                                                (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastHours03#icon" }
Number:Temperature   localHourlyForecast03Temperature         "Temperature for the next three hours [%.1f %unit%]"                    <temperature> (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastHours03#temperature" }

String               localHourlyForecast06Condition           "Condition for hours 3 to 6 [%s]"                                       <sun_clouds>  (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastHours06#condition" }
Image                localHourlyForecast06ConditionIcon       "Icon"                                                                                (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastHours06#icon" }
Number:Temperature   localHourlyForecast06Temperature         "Temperature for hours 3 to 6 [%.1f %unit%]"                            <temperature> (gOWM)              { channel="openweathermap:weather-and-forecast:api:local:forecastHours06#temperature" }

The result looks like this:


As one can see, a lot of the items are not filled with values.

The logger gives the following messages:

2018-11-21 22:35:07.444 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Time zone set to 'Europe/Berlin'.
2018-11-21 22:35:07.467 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Location set to '12.345678,1.234567,111'.
2018-11-21 22:35:07.473 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Locale set to 'de_DE'.
2018-11-21 22:35:07.475 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Measurement system set to 'SIUnits'.
2018-11-21 22:35:17.379 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'yahoo.items'
2018-11-21 22:35:17.758 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'sonoff.items'
2018-11-21 22:35:17.969 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'owm_http.items'
2018-11-21 22:35:18.086 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'owm.items'
2018-11-21 22:35:18.273 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'astro.items'
2018-11-21 22:35:18.443 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'sonos.items'
2018-11-21 22:35:18.653 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'system.items'
2018-11-21 22:35:18.778 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'castle.items'
2018-11-21 22:35:19.271 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'avm_fritz.items'
2018-11-21 22:35:19.597 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'network.items'
2018-11-21 22:35:20.401 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'mapdb.persist'
2018-11-21 22:35:23.246 [INFO ] [thome.model.lsp.internal.ModelServer] - Started Language Server Protocol (LSP) service on port 5007
2018-11-21 22:35:26.331 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'sonoff.rules'
2018-11-21 22:35:27.515 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'sonoff1.rules'
2018-11-21 22:35:29.755 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'astro.rules'
2018-11-21 22:35:32.668 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'weather.rules'
2018-11-21 22:35:34.412 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'cpu.rules'
2018-11-21 22:35:35.263 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'startup.rules'
2018-11-21 22:35:36.283 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'castle.sitemap'
2018-11-21 22:35:36.877 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'avm_fritz.things'
2018-11-21 22:35:37.315 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'sample_ntp.things'
2018-11-21 22:35:37.340 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'cpu_tempPI.things'
2018-11-21 22:35:37.405 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'network.things'
2018-11-21 22:35:37.490 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'owm.things'
2018-11-21 22:35:37.697 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'sonos.things'
2018-11-21 22:35:37.721 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'astro.things'
2018-11-21 22:35:38.958 [INFO ] [thome.binding.astro.internal.job.Job] - Scheduled Astro event-jobs for thing astro:moon:local
2018-11-21 22:35:38.979 [INFO ] [ding.astro.handler.AstroThingHandler] - Scheduled Positional job astro:moon:local every 300 seconds
2018-11-21 22:35:40.559 [INFO ] [thome.binding.astro.internal.job.Job] - Scheduled Astro event-jobs for thing astro:sun:local
2018-11-21 22:35:40.578 [INFO ] [ding.astro.handler.AstroThingHandler] - Scheduled Positional job astro:sun:local every 300 seconds
2018-11-21 22:35:41.545 [INFO ] [thome.binding.astro.internal.job.Job] - Scheduled Astro event-jobs for thing astro:sun:stowing
2018-11-21 22:35:41.687 [WARN ] [mon.registry.AbstractManagedProvider] - Could not update element with key openweathermap:weather-and-forecast:api:local in ManagedThingProvider, because it does not exists.
2018-11-21 22:35:42.442 [INFO ] [.dashboard.internal.DashboardService] - Started Dashboard at http://192.168.178.123:8080
2018-11-21 22:35:42.447 [INFO ] [.dashboard.internal.DashboardService] - Started Dashboard at https://192.168.178.123:8443
2018-11-21 22:35:43.122 [INFO ] [penhab.io.transport.mqtt.MqttService] - MQTT Service initialization completed.
2018-11-21 22:35:43.125 [INFO ] [t.mqtt.internal.MqttBrokerConnection] - Starting MQTT broker connection 'peter'
2018-11-21 22:35:43.199 [INFO ] [b.core.service.AbstractActiveService] - HTTP Refresh Service has been started
2018-11-21 22:35:43.961 [INFO ] [arthome.ui.paper.internal.PaperUIApp] - Started Paper UI at /paperui
2018-11-21 22:35:52.530 [INFO ] [g.discovery.internal.PersistentInbox] - Added new thing 'samsungtv:tv:0d1cef01_00dc_1000_960f_90f1aac88a51' to inbox.
2018-11-21 22:35:52.947 [INFO ] [eather.internal.common.WeatherConfig] - LocationConfig[providerName=YAHOO,language=de,updateInterval=30,latitude=<null>,longitude=<null>,woeid=123456,locationId=home-yh,name=Miami]
2018-11-21 22:35:56.059 [INFO ] [ternal.scheduler.WeatherJobScheduler] - Starting and scheduling weatherJob-home-yh with interval of 30 minutes
2018-11-21 22:36:05.645 [INFO ] [smarthome.model.script.weather-rules] -  Forecast executed every 30 min. / 1 log only once an hour
2018-11-21 22:40:41.554 [INFO ] [marthome.model.script.astro-rules_99] -  Moondistance updated every 5 Minutes by "astro.things " 2018-11-21T22:40:39.001+0100 / 1 Log only once an hour
2018-11-21 23:03:53.520 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model 'owm.things'
2018-11-21 23:03:53.795 [ERROR] [nal.common.AbstractInvocationHandler] - An error occurred while calling method 'ThingHandler.thingUpdated()' on 'org.eclipse.smarthome.binding.openweathermap.internal.handler.OpenWeatherMapWeatherAndForecastHandler@fdde87': Duplicate channels openweathermap:weather-and-forecast:api:local:forecastToday#time-stamp
java.lang.IllegalArgumentException: Duplicate channels openweathermap:weather-and-forecast:api:local:forecastToday#time-stamp
	at org.eclipse.smarthome.core.thing.util.ThingHelper.ensureUniqueChannels(ThingHelper.java:159) ~[?:?]
	at org.eclipse.smarthome.core.thing.util.ThingHelper.ensureUniqueChannels(ThingHelper.java:151) ~[?:?]
	at org.eclipse.smarthome.core.thing.util.ThingHelper.ensureUniqueChannels(ThingHelper.java:147) ~[?:?]
	at org.eclipse.smarthome.core.thing.binding.builder.ThingBuilder.withChannel(ThingBuilder.java:74) ~[?:?]
	at org.eclipse.smarthome.binding.openweathermap.internal.handler.OpenWeatherMapWeatherAndForecastHandler.initialize(OpenWeatherMapWeatherAndForecastHandler.java:157) ~[?:?]
	at org.eclipse.smarthome.core.thing.binding.BaseThingHandler.thingUpdated(BaseThingHandler.java:208) ~[?:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
	at org.eclipse.smarthome.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:153) [101:org.eclipse.smarthome.core:0.10.0.oh240M6]
	at org.eclipse.smarthome.core.internal.common.Invocation.call(Invocation.java:53) [101:org.eclipse.smarthome.core:0.10.0.oh240M6]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
	at java.lang.Thread.run(Thread.java:748) [?:?]
2018-11-21 23:04:40.231 [WARN ] [mon.registry.AbstractManagedProvider] - Could not update element with key openweathermap:weather-and-forecast:api:local in ManagedThingProvider, because it does not exists.

While startup is running (and later) there is a Warning Message which i can not handle.
And when i made a change in the Thing-File an error is spit out. (i canā€™t find duplicate channels)

The Api-Key is valid and in use to retrieve data with http.cfg and extract it via JSONPATH, like this

String              CommonId_owm              "Himmel owm [%s]"                                     <sun_clouds>                (gYahoo)        {http="<[owm_test:120000:JSONPATH($.weather[0].description)]"}

Any hints or ideas whatā€™s wrong in my setup ?

Hi @cweitkamp , thanx for the OWM binding !

I just installed and I will be playing with it the next period :slight_smile:

I have some remarks wrt docs. should I post them here or open an issue on ESH?

Also: If I add the altitude in the location of the Thing, I get the classic ManagedThingProvider WARN. I believe this is because PaperUI ā€œtrimsā€ the altitude from the Thing conf page and tries then to update the Thing with only lat/long but it canā€™t because the Thing is not Managed (see here also: Finally, I got rid of this AbstractManagedProvider warning)

I have the same issue with PaperUI also for the Astro binding (trimming of alt). I think that I should open up an issue for PaperUIā€¦

Results in Warn:

Bridge	openweathermap:weather-api:api	"OpenWeatherMap Account" @ "Weather" [ apikey="abc123", refreshInterval=30, language="en" ]
{
	Thing weather-and-forecast local "HomeR Weather & Forecast" @ "Weather" [ location="xx.xxx,yy.yyy,0", forecastHours=120, forecastDays=7 ]
}

Works ok (without alt):

Bridge	openweathermap:weather-api:api	"OpenWeatherMap Account" @ "Weather" [ apikey="abc123", refreshInterval=30, language="en" ]
{
	Thing weather-and-forecast local "HomeR Weather & Forecast" @ "Weather" [ location="xx.xxx,yy.yyy", forecastHours=120, forecastDays=7 ]
}

image

@fibu-freak Do you own a paid account for OWM? If not, the daily forecast will not work.

@Dim Why not contribute your ideas directly? Otherwise share them in this thread.

Yes, could be worth to do some further investigations on that issue. I saw this message from time to time in my life too. But never related them to a geographically location configuration ā€¦

1 Like

No paid account, only free one. Does this mean that my Bridge/Thing is wrong, as using it now ?

So does that mean i canā€™t use the parameter ā€œforecastDaysā€ or set it to zero ?

Yes, exactly. Unfortunately, that is one of the biggest disadvantages of the OWM API. :slightly_frowning_face:

No Problem at all. It is as it is.
May be you find a solution one day to summarize several values to min/max or something like that within the binding.:wink:

I thought about writing a rule to do this. Scan the 3-hour forecasts for each day to extract the daily min and max temp, maybe average the humidity, develop some heuristic for the conditions, etc., then populate some daily items.

Of course, it would be much better if the binding did this. :smile:

:+1: Great. I thought about too. But to heavy for me.Iā€™m newbie and in my former live i was an accountant (i only know ā€œExcelā€ and a bit of ERP-Software). So i think itā€™s not that easy as it seems, as the daily time sections are sliding.:wink:

No, I will not do a research for such a solution inside the binding because bindings are meant to transfer and prepare data from a specific API towards the framework. They should not contain business logic. Therefore we have other tools like groups, rules or transformations. Maybe powerful profiles in the future.

If I should make a proposal I would say create some groups, use the power of the group arithmetical functions (MIN,MAX,AVG), and stuff all items of the hourly forecast into them. Easy without much effort.

For other edge cases you can use rules or transformations.

Sorry, I was just kidding about that. :sunglasses:

It just was an idea of me and i understand the aspects that drives you when developing a binding.
I hope the time will come, when i can handle the binding better. And then i will thinking about tunings.:wink:

hi Christoph,

thanks for the binding.

Unless Iā€™ve misunderstood, are you saying that the binding doesnā€™t support the 5-day forecast?

Iā€™m slightly confused, as the api will return the 5-day forecast, eg:-
https://api.openweathermap.org/data/2.5/forecast?APPID=yourapikey&q=London,uk

Hello guys,

IĀ“d like to merge the items winddirection an windspeed into one item. What I did is:

String Wind_Geschw_und_Richtung
Number Windrichtung { channel="openweathermap:weather-and-forecast:9ee44fae:local:current#wind-direction" }
Number Windgeschwindigkeit { channel="openweathermap:weather-and-forecast:9ee44fae:local:current#wind-speed" }
rule "Windgeschwindigkeit und Richtung"
when
  Item Windgeschwindigkeit changed or
  Item Windrichtung changed
then
  var Number wg = (((Windgeschwindigkeit.state as DecimalType).floatValue)*3.6)
  var wr = transform("SCALE", "wind.scale",Windrichtung.state.toString)

  var String Ausgabe = String::format("%1$.0f km/h aus " +wr, wg)
  Wind_Geschw_und_Richtung.postUpdate(Ausgabe)
end

(thx to M. Spiller for that)

That is working quite well. But I had to create those two items ā€œWindgeschwindigkeitā€ und ā€œWindrichtungā€. Instead I would like to use the two items from the demo.items that I already have:

Number:Speed localCurrentWindSpeed "Current wind speed [%.1f km/h]" <wind> { channel="openweathermap:weather-and-forecast:9ee44fae:local:current#wind-speed" }
Number:Angle localCurrentWindDirection "Current wind direction [%d %unit%]" <wind> { channel="openweathermap:weather-and-forecast:9ee44fae:local:current#wind-direction" }

Those two items wonĀ“t work with my rule because of the additions ā€œSpeedā€ and ā€œAngleā€ respectively. How do I have to change my rule so I can get rid of those two extra items?

Thanks a lot.

1 Like

I quoted my opening post. The current weather and the 5 days forecast (in 3 hour steps) are available for everyone. The 16 days forecast (in daily intervals) is restricted to users owning a paid account (Startup minimum). The weather-and-forecast Thing provided by the bindings has different channel groups. One for current weather, a user-defined number (between 0 and 120 in 3 hour steps) of hourly forecast channel groups and a user-defined number (between 0 and 16 in 1 day steps) of dayly forecast channel groups. The daily forecast channel groups are removed automatically if the configured key belongs to an unpaid account.

To answer your question directly: The binding supports the 5 days forecast. But only in 3 hour steps unless you own a non-free account.

1 Like

just fyi: I am going to get a cool HABPanel widget going for thisā€¦ more news soon :slight_smile:

Hi Leif,

from my point of view it can be done in this way. Please be aware of typos I wrote this down in a second:

rule "Windgeschwindigkeit und Richtung"
when
    Item localCurrentWindSpeed changed or
    Item localCurrentWindDirection changed
then
    Wind_Geschw_und_Richtung.postUpdate((localCurrentWindSpeed.state as QuantityType<Speed>).toString + " aus " + transform("SCALE", "wind.scale", localCurrentWindDirection.state.toString))
end
1 Like