HABApp - Easy automation with openHAB

Just delete it and let HABApp create it again. You probably edited it without realizing.
I just double checked that the created logging config gets loaded properly.

Found some other error based on permission and in the configuration file.

But now: HEUREKA the first example is working with a ping time of 7 ms

1 Like

Just added the ping time to openhab and my system is now faster than everthing

image

I get the answers before i ask. Great job!!

Just want to say big thanks to @Spaceman_Spiff for the great work with HABApp!

I had to find a solution for my Apple TV when the OpenHAB binding stopped working due to tvOS upgrades. With HABApp I could call the pyatv library directly and my problem was solved (even if I haven’t implemented all functionality the binding had). It only took a couple of evenings to get it to work!

After that I have ported all my jsr223 rules (that I just had ported from DSL) to HABApp.
Since I now can use the full functionality of python3, I have reduced the number of lines of code substantially.

Well done, Sebastian!

2 Likes

@Dibbler42
Maybe it’s all the saved develop time now that you use HABApp :laughing:
I guess I should look at the ping code for the next release. :wink:

@magnuslsjoberg
Thank you very much! I really appreciate it.

1 Like

@Spaceman_Spiff You should have a look at the ping times
image
Today i updated OH3 without restarting HABApp

Since you are so eager to get the ping, I have pushed some small changes to the Develop branch on github.
The ping handling should work there. Could you verify this?

1 Like

Will check that with the next OH3 update

A Lot of new stuff to learn. Thanks for that. I thin i found the information how to access metadata information. What i did not find is how to trigger if a member of a groups changed?

Another question is if a statement like

items_with_namespace = [item for item in itemRegistry.getAll() if get_metadata(item.name, "Treppe Gang Gruppe") is not None]

could be build with habapp. A simple Yes or No will help :slight_smile:

Almost everything can be built with HABApp, the question remains wether you should. :wink:

I hardly use groups any more because it’s much easier to access items by naming convention and create the group “virtually” in the rule.

def __init__(self, part: str):
    self.my_switch = SwitchItem.get_item('my_name_{part}')

So I get the item through naming convention or I pass the items directly into the rule class as parameters

If you want to keep the group you can trigger on GroupItemStateChangedEvent, but I think you need an aggregation function for that.

It is possible to get the namespace of all items but then again, if you have a good naming scheme it should not be possible.

A question to all HABApp users out there: pros and cons of using HABApp rules + python scripts instead of bindings?

I have replaced 3 of my bindings with HABApp rules and in my simple setup I don’t really see any drawbacks.

Reason for not using bindings were: One binding not supporting upgraded AppleTV, another binding not working well with my UPS and the third one was an OH1 binding that will not be supported by OH3 (and was a bit unstable anyway).

Thoughts and suggestions?

Btw, I try to use text files for as much as possible of my setup and only use PaperUI when I need to use auto-discovery. Once discovered, I write things files and items files for everything I need. With HABApp I am in a way moving away from a lot of functionality in OH and rather use the event bus and the REST api.

All comments welcome!

I use a mixture of bindings and implementations as HABApp rules. I have migrated the httpd binding, the telegram binding and the modbus binding to HABApp. In general everthing that is controllable via REST I prefer to do with Python. On the OpenHAB side I still use (and will continue to use) knx, z-wave, zigbee and persistence.
If a binding works nicely and with all the features I need I will use the binding. If it doesn’t and there is a Python module that can do the job I probably will use HABApp.

In general I use Openhab for item registry, persistence, UI and my core infrastructure (KNX, z-wave, zigbee). HABApp is for rules and extending functionality with Python.

Dominik

1 Like

Good news everyone!

A new version is available.
I often use parameter files to set up my rules and it got really annoying to always reload the rule file after I changed the parameter file.
So now I added a possibility to specify

  • files as dependencies for the file
  • files that will trigger a reload

Example

# HABApp:
#   depends on:
#    - rules/rule_file.py
#   reloads on:
#    - params/param_file.yml

import HABApp
...

0.17.0

  • Ping handling should be more robust
  • Fixed an issue where HABApp would not reconnect after an error
  • Doc fixes by Rosi2143
  • Added DictParameter which can be accessed like a dict
  • Reworked file handling:
    It is now possible to specify files as dependencies which will be loaded before the specifying file and it is possible to automatically reload a file if another file changed. The topics for file handling changed, too.
1 Like

I guess that is similar to my ideas. I use persistence, network, weather, Philips Hue, astro, Marantz AVR and the squeezebox bindings (possibly something more).

I haven’t found any clear strategy for the bindings I replaced and my implementation is a mix of rules and standard classes so it is a bit messy right now. Did you come up with any good design pattern?

Use whatever is easier for you.
I for example am using a python weather binding because I need all the weather information in a central place and did not want to create lots of items.
Using the python library allows me to easily iterate over all its content and dynamically create and populate the required HABApp items.

The only downside I can think of is that if a library changes its interface, you have make the adaptions yourself. If it is a openhab binding, someone (hopefully) is making the changes for you.
But the same is true for HABApp itself.

@Spaceman_Spiff Just updated to latest verison with latest openHAB 3. I found the following error in my logs

