Dynamic icons for weather

Sometimes, well, A LOT of the time; what is happening in my brain, just doesn’t quite make it onto paper… :rofl:

1 Like

I just used VS code to check the links in the map, and they do work.

I also just added a test switch to my setup to test the rule manually. The rule will not load, so obviously its not running.

> rule "Update weather conditions for dynamic icon selection"
> 
>     when
> 
>         Item W_OWM_CondID changed or Debug changed
> 
>     then
> 
>     ImageChooser.postUpdate(transform("MAP", "weather_icon.map", W_OWM_CondID.state.toString()))
> 
> end

Usually, that message appears with some editors when you save a file. openHAB tries to use it before the editor has finished saving it.

That would normally be followed by a second (we hope successful) attempt to load the rules file,after the editor has closed the file.
That second load doesn’t happen, so any rules in it are not in service.
I’ll guess you still have it open with a local editor?

Unrelated matters -

Using that demo.sitemap? Fix or delete.

Item LG_TV0_Toast has a bad channel UID, fix or delete

Same

That’s interesting, something to do with NGRE JSR223 rules. Maybe a rule has been created but NGRE later uninstalled?

Your winds.scale transform file has bad syntax
I’m guessing there are lines beginning NULL= and NA=
Those need deleting, and can be replaced with a NaN= line

I have no idea about a jupnp error !

Yes, it is still open in VS code.

The toast and stop channels, I don’t use, but will look at those.

I have deleted NGRE rules, replaced by Google Calendar.

winds.scale wlll be fixed.

the jupnp error is a bundle that does not exist…

Thanks for the help. I have to go start my weekend!

@rossko57 @rlkoshak

Problem solved with the rules file loading…I was missing the “Item” in front of my Debug item. Don’t yet know if it works properly, but it’s at least loading now.

1 Like

Ok gentlemen, this is where I stand currently…

For some reason, that I cannot find, I get an error when the rule runs. I am going to repost, as it has changed due to other errors that were corrected.

I will not be available for testing as I am leaving work now, so I will test anything tomorrow.

Icon rules file:

> rule "Update weather conditions for dynamic icon selection"
> 
>      when
> 
>          Item W_OWM_CondID changed or Item Debug changed
> 
>      then
> 
>          ImageChooser.postUpdate(transform("MAP", "weather_icon.map", W_OWM_CondID))
> 
>          logInfo("+++ ImageChooser","ImageChooser rule RUN - Set to {}",W_OWM_CondID)
> 
> end

Item “Debug” is a switch on the sitemap for testing…

I get this error when the rule tries to run:

2020-05-06 16:08:49.071 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule ‘Update weather conditions for dynamic icon selection’: An error occurred during the script execution: Could not invoke method: org.eclipse.smarthome.core.transform.actions.Transformation.transform(java.lang.String,java.lang.String,java.lang.String) on instance: null

I can verify that Item “W_OWM_CondID” is not null, as I have it displayed on my sitemap also for testing.

The newest version of the map file is:

