Nuimo Integration

This looks like your config file contains errors.

This is my config.yml

openhab_api_url: "http://xxxx:8081/rest"
nuimo_mac_address: "xxxxxx"
bluetooth_adapter: hci0

openhab_sitemap: "nuimo"
openhab_batterylevel_item: "Nuimo_BatteryLevel"   # Name of the Number item that is updated with the battery level of the Nuimo
openhab_autoupdate_sitemap: 60                    # Interval at that openHAB is being polled for sitemap configuration changes in seconds. To turn off autoupdate, use 0.
openhab_slider_null_command: 0                    # Command that should be sent to the Slider if the item state is null

rotation_icon: 2-digit-angular                    # Accepted values: 2-digit-angular, 2-digit-curved, circle
rotation_icon_leading_zero: false                 # Only valid for digit rotation icons: Defines whether there is a leading zero for 1-digit numbers.
rotation_sensitivity: 1.0                         # Defines the number revolutions the wheel needs to reach 100%.
error_icon: "errorExclamationMark"                # The icon shown on the Nuimo if an error occurs during event handling. Recommended values: errorExclamationMark, errorX, errorSmiley

log_file: "nuimo-openhab.log"
log_level: DEBUG
log_stdout: true

# The key mapping in this example file contains 2 modes:
# - the default mode which is used to control the currently the selected app / item
# - the menue mode which allows to select other apps / items
# The menue mode is active while the button is pressed.
# So you can navigate between your apps / items as long as you hold the button.
key_mapping:
    # Default mode is mandatory and the initial key mapping after nuimo startup
    default:
      # The mode can be changed with the MENUE.CHANGEMODE=newmode command. "newmode" must be a mode that is listed in this key mapping
      BUTTON_PRESS: "MENUE.CHANGEMODE=menue"
      BUTTON_HOLD: "MENUE.SHOWAPP"
      BUTTON_CLICK:
        - "OPENHAB.Switch.TOGGLE"
        - "OPENHAB.CustomSwitch.TOGGLEIFPLAYER"   # Workaround making default Player elements work without extra config. Toggles PLAY/PAUSE if it's a player element.
      #SWIPE_UP: "MENUE.PARENT"
      SWIPE_DOWN: "MENUE.SHOWBATTERYLEVEL"
      SWIPE_LEFT:
        - "OPENHAB.CustomSwitch.<<"               # Workaround making default Player elements work without extra config
      SWIPE_RIGHT:
        - "OPENHAB.CustomSwitch.>>"               # Workaround making default Player elements work without extra config
      ROTATION: "OPENHAB.Slider.WHEELDIMMER"
      TOUCH_BOTTOM: "MENUE.SHOWAPP"
      TOUCH_LEFT: "MENUE.SHOWAPP"
      TOUCH_RIGHT: "MENUE.SHOWAPP"
    # More modes can be added here
    menue:
      SWIPE_UP: "MENUE.PARENT"
      SWIPE_DOWN: "MENUE.CHILD"
      SWIPE_LEFT: "MENUE.PREVIOUS"
      SWIPE_RIGHT: "MENUE.NEXT"
      BUTTON_RELEASE: "MENUE.CHANGEMODE=default"
      ROTATION: "MENUE.WHEELNAVIGATION"

# Maps icons to specific actions
command_icon_mapping:
    OPENHAB.CustomSwitch.NEXT: "next"
    OPENHAB.CustomSwitch.PREVIOUS: "previous"
    OPENHAB.CustomSwitch.PLAY: "play"
    OPENHAB.CustomSwitch.PAUSE: "pause"
    OPENHAB.CustomSwitch.ON: "poweron"
    OPENHAB.CustomSwitch.OFF: "poweroff"
    OPENHAB.Switch.ON: "poweron"
    OPENHAB.Switch.OFF: "poweroff"
    OPENHAB.Switch.100: "poweron"
    OPENHAB.Switch.0: "poweroff"

# Defines which command is executed on a TOGGLE action
toggle_mapping:
    "ON": "OFF"
    "OFF": "ON"
    "100": "0"
    "0": "100"
    PLAY: PAUSE
    PAUSE: PLAY
    UP: DOWN
    DOWN: UP
    OPEN: CLOSE
    CLOSE: OPEN

# Defines which command is executed if the state is NULL when toggling or sliding
initial_command:
    Dimmer: "0"
    Switch: "ON"
    Player: PLAY
    Rollershutter: DOWN

You have to adjust the first 3 lines according to your setup. You didnt change the dummy values

I changed these values

openhab_api_url: "http://xxxx:8081/rest"
nuimo_mac_address: "xxxxxx"
bluetooth_adapter: hci0

But I deleted values here via xxx.

My nuimo connects and I can do everything fine only “toggling” not possible…

Or which values are you referring to?

any help is appreciated @pfink

