enablePush for Reolink E1 Outdoor with

I’ve integrated my Reolink E1 Outdoor via camera binding. I would like to switch on and off the push notifications. I tried this as follows:
image

In the log output you can see the following:

INFO	openhab.event.ItemCommandEvent	Item 'Kamera_Terrasse_Push' received command OFF
INFO	openhab.event.ItemStatePredictedEvent	Item 'Kamera_Terrasse_Push' predicted to become OFF
INFO	openhab.event.ItemStateChangedEvent	Item 'Kamera_Terrasse_Push' changed from ON to OFF

The item is set to “OFF.” But the corresponding camera setting remains “ON.”

Btw: same problem with “enable motion alarm”:
image

best regards
Daniel

This is how openhab works.
You send a command, so the item receives a command
the item is predicted to get changed to the new state,
The item change the state.
What did you expect?
You switched from on to off.. :wink::blush:

Greets

Sorry, I didn’t describe the problem precisely enough.

The item is set to “OFF.” But the corresponding camera setting remains “ON.”

Ah ok :blush:
Some logs in the openhab.log?
how do you check for the camera setting? If you view the webui from the camera you have to reload the page to show the right value.
I use this with the enable ftp setting..
I think if it doesn’t work there would be a error in the openhab.log file.
Or try set ipcamera binding to log debug
Greets

There was a PR that made a fix for the PUSH and a number of other channels made here. It is in openHAB V5.0 Stable just released…

https://github.com/openhab/openhab-addons/pull/18833

Seems that the motion alarm is missing a POST content like the other commands have and looking into it in more detail with their V8 API.

Can you test the following curl commands?

Make sure to replace CAMERA_IP, USERNAME, and PASSWORD:
Enable Motion Detection:

curl -X POST "http://CAMERA_IP/cgi-bin/api.cgi?cmd=SetMdState&user=USERNAME&password=PASSWORD" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "cmd": "SetMdState",
      "action": 1,
      "param": {
        "channel": 0,
        "value": 1
      }
    }
  ]'

Disable Motion Detection:

curl -X POST "http://CAMERA_IP/cgi-bin/api.cgi?cmd=SetMdState&user=USERNAME&password=PASSWORD" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "cmd": "SetMdState",
      "action": 0,
      "param": {
        "channel": 0,
        "value": 0
      }
    }
  ]'

Change Sensitivity on newer camera models/firmware

curl -X POST "http://CAMERA_IP/cgi-bin/api.cgi?cmd=SetMdAlarm&user=USERNAME&password=PASSWORD" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "cmd": "SetMdAlarm",
      "param": {
        "MdAlarm": {
          "channel": 0,
          "type": "md",
          "useNewSens": 1,
          "newSens": {
            "sensDef": 40,
            "sens": {
              "sensitivity": 40,
              "beginHour": 0,
              "beginMin": 0,
              "endHour": 24,
              "endMin": 0,
              "priority": 0,
              "enable": 1
            }
          }
        }
      }
    }
  ]'

@dniklas1
I made some changes after testing with my camera and have created a V4 and V5 jar file found here

Sorry for the late reply, I’m on vacation…

I tried the following query:

curl -k -X POST "https://192.168.178.xxx/cgi-bin/api.cgi?cmd=SetMdState&user=<user>&password=<pwd>" 
-H "Content-Type: application/json" 
-d '[{"cmd": "SetMdState","action": 1,"param": {"channel": 0,"value": 1}}]'

And the response is as follows:

[
   {
      "cmd" : "Unknown",
      "code" : 1,
      "error" : {
         "detail" : "not support",
         "rspCode" : -9
      }
   }
]

What am I doing wrong?

Your not doing anything wrong, from what I can see and test with my own reolink, the camera will not respond as there is no enable,disable switch in my cameras setup. You can change the sensitivity but the API does not work well and is unpredictable doing it that way. I suspect you will need to take this up with reolink support as other home automation projects are reporting that my option enable and disable does not work.

