Adding Reolink API to the IpCamera binding, beta testers needed

Did you install the telstick binding? It installs the libraries that this one needs when your not using the merged jar.

Firstly, sorry if this is a stupid question, but by “merged jar” do you mean the original ipcamera binding?
I have installed the tellstick binding - though I notice it throws an error when it starts

==> /var/log/openhab/openhab.log <==
2023-03-30 09:28:11.477 [ERROR] [l.discovery.TellstickBridgeDiscovery] - Could not load telldus core, please make sure Telldus is installed and correct 32/64 bit java.
java.lang.UnsatisfiedLinkError: Unable to load library 'telldus-core': Native library (linux-aarch64/libtelldus-core.so) not found in resource path (/usr/share/openhab/runtime/lib/boot/org.apache.karaf.diagnostic.boot-4.3.7.jar:/usr/share/openhab/runtime/lib/boot/org.apache.karaf.jaas.boot-4.3.7.jar:/usr/share/openhab/runtime/lib/boot/org.apache.karaf.main-4.3.7.jar:/usr/share/openhab/runtime/lib/boot/org.apache.karaf.specs.activator-4.3.7.jar:/usr/share/openhab/runtime/lib/boot/osgi.core-7.0.0.jar:/usr/share/openhab/runtime/lib/jdk9plus/istack-commons-runtime-3.0.10.jar:/usr/share/openhab/runtime/lib/jdk9plus/jakarta.xml.bind-api-2.3.3.jar:/usr/share/openhab/runtime/lib/jdk9plus/javax.annotation-api-1.3.2.jar:/usr/share/openhab/runtime/lib/jdk9plus/jaxb-runtime-2.3.3.jar:/usr/share/openhab/runtime/lib/jdk9plus/org.apache.servicemix.specs.activation-api-1.2.1-1.2.1_3.jar:/usr/share/openhab/runtime/lib/jdk9plus/txw2-2.3.3.jar)
	at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:303) ~[bundleFile:?]
	at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:427) ~[bundleFile:?]
	at com.sun.jna.Library$Handler.<init>(Library.java:179) ~[bundleFile:?]
	at com.sun.jna.Native.loadLibrary(Native.java:569) ~[bundleFile:?]
	at org.tellstick.JNA$CLibrary.<clinit>(JNA.java:57) ~[bundleFile:?]
	at org.tellstick.device.TellstickController.getControllers(TellstickController.java:54) ~[bundleFile:?]
	at org.openhab.binding.tellstick.internal.discovery.TellstickBridgeDiscovery.listBridge(TellstickBridgeDiscovery.java:78) [bundleFile:?]
	at org.openhab.binding.tellstick.internal.discovery.TellstickBridgeDiscovery.discoverController(TellstickBridgeDiscovery.java:72) [bundleFile:?]
	at org.openhab.binding.tellstick.internal.discovery.TellstickBridgeDiscovery.startBackgroundDiscovery(TellstickBridgeDiscovery.java:61) [bundleFile:?]
	at org.openhab.core.config.discovery.AbstractDiscoveryService.activate(AbstractDiscoveryService.java:356) [bundleFile:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
	at org.apache.felix.scr.impl.inject.methods.BaseMethod.invokeMethod(BaseMethod.java:244) [bundleFile:?]
	at org.apache.felix.scr.impl.inject.methods.BaseMethod.access$500(BaseMethod.java:41) [bundleFile:?]
	at org.apache.felix.scr.impl.inject.methods.BaseMethod$Resolved.invoke(BaseMethod.java:685) [bundleFile:?]
	at org.apache.felix.scr.impl.inject.methods.BaseMethod.invoke(BaseMethod.java:529) [bundleFile:?]
	at org.apache.felix.scr.impl.inject.methods.ActivateMethod.invoke(ActivateMethod.java:318) [bundleFile:?]
	at org.apache.felix.scr.impl.inject.methods.ActivateMethod.invoke(ActivateMethod.java:308) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:354) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:115) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:1000) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:973) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:918) [bundleFile:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse$1.run(ServiceFactoryUse.java:220) [org.eclipse.osgi-3.17.200.jar:?]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:217) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:118) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:48) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:547) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:533) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:655) [org.eclipse.osgi-3.17.200.jar:?]
	at org.apache.felix.scr.impl.manager.SingleRefPair.getServiceObject(SingleRefPair.java:88) [bundleFile:?]
	at org.apache.felix.scr.impl.inject.methods.BindMethod.getServiceObject(BindMethod.java:675) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.DependencyManager.getServiceObject(DependencyManager.java:2556) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.DependencyManager.doInvokeBindMethod(DependencyManager.java:2075) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.DependencyManager.invokeBindMethod(DependencyManager.java:2058) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.invokeBindMethod(SingleComponentManager.java:443) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:333) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:301) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1200) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1121) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.trackAdding(ServiceTracker.java:928) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.track(ServiceTracker.java:864) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1152) [bundleFile:?]
	at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:114) [bundleFile:?]
	at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:120) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:956) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:936) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:873) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:141) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:261) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:495) [org.eclipse.osgi-3.17.200.jar:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:929) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:915) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:133) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:984) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:752) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:674) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:437) [bundleFile:?]
	at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:667) [bundleFile:?]
	at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:305) [bundleFile:?]
	at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:554) [bundleFile:?]
	at org.apache.felix.scr.impl.Activator.access$200(Activator.java:70) [bundleFile:?]
	at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:421) [bundleFile:?]
	at org.apache.felix.scr.impl.AbstractExtender.createExtension(AbstractExtender.java:196) [bundleFile:?]
	at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:169) [bundleFile:?]
	at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:49) [bundleFile:?]
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:488) [osgi.core-7.0.0.jar:?]
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:420) [osgi.core-7.0.0.jar:?]
	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:232) [osgi.core-7.0.0.jar:?]
	at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:450) [osgi.core-7.0.0.jar:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:944) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:229) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:138) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:130) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:217) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.container.Module.publishEvent(Module.java:499) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.container.Module.start(Module.java:486) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel$2.run(ModuleContainer.java:1847) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor$1$1.execute(EquinoxContainerAdaptor.java:136) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1840) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1783) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1745) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1667) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) [org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:345) [org.eclipse.osgi-3.17.200.jar:?]