Hi Patrick,
in order to upgrade from OH3.4 to OH 4, I had to completely set up a new server with Raspian bullseye and Java17. After all openHAB is up and running, I installed the Nuimo packages according to your docu and copied the existing config.yml, sitemap and led_icons files.
All works fine - I can connect the nuimo, it get’s loaded with the symbols.
Only when I execute an action (button press, rotate the wheel etc.) on the nuimo, the following error message appears in the log.

the final message “AttributeError: ‘openHAB’ object has no attribute ‘base_url’” is the same as mentioned in the earlier post

2023-07-31 22:31:16.117 INFO config - : Loaded config file from /nuimo-openhab-python/config.yml
2023-07-31 22:31:28.957 INFO main - controller_discovered: Discovered Nuimo controller: c1:e0:4a:65:c2:7f
2023-07-31 22:31:28.958 INFO main - controller_discovered: Found configured Nuimo with MAC address C1:E0:4A:65:C2:7F
2023-07-31 22:31:28.981 INFO app_builder - fetch_sitemap: New/changed sitemap fetched: {‘name’: ‘nuimogordian’, ‘label’: ‘Nuimo Gordian’, ‘link’: ‘http://localhost:8080/rest/sitemaps/nuimogordian’, ‘homepage’: {‘id’: ‘nuimogordian’, ‘title’: ‘Nuimo Gordian’, ‘link’: ‘http://localhost:8080/rest/sitemaps/nuimogordian/nuimogordian’, ‘leaf’: False, ‘timeout’: False, ‘widgets’: [{‘widgetId’: ‘00’, ‘type’: ‘Text’, ‘visibility’: True

‘tags’: , ‘groupNames’: }, ‘widgets’: }]}, ‘widgets’: }]}, ‘widgets’: }]}}
2023-07-31 22:31:28.983 INFO model - init: Create app: Spotify(parent: None)
2023-07-31 22:31:28.985 INFO model - init: Create app: Bastelzimmer(parent: None)
2023-07-31 22:31:28.985 INFO model - init: Create app: Nanoleaf(parent: <nuimo_menue.model.App object at 0xf5f6ad30>)
2023-07-31 22:31:28.986 INFO model - init: Create app: Japanzimmer(parent: <nuimo_menue.model.App object at 0xf5f6ad30>)
2023-07-31 22:31:28.986 INFO model - init: Create app: Tokonomalampe(parent: <nuimo_menue.model.App object at 0xf5f6ad30>)
2023-07-31 22:31:28.986 INFO model - init: Create app: Farbe(parent: <nuimo_menue.model.App object at 0xf5f6ad30>)
2023-07-31 22:31:28.988 INFO listener - started_connecting: Connecting…
2023-07-31 22:31:40.453 INFO main - initialize_controller: Controller and Listener (re-)initialized!
2023-07-31 22:31:42.026 INFO listener - connect_succeeded: Connecting succeeded!
2023-07-31 22:31:53.526 ERROR connection - maybe_handle_message: Exception in handler for D-Bus signal:
Traceback (most recent call last):
File “/usr/lib/python3/dist-packages/dbus/connection.py”, line 232, in maybe_handle_message
self._handler(*args, **kwargs)
File “/usr/local/lib/python3.9/dist-packages/gatt/gatt_linux.py”, line 539, in properties_changed
self.service.device.characteristic_value_updated(characteristic=self, value=bytes(value))
File “/usr/local/lib/python3.9/dist-packages/nuimo/nuimo.py”, line 227, in characteristic_value_updated
{
File “/usr/local/lib/python3.9/dist-packages/nuimo/nuimo.py”, line 244, in _notify_button_event
self._notify_gesture_event(gesture=Gesture.BUTTON_RELEASE if value[0] == 0 else Gesture.BUTTON_PRESS)
File “/usr/local/lib/python3.9/dist-packages/nuimo/nuimo.py”, line 280, in _notify_gesture_event
self.listener.received_gesture_event(GestureEvent(gesture=gesture, value=value))
File “/nuimo-openhab-python/nuimo_menue/listener.py”, line 28, in received_gesture_event
raise error
File “/nuimo-openhab-python/nuimo_menue/listener.py”, line 25, in received_gesture_event
self.handle_extra_events(event)
File “/nuimo-openhab-python/nuimo_menue/listener.py”, line 35, in handle_extra_events
self.handle_gesture_event(event)
File “/nuimo-openhab-python/nuimo_menue/listener.py”, line 68, in handle_gesture_event
gestureResult = self.nuimoMenue.getCurrentApp().getListener().received_gesture_event(event)
File “/nuimo-openhab-python/nuimo_openhab/listener.py”, line 45, in received_gesture_event
return self.handleCommonGesture(event)
File “/nuimo-openhab-python/nuimo_openhab/listener.py”, line 71, in handleCommonGesture
state = requests.get(self.openhab.base_url + “/items/” + widget[“item”][“name”] + “/state”).text
AttributeError: ‘openHAB’ object has no attribute ‘base_url’

Hi,
I just released version 1.3, this should fix the bug. Could you please check and give feedback? Thanks!

BR
Patrick

Hi Patrick,
thanks for the update - it doesn’t solve the problem.
I updated according to your instructions and received the follwoing protocol entries:

Blockquote
openhabian@openhabianmatic:/nuimo-openhab-python $ pip3 install --upgrade -r requirements.txt
Looking in indexes: Simple index, piwheels - Simple index
Requirement already satisfied: pyyaml in /usr/lib/python3/dist-packages (from -r requirements.txt (line 1)) (5.3.1)
Collecting pyyaml
Downloading https://www.piwheels.org/simple/pyyaml/PyYAML-6.0.1-cp39-cp39-linux_armv7l.whl (45 kB)
|████████████████████████████████| 45 kB 524 kB/s
Requirement already satisfied: nuimo in /home/openhabian/.local/lib/python3.9/site-packages (from -r requirements.txt (line 2)) (0.3.6)
Collecting nuimo
Using cached https://www.piwheels.org/simple/nuimo/nuimo-0.3.6-py3-none-any.whl (7.7 kB)
Downloading https://www.piwheels.org/simple/nuimo/nuimo-0.3.5-py3-none-any.whl (7.7 kB)
Requirement already satisfied: python-openhab in /home/openhabian/.local/lib/python3.9/site-packages (from -r requirements.txt (line 3)) (2.17.1)
Collecting python-openhab
Using cached https://www.piwheels.org/simple/python-openhab/python_openhab-2.17.1-py3-none-any.whl (32 kB)
Downloading https://www.piwheels.org/simple/python-openhab/python_openhab-2.17.0-py3-none-any.whl (32 kB)
Requirement already satisfied: gatt>=0.2.4 in /home/openhabian/.local/lib/python3.9/site-packages (from nuimo->-r requirements.txt (line 2)) (0.2.7)
Requirement already satisfied: requests-oauthlib~=1.3 in /home/openhabian/.local/lib/python3.9/site-packages (from python-openhab->-r requirements.txt (line 3)) (1.3.1)
Requirement already satisfied: python-dateutil~=2.8 in /home/openhabian/.local/lib/python3.9/site-packages (from python-openhab->-r requirements.txt (line 3)) (2.8.2)
Requirement already satisfied: requests~=2.26 in /home/openhabian/.local/lib/python3.9/site-packages (from python-openhab->-r requirements.txt (line 3)) (2.31.0)
Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil~=2.8->python-openhab->-r requirements.txt (line 3)) (1.16.0)
Requirement already satisfied: charset-normalizer<4,>=2 in /home/openhabian/.local/lib/python3.9/site-packages (from requests~=2.26->python-openhab->-r requirements.txt (line 3)) (3.2.0)
Requirement already satisfied: idna<4,>=2.5 in /usr/lib/python3/dist-packages (from requests~=2.26->python-openhab->-r requirements.txt (line 3)) (2.10)
Requirement already satisfied: certifi>=2017.4.17 in /usr/lib/python3/dist-packages (from requests~=2.26->python-openhab->-r requirements.txt (line 3)) (2020.6.20)
Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/lib/python3/dist-packages (from requests~=2.26->python-openhab->-r requirements.txt (line 3)) (1.26.5)
Requirement already satisfied: oauthlib>=3.0.0 in /home/openhabian/.local/lib/python3.9/site-packages (from requests-oauthlib~=1.3->python-openhab->-r requirements.txt (line 3)) (3.2.2)
Installing collected packages: pyyaml
Successfully installed pyyaml-6.0.1