Why don’t you leave it enables and instead turn off push or recording controls as these work on my camera using the newer jar.

I tried the version:
image

This does not work:

2025-08-16 14:14:57.046 [WARN ] [re.xml.osgi.XmlDocumentBundleTracker] - The XML document '/OH-INF/thing/thing-types.xml' in module 'org.openhab.binding.ipcamera' could not be parsed: 
---- Debugging information ----
cause-exception     : com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message       : semantic-equipment-tag
class               : java.util.ArrayList
required-type       : java.util.ArrayList
converter-type      : com.thoughtworks.xstream.converters.collections.CollectionConverter
path                : /thing-descriptions/thing-type[2]/semantic-equipment-tag
line number         : 101
class[1]            : org.openhab.core.thing.xml.internal.ThingTypeXmlResult
required-type[1]    : org.openhab.core.thing.xml.internal.ThingTypeXmlResult
converter-type[1]   : org.openhab.core.thing.xml.internal.ThingTypeConverter
class[2]            : org.openhab.core.thing.xml.internal.ThingDescriptionList
required-type[2]    : org.openhab.core.thing.xml.internal.ThingDescriptionList
converter-type[2]   : org.openhab.core.thing.xml.internal.ThingDescriptionConverter
version             : 1.4.21
-------------------------------
com.thoughtworks.xstream.converters.ConversionException: 
---- Debugging information ----
cause-exception     : com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message       : semantic-equipment-tag
class               : java.util.ArrayList
required-type       : java.util.ArrayList
converter-type      : com.thoughtworks.xstream.converters.collections.CollectionConverter
path                : /thing-descriptions/thing-type[2]/semantic-equipment-tag
line number         : 101
class[1]            : org.openhab.core.thing.xml.internal.ThingTypeXmlResult
required-type[1]    : org.openhab.core.thing.xml.internal.ThingTypeXmlResult
converter-type[1]   : org.openhab.core.thing.xml.internal.ThingTypeConverter
class[2]            : org.openhab.core.thing.xml.internal.ThingDescriptionList
required-type[2]    : org.openhab.core.thing.xml.internal.ThingDescriptionList
converter-type[2]   : org.openhab.core.thing.xml.internal.ThingDescriptionConverter
version             : 1.4.21
-------------------------------
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:81) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:68) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:52) ~[bundleFile:1.4.21]
	at org.openhab.core.thing.xml.internal.AbstractDescriptionTypeConverter.unmarshal(AbstractDescriptionTypeConverter.java:189) ~[?:?]
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:74) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:68) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:52) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readBareItem(AbstractCollectionConverter.java:132) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:117) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:99) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:92) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:86) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:81) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:74) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:68) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:52) ~[bundleFile:1.4.21]
	at org.openhab.core.thing.xml.internal.ThingDescriptionConverter.unmarshal(ThingDescriptionConverter.java:56) ~[?:?]
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:74) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:68) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:52) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:136) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1468) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1445) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1393) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1345) ~[bundleFile:1.4.21]
	at org.openhab.core.config.core.xml.util.XmlDocumentReader.readFromXML(XmlDocumentReader.java:106) ~[bundleFile:?]
	at org.openhab.core.config.core.xml.osgi.XmlDocumentBundleTracker.parseDocuments(XmlDocumentBundleTracker.java:394) [bundleFile:?]
	at org.openhab.core.config.core.xml.osgi.XmlDocumentBundleTracker.processBundle(XmlDocumentBundleTracker.java:380) [bundleFile:?]
	at org.openhab.core.config.core.xml.osgi.XmlDocumentBundleTracker$2.run(XmlDocumentBundleTracker.java:345) [bundleFile:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
	at java.lang.Thread.run(Thread.java:840) [?:?]
Caused by: com.thoughtworks.xstream.mapper.CannotResolveClassException: semantic-equipment-tag
	at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:81) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:55) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.mapper.PackageAliasingMapper.realClass(PackageAliasingMapper.java:88) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.mapper.ClassAliasingMapper.realClass(ClassAliasingMapper.java:79) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.mapper.ArrayMapper.realClass(ArrayMapper.java:74) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.mapper.SecurityMapper.realClass(SecurityMapper.java:71) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:125) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:47) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.core.util.HierarchicalStreams.readClassType(HierarchicalStreams.java:29) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readBareItem(AbstractCollectionConverter.java:131) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:117) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:99) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:92) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:86) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:81) ~[bundleFile:1.4.21]
	at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:74) ~[bundleFile:1.4.21]
	... 39 more