I have 64bit Java.
I have just made sure that everything is up to date.
Before I got the error I first reported, I was getting this error:

org.osgi.framework.BundleException: Could not resolve module: org.openhab.binding.ipcamera [331]
  Unresolved requirement: Import-Package: com.google.gson; version="[2.9.0,3.0.0)"
	at org.eclipse.osgi.container.Module.start(Module.java:463) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:445) ~[org.eclipse.osgi-3.17.200.jar:?]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1260) [bundleFile:3.7.4]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1233) [bundleFile:3.7.4]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:520) [bundleFile:3.7.4]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:365) [bundleFile:3.7.4]
	at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:316) [bundleFile:3.7.4]

I resolved that by putting gson-2.9.1.jar in my addons directory.
Thanks for your help

ok for GSON the other option would be to install the WLED binding as that will take care of that lib. You can ignore the error from tellstick. Once the changes get merged, all of this will not be necessary as any binding that is builtin/merged has the dependancies handled automatically. JAR’s added into the addons folder manually do not get handled the same way. The way you handled it with dropping the gson jar is also fine to do, but it becomes harder when one version of openHAB uses 2.9.1 and another uses 2.9.0 so it is more simple to just say install X binding.

I installed the WLED binding and moved gson out of addons, but that didn’t work. I got the unresolved requirement error again.

The PR to make this merged into openHAB V4 can be found here along with a jfrog download link so anyone can test the JAR.

[ipcamera] Add Reolink API support by Skinah · Pull Request #14728 · openhab/openhab-addons (github.com)

