Shelly Binding

Do you have a clean installation (no release binding, only DEV build, debug enabled). Then post log snippets showing the problem in openhab.log

Okay, took some time, but now I get the following in the log with shelly set to DEBUG:

2026-09-30 18:21:25.238 [DEBUG] [y.internal.handler.ShellyBaseHandler] - shelly1-1axxxxxa: Config: Device address=, HTTP user/password=/***, update interval=60
Events: Button: false, Switch (on/off): false, Push: false, Roller: trueSensor: true, CoIoT: true
Blu Gateway=false, Range Extender: true
Altitude=0
2026-09-30 18:21:25.238 [DEBUG] [y.internal.handler.ShellyBaseHandler] - shelly1-1axxxxxa: Start initializing for thing Shelly 1 Gen4 - 192.168.178.147, type shelly1, Device IP address 192.168.178.147, Device port none, Bluetooth device address none, Gen2: false, isBlu: false, alwaysOn: true, hasBattery: false, CoIoT: true
2026-09-30 18:21:25.291 [DEBUG] [y.internal.handler.ShellyBaseHandler] - shelly1-1axxxxxa: Unexpected API result: 404/Not Found
GET http://192.168.178.147/settings > Not Found
	at org.openhab.binding.shelly.internal.api.ShellyHttpClient.innerRequest(ShellyHttpClient.java:223)
	at org.openhab.binding.shelly.internal.api.ShellyHttpClient.httpRequest(ShellyHttpClient.java:115)
	at org.openhab.binding.shelly.internal.api1.Shelly1HttpApi.getDeviceProfile(Shelly1HttpApi.java:131)
	at org.openhab.binding.shelly.internal.handler.ShellyBaseHandler.initializeThing(ShellyBaseHandler.java:380)
	at org.openhab.binding.shelly.internal.handler.ShellyBaseHandler.lambda$0(ShellyBaseHandler.java:224)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)

That’s strange since I can reach the device at 192.168.178.147 via browser with password only.

In the thing, I have entered the IP and the password, but no user for API access.

All this is the same as with the old firmware when the device was working ok in OH.

The device is accessed via Gen1 api, but it’s a Gen2+ device. Did you added the thing manually?

The regular DEV build is updated: org.openhab.binding.shelly-5.3.0-SNAPSHOT.jar](org.openhab.binding.shelly-5.3.0-SNAPSHOT.jar) · README.md

Merged PRs Overview

Merged PRs since 2026-09-19 · All open PRs

Topic PR # Description Participants
Fix-only #21600 Fix various grammar and typo issues in the English i18n strings jlaur, lsiepel
BLU #21720 Add WS90 Weather Station use-case documentation
#21699: README: WS90 rainSwitch handling
alaub81, dilyanpalauzov, lsiepel, scheuerer
#21797 Add capacitor voltage channel to WS90 weather station
#21631: Shelly WS90 adding channel for…
alaub81, lsiepel
RGBW #21794 Fix power metering, meter reset and ON/OFF state of Plus/Pro RGBW PM andrewfg, lsiepel
Bulb #21808 Add missing power meter channels for Duo Bulb G3 and Multicolor Bulb G3 andrewfg, lsiepel

nice work @markus7017 ! Does ist also have the “running on 5.2.x” fix? So I’m able to install it on my production?

The DEV file which is 2h old, is not working for me on my 5.2.1 OH system.
All my Shelly items are offline..
It looks the dev file is smaller than the older dev file.


Please check Markus if it went normal by uploading to github.

Used now my backup with DEV from the 5.3.0.202609201332,. This is working again.

@scheuerer
ok, new it’s 700 ok, please try again

@alaub81 yes, it runs on 5.2.1 and 5.3.x

@markus7017 : Thanks. It’s works.now in priciple with the 5.3.0.202610031857
Need to check tomorrow, why I cannot add the channel for Capacitor Voltage.on my WS90

PS: After a clean cache, the Capacitor works also.

What do you want to see next?

  • Virtual Components
  • Shelly Pill
  • Shelly Camera
  • Enhancements to Shelly Manager
  • Shelly Wall Display Media Player
  • Shelly Plug PM Gen3
  • Shelly Pro Cover 2PM
  • Energy Meter Data Records
  • Pulse Counter for Shelly Plus UNI
0 voters

@scheuerer @ErikDB @Pedro_Liberal Do you have a Shelly Camera and could support testing?

@Larsen Do you have a Shelly Pill and could support testing?

Not yet a camera. But for this cheap price it would order one, only for playing with it…

I indeed couldn’t contain myself and bought such a device for a non-need :sweat_smile:

Let’s go: [shelly] Support for Shelly Camera · Issue #21865 · openhab/openhab-addons · GitHub

Order successfully placed

I will buy two in the coming month, for use as baby monitors.

@Larsen that’s yours: [shelly] Add support for The Pill by Shelly · Issue #21874 · openhab/openhab-addons · GitHub

@JosuaK see [shelly] Add support for pulse counter of Shelly Plus UNI · Issue #16727 · openhab/openhab-addons · GitHub

@seimenb already pending at [shelly] Support for Shelly Pro Cover 2PM · Issue #15403 · openhab/openhab-addons · GitHub

Plug PM Gen 3 is pending here: [shelly] Support Shelly Plug PM Gen3 (S3PL-30116EU) · Issue #21673 · openhab/openhab-addons · GitHub

and Virtual Components here: [shelly] Virtual components over rpc · Issue #19007 · openhab/openhab-addons · GitHub

@markus7017 (or anyone, really), I’ve got a Shelly Plus 1 Mini which for some reason has been having an unstable connection for years, even though the AP is not 5 meters from it (be it on the floor above it, but at ankle height, but also through some walls and a technical shaft with cables). Maybe the outlet next to the switch means that there’s also just too much ‘electrical magnetism’ around?

In any case, I want to try to connect it to another Shelly Plus 1 Mini via the ‘range extender’. The signal would still have to go to the floor above, but this time straight up. We’ll see.

My question however is whether I have to delete my current Thing in order to create the new Thing that will (hopefully) be discovered via the hub. Or does that newly discovered Thing get a different Thing UID? (I expect the latter, but thought I’d ask first.)

Hi, guys.

I need help adding my new Shelly TRVs to OH.

Background

I’m running OH 5.2.1. I recently purchased a couple of Shelly BLU TRVs as an alternative to the Netatmo valves, and this’s my first experience with Shelly.

I have connected the Shelly BLU Gateway Gen 3 to the cloud account via the Shelly app. Then I updated the firmware of the TRVs via the Shelly BLE app and connected them to the gateway via the normal Shelly app. I’ve given the gateway a fixed IP. Just to test the difference, I’ve encrypted one of the TRVs.

What have I done?

I read the steps in the Discovery of BLU Devices. Shelly - Bindings | openHAB

The binding automatically discovered the gateway, and I added it as a Thing with BLU Gateway Support enabled. The status automatically changed to ONLINE. However, I couldn’t find any scripts when checking the gateway’s settings in the Shelly app.

I clicked on the gateway’s Pair button, and after the thing switched to ONLINE again, I still couldn’t find any script.

I woke the TRVs by rotating the knob, triggered the binding to scan, but nothing was found. Also triggered the scan and then rotated the knob, with the same result.

I unmounted the TRV devices, pressed the only button, and triggered the scan, but nothing was found. The same happened when scanning first and then pressing the button.

I realized that the script (oh-blu-scanner.js) can be intermittently found on the gateway device, but most of the time, when I checked, it was not there.

I tried to manually add the TRVs by using the MAC address as the device’s ID

Binding Documentation

The instructions are confusing when the term “device” is interchangeably used.

  • Make sure a Shelly is nearby the BLU device, and enable Bluetooth on this device (disabling the ‘Bluetooth Gateway’ mode in the Shelly app/UI is recommended).
    • I couldn’t find the “Bluetooth Gateway” option in the settings of the TRVs or the gateway in the Shelly app or the Shelly BLE app. The only similar setting was “Enable Bluetooth device control” in the gateway settings (Settings —> Bluetooth —> Bluetooth settings).
    • The documentation says “and enable Bluetooth on this device”, but it’s not clear which device it means: the “Shelly” (gateway) or the BLU device? I also couldn’t find an option to enable/disable Bluetooth in the TRV or gateway settings in the Shelly or Shelly BLE apps.
  • Add this Thing to openHAB, make sure Thing gets online
    • Is the gateway meant here?

Logs

This is the log during the scan. I pressed the pair button on the TRV device once the script was almost done being uploaded. The TRV was still in BLE mode long after the scan was over.

17:08:20.766 [DEBUG] [.shelly.internal.discovery.ShellyBasicDiscoveryService] - Starting BLU Discovery
17:08:22.163 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Install or restart script oh-blu-scanner.js on Shelly Device
17:08:22.165 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Script will be installed...
17:08:22.286 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Script has been created, id=1
17:08:22.287 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Uploading chunk 1 of script (total 18284 chars, 0 processed)
17:08:22.311 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: NotifyStatus update received: {"src":"shellyblugwg3-b08184eXXXX","dst":"ohshelly-b08184eXXXX-1401","method":"NotifyStatus","params":{"ts":1.79138570217E9}}
17:08:22.317 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: NotifyStatus update received: {"src":"shellyblugwg3-b08184eXXXX","dst":"ohshelly-b08184eXXXX-1401","method":"NotifyStatus","params":{"ts":1.79138570226E9,"sys":{"cfg_rev":92}}}
17:08:22.323 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: NotifyEvent  received: {"src":"shellyblugwg3-b08184eXXXX","dst":"ohshelly-b08184eXXXX-1401","method":"NotifyEvent","params":{"ts":1791385702.26,"events":[{"component":"sys","event":"component_added","target":"script:1","restart_required":false,"ts":1791385702.26,"cfg_rev":92}]}}
17:08:22.324 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Event component_added was not handled
17:08:22.410 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Uploading chunk 2 of script (total 18284 chars, 1024 processed)
17:08:22.768 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Uploading chunk 3 of script (total 18284 chars, 2048 processed)
17:08:22.858 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Uploading chunk 4 of script (total 18284 chars, 3072 processed)
17:08:24.186 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Uploading chunk 5 of script (total 18284 chars, 4096 processed)
17:08:25.310 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Uploading chunk 6 of script (total 18284 chars, 5120 processed)
17:08:25.686 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Uploading chunk 7 of script (total 18284 chars, 6144 processed)
17:08:27.140 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Uploading chunk 8 of script (total 18284 chars, 7168 processed)
17:08:27.817 [DEBUG] [.shelly.internal.discovery.ShellyMDNSDiscoveryParticipant] - shellyblugwg3-b08184eXXXX: Shelly device discovered: IP address=XX.XX.XX.XX
17:08:27.967 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Uploading chunk 9 of script (total 18284 chars, 8192 processed)
17:08:28.111 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Uploading chunk 10 of script (total 18284 chars, 9216 processed)
17:08:28.214 [DEBUG] [.shelly.internal.discovery.ShellyBasicDiscoveryService] - shellyblugwg3-b08184eXXXX: Adding Thing to Inbox (type shellyblugwg3, model S3GW-1DBT001, mode=)
17:08:28.316 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Uploading chunk 11 of script (total 18284 chars, 10240 processed)
17:08:29.081 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Uploading chunk 12 of script (total 18284 chars, 11264 processed)
17:08:29.217 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Uploading chunk 13 of script (total 18284 chars, 12288 processed)
17:08:29.352 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Uploading chunk 14 of script (total 18284 chars, 13312 processed)
17:08:29.829 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Uploading chunk 15 of script (total 18284 chars, 14336 processed)
17:08:30.060 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Uploading chunk 16 of script (total 18284 chars, 15360 processed)
17:08:30.533 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Uploading chunk 17 of script (total 18284 chars, 16384 processed)
17:08:31.915 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Uploading chunk 18 of script (total 18284 chars, 17408 processed)
17:08:32.076 [INFO] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Script oh-blu-scanner.js installed successfully
17:08:32.108 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: NotifyEvent  received: {"src":"shellyblugwg3-b08184eXXXX","dst":"ohshelly-b08184eXXXX-1401","method":"NotifyEvent","params":{"ts":1791385712.04,"events":[{"component":"script:1","id":1,"event":"config_changed","restart_required":false,"ts":1791385712.04,"cfg_rev":92}]}}
17:08:32.109 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Configuration update detected, re-initialize
17:08:35.167 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: BLU Gateway support is enabled for this device
17:08:35.169 [WARN] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Bluetooth will be enabled to activate BLU Gateway mode
17:08:35.170 [INFO] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Setup openHAB BLU Gateway
17:08:36.229 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: NotifyStatus update received: {"src":"shellyblugwg3-b08184eXXXX","dst":"ohshelly-b08184eXXXX-1401","method":"NotifyStatus","params":{"ts":1.79138571598E9}}
17:08:36.352 [DEBUG] [.shelly.internal.discovery.ShellyMDNSDiscoveryParticipant] - shellyblugwg3-b08184eXXXX: Shelly device discovered: IP address=XX.XX.XX.XX
17:08:36.827 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Script oh-blu-scanner.js is already installed, id=1
17:08:37.433 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: NotifyStatus update received: {"src":"shellyblugwg3-b08184eXXXX","dst":"ohshelly-b08184eXXXX-1401","method":"NotifyStatus","params":{"ts":1.7913857174E9}}
17:08:37.577 [DEBUG] [.shelly.internal.discovery.ShellyBasicDiscoveryService] - shellyblugwg3-b08184eXXXX: Adding Thing to Inbox (type shellyblugwg3, model S3GW-1DBT001, mode=)
17:08:39.154 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: NotifyStatus update received: {"src":"shellyblugwg3-b08184eXXXX","dst":"ohshelly-b08184eXXXX-1401","method":"NotifyStatus","params":{"ts":1.79138571913E9,"ble":{}}}
17:08:39.814 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: NotifyStatus update received: {"src":"shellyblugwg3-b08184eXXXX","dst":"ohshelly-b08184eXXXX-1401","method":"NotifyStatus","params":{"ts":1.79138571975E9}}
17:08:41.082 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Delete existing script with id1
17:08:41.164 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: NotifyStatus update received: {"src":"shellyblugwg3-b08184eXXXX","dst":"ohshelly-b08184eXXXX-1401","method":"NotifyStatus","params":{"ts":1.79138572103E9}}
17:08:41.466 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: NotifyEvent  received: {"src":"shellyblugwg3-b08184eXXXX","dst":"ohshelly-b08184eXXXX-1401","method":"NotifyEvent","params":{"ts":1791385721.04,"events":[{"component":"script:1","id":1,"event":"config_changed","restart_required":false,"ts":1791385721.04,"cfg_rev":92}]}}
17:08:41.473 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Configuration update detected, re-initialize
17:08:41.474 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: NotifyStatus update received: {"src":"shellyblugwg3-b08184eXXXX","dst":"ohshelly-b08184eXXXX-1401","method":"NotifyStatus","params":{"ts":1.79138572106E9}}
17:08:44.577 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Script oh-blu-scanner.js was disabled, id=1
17:08:44.601 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: NotifyStatus update received: {"src":"shellyblugwg3-b08184eXXXX","dst":"ohshelly-b08184eXXXX-1401","method":"NotifyStatus","params":{"ts":1.79138572456E9,"sys":{"cfg_rev":93}}}
17:08:44.882 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: NotifyEvent  received: {"src":"shellyblugwg3-b08184eXXXX","dst":"ohshelly-b08184eXXXX-1401","method":"NotifyEvent","params":{"ts":1791385724.56,"events":[{"component":"sys","event":"component_removed","target":"script:1","restart_required":false,"ts":1791385724.56,"cfg_rev":93}]}}
17:08:44.884 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: Event component_removed was not handled
17:08:47.427 [DEBUG] [.shelly.internal.discovery.ShellyMDNSDiscoveryParticipant] - shellyblugwg3-b08184eXXXX: Shelly device discovered: IP address=XX.XX.XX.XX
17:08:47.824 [DEBUG] [.shelly.internal.discovery.ShellyBasicDiscoveryService] - shellyblugwg3-b08184eXXXX: Adding Thing to Inbox (type shellyblugwg3, model S3GW-1DBT001, mode=)
17:08:53.242 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: NotifyStatus update received: {"src":"shellyblugwg3-b08184eXXXX","dst":"ohshelly-b08184eXXXX-1401","method":"NotifyStatus","params":{"ts":1.79138573321E9}}
17:08:53.562 [DEBUG] [.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: NotifyStatus update received: {"src":"shellyblugwg3-b08184eXXXX","dst":"ohshelly-b08184eXXXX-1401","method":"NotifyStatus","params":{"ts":1.79138573321E9}}

This is the log when manually adding the TRV thing:

16:53:53.245[DEBUG] [org.openhab.binding.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: NotifyStatus update received: {"src":"shellyblugwg3-b08184eXXXXX","dst":"ohshelly-b08184eXXXXX-1401","method":"NotifyStatus","params":{"ts":1.79138483321E9}}
16:53:53.256[DEBUG] [org.openhab.binding.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: NotifyStatus update received: {"src":"shellyblugwg3-b08184eXXXXX","dst":"ohshelly-b08184eXXXXX-1401","method":"NotifyStatus","params":{"ts":1.79138483321E9}}
16:54:01.757[DEBUG] [org.openhab.binding.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: NotifyStatus update received: {"src":"shellyblugwg3-b08184eXXXXX","dst":"ohshelly-b08184e4XXXXX-1401","method":"NotifyStatus","params":{"ts":1.79138484173E9}}
16:54:01.764[DEBUG] [org.openhab.binding.shelly.internal.api2.Shelly2ApiRpc] - Gateway 1: NotifyStatus update received: {"src":"shellyblugwg3-b08184XXXXX","dst":"ohshelly-b08184eXXXXX-1401","method":"NotifyStatus","params":{"ts":1.79138484173E9}}
16:54:18.559[DEBUG] [org.openhab.binding.shelly.internal.handler.ShellyBaseHandler] - shellyplugmg3-0892725XXXXX: Status update triggered thing initialization
16:54:18.561[DEBUG] [org.openhab.binding.shelly.internal.handler.ShellyBaseHandler] - shellyplugmg3-0892725XXXXX: Start initializing for thing Plug 1, type shellyplusplug, Device IP address 10.18.18.126, Device port none, Bluetooth device address none, Gen2: true, isBlu: false, alwaysOn: true, hasBattery: false, CoIoT: false
16:54:18.564[INFO] [openhab.event.ThingStatusInfoChangedEvent] - Thing 'shelly:shellyplusplug:0892725XXXXX' changed from OFFLINE (COMMUNICATION_ERROR): Unable to connect to device - NoRouteToHostException: No route to host to ONLINE (CONFIGURATION_PENDING): Device is initializing or in sleep mode.
16:54:21.629[DEBUG] [org.openhab.binding.shelly.internal.api2.Shelly2ApiRpc] - Plug 1: Closing Rpc API (socket is disconnected)
16:54:21.631[INFO] [openhab.event.ThingStatusInfoChangedEvent] - Thing 'shelly:shellyplusplug:0892725XXXXX' changed from ONLINE (CONFIGURATION_PENDING): Device is initializing or in sleep mode. to OFFLINE (COMMUNICATION_ERROR): Unable to connect to device - NoRouteToHostException: No route to host
cloud_download
rectangle_on_rectangle

The BLI TRV is not supported by the binding. The API calls are taking very long, which would require fully asynchronus processing, which is not possible with the binding design. Therefore don‘t expect this for the time being.