> null=url="http://10.2.1.129:8080/static/weather.png"
> NULL=url="http://10.2.1.129:8080/static/weather.png"
> -=url="http://10.2.1.129:8080/static/weather.png"
> 200=url="http://10.2.1.129:8080/static/weather-thunderstorm.png"
> 201=url="http://10.2.1.129:8080/static/weather-thunderstorm.png"
> 202=url="http://10.2.1.129:8080/static/weather-thunderstorm.png"
> 210=url="http://10.2.1.129:8080/static/weather-thunderstorm.png"
> 211=url="http://10.2.1.129:8080/static/weather-thunderstorm.png"
> 212=url=http://10.2.1.129:8080/static/weather-thunderstorm.png"
> 221=url="http://10.2.1.129:8080/static/weather-thunderstorm.png"
> 230=url="http://10.2.1.129:8080/static/weather-thunderstorm.png"
> 231=url="http://10.2.1.129:8080/static/weather.-thunderstorm.png"
> 232=url="http://10.2.1.129:8080/static/weather.-thunderstorm.png" 
> 300=url="http://10.2.1.129:8080/static/weather-sun_medclouds.png"
> 301=url="http://10.2.1.129:8080/static/weather-sun_medclouds.png"
> 302=url="http://10.2.1.129:8080/static/weather-sun_medclouds.png"
> 310=url="http://10.2.1.129:8080/static/weather-sun_medclouds.png"
> 311=url="http://10.2.1.129:8080/static/weather-sun_medclouds.png"
> 312=url="http://10.2.1.129:8080/static/weather-sun_medclouds.png"
> 313=url="http://10.2.1.129:8080/static/weather-sun_medclouds.png"
> 314=url="http://10.2.1.129:8080/static/weather-sun_medclouds.png"
> 321=url="http://10.2.1.129:8080/static/weather-sun_medclouds.png"
> 500=url="http://10.2.1.129:8080/static/weather-medium_rain.png"
> 501=url="http://10.2.1.129:8080/static/weather-medium_rain.png"
> 502=url="http://10.2.1.129:8080/static/weather-rain.png"
> 503=url="http://10.2.1.129:8080/static/weather-rain.png"
> 504=url="http://10.2.1.129:8080/static/weather-rain.png"
> 511=url="http://10.2.1.129:8080/static/weather-medium_ice.png"
> 520=url="http://10.2.1.129:8080/static/weather-medium_rain.png"
> 521=url="http://10.2.1.129:8080/static/weather-medium_rain.png"
> 522=url="http://10.2.1.129:8080/static/weather-rain.png"
> 531=url="http://10.2.1.129:8080/static/weather-rain.png"
> 600=url="http://10.2.1.129:8080/static/weather-sun_snow.png"
> 601=url="http://10.2.1.129:8080/static/weather-heavy_snow.png"
> 602=url="http://10.2.1.129:8080/static/weather-heavy_snow.png"
> 611=url="http://10.2.1.129:8080/static/weather-medium_ice.png"
> 612=url="http://10.2.1.129:8080/static/weather-medium_ice.png"
> 613=url="http://10.2.1.129:8080/static/weather-medium_ice.png"
> 615=url="http://10.2.1.129:8080/static/weather-heavy_snow.png"
> 616=url="http://10.2.1.129:8080/static/weather-heavy_snow.png"
> 620=url="http://10.2.1.129:8080/static/weather-sun_snow.png"
> 621=url="http://10.2.1.129:8080/static/weather-heavy_snow.png"
> 622=url="http://10.2.1.129:8080/static/weather-heavy_snow.png"
> 701=url="http://10.2.1.129:8080/static/weather-fog.png"
> 711=url="http://10.2.1.129:8080/static/weather-fog.png"
> 721=url="http://10.2.1.129:8080/static/weather-fog.png"
> 731=url="http://10.2.1.129:8080/static/weather-fog.png"
> 741=url="http://10.2.1.129:8080/static/weather-fog.png"
> 751=url="http://10.2.1.129:8080/static/weather-fog.png"
> 761=url="http://10.2.1.129:8080/static/weather-fog.png"
> 762=Volcanic ash
> 771=Squalls
> 781=url="http://10.2.1.129:8080/static/weather-tornado.png"
> 800=sun
> 801=sun_minimalclouds
> 802=Scattered clouds
> 803=Broken clouds
> 804=Overcast
> 900=url="http://10.2.1.129:8080/static/weather-tornado.png"
> 901=url="http://10.2.1.129:8080/static/weather-hurricane.png"
> 902=url="http://10.2.1.129:8080/static/weather-hurricane.png"
> 903=Cold
> 904=Hot
> 905=Windy
> 906=Hail
> 951=Calm
> 952=Light breeze
> 953=Weak breeze
> 954=Moderate breeze
> 955=Fresh breeze
> 956=Strong Wind
> 957=Strong wind, before storm
> 958=storm
> 959=Strong storm
> 960=storm
> 961=Violent storm
> 962=url="http://10.2.1.129:8080/static/weather-hurricane.png"

Thank you again!!!

But it’s not a string, it’s an Item object. Moreover, you are not interested in its label, or icon or name, or other properties … but its state I think?

transform requires three strings, as it tells you in the error message

This should be more suitable

transform("MAP", "weather_icon.map", W_OWM_CondID.state.toString)

I had it that way before, and it didn’t work either…But, I made the change, and the rule will run on the test switch, but “W_OWM_CondID” is being converted to a name with the “.state.toString” I think.

2020-05-07 07:54:08.424 [WARN ] [rthome.model.script.actions.BusEvent] - Cannot convert ‘sun’ to a state type which item ‘ImageChooser’ accepts: [RawType, UnDefType].

