Switchable power plug with status light and child lock
personally
TRETAKT
smart-plug
Switchable plug with electricity measurements
personally
INSPELNING
speaker
Speaker with player activities
personally
SYMFONISK
sound-controller
Controller for speakers
no
SYMFONISK, TRÅDFRI
contact-sensor
Sensor tracking if windows or doors are open
personally
PARASOLL
water-sensor
Sensor to detect water leaks
no
BADRING
repeater
Repeater to strengthen signal
personally
TRÅDFRI
scene
Scene from IKEA home smart App which can be triggered
personally
-
Changelog
Version 0.4-alpha
Channels
– json channels removed
– ota-status removed advanced attribute
– links and link-candidates marked as advanced due to usage only in setup stage
breaking change in several channels which are now linked to system channels
– power
– light brightness, color-temperature and color
– motion detection
– media control, volume and mute
– battery-level
Air Purifier: manual fan speed channel
Smart Power Plug (INSPELNING): command reset-date possible for individual energy measurements
Stability: Watchdog added to check connection towards gateway
Exciting! I’m tempted to get a DIRIGERA to help you test, but I won’t be near an IKEA until late December.
Glancing briefly through the readme, it occurs to me to wonder if there are OH naming conventions for channel names. I don’t think so (?), but my experience is that power-state would typically just be state, and ota-status would be otaStatus. It’s always nice to standardize terminology whenever possible.
Will it work with non-IKEA devices that follow the Zigbee protocol?
There are guidelines regarding syntax and channels shall be named lower-case-hyphen. So otaStatus won’t be valid.
Regarding semantics I don’t think so. I scanned through all public bindings and didn’t find anything like otastatus or derivates.
I found state too generic. There’s also an ota-state so seemed logic for me to give it the power prefix. Let’s in the review after opening th PR.
It should from product description but I cannot personally test it. I saw in the Partner ProjectsLeggin and dvdgeisler some working examples.
In the top post there’s a table with IKEA products and I hope the community helps me to get all devices tested and also extend the table with other working products.
Thanks for the info. I just looked at the Astro binding, which is ancient. Good to know that new bindings use hyphens.
I assumed that’s why you chose power-state. I’d personally go with state as referring to the device’s generic state of being, but that’s just an opinion.
That’s what led me to wonder about non-IKEA devices. Perhaps it’s worth adding a statement that other devices should work as long as they follow the Zigbee spec (but no guarantees).
You could also rename the column from “Products” to “IKEA devices”.
If IKEA does a free-shipping offer, I’ll order one to help you out!
Wow, I didn’t expect that. I don’t have any blinds so I wasn’t able to test it in beforehand. This is a (sorry for the wordplay) blind implementation and great to hear that it works out.
Please check out everyting is working and then I’m able to change the tested column from no to community.
It occurs to me to check if you’re aware of the Matter binding that’s also in the works. Since DIRIGERA is now Matter-enabled, there will be some duplication in functionality.
I don’t think that’s a bad thing since each binding serves a different purpose and users may prefer one or the other, but wanted to ensure you know about it. It totally slipped my mind yesterday.
@g_g_rich may have more insight since I think they’ve tested both bindings now.
Don’t know what Matter Binding you refer to but in community search I find only discussions approx 2 years old. Also Marketplace seems to have no Matter Binding.
To be sure this binding isn’t coming out of the blue. It’s mainly based on repo leggin dirigera which seems to be well maintained.
Binding currently in heavy development, not in marketplace, but available for download.
Not all Dirigera devices are exposed to Matter, and if I read the json correctly, not all channels are available in Matter. Of course this may change.
@rpwong I agree, I think both bindings have their place, and I will continue to test and use both. A dedicated binding usually is able to have access to a more complete feature set. Dan is working on Matter exposing OpenHAB items as endpoints.
@weymann I am amazed how complete your binding is with support of all the channels and devices. Nice work. Going to take me a while to test out my devices with the various channels.
@weymann, I’ve configured my bridge through textual file, however, any time the file gets reloaded, the binding is asking me to again press the button on the Dirigera hub to get a new token. This also happens during a reboot.
Ok, problem is I stored token using key device id but this doesn’t work if it’s not known at the beginning. I’ll stiore it with key ipAdress and now it should be fine.
Binding is replaced in top post.
Edit:
If you replace in /var/lib/openhab/jsondb/dirigera.json the device id in green with your IP address and do a reboot you shouldn’t need a new pairing.
I found the binding by coincidence in the OpenHAB Community Marketplace 2 days ago and spontaneously installed it. 2 weeks ago, I bought a Dirigera Hub and obviously wasn’t able to connect it to OpenHAB, yet. So, I was excited.
Unfortunately, auto-discovery doesn’t find anything, frontail just mentions the following:
I also tried to place the JAR file directly in the addons folder (after uninstalling the binding, of course ), getting the same result.
Manually adding a Dirigera gateway through the local IP address leaves the device in status “Uninitialized”, even pressing the “Action” button on the hub does nothing.
But frontail gives a “slightly” more detailed error:
Expand
2024-11-07 09:42:23.854 [ERROR] [.AbstractFaultChainInitiatorObserver] - An unexpected error occurred during error handling. No further error processing will occur. org.apache.cxf.interceptor.Fault: 'java.util.concurrent.ScheduledExecutorService org.openhab.core.common.ThreadPoolManager.getPoolBasedSequentialScheduledExecutorService(java.lang.String, java.lang.String)' at org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:162) ~[bundleFile:3.6.2] at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:128) ~[bundleFile:3.6.2] at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:201) ~[bundleFile:3.6.2] at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:104) ~[bundleFile:3.6.2] at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59) ~[bundleFile:3.6.2] at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:96) ~[bundleFile:3.6.2] at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) ~[bundleFile:3.6.2] at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) ~[bundleFile:3.6.2] at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:265) ~[bundleFile:3.6.2] at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234) ~[bundleFile:3.6.2] at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208) ~[bundleFile:3.6.2] at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160) ~[bundleFile:3.6.2] at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:225) ~[bundleFile:3.6.2] at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:304) ~[bundleFile:3.6.2] at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:217) ~[bundleFile:3.6.2] at javax.servlet.http.HttpServlet.service(HttpServlet.java:517) ~[bundleFile:4.0.4] at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:279) ~[bundleFile:3.6.2] at org.ops4j.pax.web.service.spi.servlet.OsgiInitializedServlet.service(OsgiInitializedServlet.java:102) ~[bundleFile:?] at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656) ~[bundleFile:9.4.52.v20230823] at org.ops4j.pax.web.service.spi.servlet.OsgiFilterChain.doFilter(OsgiFilterChain.java:100) ~[bundleFile:?] at org.ops4j.pax.web.service.jetty.internal.PaxWebServletHandler.doHandle(PaxWebServletHandler.java:320) ~[bundleFile:?] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:234) ~[bundleFile:9.4.52.v20230823] at org.ops4j.pax.web.service.jetty.internal.PrioritizedHandlerCollection.handle(PrioritizedHandlerCollection.java:96) ~[bundleFile:?] at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:722) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732) [bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479) [bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) [bundleFile:9.4.52.v20230823] at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) [bundleFile:9.4.52.v20230823] at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) [bundleFile:9.4.52.v20230823] at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) [bundleFile:9.4.52.v20230823] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) [bundleFile:9.4.52.v20230823] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) [bundleFile:9.4.52.v20230823] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) [bundleFile:9.4.52.v20230823] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) [bundleFile:9.4.52.v20230823] at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) [bundleFile:9.4.52.v20230823] at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) [bundleFile:9.4.52.v20230823] at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) [bundleFile:9.4.52.v20230823] at java.lang.Thread.run(Thread.java:840) [?:?] Caused by: java.lang.NoSuchMethodError: 'java.util.concurrent.ScheduledExecutorService org.openhab.core.common.ThreadPoolManager.getPoolBasedSequentialScheduledExecutorService(java.lang.String, java.lang.String)' at org.openhab.binding.dirigera.internal.handler.DirigeraHandler.<init>(DirigeraHandler.java:140) ~[?:?] at org.openhab.binding.dirigera.internal.DirigeraHandlerFactory.createHandler(DirigeraHandlerFactory.java:117) ~[?:?] at org.openhab.core.thing.binding.BaseThingHandlerFactory.registerHandler(BaseThingHandlerFactory.java:129) ~[?:?] at org.openhab.core.thing.internal.ThingManagerImpl.doRegisterHandler(ThingManagerImpl.java:531) ~[?:?] at org.openhab.core.thing.internal.ThingManagerImpl.registerHandler(ThingManagerImpl.java:512) ~[?:?] at org.openhab.core.thing.internal.ThingManagerImpl.registerAndInitializeHandler(ThingManagerImpl.java:927) ~[?:?] at org.openhab.core.thing.internal.ThingManagerImpl.thingAdded(ThingManagerImpl.java:359) ~[?:?] at org.openhab.core.thing.internal.ThingRegistryImpl.notifyTrackers(ThingRegistryImpl.java:213) ~[?:?] at org.openhab.core.thing.internal.ThingRegistryImpl.notifyListenersAboutAddedElement(ThingRegistryImpl.java:132) ~[?:?] at org.openhab.core.thing.internal.ThingRegistryImpl.notifyListenersAboutAddedElement(ThingRegistryImpl.java:1) ~[?:?] at org.openhab.core.common.registry.AbstractRegistry.added(AbstractRegistry.java:175) ~[?:?] at org.openhab.core.common.registry.AbstractRegistry.added(AbstractRegistry.java:1) ~[?:?] at org.openhab.core.common.registry.AbstractProvider.notifyListeners(AbstractProvider.java:60) ~[?:?] at org.openhab.core.common.registry.AbstractProvider.notifyListeners(AbstractProvider.java:79) ~[?:?] at org.openhab.core.common.registry.AbstractProvider.notifyListenersAboutAddedElement(AbstractProvider.java:83) ~[?:?] at org.openhab.core.common.registry.AbstractManagedProvider.add(AbstractManagedProvider.java:66) ~[?:?] at org.openhab.core.common.registry.AbstractRegistry.add(AbstractRegistry.java:354) ~[?:?] at org.openhab.core.io.rest.core.internal.thing.ThingResource.create(ThingResource.java:300) ~[?:?] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:179) ~[bundleFile:3.6.2] at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96) ~[bundleFile:3.6.2] ... 53 more 2024-11-07 09:42:23.871 [WARN ] [org.eclipse.jetty.server.HttpChannel] - /rest/things org.apache.cxf.interceptor.Fault: 'java.util.concurrent.ScheduledExecutorService org.openhab.core.common.ThreadPoolManager.getPoolBasedSequentialScheduledExecutorService(java.lang.String, java.lang.String)' at org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:162) ~[?:?] at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:128) ~[?:?] at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:201) ~[?:?] at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:104) ~[?:?] at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59) ~[?:?] at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:96) ~[?:?] at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) ~[?:?] at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) ~[?:?] at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:265) ~[?:?] at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234) ~[?:?] at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208) ~[?:?] at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160) ~[?:?] at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:225) ~[?:?] at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:304) ~[?:?] at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:217) ~[?:?] at javax.servlet.http.HttpServlet.service(HttpServlet.java:517) ~[bundleFile:4.0.4] at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:279) ~[?:?] at org.ops4j.pax.web.service.spi.servlet.OsgiInitializedServlet.service(OsgiInitializedServlet.java:102) ~[?:?] at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) ~[?:?] at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656) ~[?:?] at org.ops4j.pax.web.service.spi.servlet.OsgiFilterChain.doFilter(OsgiFilterChain.java:100) ~[?:?] at org.ops4j.pax.web.service.jetty.internal.PaxWebServletHandler.doHandle(PaxWebServletHandler.java:320) ~[?:?] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600) ~[?:?] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505) ~[?:?] at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:234) ~[bundleFile:9.4.52.v20230823] at org.ops4j.pax.web.service.jetty.internal.PrioritizedHandlerCollection.handle(PrioritizedHandlerCollection.java:96) ~[?:?] at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:722) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732) ~[bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479) [bundleFile:9.4.52.v20230823] at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) [bundleFile:9.4.52.v20230823] at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) [bundleFile:9.4.52.v20230823] at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) [bundleFile:9.4.52.v20230823] at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) [bundleFile:9.4.52.v20230823] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) [bundleFile:9.4.52.v20230823] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) [bundleFile:9.4.52.v20230823] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) [bundleFile:9.4.52.v20230823] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) [bundleFile:9.4.52.v20230823] at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) [bundleFile:9.4.52.v20230823] at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) [bundleFile:9.4.52.v20230823] at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) [bundleFile:9.4.52.v20230823] at java.lang.Thread.run(Thread.java:840) [?:?] Caused by: java.lang.NoSuchMethodError: 'java.util.concurrent.ScheduledExecutorService org.openhab.core.common.ThreadPoolManager.getPoolBasedSequentialScheduledExecutorService(java.lang.String, java.lang.String)' at org.openhab.binding.dirigera.internal.handler.DirigeraHandler.<init>(DirigeraHandler.java:140) ~[?:?] at org.openhab.binding.dirigera.internal.DirigeraHandlerFactory.createHandler(DirigeraHandlerFactory.java:117) ~[?:?] at org.openhab.core.thing.binding.BaseThingHandlerFactory.registerHandler(BaseThingHandlerFactory.java:129) ~[?:?] at org.openhab.core.thing.internal.ThingManagerImpl.doRegisterHandler(ThingManagerImpl.java:531) ~[?:?] at org.openhab.core.thing.internal.ThingManagerImpl.registerHandler(ThingManagerImpl.java:512) ~[?:?] at org.openhab.core.thing.internal.ThingManagerImpl.registerAndInitializeHandler(ThingManagerImpl.java:927) ~[?:?] at org.openhab.core.thing.internal.ThingManagerImpl.thingAdded(ThingManagerImpl.java:359) ~[?:?] at org.openhab.core.thing.internal.ThingRegistryImpl.notifyTrackers(ThingRegistryImpl.java:213) ~[?:?] at org.openhab.core.thing.internal.ThingRegistryImpl.notifyListenersAboutAddedElement(ThingRegistryImpl.java:132) ~[?:?] at org.openhab.core.thing.internal.ThingRegistryImpl.notifyListenersAboutAddedElement(ThingRegistryImpl.java:1) ~[?:?] at org.openhab.core.common.registry.AbstractRegistry.added(AbstractRegistry.java:175) ~[?:?] at org.openhab.core.common.registry.AbstractRegistry.added(AbstractRegistry.java:1) ~[?:?] at org.openhab.core.common.registry.AbstractProvider.notifyListeners(AbstractProvider.java:60) ~[?:?] at org.openhab.core.common.registry.AbstractProvider.notifyListeners(AbstractProvider.java:79) ~[?:?] at org.openhab.core.common.registry.AbstractProvider.notifyListenersAboutAddedElement(AbstractProvider.java:83) ~[?:?] at org.openhab.core.common.registry.AbstractManagedProvider.add(AbstractManagedProvider.java:66) ~[?:?] at org.openhab.core.common.registry.AbstractRegistry.add(AbstractRegistry.java:354) ~[?:?] at org.openhab.core.io.rest.core.internal.thing.ThingResource.create(ThingResource.java:300) ~[?:?] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:179) ~[?:?] at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96) ~[?:?] ... 53 more
I am running on OpenHAB 4.1.1 through Docker on Unraid (via Docker-Compose) and would consider myself an advanced OpenHAB user…so maybe I’m just missing a spot…or I’m just too impatient
@weymann great job!
Tested already on my devices (lights and plugs).
Bridge Configuration & Gateway Pairing - passed
Things & Items configuration - passed
Controlling devices:
→ Power-state (switch type) works well for both lights and plugs.
→ Trouble to control lights via brightness channel (dimmer type):
PROBLEM 1
Not possible to control the light using dimmer after it’s been switched OFF in IKEA app. On the other hand when switched ON via IKEA app, then the state updates and can be contolled via OH.
PROBLEM 2
Can’t set 0 (OFF) value via dimmer type item. Can’t switch OFF the light using dimmer.
I assume the docker has an IP address from another subnet than DIRIGERA gateway is connected. If the gateway is not in the same subnet discovery will not find.
Seems 4.1 don’t have the Threadpool I used. Let me make this 4.1 compatible, shouldn’t be a biggy.
As it didn’t recognize the Dirigera Hub automatically, I tried creating it manually by providing the hub’s IP address, It started asking for the button press, and after pressing the button, it worked.
Thank you for your support!