Per usual, Reolink’s API is inconsistent. I’ve confirmed that the RTSP channel index starts at 1, but for pretty much all other features (such as the snapshot urls), the channel index starts at 0.

Thanks, but I also need to know what is written on the rear panel? All pictures I can find all have the RJ45 ports start at channel 1, see here:

Introduction to the Appearance and Buttons on Reolink NVRs – Reolink Support

So am I correct that your rear panel starts at 1? Then the rtsp uses 01 and the snapshot uses 0? If correct then we do not need 0 as a valid option as we just make it the “channel - 1”.

Any chance you or someone else is using OH4 yet to test with?

Hopefully that makes sense.

Ah, good call. I just checked and the RJ45 ports on the NVR as labeled starting at “1”, so it makes sense to start with 1 in the binding.

Not yet. I’ve been a little tentative as my system is pretty stable right now, but I can take a look into it.

1 Like

I would not change to OH4 MILESTONE 1 if you have a working system, it has some teething issues as the release was made so people could develop with a build. Use a test system or wait till a future milestone that people are reporting is all good.

I am testing the binding with stable openhab 3.4.0 and a reolink RLC-823A camera.
I must switch of the token api, then I am able to communicate with the camera.
I am interrested in enableLED channel. It does the job but I always get following warning

2023-04-15 16:58:15.843 [TRACE] [era.internal.handler.IpCameraHandler] - Sending camera: POST: http://10.0.0.95:80/api.cgi?cmd=SetWhiteLed&user=admin&password=xxx
2023-04-15 16:58:15.849 [WARN ] [.netty.channel.ChannelOutboundBuffer] - Failed to mark a promise as success because it has failed already: DefaultChannelPromise@ed55d2(failure: io.netty.handler.codec.EncoderException: io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1), unnotified cause:
io.netty.handler.codec.EncoderException: io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1
        at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:104) ~[?:?]
        at io.netty.channel.CombinedChannelDuplexHandler.write(CombinedChannelDuplexHandler.java:346) [bundleFile:4.1.72.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:717) [bundleFile:4.1.72.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:764) [bundleFile:4.1.72.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:790) [bundleFile:4.1.72.Final]
        at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:758) [bundleFile:4.1.72.Final]
        at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:808) [bundleFile:4.1.72.Final]
        at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1025) [bundleFile:4.1.72.Final]
        at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:306) [bundleFile:4.1.72.Final]
        at org.openhab.binding.ipcamera.internal.handler.IpCameraHandler$2.operationComplete(IpCameraHandler.java:663) [bundleFile:?]
        at org.openhab.binding.ipcamera.internal.handler.IpCameraHandler$2.operationComplete(IpCameraHandler.java:1) [bundleFile:?]
        at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578) [bundleFile:4.1.72.Final]
        at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:571) [bundleFile:4.1.72.Final]
        at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:550) [bundleFile:4.1.72.Final]
        at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491) [bundleFile:4.1.72.Final]
        at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616) [bundleFile:4.1.72.Final]
        at io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:605) [bundleFile:4.1.72.Final]
        at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104) [bundleFile:4.1.72.Final]
        at io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:84) [bundleFile:4.1.72.Final]
        at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.fulfillConnectPromise(AbstractNioChannel.java:300) [bundleFile:4.1.72.Final]
        at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:335) [bundleFile:4.1.72.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:710) [bundleFile:4.1.72.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:658) [bundleFile:4.1.72.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:584) [bundleFile:4.1.72.Final]
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:496) [bundleFile:4.1.72.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) [bundleFile:4.1.72.Final]
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [bundleFile:4.1.72.Final]
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [bundleFile:4.1.72.Final]
        at java.lang.Thread.run(Thread.java:829) [?:?]