2020-05-07 07:54:08.430 [INFO ] [rthome.model.script.+++ ImageChooser] - ImageChooser rule RUN - Set to 800

But the odd thing is that where it says “Set to 800”, I’m using “.state.toString” there too.

> rule "Update weather conditions for dynamic icon selection"
> 
>      when
> 
>          Item W_OWM_CondID changed or Item Debug changed
> 
>      then
> 
>          ImageChooser.postUpdate(transform("MAP", "weather_icon.map", W_OWM_CondID.state.toString()))
> 
>          logInfo("+++ ImageChooser","ImageChooser rule RUN - Set to {}",W_OWM_CondID.state.toString())
> 
> end

So why does “W_OWM_CondID.state.toString” act differently on the two different lines of code?

I’m confused.

Why do you find it odd? The state of your W_OWM_CondID Item is 800. Is that not what you expected?

The transform has done its job now, and transformed 800 into something else.
Using the “newest version of the map file” from a couple of posts up, a lookup of 800 should return the string “sun”.
That all seems to be doing as it is told so far.

Okay, it’s an Item of type Image. According to the docs, an Image type Item -

Holds the binary data of an image

“sun” is not a binary image like a jpeg or gif, it’s a string.
You get an error trying to postUpdate a string to an Image type Item. It doesn’t fit.

When your map file is finished, I guess you would actually want to return a URL (as a string) rather than just “sun”?

Reminder -

Do not confuse Item types with sitemap widgets.
You can put a Dimmer type Item on a sitemap using a Switch widget.

Here, you want to put a String type Item (that will hold a URL string) on a sitemap using an Image widget (that will accept a URL)

In your rule, you are postUpdating your looked-up URL string to the wrong kind of Item.

OH!!! SNAP!!! You are right!!! I totally missed that, thought I had them all covered. Second pair of eyes always helps! Thank you, I’ll let you know how it goes.

2020-05-07 12:03:21.833 [WARN ] [rm.AbstractFileTransformationService] - Could not transform ‘url=“http://10.2.1.129:8080/static/weather-sun.png”’ with the file ‘weather_icon.map’ : Target value not found in map for ‘url=“http://10.2.1.129:8080/static/weather-sun.png”’

I get this now. I think I may not understand how the map is supposed to work to pull the url.

I didn’t realize that I left so many transformations without urls in my map, glad you caught it.

and…

2020-05-07 12:10:54.808 [WARN ] [rthome.model.script.actions.BusEvent] - Cannot convert ‘url=“http://10.2.1.129:8080/static/weather-sun.png”’ to a state type which item ‘ImageChooser’ accepts: [RawType, UnDefType].

ImageChooser is defined as an Image type, should it not be? Then on the sitemap, as an Image.

I have found that the item definition has to be of type String to contain the url. You may have said this above, it didn’t register though. Now, item ImageChooser is correctly being updated to the correct url via the map.

But…on the sitemap, its called as an Image, but it does not display the image.

Most current log still says:

2020-05-07 13:08:54.542 [WARN ] [rm.AbstractFileTransformationService] - Could not transform ‘url=“http://10.2.1.129:8080/static/weather-sun.png”’ with the file ‘weather_icon.map’ : Target value not found in map for 'url=“http://10.2.1.129:8080/static/weather-sun.png

I know from the logs that the transformation happens due to the logInfo on ImageChooser. I know the url will work because if I copy and paste to the browser, it shows the correct image. What is not being transformed properly?

Okay, here it is trying to look up “http … etc” in a map file that you have defined with entries for 123= , 567= and so on. It fails.
Somewhere, outside of a rule, you are using the map to try to fransform your URL.
What Item might that be associated with? I’ll guess you have only one Item that might have a URL as a state. the newly string-y ImageChooser.
Why would anything try to transform that? Because you’ve asked for the transform in your Item’s label [state presentation] section.
Either in your Item definition, and/or your sitemap line, which we cannot see.

Your events.log can tell you what an Item is changed to.

I would like to see an actual state of your Item, and your sitemap line.

I’m not convinced it works like that.
The URL that sitemap Image wants is the apparent “view” of the resource from the openHAB host, not the view from a browser (normally on a different box).
If you look at most examples, they have URLs like
http://localhost:8080/static/image.png

