New UniFi Protect binding for OH 5.1

I just switched from OH 5.0.3 to 5.1 and also from the old UniFi Protect binding to the new one.

Now I have a few questions:

I can switch the status led of my G4 Instant on and off with the binding. But when I change that setting in the Protect iOS app, it is not being reflected in OH.

How do I control the recording mode from OH? I need to be able to switch from off to always + events only and back. But I did not find a channel for that.
In Home Assistant, which is AFAIK also using the API, one can configure that via “recording mode”.

Thanks!

@digitaldan

I have another issue: When streaming video to a widget, go2rtc uses extreme amounts of memory over time, leading to a kernel OOM panic.

I have created 2 issues for my problems:

Hi, great new binding! thanks"! i noticed a view things: i have a g4 doorbell. i receive the ring event twice. the item changes from closed to open and back to closed. some seconds later again to open and then again to closed. but the ring button was pushed only once.

also noticed that for my g5 bullet and g3 instant i can not find any trigger channels as mentioned in the docs

and when using the 2way audio, i push the microphone button on the video, browser has permissions but no sound is sent to the camera.

as this is not the official binding thread, i dont know if its ok to post this here but i learned for other bindings there is one thread with all issues/discussions. i can post somewhere else if more appreciated.

@digitaldan

Is this binding also supposed to work with a UDM SE? My NVR thing unfortunately stays offline. Nothing too relevant in the logs when I disable/enable the thing (debug level):

2026-01-14 19:52:47.165 [WARN ] [ty.util.ssl.SslContextFactory.config] - Trusting all certificates configured for Client@e38ddab[provider=null,keyStore=null,trustStore=null]
2026-01-14 19:52:47.165 [WARN ] [ty.util.ssl.SslContextFactory.config] - No Client EndPointIdentificationAlgorithm configured for Client@e38ddab[provider=null,keyStore=null,trustStore=null]

Edit: my log level change was not saved the first time. There is actually more output:

2026-01-14 20:04:10.141 [DEBUG] [ernal.handler.UnifiProtectNVRHandler] - Initializing NVR
2026-01-14 20:04:10.142 [DEBUG] [ernal.handler.UnifiProtectNVRHandler] - Initialization failed
java.lang.IllegalStateException: Failed to start Jetty clients
        at org.openhab.binding.unifiprotect.internal.api.UniFiProtectApiClient.<init>(UniFiProtectApiClient.java:111) ~[?:?]
        at org.openhab.binding.unifiprotect.internal.handler.UnifiProtectNVRHandler.lambda$1(UnifiProtectNVRHandler.java:144) ~[?:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) ~[?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?]
        at java.lang.Thread.run(Thread.java:1583) [?:?]
Caused by: java.lang.IllegalStateException: HttpClient is not running (did you forget to start it?): HttpClient@c7db033{STOPPED}
        at org.eclipse.jetty.websocket.client.WebSocketClient.doStart(WebSocketClient.java:416) ~[?:?]
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) ~[?:?]
        at org.openhab.binding.unifiprotect.internal.api.UniFiProtectApiClient.<init>(UniFiProtectApiClient.java:109) ~[?:?]
        ... 7 more
2026-01-14 20:04:15.143 [DEBUG] [ernal.handler.UnifiProtectNVRHandler] - Initializing NVR
2026-01-14 20:04:15.144 [DEBUG] [ernal.handler.UnifiProtectNVRHandler] - Initialization failed
java.lang.IllegalStateException: Failed to start Jetty clients
        at org.openhab.binding.unifiprotect.internal.api.UniFiProtectApiClient.<init>(UniFiProtectApiClient.java:111) ~[?:?]
        at org.openhab.binding.unifiprotect.internal.handler.UnifiProtectNVRHandler.lambda$1(UnifiProtectNVRHandler.java:144) ~[?:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) ~[?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?]
        at java.lang.Thread.run(Thread.java:1583) [?:?]
Caused by: java.lang.IllegalStateException: HttpClient is not running (did you forget to start it?): HttpClient@c7db033{STOPPED}
        at org.eclipse.jetty.websocket.client.WebSocketClient.doStart(WebSocketClient.java:416) ~[?:?]
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) ~[?:?]
        at org.openhab.binding.unifiprotect.internal.api.UniFiProtectApiClient.<init>(UniFiProtectApiClient.java:109) ~[?:?]
        ... 7 more
2026-01-14 20:04:20.145 [DEBUG] [ernal.handler.UnifiProtectNVRHandler] - Initializing NVR
2026-01-14 20:04:20.146 [DEBUG] [ernal.handler.UnifiProtectNVRHandler] - Initialization failed
java.lang.IllegalStateException: Failed to start Jetty clients
        at org.openhab.binding.unifiprotect.internal.api.UniFiProtectApiClient.<init>(UniFiProtectApiClient.java:111) ~[?:?]
        at org.openhab.binding.unifiprotect.internal.handler.UnifiProtectNVRHandler.lambda$1(UnifiProtectNVRHandler.java:144) ~[?:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) ~[?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?]
        at java.lang.Thread.run(Thread.java:1583) [?:?]
Caused by: java.lang.IllegalStateException: HttpClient is not running (did you forget to start it?): HttpClient@c7db033{STOPPED}
        at org.eclipse.jetty.websocket.client.WebSocketClient.doStart(WebSocketClient.java:416) ~[?:?]
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) ~[?:?]
        at org.openhab.binding.unifiprotect.internal.api.UniFiProtectApiClient.<init>(UniFiProtectApiClient.java:109) ~[?:?]
        ... 7 more
thomas@openhab:~$