After a reboot there are still the same error messages in the nuimo-protocol.

But I found by chance an interesting detail: ONE entry IS working:
I defined this in my sitemap:

Blockquote
sitemap nuimogordian label=“Nuimo Gordian”
{
Text label=“Spotify” icon=“music” {
Default item=SpotifyPlayerBridgeTrackPlayer
Slider item=SpotifyPlayerBridgeDeviceVolume
}

The FF/RW and the loudness rotation commands are working w/o an error message! All other (button press) commands create the above error messages.

[SOLVED]
After another update to the latest version of nuimo-openhab, it is now running stable under OH4.0.2

@pfink Hello I get this error

self.openhab = openHAB(config["openhab_api_url"])
                   ^^^^^^^
NameError: name 'openHAB' is not defined

How can i solve it?

Use the correct config.yml

Please follow all installation and configuration instructions from the README and it‘ll work. If not, please post your config.yml

This is my config

printenv | grep NUIMO
NUIMO_OPENHAB_CONFIG_PATH=/etc/openhab/scripts/nuimo-openhab-python/config.yml

openhab_api_url: "http://smarthome.fritz.box:8080/rest"
nuimo_mac_address: "EB:01:9D:FE:27:B1"
bluetooth_adapter: hci1

openhab_sitemap: "nuimo"
openhab_batterylevel_item: "Nuimo_BatteryLevel"   # Name of the Number item that is updated with the battery level of the Nuimo
openhab_autoupdate_sitemap: 60                    # Interval at that openHAB is being polled for sitemap configuration changes in seconds. To turn off autoupdate, use 0.
openhab_slider_null_command: 0                    # Command that should be sent to the Slider if the item state is null

rotation_icon: 2-digit-angular                    # Accepted values: 2-digit-angular, 2-digit-curved, circle
rotation_icon_leading_zero: false                 # Only valid for digit rotation icons: Defines whether there is a leading zero for 1-digit numbers.
rotation_sensitivity: 1.0                         # Defines the number revolutions the wheel needs to reach 100%.
error_icon: "errorExclamationMark"                # The icon shown on the Nuimo if an error occurs during event handling. Recommended values: errorExclamationMark, errorX, errorSmiley

log_file: "nuimo-openhab.log"
log_level: DEBUG
log_stdout: true

# The key mapping in this example file contains 2 modes:
# - the default mode which is used to control the currently the selected app / item
# - the menue mode which allows to select other apps / items
# The menue mode is active while the button is pressed.
# So you can navigate between your apps / items as long as you hold the button.
key_mapping:
    # Default mode is mandatory and the initial key mapping after nuimo startup
    default:
      # The mode can be changed with the MENUE.CHANGEMODE=newmode command. "newmode" must be a mode that is listed in this key mapping
      BUTTON_PRESS: "MENUE.CHANGEMODE=menue"
      BUTTON_HOLD: "MENUE.SHOWAPP"
      BUTTON_CLICK:
        - "OPENHAB.Switch.TOGGLE"
        - "OPENHAB.CustomSwitch.TOGGLEIFPLAYER"   # Workaround making default Player elements work without extra config. Toggles PLAY/PAUSE if it's a player element.
      #SWIPE_UP: "MENUE.PARENT"
      SWIPE_DOWN: "MENUE.SHOWBATTERYLEVEL"
      SWIPE_LEFT:
        - "OPENHAB.CustomSwitch.<<"               # Workaround making default Player elements work without extra config
      SWIPE_RIGHT:
        - "OPENHAB.CustomSwitch.>>"               # Workaround making default Player elements work without extra config
      ROTATION: "OPENHAB.Slider.WHEELDIMMER"
      TOUCH_BOTTOM: "MENUE.SHOWAPP"
      TOUCH_LEFT: "MENUE.SHOWAPP"
      TOUCH_RIGHT: "MENUE.SHOWAPP"
    # More modes can be added here
    menue:
      SWIPE_UP: "MENUE.PARENT"
      SWIPE_DOWN: "MENUE.CHILD"
      SWIPE_LEFT: "MENUE.PREVIOUS"
      SWIPE_RIGHT: "MENUE.NEXT"
      BUTTON_RELEASE: "MENUE.CHANGEMODE=default"
      ROTATION: "MENUE.WHEELNAVIGATION"

# Maps icons to specific actions
command_icon_mapping:
    OPENHAB.CustomSwitch.NEXT: "next"
    OPENHAB.CustomSwitch.PREVIOUS: "previous"
    OPENHAB.CustomSwitch.PLAY: "play"
    OPENHAB.CustomSwitch.PAUSE: "pause"
    OPENHAB.CustomSwitch.ON: "poweron"
    OPENHAB.CustomSwitch.OFF: "poweroff"
    OPENHAB.Switch.ON: "poweron"
    OPENHAB.Switch.OFF: "poweroff"
    OPENHAB.Switch.100: "poweron"
    OPENHAB.Switch.0: "poweroff"

# Defines which command is executed on a TOGGLE action
toggle_mapping:
    "ON": "OFF"
    "OFF": "ON"
    "100": "0"
    "0": "100"
    PLAY: PAUSE
    PAUSE: PLAY
    UP: DOWN
    DOWN: UP
    OPEN: CLOSE
    CLOSE: OPEN

# Defines which command is executed if the state is NULL when toggling or sliding
initial_command:
    Dimmer: "0"
    Switch: "ON"
    Player: PLAY
    Rollershutter: DOWN

Starting via

sudo python3 /etc/openhab/scripts/nuimo-openhab-python/main.py

log

INFO config - <module>: Loaded config file from config.yml
ERROR main - run: Traceback (most recent call last):
  File "/etc/openhab/scripts/nuimo-openhab-python/main.py", line 14, in run
    self.openhab = openHAB(config["openhab_api_url"])
                   ^^^^^^^
NameError: name 'openHAB' is not defined

INFO main - exit_gracefully: Shutting down gracefully...

Could you please repeat step 4 from installation instructions and post the output here? Thanks.

sudo apt-get install python3-pip python3-dbus python3-gi python3-yaml
[sudo] password for openhabian: 
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
python3-pip is already the newest version (23.0.1+dfsg-1+rpt1).
python3-dbus is already the newest version (1.3.2-4+b1).
python3-gi is already the newest version (3.42.2-3+b1).
python3-yaml is already the newest version (6.0-3+b2).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.


sudo pip3 install --break-system-packages -r requirements.txt
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: pyyaml in /usr/lib/python3/dist-packages (from -r requirements.txt (line 1)) (6.0)
Requirement already satisfied: nuimo in /usr/local/lib/python3.11/dist-packages (from -r requirements.txt (line 2)) (0.3.6)
Requirement already satisfied: python-openhab in /usr/local/lib/python3.11/dist-packages (from -r requirements.txt (line 3)) (2.19.0)
Requirement already satisfied: gatt>=0.2.4 in /usr/local/lib/python3.11/dist-packages (from nuimo->-r requirements.txt (line 2)) (0.2.7)
Requirement already satisfied: python-dateutil~=2.8 in /usr/local/lib/python3.11/dist-packages (from python-openhab->-r requirements.txt (line 3)) (2.8.2)
Requirement already satisfied: pydantic<3 in /usr/local/lib/python3.11/dist-packages (from python-openhab->-r requirements.txt (line 3)) (2.6.2)
Requirement already satisfied: Authlib~=1.2 in /usr/local/lib/python3.11/dist-packages (from python-openhab->-r requirements.txt (line 3)) (1.3.0)
Requirement already satisfied: httpx~=0.24 in /usr/local/lib/python3.11/dist-packages (from python-openhab->-r requirements.txt (line 3)) (0.27.0)
Requirement already satisfied: cryptography in /usr/lib/python3/dist-packages (from Authlib~=1.2->python-openhab->-r requirements.txt (line 3)) (38.0.4)
Requirement already satisfied: anyio in /usr/lib/python3/dist-packages (from httpx~=0.24->python-openhab->-r requirements.txt (line 3)) (3.6.2)
Requirement already satisfied: certifi in /usr/lib/python3/dist-packages (from httpx~=0.24->python-openhab->-r requirements.txt (line 3)) (2022.9.24)
Requirement already satisfied: httpcore==1.* in /usr/local/lib/python3.11/dist-packages (from httpx~=0.24->python-openhab->-r requirements.txt (line 3)) (1.0.4)
Requirement already satisfied: idna in /usr/lib/python3/dist-packages (from httpx~=0.24->python-openhab->-r requirements.txt (line 3)) (3.3)
Requirement already satisfied: sniffio in /usr/lib/python3/dist-packages (from httpx~=0.24->python-openhab->-r requirements.txt (line 3)) (1.2.0)
Requirement already satisfied: h11<0.15,>=0.13 in /usr/lib/python3/dist-packages (from httpcore==1.*->httpx~=0.24->python-openhab->-r requirements.txt (line 3)) (0.14.0)
Requirement already satisfied: annotated-types>=0.4.0 in /usr/local/lib/python3.11/dist-packages (from pydantic<3->python-openhab->-r requirements.txt (line 3)) (0.6.0)
Requirement already satisfied: pydantic-core==2.16.3 in /usr/local/lib/python3.11/dist-packages (from pydantic<3->python-openhab->-r requirements.txt (line 3)) (2.16.3)
Requirement already satisfied: typing-extensions>=4.6.1 in /usr/local/lib/python3.11/dist-packages (from pydantic<3->python-openhab->-r requirements.txt (line 3)) (4.10.0)
Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil~=2.8->python-openhab->-r requirements.txt (line 3)) (1.16.0)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