If you look at most examples, they have URLs like
http://localhost:8080/static/image.png

That is how they are mapped, isn’t it? Unless you mean no “localhost”…I can try to change that see if it helps. EDIT: Same error

My item declaration in the weather.items file:

String ImageChooser

And in the sitemap:

Image item=ImageChooser

So, the only transformation happening IS in the rule.

10.2.1.129 IS the localhost, just so you know. We have multiple networks, so was just trying to be specific.

It sounds like it is looking for a transformation of the url itself. If the only transformation I have is in the rules file, and it transforms the CondID to the url; any clue why its looking for one on the url?

Then show us the rule since you changed it last.

I guessed that it is - for now. The day you change it or migrate your openHAB, it will break your sitemap and you will spend an hour wondering why.

Can we see an actual matched set of the relevant parts here?
Your sitemap line
An events.log entry showing the relevant Item changing to an expected state (the URL in this case)
Let’s assume the previous BasicUI screenshot holds true, unless you show different.

This method does work for other people.

> rule "Update weather conditions for dynamic icon selection"
> 
>      when
> 
>          Item W_OWM_Time changed or Item Debug changed
> 
>      then
> 
>          ImageChooser.postUpdate(transform("MAP", "weather_icon.map", W_OWM_CondID.state.toString()))
> 
>          logInfo("+++ ImageChooser","ImageChooser rule RUN - Set to {}",ImageChooser.state.toString())
> 
> end

:

> Frame label="Weather"{
> 
>         Text    item=W_OWM_Station_Name                                         icon="location"
> 
>         Text    item=W_OWM_Time                                                 icon="time"
> 
>     
> 
>         Image   item=ImageChooser
> 
>                                                         
> 
>         Text    item=W_OWM_Temp
> 
>         Text    item=W_OWM_Humidity
> 
>         Text    item=W_OWM_Wind_Speed
> 
>         Text    item=W_OWM_Wind_Dir
> 
>         Text    item=W_OWM_Cond                                                 icon="none"                                     
> 
>         Text    item=W_OWM_Rain
> 
>         Switch  item=Debug
> 
>         Text    item=W_OWM_CondID
> 
>         Switch  item=Trigger_Debug
> 
>         
> 
>         Text    item=gW_OWM_Future                  label="Future Forcast"      icon="weather"{
> 
>             Frame   label="3 Hr. Forcast" {
> 
>                 Text    item=W_OWM_Cond3                                        icon="weather"
> 
>                 //Text  item=Dummy                      label=""                    icon-"none"
> 
>                 Text    item=W_OWM_Cloud3
> 
>                 Text    item=W_OWM_Rain3
> 
>                 Text    item=W_OWM_Temp3
> 
>             }
> 
>             Frame   label="6 Hr. Forcast" {
> 
>                 Text    item=W_OWM_Cond6                
> 
>                 Text    item=W_OWM_Cloud6               
> 
>                 Text    item=W_OWM_Rain6
> 
>                 Text    item=W_OWM_Temp6
> 
>             }
> 
>             Frame   label="9 Hr. Forcast" {
> 
>                 Text    item=W_OWM_Cond9                
> 
>                 Text    item=W_OWM_Cloud9
> 
>                 Text    item=W_OWM_Rain9
> 
>                 Text    item=W_OWM_Temp9
> 
>             }   
> 
>             Frame   label="12 Hr. Forcast" {
> 
>                 Text    item=W_OWM_Cond12               
> 
>                 Text    item=W_OWM_Cloud12
> 
>                 Text    item=W_OWM_Rain12
> 
>                 Text    item=W_OWM_Temp12
> 
>             }
> 
>             Frame   label="15 Hr. Forcast" {
> 
>                 Text    item=W_OWM_Cond15               
> 
>                 Text    item=W_OWM_Cloud15
> 
>                 Text    item=W_OWM_Rain15
> 
>                 Text    item=W_OWM_Temp15
> 
>             }
> 
>             Frame   label="18 Hr. Forcast" {
> 
>                 Text    item=W_OWM_Cond18               
> 
>                 Text    item=W_OWM_Cloud18
> 
>                 Text    item=W_OWM_Rain18
> 
>                 Text    item=W_OWM_Temp18
> 
>             }
> 
>             Frame   label="21 Hr. Forcast" {
> 
>                 Text    item=W_OWM_Cond21               
> 
>                 Text    item=W_OWM_Cloud21
> 
>                 Text    item=W_OWM_Rain21
> 
>                 Text    item=W_OWM_Temp21
> 
>             }
> 
>             Frame   label="24 Hr. Forcast" {
> 
>                 Text    item=W_OWM_Cond24               
> 
>                 Text    item=W_OWM_Cloud24
> 
>                 Text    item=W_OWM_Rain24
> 
>                 Text    item=W_OWM_Temp24
> 
>             }
> 
>         }
> 
>                 
> 
>     }