[2020-12-02 14:26:56,959] [HABApp.openhab.connection]    ERROR | SSE request Error: Line is too long
[2020-12-02 14:26:56,960] [HABApp.openhab.connection]    ERROR | Traceback (most recent call last):
[2020-12-02 14:26:56,962] [HABApp.openhab.connection]    ERROR |   File "/opt/habapp/lib/python3.8/site-packages/HABApp/openhab/connection_handler/http_connection.py", line 252, in start_sse_event_listener
[2020-12-02 14:26:56,966] [HABApp.openhab.connection]    ERROR |     async for event in event_source:
[2020-12-02 14:26:56,967] [HABApp.openhab.connection]    ERROR |   File "/opt/habapp/lib/python3.8/site-packages/aiohttp_sse_client/client.py", line 148, in __anext__
[2020-12-02 14:26:56,967] [HABApp.openhab.connection]    ERROR |     async for line_in_bytes in self._response.content:
[2020-12-02 14:26:56,968] [HABApp.openhab.connection]    ERROR |   File "/opt/habapp/lib/python3.8/site-packages/aiohttp/streams.py", line 40, in __anext__
[2020-12-02 14:26:56,974] [HABApp.openhab.connection]    ERROR |     rv = await self.read_func()
[2020-12-02 14:26:56,975] [HABApp.openhab.connection]    ERROR |   File "/opt/habapp/lib/python3.8/site-packages/aiohttp/streams.py", line 333, in readline
[2020-12-02 14:26:56,975] [HABApp.openhab.connection]    ERROR |     raise ValueError("Line is too long")
[2020-12-02 14:26:56,976] [HABApp.openhab.connection]    ERROR | ValueError: Line is too long
[2020-12-02 14:26:56,976] [HABApp.openhab.connection]  WARNING | Disconnected! Uncaught error in process_sse_events: Line is too long
[2020-12-02 14:26:58,139] [HABApp.openhab.connection]     INFO | Connected to OpenHAB instance 6cc7fd5c-9c88-4a9a-8594-7f85ef007a36
[2020-12-02 14:26:58,139] [HABApp.openhab.connection]     INFO | OpenHAB version 3.0.0 (Build #2039)
[2020-12-02 14:26:59,060] [                   HABApp]    ERROR | Error <class 'bytes'> in on_connect_function:
[2020-12-02 14:26:59,061] [                   HABApp]    ERROR | File "/opt/habapp/lib/python3.8/site-packages/HABApp/core/wrapper.py", line 118, in a
[2020-12-02 14:26:59,061] [                   HABApp]    ERROR |     return await func(*args, **kwargs)
[2020-12-02 14:26:59,061] [                   HABApp]    ERROR | File "/opt/habapp/lib/python3.8/site-packages/HABApp/openhab/connection_logic/plugin_load_items.py", line 33, in on_connect_function
[2020-12-02 14:26:59,061] [                   HABApp]    ERROR |     16   async def on_connect_function(self):
[2020-12-02 14:26:59,062] [                   HABApp]    ERROR |  (...)
[2020-12-02 14:26:59,062] [                   HABApp]    ERROR |     29               # if the item already exists and it has the correct type just update its state
[2020-12-02 14:26:59,062] [                   HABApp]    ERROR |     30               # Since we load the items before we load the rules this should actually never happen
[2020-12-02 14:26:59,063] [                   HABApp]    ERROR |     31               existing_item = Items.get_item(item_name)   # type: HABApp.core.items.BaseValueItem
[2020-12-02 14:26:59,063] [                   HABApp]    ERROR |     32               if isinstance(existing_item, new_item.__class__):
[2020-12-02 14:26:59,063] [                   HABApp]    ERROR | --> 33                   existing_item.set_value(new_item.value)  # use the converted state from the new item here
[2020-12-02 14:26:59,063] [                   HABApp]    ERROR |     34                   new_item = existing_item
[2020-12-02 14:26:59,064] [                   HABApp]    ERROR |     ..................................................
[2020-12-02 14:26:59,064] [                   HABApp]    ERROR |      self = <HABApp.openhab.connection_logic.plugin_load_items.LoadAllOpenhabItems object at 0x7f35dd10d4c0>
[2020-12-02 14:26:59,064] [                   HABApp]    ERROR |      existing_item = <ImageItem name: RB_GF_KI_Sonos_CurrentCoverArt, value: b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x00H\x00H\x00\x00\xff\xdb\x00C\x00\x03\x02\x02\x03\x02\x02\x03\x03\x03\x03\x04\x03\x03\x04\x05\x08\x05\x05\x04\x04\x05\n\x07\x07\x06\x08\x0c\n\x0c\x0c\x0b\n\x0b\x0b\r\x0e\x12\x10\r\x0e\x11\x0e\x0b\x0b\x10\x16\x10\x11\x13\x14\x15\x15\x15\x0c\x0f\x17\x18\x16\x14\x18\x12\x14\x15\x14\xff\xdb\x00C\x01\x03\x04\x04\x05\x04\x05\t\x05\x05\t\x14\r\x0b\r\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\xff\xc0\x00\x11\x08\x02\x80\x02\x80\x03\x01\x11\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1d\x00\x00\x01\x04\x03\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x03\x04\x06\x01\x02\x07\x08\t\xff\xc4\x00S\x10\x00\x01\x03\x03\x03\x02\x05\x01\x06\x03\x05\x06\x03\x05\x01\x11\x01\x02\x03\x11\x00\x04\x05\x12!1\x06A\x07\x13"Qaq\x08\x142\x81\x91\xa1#B\xb1\x15R\xc1\xd1\xf03br\x82\xe1\xf1\x16$\xa2\tCS\x92\xb24c\xa3\xb3\xc2\x17\x18%(5sTdetu\x83\xc3\xff\xc4\x00\x19\x01\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\xff\xc4\x00#\x11\x01\x01\x01\x01\x00\x03\x01\x01\x01\x00\x03\x01\x01\x01\x00\x00\x00\x01\x11\x02\x12!1\x03AQ\x13"2aq\x81\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00?\x00\xf9\xa6\x0c\xd6\xc6f\x88\xc1\xde\x88\xc0\x10h\xd3i\xa0T\n\x81P*\x05D\xa5R\xfcF\x08\x9a\xc5j7\x07\xd2k\x15\xb6\xe8\xe0T\x12[\xf5mY\xa0\x9d\x8f\xe2\x11\xb7m\xaa,\xfa\xb2Y#AJA;\xf1Y\xae\x82\xec$\xba\xafr\x9fsQ\xa4\xf6\x92\x90\xd9R\xc8\'\xd9<\n\xca\xb2\xd2\x88ZI\x07L\xf0;\xd08\xb5\xab\xcd;\xfeB\xadX\x96\x1d\xf2\x86\xc4((s\xab\x8e\xfb\x8a\xc5S\xc2\xe6R\x00Z|\xcd\x88\x1e\xd1\xdc\xd2\x07Xp\xa8\x90W\xac\xed27\xfd+B\xe5\x83\xbdJG\x96\xb4\xab}\xa4\xf06\x1b\xed\xde\xb3]\'\xc5\xbb\x1f\xa1\xeb\x8fD)\x1b\x9fQ2N\xe0m\xdb\x8a\x8d/\xd8\'CH#\xcdSeGo1>\xb9\xe4\x0f\xa7;{o\xde\xb2-X\xe4\x86\x81\xf2\xd0\x10\x94\x00\x13\x1b\xc0=\x89\xf...
[2020-12-02 14:26:59,065] [                   HABApp]    ERROR |      Items.get_item = <function 'get_item' Items.py:16>
[2020-12-02 14:26:59,065] [                   HABApp]    ERROR |      item_name = 'RB_GF_KI_Sonos_CurrentCoverArt'
[2020-12-02 14:26:59,065] [                   HABApp]    ERROR |      new_item.__class__ = <class 'HABApp.openhab.items.image_item.ImageItem'>
[2020-12-02 14:26:59,065] [                   HABApp]    ERROR |      existing_item.set_value = <method 'ImageItem.set_value' of <ImageItem name: RB_GF_KI_Sonos_CurrentCoverArt, value: b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x00H\x00H\x00\x00\xff\xdb\x00C\x00\x03\x02\x02\x03\x02\x02\x03\x03\x03\x03\x04\x03\x03\x04\x05\x08\x05\x05\x04\x04\x05\n\x07\x07\x06\x08\x0c\n\x0c\x0c\x0b\n\x0b\x0b\r\x0e\x12\x10\r\x0e\x11\x0e\x0b\x0b\x10\x16\x10\x11\x13\x14\x15\x15\x15\x0c\x0f\x17\x18\x16\x14\x18\x12\x14\x15\x14\xff\xdb\x00C\x01\x03\x04\x04\x05\x04\x05\t\x05\x05\t\x14\r\x0b\r\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\xff\xc0\x00\x11\x08\x02\x80\x02\x80\x03\x01\x11\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1d\x00\x00\x01\x04\x03\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x03\x04\x06\x01\x02\x07\x08\t\xff\xc4\x00S\x10\x00\x01\x03\x03\x03\x02\x05\x01\x06\x03\x05\x06\x03\x05\x01\x11\x01\x02\x03\x11\x00\x04\x05\x12!1\x06A\x07\x13"Qaq\x08\x142\x81\x91\xa1#B\xb1\x15R\xc1\xd1\xf03br\x82\xe1\xf1\x16$\xa2\tCS\x92\xb24c\xa3\xb3\xc2\x17\x18%(5sTdetu\x83\xc3\xff\xc4\x00\x19\x01\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\xff\xc4\x00#\x11\x01\x01\x01\x01\x00\x03\x01\x01\x01\x00\x03\x01\x01\x01\x00\x00\x00\x01\x11\x02\x12!1\x03AQ\x13"2aq\x81\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00?\x00\xf9\xa6\x0c\xd6\xc6f\x88\xc1\xde\x88\xc0\x10h\xd3i\xa0T\n\x81P*\x05D\xa5R\xfcF\x08\x9a\xc5j7\x07\xd2k\x15\xb6\xe8\xe0T\x12[\xf5mY\xa0\x9d\x8f\xe2\x11\xb7m\xaa,\xfa\xb2Y#AJA;\xf1Y\xae\x82\xec$\xba\xafr\x9fsQ\xa4\xf6\x92\x90\xd9R\xc8\'\xd9<\n\xca\xb2\xd2\x88ZI\x07L\xf0;\xd08\xb5\xab\xcd;\xfeB\xadX\x96\x1d\xf2\x86\xc4((s\xab\x8e\xfb\x8a\xc5S\xc2\xe6R\x00Z|\xcd\x88\x1e\xd1\xdc\xd2\x07Xp\xa8\x90W\xac\xed27\xfd+B\xe5\x83\xbdJG\x96\xb4\xab}\xa4\xf06\x1b\xed\xde\xb3]\'\xc5\xbb\x1f\xa1\xeb\x8fD)\x1b\x9fQ2N\xe0m\xdb\x8a\x8d/\xd8\'CH#\xcdSeGo1>\xb9\xe4\x0f\xa7;{o\xde\xb2-X\xe4\x86\x81\xf2\xd...
[2020-12-02 14:26:59,066] [                   HABApp]    ERROR |      new_item.value = b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x00H\x00H\x00\x00\xff\xdb\x00C\x00\x03\x02\x02\x03\x02\x02\x03\x03\x03\x03\x04\x03\x03\x04\x05\x08\x05\x05\x04\x04\x05\n\x07\x07\x06\x08\x0c\n\x0c\x0c\x0b\n\x0b\x0b\r\x0e\x12\x10\r\x0e\x11\x0e\x0b\x0b\x10\x16\x10\x11\x13\x14\x15\x15\x15\x0c\x0f\x17\x18\x16\x14\x18\x12\x14\x15\x14\xff\xdb\x00C\x01\x03\x04\x04\x05\x04\x05\t\x05\x05\t\x14\r\x0b\r\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\xff\xc0\x00\x11\x08\x02\x80\x02\x80\x03\x01\x11\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1d\x00\x00\x01\x04\x03\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x03\x04\x06\x01\x02\x07\x08\t\xff\xc4\x00S\x10\x00\x01\x03\x03\x03\x02\x05\x01\x06\x03\x05\x06\x03\x05\x01\x11\x01\x02\x03\x11\x00\x04\x05\x12!1\x06A\x07\x13"Qaq\x08\x142\x81\x91\xa1#B\xb1\x15R\xc1\xd1\xf03br\x82\xe1\xf1\x16$\xa2\tCS\x92\xb24c\xa3\xb3\xc2\x17\x18%(5sTdetu\x83\xc3\xff\xc4\x00\x19\x01\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\xff\xc4\x00#\x11\x01\x01\x01\x01\x00\x03\x01\x01\x01\x00\x03\x01\x01\x01\x00\x00\x00\x01\x11\x02\x12!1\x03AQ\x13"2aq\x81\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00?\x00\xf9\xa6\x0c\xd6\xc6f\x88\xc1\xde\x88\xc0\x10h\xd3i\xa0T\n\x81P*\x05D\xa5R\xfcF\x08\x9a\xc5j7\x07\xd2k\x15\xb6\xe8\xe0T\x12[\xf5mY\xa0\x9d\x8f\xe2\x11\xb7m\xaa,\xfa\xb2Y#AJA;\xf1Y\xae\x82\xec$\xba\xafr\x9fsQ\xa4\xf6\x92\x90\xd9R\xc8\'\xd9<\n\xca\xb2\xd2\x88ZI\x07L\xf0;\xd08\xb5\xab\xcd;\xfeB\xadX\x96\x1d\xf2\x86\xc4((s\xab\x8e\xfb\x8a\xc5S\xc2\xe6R\x00Z|\xcd\x88\x1e\xd1\xdc\xd2\x07Xp\xa8\x90W\xac\xed27\xfd+B\xe5\x83\xbdJG\x96\xb4\xab}\xa4\xf06\x1b\xed\xde\xb3]\'\xc5\xbb\x1f\xa1\xeb\x8fD)\x1b\x9fQ2N\xe0m\xdb\x8a\x8d/\xd8\'CH#\xcdSeGo1>\xb9\xe4\x0f\xa7;{o\xde\xb2-X\xe4\x86\x81\xf2\xd0\x10\x94\x00\x13\x1b\xc0=\x89\xf6\xff\x00\\TE\x9b\x14\xb4\xa4\t \xff\x00*\x92O\x1f?\xeb\...
[2020-12-02 14:26:59,066] [                   HABApp]    ERROR |      new_item = <ImageItem name: RB_GF_KI_Sonos_CurrentCoverArt, value: b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x00H\x00H\x00\x00\xff\xdb\x00C\x00\x03\x02\x02\x03\x02\x02\x03\x03\x03\x03\x04\x03\x03\x04\x05\x08\x05\x05\x04\x04\x05\n\x07\x07\x06\x08\x0c\n\x0c\x0c\x0b\n\x0b\x0b\r\x0e\x12\x10\r\x0e\x11\x0e\x0b\x0b\x10\x16\x10\x11\x13\x14\x15\x15\x15\x0c\x0f\x17\x18\x16\x14\x18\x12\x14\x15\x14\xff\xdb\x00C\x01\x03\x04\x04\x05\x04\x05\t\x05\x05\t\x14\r\x0b\r\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\xff\xc0\x00\x11\x08\x02\x80\x02\x80\x03\x01\x11\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1d\x00\x00\x01\x04\x03\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x03\x04\x06\x01\x02\x07\x08\t\xff\xc4\x00S\x10\x00\x01\x03\x03\x03\x02\x05\x01\x06\x03\x05\x06\x03\x05\x01\x11\x01\x02\x03\x11\x00\x04\x05\x12!1\x06A\x07\x13"Qaq\x08\x142\x81\x91\xa1#B\xb1\x15R\xc1\xd1\xf03br\x82\xe1\xf1\x16$\xa2\tCS\x92\xb24c\xa3\xb3\xc2\x17\x18%(5sTdetu\x83\xc3\xff\xc4\x00\x19\x01\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\xff\xc4\x00#\x11\x01\x01\x01\x01\x00\x03\x01\x01\x01\x00\x03\x01\x01\x01\x00\x00\x00\x01\x11\x02\x12!1\x03AQ\x13"2aq\x81\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00?\x00\xf9\xa6\x0c\xd6\xc6f\x88\xc1\xde\x88\xc0\x10h\xd3i\xa0T\n\x81P*\x05D\xa5R\xfcF\x08\x9a\xc5j7\x07\xd2k\x15\xb6\xe8\xe0T\x12[\xf5mY\xa0\x9d\x8f\xe2\x11\xb7m\xaa,\xfa\xb2Y#AJA;\xf1Y\xae\x82\xec$\xba\xafr\x9fsQ\xa4\xf6\x92\x90\xd9R\xc8\'\xd9<\n\xca\xb2\xd2\x88ZI\x07L\xf0;\xd08\xb5\xab\xcd;\xfeB\xadX\x96\x1d\xf2\x86\xc4((s\xab\x8e\xfb\x8a\xc5S\xc2\xe6R\x00Z|\xcd\x88\x1e\xd1\xdc\xd2\x07Xp\xa8\x90W\xac\xed27\xfd+B\xe5\x83\xbdJG\x96\xb4\xab}\xa4\xf06\x1b\xed\xde\xb3]\'\xc5\xbb\x1f\xa1\xeb\x8fD)\x1b\x9fQ2N\xe0m\xdb\x8a\x8d/\xd8\'CH#\xcdSeGo1>\xb9\xe4\x0f\xa7;{o\xde\xb2-X\xe4\x86\x81\xf2\xd0\x10\x94\x00\x13\x1b\xc0=\x89\xf...
[2020-12-02 14:26:59,066] [                   HABApp]    ERROR |     ..................................................
[2020-12-02 14:26:59,067] [                   HABApp]    ERROR |
[2020-12-02 14:26:59,067] [                   HABApp]    ERROR | File "/opt/habapp/lib/python3.8/site-packages/HABApp/openhab/items/image_item.py", line 32, in set_value
[2020-12-02 14:26:59,067] [                   HABApp]    ERROR |     31   def set_value(self, new_value) -> bool:
[2020-12-02 14:26:59,068] [                   HABApp]    ERROR | --> 32       assert isinstance(new_value, RawValue) or new_value is None, type(new_value)
[2020-12-02 14:26:59,068] [                   HABApp]    ERROR |     33
[2020-12-02 14:26:59,068] [                   HABApp]    ERROR |     ..................................................
[2020-12-02 14:26:59,068] [                   HABApp]    ERROR |      self = <ImageItem name: RB_GF_KI_Sonos_CurrentCoverArt, value: b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x00H\x00H\x00\x00\xff\xdb\x00C\x00\x03\x02\x02\x03\x02\x02\x03\x03\x03\x03\x04\x03\x03\x04\x05\x08\x05\x05\x04\x04\x05\n\x07\x07\x06\x08\x0c\n\x0c\x0c\x0b\n\x0b\x0b\r\x0e\x12\x10\r\x0e\x11\x0e\x0b\x0b\x10\x16\x10\x11\x13\x14\x15\x15\x15\x0c\x0f\x17\x18\x16\x14\x18\x12\x14\x15\x14\xff\xdb\x00C\x01\x03\x04\x04\x05\x04\x05\t\x05\x05\t\x14\r\x0b\r\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\xff\xc0\x00\x11\x08\x02\x80\x02\x80\x03\x01\x11\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1d\x00\x00\x01\x04\x03\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x03\x04\x06\x01\x02\x07\x08\t\xff\xc4\x00S\x10\x00\x01\x03\x03\x03\x02\x05\x01\x06\x03\x05\x06\x03\x05\x01\x11\x01\x02\x03\x11\x00\x04\x05\x12!1\x06A\x07\x13"Qaq\x08\x142\x81\x91\xa1#B\xb1\x15R\xc1\xd1\xf03br\x82\xe1\xf1\x16$\xa2\tCS\x92\xb24c\xa3\xb3\xc2\x17\x18%(5sTdetu\x83\xc3\xff\xc4\x00\x19\x01\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\xff\xc4\x00#\x11\x01\x01\x01\x01\x00\x03\x01\x01\x01\x00\x03\x01\x01\x01\x00\x00\x00\x01\x11\x02\x12!1\x03AQ\x13"2aq\x81\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00?\x00\xf9\xa6\x0c\xd6\xc6f\x88\xc1\xde\x88\xc0\x10h\xd3i\xa0T\n\x81P*\x05D\xa5R\xfcF\x08\x9a\xc5j7\x07\xd2k\x15\xb6\xe8\xe0T\x12[\xf5mY\xa0\x9d\x8f\xe2\x11\xb7m\xaa,\xfa\xb2Y#AJA;\xf1Y\xae\x82\xec$\xba\xafr\x9fsQ\xa4\xf6\x92\x90\xd9R\xc8\'\xd9<\n\xca\xb2\xd2\x88ZI\x07L\xf0;\xd08\xb5\xab\xcd;\xfeB\xadX\x96\x1d\xf2\x86\xc4((s\xab\x8e\xfb\x8a\xc5S\xc2\xe6R\x00Z|\xcd\x88\x1e\xd1\xdc\xd2\x07Xp\xa8\x90W\xac\xed27\xfd+B\xe5\x83\xbdJG\x96\xb4\xab}\xa4\xf06\x1b\xed\xde\xb3]\'\xc5\xbb\x1f\xa1\xeb\x8fD)\x1b\x9fQ2N\xe0m\xdb\x8a\x8d/\xd8\'CH#\xcdSeGo1>\xb9\xe4\x0f\xa7;{o\xde\xb2-X\xe4\x86\x81\xf2\xd0\x10\x94\x00\x13\x1b\xc0=\x89\xf...
[2020-12-02 14:26:59,069] [                   HABApp]    ERROR |      new_value = b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x00H\x00H\x00\x00\xff\xdb\x00C\x00\x03\x02\x02\x03\x02\x02\x03\x03\x03\x03\x04\x03\x03\x04\x05\x08\x05\x05\x04\x04\x05\n\x07\x07\x06\x08\x0c\n\x0c\x0c\x0b\n\x0b\x0b\r\x0e\x12\x10\r\x0e\x11\x0e\x0b\x0b\x10\x16\x10\x11\x13\x14\x15\x15\x15\x0c\x0f\x17\x18\x16\x14\x18\x12\x14\x15\x14\xff\xdb\x00C\x01\x03\x04\x04\x05\x04\x05\t\x05\x05\t\x14\r\x0b\r\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\xff\xc0\x00\x11\x08\x02\x80\x02\x80\x03\x01\x11\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1d\x00\x00\x01\x04\x03\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x03\x04\x06\x01\x02\x07\x08\t\xff\xc4\x00S\x10\x00\x01\x03\x03\x03\x02\x05\x01\x06\x03\x05\x06\x03\x05\x01\x11\x01\x02\x03\x11\x00\x04\x05\x12!1\x06A\x07\x13"Qaq\x08\x142\x81\x91\xa1#B\xb1\x15R\xc1\xd1\xf03br\x82\xe1\xf1\x16$\xa2\tCS\x92\xb24c\xa3\xb3\xc2\x17\x18%(5sTdetu\x83\xc3\xff\xc4\x00\x19\x01\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\xff\xc4\x00#\x11\x01\x01\x01\x01\x00\x03\x01\x01\x01\x00\x03\x01\x01\x01\x00\x00\x00\x01\x11\x02\x12!1\x03AQ\x13"2aq\x81\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00?\x00\xf9\xa6\x0c\xd6\xc6f\x88\xc1\xde\x88\xc0\x10h\xd3i\xa0T\n\x81P*\x05D\xa5R\xfcF\x08\x9a\xc5j7\x07\xd2k\x15\xb6\xe8\xe0T\x12[\xf5mY\xa0\x9d\x8f\xe2\x11\xb7m\xaa,\xfa\xb2Y#AJA;\xf1Y\xae\x82\xec$\xba\xafr\x9fsQ\xa4\xf6\x92\x90\xd9R\xc8\'\xd9<\n\xca\xb2\xd2\x88ZI\x07L\xf0;\xd08\xb5\xab\xcd;\xfeB\xadX\x96\x1d\xf2\x86\xc4((s\xab\x8e\xfb\x8a\xc5S\xc2\xe6R\x00Z|\xcd\x88\x1e\xd1\xdc\xd2\x07Xp\xa8\x90W\xac\xed27\xfd+B\xe5\x83\xbdJG\x96\xb4\xab}\xa4\xf06\x1b\xed\xde\xb3]\'\xc5\xbb\x1f\xa1\xeb\x8fD)\x1b\x9fQ2N\xe0m\xdb\x8a\x8d/\xd8\'CH#\xcdSeGo1>\xb9\xe4\x0f\xa7;{o\xde\xb2-X\xe4\x86\x81\xf2\xd0\x10\x94\x00\x13\x1b\xc0=\x89\xf6\xff\x00\\TE\x9b\x14\xb4\xa4\t \xff\x00*\x92O\x1f?\xeb\...
[2020-12-02 14:26:59,069] [                   HABApp]    ERROR |      RawValue = <class 'HABApp.openhab.definitions.values.RawValue'>
[2020-12-02 14:26:59,069] [                   HABApp]    ERROR |     ..................................................
[2020-12-02 14:26:59,070] [                   HABApp]    ERROR |
[2020-12-02 14:26:59,070] [                   HABApp]    ERROR | AssertionError: <class 'bytes'>
[2020-12-02 14:30:18,395] [HABApp.openhab.connection]    ERROR | SSE request Error: Line is too long
[2020-12-02 14:30:18,395] [HABApp.openhab.connection]    ERROR | Traceback (most recent call last):
[2020-12-02 14:30:18,396] [HABApp.openhab.connection]    ERROR |   File "/opt/habapp/lib/python3.8/site-packages/HABApp/openhab/connection_handler/http_connection.py", line 252, in start_sse_event_listener
[2020-12-02 14:30:18,397] [HABApp.openhab.connection]    ERROR |     async for event in event_source:
[2020-12-02 14:30:18,397] [HABApp.openhab.connection]    ERROR |   File "/opt/habapp/lib/python3.8/site-packages/aiohttp_sse_client/client.py", line 148, in __anext__
[2020-12-02 14:30:18,398] [HABApp.openhab.connection]    ERROR |     async for line_in_bytes in self._response.content:
[2020-12-02 14:30:18,399] [HABApp.openhab.connection]    ERROR |   File "/opt/habapp/lib/python3.8/site-packages/aiohttp/streams.py", line 40, in __anext__
[2020-12-02 14:30:18,399] [HABApp.openhab.connection]    ERROR |     rv = await self.read_func()
[2020-12-02 14:30:18,400] [HABApp.openhab.connection]    ERROR |   File "/opt/habapp/lib/python3.8/site-packages/aiohttp/streams.py", line 333, in readline
[2020-12-02 14:30:18,401] [HABApp.openhab.connection]    ERROR |     raise ValueError("Line is too long")
[2020-12-02 14:30:18,402] [HABApp.openhab.connection]    ERROR | ValueError: Line is too long
[2020-12-02 14:30:18,403] [HABApp.openhab.connection]  WARNING | Disconnected! Uncaught error in process_sse_events: Line is too long
[2020-12-02 14:30:19,504] [HABApp.openhab.connection]     INFO | Connected to OpenHAB instance 6cc7fd5c-9c88-4a9a-8594-7f85ef007a36
[2020-12-02 14:30:19,504] [HABApp.openhab.connection]     INFO | OpenHAB version 3.0.0 (Build #2039)
[2020-12-02 14:30:20,356] [                   HABApp]    ERROR | Error <class 'bytes'> in on_connect_function:
[2020-12-02 14:30:20,356] [                   HABApp]    ERROR | File "/opt/habapp/lib/python3.8/site-packages/HABApp/core/wrapper.py", line 118, in a
[2020-12-02 14:30:20,356] [                   HABApp]    ERROR |     return await func(*args, **kwargs)
[2020-12-02 14:30:20,356] [                   HABApp]    ERROR | File "/opt/habapp/lib/python3.8/site-packages/HABApp/openhab/connection_logic/plugin_load_items.py", line 33, in on_connect_function
[2020-12-02 14:30:20,357] [                   HABApp]    ERROR |     16   async def on_connect_function(self):
[2020-12-02 14:30:20,357] [                   HABApp]    ERROR |  (...)
[2020-12-02 14:30:20,357] [                   HABApp]    ERROR |     29               # if the item already exists and it has the correct type just update its state
[2020-12-02 14:30:20,358] [                   HABApp]    ERROR |     30               # Since we load the items before we load the rules this should actually never happen
[2020-12-02 14:30:20,358] [                   HABApp]    ERROR |     31               existing_item = Items.get_item(item_name)   # type: HABApp.core.items.BaseValueItem
[2020-12-02 14:30:20,358] [                   HABApp]    ERROR |     32               if isinstance(existing_item, new_item.__class__):
[2020-12-02 14:30:20,359] [                   HABApp]    ERROR | --> 33                   existing_item.set_value(new_item.value)  # use the converted state from the new item here
[2020-12-02 14:30:20,359] [                   HABApp]    ERROR |     34                   new_item = existing_item
[2020-12-02 14:30:20,359] [                   HABApp]    ERROR |     ..................................................
[2020-12-02 14:30:20,360] [                   HABApp]    ERROR |      self = <HABApp.openhab.connection_logic.plugin_load_items.LoadAllOpenhabItems object at 0x7f35dd10d4c0>
[2020-12-02 14:30:20,360] [                   HABApp]    ERROR |      existing_item = <ImageItem name: RB_GF_KI_Sonos_CurrentCoverArt, value: b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x00H\x00H\x00\x00\xff\xdb\x00C\x00\x03\x02\x02\x03\x02\x02\x03\x03\x03\x03\x04\x03\x03\x04\x05\x08\x05\x05\x04\x04\x05\n\x07\x07\x06\x08\x0c\n\x0c\x0c\x0b\n\x0b\x0b\r\x0e\x12\x10\r\x0e\x11\x0e\x0b\x0b\x10\x16\x10\x11\x13\x14\x15\x15\x15\x0c\x0f\x17\x18\x16\x14\x18\x12\x14\x15\x14\xff\xdb\x00C\x01\x03\x04\x04\x05\x04\x05\t\x05\x05\t\x14\r\x0b\r\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\xff\xc0\x00\x11\x08\x02\x80\x02\x80\x03\x01\x11\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1d\x00\x00\x01\x04\x03\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x03\x04\x06\x01\x02\x07\x08\t\xff\xc4\x00S\x10\x00\x01\x03\x03\x03\x02\x05\x01\x06\x03\x05\x06\x03\x05\x01\x11\x01\x02\x03\x11\x00\x04\x05\x12!1\x06A\x07\x13"Qaq\x08\x142\x81\x91\xa1#B\xb1\x15R\xc1\xd1\xf03br\x82\xe1\xf1\x16$\xa2\tCS\x92\xb24c\xa3\xb3\xc2\x17\x18%(5sTdetu\x83\xc3\xff\xc4\x00\x19\x01\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\xff\xc4\x00#\x11\x01\x01\x01\x01\x00\x03\x01\x01\x01\x00\x03\x01\x01\x01\x00\x00\x00\x01\x11\x02\x12!1\x03AQ\x13"2aq\x81\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00?\x00\xf9\xa6\x0c\xd6\xc6f\x88\xc1\xde\x88\xc0\x10h\xd3i\xa0T\n\x81P*\x05D\xa5R\xfcF\x08\x9a\xc5j7\x07\xd2k\x15\xb6\xe8\xe0T\x12[\xf5mY\xa0\x9d\x8f\xe2\x11\xb7m\xaa,\xfa\xb2Y#AJA;\xf1Y\xae\x82\xec$\xba\xafr\x9fsQ\xa4\xf6\x92\x90\xd9R\xc8\'\xd9<\n\xca\xb2\xd2\x88ZI\x07L\xf0;\xd08\xb5\xab\xcd;\xfeB\xadX\x96\x1d\xf2\x86\xc4((s\xab\x8e\xfb\x8a\xc5S\xc2\xe6R\x00Z|\xcd\x88\x1e\xd1\xdc\xd2\x07Xp\xa8\x90W\xac\xed27\xfd+B\xe5\x83\xbdJG\x96\xb4\xab}\xa4\xf06\x1b\xed\xde\xb3]\'\xc5\xbb\x1f\xa1\xeb\x8fD)\x1b\x9fQ2N\xe0m\xdb\x8a\x8d/\xd8\'CH#\xcdSeGo1>\xb9\xe4\x0f\xa7;{o\xde\xb2-X\xe4\x86\x81\xf2\xd0\x10\x94\x00\x13\x1b\xc0=\x89\xf...
[2020-12-02 14:30:20,360] [                   HABApp]    ERROR |      Items.get_item = <function 'get_item' Items.py:16>
[2020-12-02 14:30:20,361] [                   HABApp]    ERROR |      item_name = 'RB_GF_KI_Sonos_CurrentCoverArt'
[2020-12-02 14:30:20,361] [                   HABApp]    ERROR |      new_item.__class__ = <class 'HABApp.openhab.items.image_item.ImageItem'>
[2020-12-02 14:30:20,361] [                   HABApp]    ERROR |      existing_item.set_value = <method 'ImageItem.set_value' of <ImageItem name: RB_GF_KI_Sonos_CurrentCoverArt, value: b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x00H\x00H\x00\x00\xff\xdb\x00C\x00\x03\x02\x02\x03\x02\x02\x03\x03\x03\x03\x04\x03\x03\x04\x05\x08\x05\x05\x04\x04\x05\n\x07\x07\x06\x08\x0c\n\x0c\x0c\x0b\n\x0b\x0b\r\x0e\x12\x10\r\x0e\x11\x0e\x0b\x0b\x10\x16\x10\x11\x13\x14\x15\x15\x15\x0c\x0f\x17\x18\x16\x14\x18\x12\x14\x15\x14\xff\xdb\x00C\x01\x03\x04\x04\x05\x04\x05\t\x05\x05\t\x14\r\x0b\r\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\xff\xc0\x00\x11\x08\x02\x80\x02\x80\x03\x01\x11\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1d\x00\x00\x01\x04\x03\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x03\x04\x06\x01\x02\x07\x08\t\xff\xc4\x00S\x10\x00\x01\x03\x03\x03\x02\x05\x01\x06\x03\x05\x06\x03\x05\x01\x11\x01\x02\x03\x11\x00\x04\x05\x12!1\x06A\x07\x13"Qaq\x08\x142\x81\x91\xa1#B\xb1\x15R\xc1\xd1\xf03br\x82\xe1\xf1\x16$\xa2\tCS\x92\xb24c\xa3\xb3\xc2\x17\x18%(5sTdetu\x83\xc3\xff\xc4\x00\x19\x01\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\xff\xc4\x00#\x11\x01\x01\x01\x01\x00\x03\x01\x01\x01\x00\x03\x01\x01\x01\x00\x00\x00\x01\x11\x02\x12!1\x03AQ\x13"2aq\x81\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00?\x00\xf9\xa6\x0c\xd6\xc6f\x88\xc1\xde\x88\xc0\x10h\xd3i\xa0T\n\x81P*\x05D\xa5R\xfcF\x08\x9a\xc5j7\x07\xd2k\x15\xb6\xe8\xe0T\x12[\xf5mY\xa0\x9d\x8f\xe2\x11\xb7m\xaa,\xfa\xb2Y#AJA;\xf1Y\xae\x82\xec$\xba\xafr\x9fsQ\xa4\xf6\x92\x90\xd9R\xc8\'\xd9<\n\xca\xb2\xd2\x88ZI\x07L\xf0;\xd08\xb5\xab\xcd;\xfeB\xadX\x96\x1d\xf2\x86\xc4((s\xab\x8e\xfb\x8a\xc5S\xc2\xe6R\x00Z|\xcd\x88\x1e\xd1\xdc\xd2\x07Xp\xa8\x90W\xac\xed27\xfd+B\xe5\x83\xbdJG\x96\xb4\xab}\xa4\xf06\x1b\xed\xde\xb3]\'\xc5\xbb\x1f\xa1\xeb\x8fD)\x1b\x9fQ2N\xe0m\xdb\x8a\x8d/\xd8\'CH#\xcdSeGo1>\xb9\xe4\x0f\xa7;{o\xde\xb2-X\xe4\x86\x81\xf2\xd...
[2020-12-02 14:30:20,362] [                   HABApp]    ERROR |      new_item.value = b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x00H\x00H\x00\x00\xff\xdb\x00C\x00\x03\x02\x02\x03\x02\x02\x03\x03\x03\x03\x04\x03\x03\x04\x05\x08\x05\x05\x04\x04\x05\n\x07\x07\x06\x08\x0c\n\x0c\x0c\x0b\n\x0b\x0b\r\x0e\x12\x10\r\x0e\x11\x0e\x0b\x0b\x10\x16\x10\x11\x13\x14\x15\x15\x15\x0c\x0f\x17\x18\x16\x14\x18\x12\x14\x15\x14\xff\xdb\x00C\x01\x03\x04\x04\x05\x04\x05\t\x05\x05\t\x14\r\x0b\r\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\xff\xc0\x00\x11\x08\x02\x80\x02\x80\x03\x01\x11\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1d\x00\x00\x01\x04\x03\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x03\x04\x06\x01\x02\x07\x08\t\xff\xc4\x00S\x10\x00\x01\x03\x03\x03\x02\x05\x01\x06\x03\x05\x06\x03\x05\x01\x11\x01\x02\x03\x11\x00\x04\x05\x12!1\x06A\x07\x13"Qaq\x08\x142\x81\x91\xa1#B\xb1\x15R\xc1\xd1\xf03br\x82\xe1\xf1\x16$\xa2\tCS\x92\xb24c\xa3\xb3\xc2\x17\x18%(5sTdetu\x83\xc3\xff\xc4\x00\x19\x01\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\xff\xc4\x00#\x11\x01\x01\x01\x01\x00\x03\x01\x01\x01\x00\x03\x01\x01\x01\x00\x00\x00\x01\x11\x02\x12!1\x03AQ\x13"2aq\x81\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00?\x00\xf9\xa6\x0c\xd6\xc6f\x88\xc1\xde\x88\xc0\x10h\xd3i\xa0T\n\x81P*\x05D\xa5R\xfcF\x08\x9a\xc5j7\x07\xd2k\x15\xb6\xe8\xe0T\x12[\xf5mY\xa0\x9d\x8f\xe2\x11\xb7m\xaa,\xfa\xb2Y#AJA;\xf1Y\xae\x82\xec$\xba\xafr\x9fsQ\xa4\xf6\x92\x90\xd9R\xc8\'\xd9<\n\xca\xb2\xd2\x88ZI\x07L\xf0;\xd08\xb5\xab\xcd;\xfeB\xadX\x96\x1d\xf2\x86\xc4((s\xab\x8e\xfb\x8a\xc5S\xc2\xe6R\x00Z|\xcd\x88\x1e\xd1\xdc\xd2\x07Xp\xa8\x90W\xac\xed27\xfd+B\xe5\x83\xbdJG\x96\xb4\xab}\xa4\xf06\x1b\xed\xde\xb3]\'\xc5\xbb\x1f\xa1\xeb\x8fD)\x1b\x9fQ2N\xe0m\xdb\x8a\x8d/\xd8\'CH#\xcdSeGo1>\xb9\xe4\x0f\xa7;{o\xde\xb2-X\xe4\x86\x81\xf2\xd0\x10\x94\x00\x13\x1b\xc0=\x89\xf6\xff\x00\\TE\x9b\x14\xb4\xa4\t \xff\x00*\x92O\x1f?\xeb\...
[2020-12-02 14:30:20,362] [                   HABApp]    ERROR |      new_item = <ImageItem name: RB_GF_KI_Sonos_CurrentCoverArt, value: b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x00H\x00H\x00\x00\xff\xdb\x00C\x00\x03\x02\x02\x03\x02\x02\x03\x03\x03\x03\x04\x03\x03\x04\x05\x08\x05\x05\x04\x04\x05\n\x07\x07\x06\x08\x0c\n\x0c\x0c\x0b\n\x0b\x0b\r\x0e\x12\x10\r\x0e\x11\x0e\x0b\x0b\x10\x16\x10\x11\x13\x14\x15\x15\x15\x0c\x0f\x17\x18\x16\x14\x18\x12\x14\x15\x14\xff\xdb\x00C\x01\x03\x04\x04\x05\x04\x05\t\x05\x05\t\x14\r\x0b\r\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\xff\xc0\x00\x11\x08\x02\x80\x02\x80\x03\x01\x11\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1d\x00\x00\x01\x04\x03\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x03\x04\x06\x01\x02\x07\x08\t\xff\xc4\x00S\x10\x00\x01\x03\x03\x03\x02\x05\x01\x06\x03\x05\x06\x03\x05\x01\x11\x01\x02\x03\x11\x00\x04\x05\x12!1\x06A\x07\x13"Qaq\x08\x142\x81\x91\xa1#B\xb1\x15R\xc1\xd1\xf03br\x82\xe1\xf1\x16$\xa2\tCS\x92\xb24c\xa3\xb3\xc2\x17\x18%(5sTdetu\x83\xc3\xff\xc4\x00\x19\x01\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\xff\xc4\x00#\x11\x01\x01\x01\x01\x00\x03\x01\x01\x01\x00\x03\x01\x01\x01\x00\x00\x00\x01\x11\x02\x12!1\x03AQ\x13"2aq\x81\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00?\x00\xf9\xa6\x0c\xd6\xc6f\x88\xc1\xde\x88\xc0\x10h\xd3i\xa0T\n\x81P*\x05D\xa5R\xfcF\x08\x9a\xc5j7\x07\xd2k\x15\xb6\xe8\xe0T\x12[\xf5mY\xa0\x9d\x8f\xe2\x11\xb7m\xaa,\xfa\xb2Y#AJA;\xf1Y\xae\x82\xec$\xba\xafr\x9fsQ\xa4\xf6\x92\x90\xd9R\xc8\'\xd9<\n\xca\xb2\xd2\x88ZI\x07L\xf0;\xd08\xb5\xab\xcd;\xfeB\xadX\x96\x1d\xf2\x86\xc4((s\xab\x8e\xfb\x8a\xc5S\xc2\xe6R\x00Z|\xcd\x88\x1e\xd1\xdc\xd2\x07Xp\xa8\x90W\xac\xed27\xfd+B\xe5\x83\xbdJG\x96\xb4\xab}\xa4\xf06\x1b\xed\xde\xb3]\'\xc5\xbb\x1f\xa1\xeb\x8fD)\x1b\x9fQ2N\xe0m\xdb\x8a\x8d/\xd8\'CH#\xcdSeGo1>\xb9\xe4\x0f\xa7;{o\xde\xb2-X\xe4\x86\x81\xf2\xd0\x10\x94\x00\x13\x1b\xc0=\x89\xf...
[2020-12-02 14:30:20,362] [                   HABApp]    ERROR |     ..................................................
[2020-12-02 14:30:20,362] [                   HABApp]    ERROR |
[2020-12-02 14:30:20,363] [                   HABApp]    ERROR | File "/opt/habapp/lib/python3.8/site-packages/HABApp/openhab/items/image_item.py", line 32, in set_value
[2020-12-02 14:30:20,363] [                   HABApp]    ERROR |     31   def set_value(self, new_value) -> bool:
[2020-12-02 14:30:20,363] [                   HABApp]    ERROR | --> 32       assert isinstance(new_value, RawValue) or new_value is None, type(new_value)
[2020-12-02 14:30:20,364] [                   HABApp]    ERROR |     33
[2020-12-02 14:30:20,364] [                   HABApp]    ERROR |     ..................................................
[2020-12-02 14:30:20,364] [                   HABApp]    ERROR |      self = <ImageItem name: RB_GF_KI_Sonos_CurrentCoverArt, value: b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x00H\x00H\x00\x00\xff\xdb\x00C\x00\x03\x02\x02\x03\x02\x02\x03\x03\x03\x03\x04\x03\x03\x04\x05\x08\x05\x05\x04\x04\x05\n\x07\x07\x06\x08\x0c\n\x0c\x0c\x0b\n\x0b\x0b\r\x0e\x12\x10\r\x0e\x11\x0e\x0b\x0b\x10\x16\x10\x11\x13\x14\x15\x15\x15\x0c\x0f\x17\x18\x16\x14\x18\x12\x14\x15\x14\xff\xdb\x00C\x01\x03\x04\x04\x05\x04\x05\t\x05\x05\t\x14\r\x0b\r\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\xff\xc0\x00\x11\x08\x02\x80\x02\x80\x03\x01\x11\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1d\x00\x00\x01\x04\x03\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x03\x04\x06\x01\x02\x07\x08\t\xff\xc4\x00S\x10\x00\x01\x03\x03\x03\x02\x05\x01\x06\x03\x05\x06\x03\x05\x01\x11\x01\x02\x03\x11\x00\x04\x05\x12!1\x06A\x07\x13"Qaq\x08\x142\x81\x91\xa1#B\xb1\x15R\xc1\xd1\xf03br\x82\xe1\xf1\x16$\xa2\tCS\x92\xb24c\xa3\xb3\xc2\x17\x18%(5sTdetu\x83\xc3\xff\xc4\x00\x19\x01\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\xff\xc4\x00#\x11\x01\x01\x01\x01\x00\x03\x01\x01\x01\x00\x03\x01\x01\x01\x00\x00\x00\x01\x11\x02\x12!1\x03AQ\x13"2aq\x81\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00?\x00\xf9\xa6\x0c\xd6\xc6f\x88\xc1\xde\x88\xc0\x10h\xd3i\xa0T\n\x81P*\x05D\xa5R\xfcF\x08\x9a\xc5j7\x07\xd2k\x15\xb6\xe8\xe0T\x12[\xf5mY\xa0\x9d\x8f\xe2\x11\xb7m\xaa,\xfa\xb2Y#AJA;\xf1Y\xae\x82\xec$\xba\xafr\x9fsQ\xa4\xf6\x92\x90\xd9R\xc8\'\xd9<\n\xca\xb2\xd2\x88ZI\x07L\xf0;\xd08\xb5\xab\xcd;\xfeB\xadX\x96\x1d\xf2\x86\xc4((s\xab\x8e\xfb\x8a\xc5S\xc2\xe6R\x00Z|\xcd\x88\x1e\xd1\xdc\xd2\x07Xp\xa8\x90W\xac\xed27\xfd+B\xe5\x83\xbdJG\x96\xb4\xab}\xa4\xf06\x1b\xed\xde\xb3]\'\xc5\xbb\x1f\xa1\xeb\x8fD)\x1b\x9fQ2N\xe0m\xdb\x8a\x8d/\xd8\'CH#\xcdSeGo1>\xb9\xe4\x0f\xa7;{o\xde\xb2-X\xe4\x86\x81\xf2\xd0\x10\x94\x00\x13\x1b\xc0=\x89\xf...
[2020-12-02 14:30:20,364] [                   HABApp]    ERROR |      new_value = b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x00H\x00H\x00\x00\xff\xdb\x00C\x00\x03\x02\x02\x03\x02\x02\x03\x03\x03\x03\x04\x03\x03\x04\x05\x08\x05\x05\x04\x04\x05\n\x07\x07\x06\x08\x0c\n\x0c\x0c\x0b\n\x0b\x0b\r\x0e\x12\x10\r\x0e\x11\x0e\x0b\x0b\x10\x16\x10\x11\x13\x14\x15\x15\x15\x0c\x0f\x17\x18\x16\x14\x18\x12\x14\x15\x14\xff\xdb\x00C\x01\x03\x04\x04\x05\x04\x05\t\x05\x05\t\x14\r\x0b\r\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\xff\xc0\x00\x11\x08\x02\x80\x02\x80\x03\x01\x11\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1d\x00\x00\x01\x04\x03\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x03\x04\x06\x01\x02\x07\x08\t\xff\xc4\x00S\x10\x00\x01\x03\x03\x03\x02\x05\x01\x06\x03\x05\x06\x03\x05\x01\x11\x01\x02\x03\x11\x00\x04\x05\x12!1\x06A\x07\x13"Qaq\x08\x142\x81\x91\xa1#B\xb1\x15R\xc1\xd1\xf03br\x82\xe1\xf1\x16$\xa2\tCS\x92\xb24c\xa3\xb3\xc2\x17\x18%(5sTdetu\x83\xc3\xff\xc4\x00\x19\x01\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\xff\xc4\x00#\x11\x01\x01\x01\x01\x00\x03\x01\x01\x01\x00\x03\x01\x01\x01\x00\x00\x00\x01\x11\x02\x12!1\x03AQ\x13"2aq\x81\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00?\x00\xf9\xa6\x0c\xd6\xc6f\x88\xc1\xde\x88\xc0\x10h\xd3i\xa0T\n\x81P*\x05D\xa5R\xfcF\x08\x9a\xc5j7\x07\xd2k\x15\xb6\xe8\xe0T\x12[\xf5mY\xa0\x9d\x8f\xe2\x11\xb7m\xaa,\xfa\xb2Y#AJA;\xf1Y\xae\x82\xec$\xba\xafr\x9fsQ\xa4\xf6\x92\x90\xd9R\xc8\'\xd9<\n\xca\xb2\xd2\x88ZI\x07L\xf0;\xd08\xb5\xab\xcd;\xfeB\xadX\x96\x1d\xf2\x86\xc4((s\xab\x8e\xfb\x8a\xc5S\xc2\xe6R\x00Z|\xcd\x88\x1e\xd1\xdc\xd2\x07Xp\xa8\x90W\xac\xed27\xfd+B\xe5\x83\xbdJG\x96\xb4\xab}\xa4\xf06\x1b\xed\xde\xb3]\'\xc5\xbb\x1f\xa1\xeb\x8fD)\x1b\x9fQ2N\xe0m\xdb\x8a\x8d/\xd8\'CH#\xcdSeGo1>\xb9\xe4\x0f\xa7;{o\xde\xb2-X\xe4\x86\x81\xf2\xd0\x10\x94\x00\x13\x1b\xc0=\x89\xf6\xff\x00\\TE\x9b\x14\xb4\xa4\t \xff\x00*\x92O\x1f?\xeb\...
[2020-12-02 14:30:20,365] [                   HABApp]    ERROR |      RawValue = <class 'HABApp.openhab.definitions.values.RawValue'>
[2020-12-02 14:30:20,365] [                   HABApp]    ERROR |     ..................................................
[2020-12-02 14:30:20,365] [                   HABApp]    ERROR |
[2020-12-02 14:30:20,366] [                   HABApp]    ERROR | AssertionError: <class 'bytes'>

I seams that HABApp is not able to receive images

Seem that this error stops all rules from working.

How big are your images? This is a known issue I was not able to fix yet (because there were library changes needed I had to wait for).
For small images it works.

Images are coming from Sonos. Ihave not looked into the size.

I have pushed some changes to the dev branch where the buffer is now 512k instead of 64k.
I think this might be a good trade of between memory consumption and possible image size.

Openhab encodes the images base64 (30% inflation) and in the change event the data is posted two times.
That means it should work now for images up to ~200k.