2025-08-16 14:15:23.241 [WARN ] [le.handler.ItemStateConditionHandler] - Received a QuantityType state '570 lx' with unit for item Helligkeit_Aussen_Sued, but the condition is defined as a plain number without unit (1), please consider adding a unit to the condition for rule ruleGartenLichtAutomatik.
2025-08-16 14:17:00.482 [WARN ] [core.thing.internal.ThingManagerImpl] - A thing handler factory claims to support 'ipcamera:reolink' for thing 'ipcamera:reolink:reolink-kamera-terrasse' for more than 120s, but the thing type can't be found in the registry. This should be fixed in the binding.
2025-08-16 14:17:00.521 [WARN ] [core.thing.internal.ThingManagerImpl] - A thing handler factory claims to support 'ipcamera:reolink' for thing 'ipcamera:reolink:19216817850' for more than 120s, but the thing type can't be found in the registry. This should be fixed in the binding.
2025-08-16 14:17:02.596 [WARN ] [core.thing.internal.ThingManagerImpl] - Channel types or config descriptions for thing 'ipcamera:reolink:reolink-kamera-terrasse' are missing in the respective registry for more than 120s. In case it does not happen immediately after an upgrade, it should be fixed in the binding.
2025-08-16 14:17:02.599 [WARN ] [core.thing.internal.ThingManagerImpl] - Could not normalize configuration for 'ipcamera:reolink:reolink-kamera-terrasse' because the thing type was not found in registry.
2025-08-16 14:17:02.749 [WARN ] [core.thing.internal.ThingManagerImpl] - Channel types or config descriptions for thing 'ipcamera:reolink:19216817850' are missing in the respective registry for more than 120s. In case it does not happen immediately after an upgrade, it should be fixed in the binding.
2025-08-16 14:17:02.751 [WARN ] [core.thing.internal.ThingManagerImpl] - Could not normalize configuration for 'ipcamera:reolink:19216817850' because the thing type was not found in registry.
2025-08-16 14:17:02.811 [WARN ] [era.internal.handler.IpCameraHandler] - API command GetAbility may not be supported by the camera
2025-08-16 14:17:04.448 [WARN ] [amera.internal.onvif.OnvifConnection] - Binding could not determin the cameras current PTZ location. Not all cameras respond to GetStatus requests.
2025-08-16 14:17:04.487 [WARN ] [amera.internal.onvif.OnvifConnection] - Binding could not determin the cameras current PTZ location. Not all cameras respond to GetStatus requests.
2025-08-16 14:17:04.749 [WARN ] [amera.internal.onvif.OnvifConnection] - Binding could not determin the cameras current PTZ location. Not all cameras respond to GetStatus requests.

One Camera leaves offline, the thing is shown as follows:
image

Ok then that means the v5 bundles can not be easily built for v4 anymore, you will need to move to v5 to use any future changes.

Upgrading to version 5 is already on my to-do list. It will take a while, though, before I can do it.

I’ll report back here :slight_smile:

I’ve also been looking into this topic.

The “push notification” setting is a setting, that’s configured in the app/on the phone. It’s not a setting in the camera. This means it can’t be configured via openHAB.

So the idea remains to implement this via “go to preset” and “enable motion alarm” and/or “enable recordings.”