The error happens because the python-openhab project did an API-breaking change. I (hopefully) adjusted my code accordingly now, but I didn’t have the time to test it yet.

I hope it works for you. Just switch to the master branch and pull the latest change from GitHub. If you’re not so familiar with git, you can also just delete the nuimo-openhab-python folder and make a new clone with this command: git clone --recurse-submodules https://github.com/pfink/nuimo-openhab-python (please make sure you save your config.yml before :wink: )

Please give me feedback if it worked for you :slight_smile:

Thanks,
Patrick

1 Like

Output is now

cat nuimo-openhab.log 
2024-02-27 20:49:35.822 INFO config - <module>: Loaded config file from config.yml
2024-02-27 20:49:37.241 DEBUG _config - load_ssl_context: load_ssl_context verify=True cert=None trust_env=True http2=False
2024-02-27 20:49:37.247 DEBUG _config - load_ssl_context_verify: load_verify_locations cafile='/etc/ssl/certs/ca-certificates.crt'

is this correct?

There should be more when you connect your nuimo

looks good…not perfect but close to :slight_smile: I guess a configuration issue?

2024-02-27 22:20:13.207 ERROR connection - maybe_handle_message: Exception in handler for D-Bus signal:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/dbus/connection.py", line 218, in maybe_handle_message
    self._handler(*args, **kwargs)
  File "/usr/local/lib/python3.11/dist-packages/gatt/gatt_linux.py", line 539, in properties_changed
    self.service.device.characteristic_value_updated(characteristic=self, value=bytes(value))
  File "/usr/local/lib/python3.11/dist-packages/nuimo/nuimo.py", line 227, in characteristic_value_updated
    {
KeyError: dbus.String('00002a26-0000-1000-8000-00805f9b34fb', variant_level=1)
2024-02-27 22:20:13.489 ERROR connection - maybe_handle_message: Exception in handler for D-Bus signal:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/dbus/connection.py", line 218, in maybe_handle_message
    self._handler(*args, **kwargs)
  File "/usr/local/lib/python3.11/dist-packages/gatt/gatt_linux.py", line 539, in properties_changed
    self.service.device.characteristic_value_updated(characteristic=self, value=bytes(value))
  File "/usr/local/lib/python3.11/dist-packages/nuimo/nuimo.py", line 227, in characteristic_value_updated
    {
  File "/usr/local/lib/python3.11/dist-packages/nuimo/nuimo.py", line 268, in _notify_rotation_event
    self._notify_gesture_event(gesture=Gesture.ROTATION, value=rotation_value)
  File "/usr/local/lib/python3.11/dist-packages/nuimo/nuimo.py", line 280, in _notify_gesture_event
    self.listener.received_gesture_event(GestureEvent(gesture=gesture, value=value))
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_menue/listener.py", line 28, in received_gesture_event
    raise error
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_menue/listener.py", line 24, in received_gesture_event
    self.handle_gesture_event(event)
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_menue/listener.py", line 68, in handle_gesture_event
    gestureResult = self.nuimoMenue.getCurrentApp().getListener().received_gesture_event(event)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/listener.py", line 41, in received_gesture_event
    return self.handleRotation(event)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/listener.py", line 105, in handleRotation
    return self.handleSliders(event.value)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/util/threading.py", line 9, in synced_func
    return func(*args, **kws)
           ^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/listener.py", line 121, in handleSliders
    self.openhab.req_post("/items/" + widget["item"]["name"], "REFRESH")
                                      ~~~~~~^^^^^^^^
KeyError: 'item'
2024-02-27 22:20:13.577 DEBUG listener - handleSliders: Old state: 0
2024-02-27 22:20:13.578 DEBUG listener - handleSliders: New state: 6
2024-02-27 22:20:13.578 DEBUG listener - handleSliders: Sending command...
2024-02-27 22:20:13.578 ERROR connection - maybe_handle_message: Exception in handler for D-Bus signal:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/dbus/connection.py", line 218, in maybe_handle_message
    self._handler(*args, **kwargs)
  File "/usr/local/lib/python3.11/dist-packages/gatt/gatt_linux.py", line 539, in properties_changed
    self.service.device.characteristic_value_updated(characteristic=self, value=bytes(value))
  File "/usr/local/lib/python3.11/dist-packages/nuimo/nuimo.py", line 227, in characteristic_value_updated
    {
  File "/usr/local/lib/python3.11/dist-packages/nuimo/nuimo.py", line 268, in _notify_rotation_event
    self._notify_gesture_event(gesture=Gesture.ROTATION, value=rotation_value)
  File "/usr/local/lib/python3.11/dist-packages/nuimo/nuimo.py", line 280, in _notify_gesture_event
    self.listener.received_gesture_event(GestureEvent(gesture=gesture, value=value))
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_menue/listener.py", line 28, in received_gesture_event
    raise error
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_menue/listener.py", line 24, in received_gesture_event
    self.handle_gesture_event(event)
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_menue/listener.py", line 68, in handle_gesture_event
    gestureResult = self.nuimoMenue.getCurrentApp().getListener().received_gesture_event(event)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/listener.py", line 41, in received_gesture_event
    return self.handleRotation(event)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/listener.py", line 105, in handleRotation
    return self.handleSliders(event.value)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/util/threading.py", line 9, in synced_func
    return func(*args, **kws)
           ^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/listener.py", line 153, in handleSliders
    self.openhab.req_post("/items/" + widget["item"]["name"], str(self.lastSliderState))
                                      ~~~~~~^^^^^^^^
KeyError: 'item'
2024-02-27 22:20:13.713 DEBUG listener - handleSliders: Old state: 6
2024-02-27 22:20:13.714 DEBUG listener - handleSliders: New state: 7
2024-02-27 22:20:13.714 DEBUG listener - handleSliders: Sending command...
2024-02-27 22:20:13.714 ERROR connection - maybe_handle_message: Exception in handler for D-Bus signal:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/dbus/connection.py", line 218, in maybe_handle_message
    self._handler(*args, **kwargs)
  File "/usr/local/lib/python3.11/dist-packages/gatt/gatt_linux.py", line 539, in properties_changed
    self.service.device.characteristic_value_updated(characteristic=self, value=bytes(value))
  File "/usr/local/lib/python3.11/dist-packages/nuimo/nuimo.py", line 227, in characteristic_value_updated
    {
  File "/usr/local/lib/python3.11/dist-packages/nuimo/nuimo.py", line 268, in _notify_rotation_event
    self._notify_gesture_event(gesture=Gesture.ROTATION, value=rotation_value)
  File "/usr/local/lib/python3.11/dist-packages/nuimo/nuimo.py", line 280, in _notify_gesture_event
    self.listener.received_gesture_event(GestureEvent(gesture=gesture, value=value))
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_menue/listener.py", line 28, in received_gesture_event
    raise error
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_menue/listener.py", line 24, in received_gesture_event
    self.handle_gesture_event(event)
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_menue/listener.py", line 68, in handle_gesture_event
    gestureResult = self.nuimoMenue.getCurrentApp().getListener().received_gesture_event(event)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/listener.py", line 41, in received_gesture_event
    return self.handleRotation(event)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/listener.py", line 105, in handleRotation
    return self.handleSliders(event.value)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/util/threading.py", line 9, in synced_func
    return func(*args, **kws)
           ^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/listener.py", line 153, in handleSliders
    self.openhab.req_post("/items/" + widget["item"]["name"], str(self.lastSliderState))
                                      ~~~~~~^^^^^^^^
KeyError: 'item'
2024-02-27 22:20:13.850 DEBUG listener - handleSliders: Old state: 7
2024-02-27 22:20:13.850 DEBUG listener - handleSliders: New state: 6
2024-02-27 22:20:13.850 DEBUG listener - handleSliders: Sending command...
2024-02-27 22:20:13.851 ERROR connection - maybe_handle_message: Exception in handler for D-Bus signal:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/dbus/connection.py", line 218, in maybe_handle_message
    self._handler(*args, **kwargs)
  File "/usr/local/lib/python3.11/dist-packages/gatt/gatt_linux.py", line 539, in properties_changed
    self.service.device.characteristic_value_updated(characteristic=self, value=bytes(value))
  File "/usr/local/lib/python3.11/dist-packages/nuimo/nuimo.py", line 227, in characteristic_value_updated
    {
  File "/usr/local/lib/python3.11/dist-packages/nuimo/nuimo.py", line 268, in _notify_rotation_event
    self._notify_gesture_event(gesture=Gesture.ROTATION, value=rotation_value)
  File "/usr/local/lib/python3.11/dist-packages/nuimo/nuimo.py", line 280, in _notify_gesture_event
    self.listener.received_gesture_event(GestureEvent(gesture=gesture, value=value))
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_menue/listener.py", line 28, in received_gesture_event
    raise error
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_menue/listener.py", line 24, in received_gesture_event
    self.handle_gesture_event(event)
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_menue/listener.py", line 68, in handle_gesture_event
    gestureResult = self.nuimoMenue.getCurrentApp().getListener().received_gesture_event(event)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/listener.py", line 41, in received_gesture_event
    return self.handleRotation(event)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/listener.py", line 105, in handleRotation
    return self.handleSliders(event.value)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/util/threading.py", line 9, in synced_func
    return func(*args, **kws)
           ^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/listener.py", line 153, in handleSliders
    self.openhab.req_post("/items/" + widget["item"]["name"], str(self.lastSliderState))
                                      ~~~~~~^^^^^^^^
KeyError: 'item'
2024-02-27 22:20:13.893 DEBUG listener - handleSliders: Old state: 6
2024-02-27 22:20:13.893 DEBUG listener - handleSliders: New state: 4
2024-02-27 22:20:13.894 DEBUG listener - handleSliders: Sending command...
2024-02-27 22:20:13.894 ERROR connection - maybe_handle_message: Exception in handler for D-Bus signal:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/dbus/connection.py", line 218, in maybe_handle_message
    self._handler(*args, **kwargs)
  File "/usr/local/lib/python3.11/dist-packages/gatt/gatt_linux.py", line 539, in properties_changed
    self.service.device.characteristic_value_updated(characteristic=self, value=bytes(value))
  File "/usr/local/lib/python3.11/dist-packages/nuimo/nuimo.py", line 227, in characteristic_value_updated
    {
  File "/usr/local/lib/python3.11/dist-packages/nuimo/nuimo.py", line 268, in _notify_rotation_event
    self._notify_gesture_event(gesture=Gesture.ROTATION, value=rotation_value)
  File "/usr/local/lib/python3.11/dist-packages/nuimo/nuimo.py", line 280, in _notify_gesture_event
    self.listener.received_gesture_event(GestureEvent(gesture=gesture, value=value))
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_menue/listener.py", line 28, in received_gesture_event
    raise error
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_menue/listener.py", line 24, in received_gesture_event
    self.handle_gesture_event(event)
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_menue/listener.py", line 68, in handle_gesture_event
    gestureResult = self.nuimoMenue.getCurrentApp().getListener().received_gesture_event(event)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/listener.py", line 41, in received_gesture_event
    return self.handleRotation(event)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/listener.py", line 105, in handleRotation
    return self.handleSliders(event.value)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/util/threading.py", line 9, in synced_func
    return func(*args, **kws)
           ^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/listener.py", line 153, in handleSliders
    self.openhab.req_post("/items/" + widget["item"]["name"], str(self.lastSliderState))
                                      ~~~~~~^^^^^^^^
KeyError: 'item'
2024-02-27 22:20:14.028 DEBUG listener - handleSliders: Old state: 4
2024-02-27 22:20:14.028 DEBUG listener - handleSliders: New state: 2
2024-02-27 22:20:14.029 DEBUG listener - handleSliders: Sending command...
2024-02-27 22:20:14.031 ERROR connection - maybe_handle_message: Exception in handler for D-Bus signal:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/dbus/connection.py", line 218, in maybe_handle_message
    self._handler(*args, **kwargs)
  File "/usr/local/lib/python3.11/dist-packages/gatt/gatt_linux.py", line 539, in properties_changed
    self.service.device.characteristic_value_updated(characteristic=self, value=bytes(value))
  File "/usr/local/lib/python3.11/dist-packages/nuimo/nuimo.py", line 227, in characteristic_value_updated
    {
  File "/usr/local/lib/python3.11/dist-packages/nuimo/nuimo.py", line 268, in _notify_rotation_event
    self._notify_gesture_event(gesture=Gesture.ROTATION, value=rotation_value)
  File "/usr/local/lib/python3.11/dist-packages/nuimo/nuimo.py", line 280, in _notify_gesture_event
    self.listener.received_gesture_event(GestureEvent(gesture=gesture, value=value))
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_menue/listener.py", line 28, in received_gesture_event
    raise error
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_menue/listener.py", line 24, in received_gesture_event
    self.handle_gesture_event(event)
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_menue/listener.py", line 68, in handle_gesture_event
    gestureResult = self.nuimoMenue.getCurrentApp().getListener().received_gesture_event(event)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/listener.py", line 41, in received_gesture_event
    return self.handleRotation(event)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/listener.py", line 105, in handleRotation
    return self.handleSliders(event.value)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/util/threading.py", line 9, in synced_func
    return func(*args, **kws)
           ^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/listener.py", line 153, in handleSliders
    self.openhab.req_post("/items/" + widget["item"]["name"], str(self.lastSliderState))
                                      ~~~~~~^^^^^^^^
KeyError: 'item'
2024-02-27 22:20:14.163 DEBUG listener - handleSliders: Old state: 2
2024-02-27 22:20:14.163 DEBUG listener - handleSliders: New state: 0
2024-02-27 22:20:14.164 DEBUG listener - handleSliders: Sending command...
2024-02-27 22:20:14.166 ERROR connection - maybe_handle_message: Exception in handler for D-Bus signal:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/dbus/connection.py", line 218, in maybe_handle_message
    self._handler(*args, **kwargs)
  File "/usr/local/lib/python3.11/dist-packages/gatt/gatt_linux.py", line 539, in properties_changed
    self.service.device.characteristic_value_updated(characteristic=self, value=bytes(value))
  File "/usr/local/lib/python3.11/dist-packages/nuimo/nuimo.py", line 227, in characteristic_value_updated
    {
  File "/usr/local/lib/python3.11/dist-packages/nuimo/nuimo.py", line 268, in _notify_rotation_event
    self._notify_gesture_event(gesture=Gesture.ROTATION, value=rotation_value)
  File "/usr/local/lib/python3.11/dist-packages/nuimo/nuimo.py", line 280, in _notify_gesture_event
    self.listener.received_gesture_event(GestureEvent(gesture=gesture, value=value))
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_menue/listener.py", line 28, in received_gesture_event
    raise error
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_menue/listener.py", line 24, in received_gesture_event
    self.handle_gesture_event(event)
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_menue/listener.py", line 68, in handle_gesture_event
    gestureResult = self.nuimoMenue.getCurrentApp().getListener().received_gesture_event(event)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/listener.py", line 41, in received_gesture_event
    return self.handleRotation(event)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/listener.py", line 105, in handleRotation
    return self.handleSliders(event.value)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/util/threading.py", line 9, in synced_func
    return func(*args, **kws)
           ^^^^^^^^^^^^^^^^^^
  File "/etc/openhab/scripts/nuimo-openhab-python/nuimo_openhab/listener.py", line 153, in handleSliders
    self.openhab.req_post("/items/" + widget["item"]["name"], str(self.lastSliderState))
                                      ~~~~~~^^^^^^^^
KeyError: 'item'

Thank you :slight_smile:

I guess. If you post your sitemap, I can may help if you like.

this is my sitemap

sitemap nuimo label="Nuimo"
{
    Text label="Multiroom Audio System" icon="music" {
        Slider item=VolumioVolume

        Text label="Volumio" icon="letterB" {
            Default item=Volumio
            Slider item=VolumioVolume
        }
    }
}

Do all elements of the sitemap work when you open and use them in Basic UI?