Caused by: io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1
        at io.netty.util.internal.ReferenceCountUpdater.toLiveRealRefCnt(ReferenceCountUpdater.java:74) ~[?:?]
        at io.netty.util.internal.ReferenceCountUpdater.release(ReferenceCountUpdater.java:138) ~[?:?]
        at io.netty.buffer.AbstractReferenceCountedByteBuf.release(AbstractReferenceCountedByteBuf.java:100) ~[?:?]
        at io.netty.handler.codec.http.DefaultFullHttpRequest.release(DefaultFullHttpRequest.java:103) ~[?:?]
        at io.netty.util.ReferenceCountUtil.release(ReferenceCountUtil.java:90) ~[?:?]
        at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:91) ~[?:?]
        ... 28 more
2023-04-15 16:58:15.898 [TRACE] [era.internal.handler.IpCameraHandler] - HTTP Result from /api.cgi?cmd=SetWhiteLed&user=admin&password=xxx contains        :[
   {
      "cmd" : "SetWhiteLed",
      "code" : 0,
      "value" : {
         "rspCode" : 200
      }
   }
]

Many thanks for your great work from here.
I have 1xReolink 410, 1xReolink 810A and 1xReolink Door bell. I have uninstalled the Ipcamrea binding - added tellstick - and transferred 3.4.0-SNAPSHOT to the Addons folder, but I cannot see the “Visitor” button for the doorbell in the channels overview. is it only in version 4.0.0 this is working?

No it should work in 3.x you just need to tick Show Advanced and look for the doorbell channel.

Is the visitor Button sent via onvif?

AFAIK yes a user reported it does in this thread above. I don’t have one to know or test with.

@HALLO01 thanks for reporting this, will have to find some time to look at it which what you provided is enough to work it out without testing.

EDIT: Had a quick look and cannot see a reason for it, perhaps a TRACE level log may give more clues but a check did not turn up what I was expecting. It may only be in the older v3.x code and fixed in the V4.x

1 Like

Hi,

I’m a little bit lost here :slight_smile:
I’m running openhab 3.4.2. Which ipcamera jar should I install? I tried to install ipcamera binding from openhab UI (version 3.4.2) and setup this thing:
Thing ipcamera:reolink:c1-pro
I got this: No ThingHandlerFactory found for thing ipcamera:reolink:c1-pro (thing-type is ipcamera:reolink). Deferring initialization.
I think it is ok, because the binding cannot use reolink cameras.
I removed this binding, install tellstick and 3.4.0 snapshot jar from console. Binding is running, but error is the same.

I have to upgrade to openhab 4 or use 4.0.0 snapshot jar with openhab 3.4.2?

I don’t seem to get this feature when I tick show advanced


If your not seeing a Chanel then make sure your not using the merged binding by uninstalling it. Next delete and re add the thing as this is needed if you added the thing when the channel was not added to the thing type. If it still does not work then you need to say what thing type your setting the camera up as.

If your on 3.x you need the 3.x snapshot jar as the 4.0 will only work in 4.x cores.

I could be wrong but it may not be possible to use a dash in the UID perhaps that’s the reason.

Thank you for your quick response but no luck.
After bundle:list the bindings are there:
294 │ Active │ 80 │ 3.4.2 │ openHAB Add-ons :: Bundles :: Tellstick Binding
295 │ Active │ 80 │ 3.4.0.202301181823 │ openHAB Add-ons :: Bundles :: IpCamera Binding

My thing is like this (c1-pro hostname is working):

Thing ipcamera:reolink:c1pro
[
    ipAddress="c1-pro",
    port=80,
    onvifPort=8000,
    username="****",
    username="****"
]

And the log message is the same:
2023-04-19 08:13:17.675 [INFO ] [.thing.internal.GenericThingProvider] - No ThingHandlerFactory found for thing ipcamera:reolink:c1pro (thing-type is ipcamera:reolink). Deferring initialization.

Any other idea what I can try?

Thanks

My mistake, I hadn’t seen "Doorbird Camera with API " under Add Manually, I now get the function under channels, thanks for the quick response.