:

> // 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>
> 
> String                   ImageChooser            
> 
> String                  W_OWM_CondIconID        "IconId [%s]"                                               (G_jdbc,Group_HabPanel_Dashboard)               {channel="openweathermap:weather-and-forecast:a54e0a82:local:current#icon-id"}

:

> null=url="http://localhost:8080/static/weather.png"
> NULL=url="http://localhost:8080/static/weather.png"
> -=url="http://localhost:8080/static/weather.png"
> 200=url="http://localhost:8080/static/weather-thunderstorm.png"
> 201=url="http://localhost:8080/static/weather-thunderstorm.png"
> 202=url="http://localhost:8080/static/weather-thunderstorm.png"
> 210=url="http://localhost:8080/static/weather-thunderstorm.png"
> 211=url="http://localhost:8080/static/weather-thunderstorm.png"
> 212=url="http://localhost:8080/static/weather-thunderstorm.png"
> 221=url="http://localhost:8080/static/weather-thunderstorm.png"
> 230=url="http://localhost:8080/static/weather-thunderstorm.png"
> 231=url="http://localhost:8080/static/weather.-thunderstorm.png"
> 232=url="http://localhost:8080/static/weather.-thunderstorm.png" 
> 300=url="http://localhost:8080/static/weather-sun_medclouds.png"
> 301=url="http://localhost:8080/static/weather-sun_medclouds.png"
> 302=url="http://localhost:8080/static/weather-sun_medclouds.png"
> 310=url="http://localhost:8080/static/weather-sun_medclouds.png"
> 311=url="http://localhost:8080/static/weather-sun_medclouds.png"
> 312=url="http://localhost:8080/static/weather-sun_medclouds.png"
> 313=url="http://localhost:8080/static/weather-sun_medclouds.png"
> 314=url="http://localhost:8080/static/weather-sun_medclouds.png"
> 321=url="http://localhost:8080/static/weather-sun_medclouds.png"
> 500=url="http://localhost:8080/static/weather-medium_rain.png"
> 501=url="http://localhost:8080/static/weather-medium_rain.png"
> 502=url="http://localhost:8080/static/weather-rain.png"
> 503=url="http://localhost:8080/static/weather-rain.png"
> 504=url="http://localhost:8080/static/weather-rain.png"
> 511=url="http://localhost:8080/static/weather-medium_ice.png"
> 520=url="http://localhost:8080/static/weather-medium_rain.png"
> 521=url="http://localhost:8080/static/weather-medium_rain.png"
> 522=url="http://localhost:8080/static/weather-rain.png"
> 531=url="http://localhost:8080/static/weather-rain.png"
> 600=url="http://localhost:8080/static/weather-sun_snow.png"
> 601=url="http://localhost:8080/static/weather-heavy_snow.png"
> 602=url="http://localhost:8080/static/weather-heavy_snow.png"
> 611=url="http://localhost:8080/static/weather-medium_ice.png"
> 612=url="http://localhost:8080/static/weather-medium_ice.png"
> 613=url="http://localhost:8080/static/weather-medium_ice.png"
> 615=url="http://localhost:8080/static/weather-heavy_snow.png"
> 616=url="http://localhost:8080/static/weather-heavy_snow.png"
> 620=url="http://localhost:8080/static/weather-sun_snow.png"
> 621=url="http://localhost:8080/static/weather-heavy_snow.png"
> 622=url="http://localhost:8080/static/weather-heavy_snow.png"
> 701=url="http://localhost:8080/static/weather-fog.png"
> 711=url="http://localhost:8080/static/weather-fog.png"
> 721=url="http://localhost:8080/static/weather-fog.png"
> 731=url="http://localhost:8080/static/weather-fog.png"
> 741=url="http://localhost:8080/static/weather-fog.png"
> 751=url="http://localhost:8080/static/weather-fog.png"
> 761=url="http://localhost:8080/static/weather-fog.png"
> 762=Volcanic ash
> 771=Squalls
> 781=url="http://localhost:8080/static/weather-tornado.png"
> 800=url="http://localhost:8080/static/weather-sun.png"
> 801=url="http://localhost:8080/static/weather-sun_minimalclouds.png"
> 802=url="http://localhost:8080/static/weather-sun_minimalclouds.png"
> 803=url="http://localhost:8080/static/weather-cloud_sun.png"
> 804=url="http://localhost:8080/static/weather-cloud.png"
> 900=url="http://localhost:8080/static/weather-tornado.png"
> 901=url="http://localhost:8080/static/weather-hurricane.png"
> 902=url="http://localhost:8080/static/weather-hurricane.png"
> 903=Cold
> 904=Hot
> 905=Windy
> 906=Hail
> 951=Calm
> 952=Light breeze
> 953=Weak breeze
> 954=Moderate breeze
> 955=Fresh breeze
> 956=Strong Wind
> 957=Strong wind, before storm
> 958=storm
> 959=Strong storm
> 960=storm
> 961=Violent storm
> 962=url="http://localhost:8080/static/weather-hurricane.png"

It is set as a static IP. I always set my installs as static…run into an IP address change too many times… :upside_down_face:

events.log

> 2020-05-07 15:25:58.171 [ome.event.ItemCommandEvent] - Item 'Debug' received command OFF
> 
> 2020-05-07 15:25:58.198 [vent.ItemStateChangedEvent] - Debug changed from ON to OFF
> 
> 2020-05-07 15:26:03.604 [vent.ItemStateChangedEvent] - Sonos_CurrentArtist_Rec changed from Imagine Dragons to Lifehouse
> 
> 2020-05-07 15:26:03.623 [vent.ItemStateChangedEvent] - Sonos_Viz_Rec changed from Imagine Dragons to Lifehouse
> 
> 2020-05-07 15:26:03.625 [vent.ItemStateChangedEvent] - Sonos_CurrentAlbum_Rec changed from Origins (Deluxe) to Lifehouse
> 
> 2020-05-07 15:26:03.628 [vent.ItemStateChangedEvent] - Sonos_CurrentTrack_Rec changed from Bad Liar to You And Me
> 
> 2020-05-07 15:26:04.129 [vent.ItemStateChangedEvent] - Sonos_CurrentAlbumArt_Rec changed from raw type (image/jpeg): 48750 bytes to raw type (image/jpeg): 30413 bytes
> 
> 2020-05-07 15:26:44.792 [vent.ItemStateChangedEvent] - Date changed from 2020-05-07T15:25:44.691-0400 to 2020-05-07T15:26:44.762-0400
> 
> 2020-05-07 15:27:44.779 [vent.ItemStateChangedEvent] - Date changed from 2020-05-07T15:26:44.762-0400 to 2020-05-07T15:27:44.767-0400
> 
> 2020-05-07 15:28:44.791 [vent.ItemStateChangedEvent] - Date changed from 2020-05-07T15:27:44.767-0400 to 2020-05-07T15:28:44.769-0400
> 
> 2020-05-07 15:29:20.528 [vent.ItemStateChangedEvent] - Sonos_CurrentArtist_Rec changed from Lifehouse to Israel 'IZ' Kamakawiwo'ole
> 
> 2020-05-07 15:29:20.537 [vent.ItemStateChangedEvent] - Sonos_Viz_Rec changed from Lifehouse to Israel 'IZ' Kamakawiwo'ole
> 
> 2020-05-07 15:29:20.546 [vent.ItemStateChangedEvent] - Sonos_CurrentAlbum_Rec changed from Lifehouse to Facing Future
> 
> 2020-05-07 15:29:20.548 [vent.ItemStateChangedEvent] - Sonos_CurrentTrack_Rec changed from You And Me to Somewhere Over The Rainbow / What A Wonderful World
> 
> 2020-05-07 15:29:21.052 [vent.ItemStateChangedEvent] - Sonos_CurrentAlbumArt_Rec changed from raw type (image/jpeg): 30413 bytes to raw type (image/jpeg): 52426 bytes
> 
> 2020-05-07 15:29:44.778 [vent.ItemStateChangedEvent] - Date changed from 2020-05-07T15:28:44.769-0400 to 2020-05-07T15:29:44.772-0400
> 
> 2020-05-07 15:30:04.616 [vent.ItemStateChangedEvent] - Suite130_SensorTemp changed from 77 to 76.5
> 
> 2020-05-07 15:30:05.774 [vent.ItemStateChangedEvent] - Suite130_TstatModeState changed from 0 to 2
> 
> 2020-05-07 15:30:44.782 [vent.ItemStateChangedEvent] - Date changed from 2020-05-07T15:29:44.772-0400 to 2020-05-07T15:30:44.775-0400
> 
> 2020-05-07 15:31:44.785 [vent.ItemStateChangedEvent] - Date changed from 2020-05-07T15:30:44.775-0400 to 2020-05-07T15:31:44.778-0400
> 
> 2020-05-07 15:32:44.793 [vent.ItemStateChangedEvent] - Date changed from 2020-05-07T15:31:44.778-0400 to 2020-05-07T15:32:44.780-0400
> 
> 2020-05-07 15:33:44.805 [vent.ItemStateChangedEvent] - Date changed from 2020-05-07T15:32:44.780-0400 to 2020-05-07T15:33:44.782-0400
> 
> 2020-05-07 15:34:28.547 [vent.ItemStateChangedEvent] - Sonos_CurrentArtist_Rec changed from Israel 'IZ' Kamakawiwo'ole to John Legend
> 
> 2020-05-07 15:34:28.558 [vent.ItemStateChangedEvent] - Sonos_Viz_Rec changed from Israel 'IZ' Kamakawiwo'ole to John Legend
> 
> 2020-05-07 15:34:28.561 [vent.ItemStateChangedEvent] - Sonos_CurrentAlbum_Rec changed from Facing Future to Love In The Future (Deluxe Edition)
> 
> 2020-05-07 15:34:28.564 [vent.ItemStateChangedEvent] - Sonos_CurrentTrack_Rec changed from Somewhere Over The Rainbow / What A Wonderful World to All Of Me
> 
> 2020-05-07 15:34:29.210 [vent.ItemStateChangedEvent] - Sonos_CurrentAlbumArt_Rec changed from raw type (image/jpeg): 52426 bytes to raw type (image/jpeg): 16957 bytes
> 
> 2020-05-07 15:34:44.792 [vent.ItemStateChangedEvent] - Date changed from 2020-05-07T15:33:44.782-0400 to 2020-05-07T15:34:44.785-0400
> 
> 2020-05-07 15:35:44.795 [vent.ItemStateChangedEvent] - Date changed from 2020-05-07T15:34:44.785-0400 to 2020-05-07T15:35:44.787-0400
> 
> 2020-05-07 15:36:41.286 [vent.ItemStateChangedEvent] - Suite130_SensorTemp changed from 76.5 to 76
> 
> 2020-05-07 15:36:44.794 [vent.ItemStateChangedEvent] - Date changed from 2020-05-07T15:35:44.787-0400 to 2020-05-07T15:36:44.789-0400
> 
> 2020-05-07 15:37:44.800 [vent.ItemStateChangedEvent] - Date changed from 2020-05-07T15:36:44.789-0400 to 2020-05-07T15:37:44.792-0400
> 
> 2020-05-07 15:38:44.799 [vent.ItemStateChangedEvent] - Date changed from 2020-05-07T15:37:44.792-0400 to 2020-05-07T15:38:44.794-0400
> 
> 2020-05-07 15:38:58.253 [vent.ItemStateChangedEvent] - Sonos_CurrentArtist_Rec changed from John Legend to American Authors
> 
> 2020-05-07 15:38:58.263 [vent.ItemStateChangedEvent] - Sonos_Viz_Rec changed from John Legend to American Authors
> 
> 2020-05-07 15:38:58.267 [vent.ItemStateChangedEvent] - Sonos_CurrentAlbum_Rec changed from Love In The Future (Deluxe Edition) to Oh, What A Life
> 
> 2020-05-07 15:38:58.271 [vent.ItemStateChangedEvent] - Sonos_CurrentTrack_Rec changed from All Of Me to Best Day Of My Life
> 
> 2020-05-07 15:38:58.704 [vent.ItemStateChangedEvent] - Sonos_CurrentAlbumArt_Rec changed from raw type (image/jpeg): 16957 bytes to raw type (image/jpeg): 64068 bytes

openhab.log

> 2020-05-07 15:24:33.615 [INFO ] [rthome.model.script.+++ ImageChooser] - ImageChooser rule RUN - Set to url="http://localhost:8080/static/weather-sun.png"
> 
> 2020-05-07 15:25:58.224 [INFO ] [rthome.model.script.+++ ImageChooser] - ImageChooser rule RUN - Set to url="http://localhost:8080/static/weather-sun.png"
> 
> 2020-05-07 15:27:07.682 [WARN ] [rm.AbstractFileTransformationService] - Could not transform 'url="http://localhost:8080/static/weather-sun.png"' with the file 'weather_icon.map' : Target value not found in map for 'url="http://localhost:8080/static/weather-sun.png"'
> 
> 2020-05-07 15:33:48.021 [ERROR] [org.jupnp.transport.spi.StreamClient] - Request: HttpRequest[GET /capability HTTP/1.1]@1a52854 failed
> 
> java.lang.NullPointerException: Missing SslContextFactory
> 
>     at java.util.Objects.requireNonNull(Objects.java:228) ~[?:1.8.0_222]
> 
>     at org.eclipse.jetty.io.ssl.SslClientConnectionFactory.<init>(SslClientConnectionFactory.java:54) ~[bundleFile:9.4.20.v20190813]
> 
>     at org.eclipse.jetty.client.HttpClient.newSslClientConnectionFactory(HttpClient.java:1175) ~[bundleFile:9.4.20.v20190813]
> 
>     at org.eclipse.jetty.client.HttpDestination.newSslClientConnectionFactory(HttpDestination.java:137) ~[bundleFile:9.4.20.v20190813]
> 
>     at org.eclipse.jetty.client.HttpDestination.<init>(HttpDestination.java:94) ~[bundleFile:9.4.20.v20190813]
> 
>     at org.eclipse.jetty.client.PoolingHttpDestination.<init>(PoolingHttpDestination.java:25) ~[bundleFile:9.4.20.v20190813]
> 
>     at org.eclipse.jetty.client.http.HttpDestinationOverHTTP.<init>(HttpDestinationOverHTTP.java:32) ~[bundleFile:9.4.20.v20190813]
> 
>     at org.eclipse.jetty.client.http.HttpClientTransportOverHTTP.newHttpDestination(HttpClientTransportOverHTTP.java:51) ~[bundleFile:9.4.20.v20190813]
> 
>     at org.eclipse.jetty.client.HttpClient.destinationFor(HttpClient.java:546) ~[bundleFile:9.4.20.v20190813]
> 
>     at org.eclipse.jetty.client.HttpClient.send(HttpClient.java:579) ~[bundleFile:9.4.20.v20190813]
> 
>     at org.eclipse.jetty.client.HttpRequest.send(HttpRequest.java:728) ~[bundleFile:9.4.20.v20190813]
> 
>     at org.eclipse.jetty.client.HttpRequest.send(HttpRequest.java:681) ~[bundleFile:9.4.20.v20190813]
> 
>     at org.jupnp.transport.impl.jetty.JettyStreamClientImpl$1.call(JettyStreamClientImpl.java:155) [bundleFile:?]
> 
>     at org.jupnp.transport.impl.jetty.JettyStreamClientImpl$1.call(JettyStreamClientImpl.java:1) [bundleFile:?]
> 
>     at org.jupnp.transport.spi.AbstractStreamClient$RequestWrapper.call(AbstractStreamClient.java:204) [bundleFile:?]
> 
>     at org.jupnp.transport.spi.AbstractStreamClient$RequestWrapper.call(AbstractStreamClient.java:1) [bundleFile:?]
> 
>     at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_222]
> 
>     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_222]
> 
>     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_222]
> 
>     at java.lang.Thread.run(Thread.java:748) [?:1.8.0_222]
> 
> 2020-05-07 15:39:40.446 [INFO ] [rthome.model.script.+++ ImageChooser] - ImageChooser rule RUN - Set to url="http://localhost:8080/static/weather-sun.png"
>
> 2020-05-07 15:43:34.899 [WARN ] [rm.AbstractFileTransformationService] - Could not transform 'url="http://localhost:8080/static/weather-sun.png"' with the file 'weather_icon.map' : Target value not found in map for 'url="http://localhost:8080/static/weather-sun.png"'