Hikvision Doorbell / Videointercom integration

I’ve attempted installing/configuring the addon two or three times so far, running a HikVision DS-KB8113-IME1 doorbell.
I’ve read a thread or two of other users with success with the same unit, but for the life of me, the config for the addon only ever produces 11 entities… no entity for the doorbell button itself at all.
The only entities i get are…

And all i get out of the addon log is…

2024-02-26 20:50:22.364 | INFO     | sdk.utils:loadSDK:44 - Using OS: Linux with architecture: x86_64
loop[2] find 2 mac and 0 ip
2024-02-26 20:50:22.718 | INFO     | doorbell:authenticate:79 - Connected to doorbell: Hikvision-Doorbell
2024-02-26 20:50:22.718 | INFO     | event:__init__:87 - Setting up event handler: Console stdout
2024-02-26 20:50:22.719 | INFO     | mqtt:__init__:117 - Setting up event handler: MQTT

I can interact with the relay and other buttons,

2024-02-26 20:58:09.447 | INFO     | doorbell:unlock_door:148 -  Door 1 unlocked by SDK
2024-02-26 20:58:09.602 | INFO     | event:video_intercom_event:109 - Video intercom event from Hikvision-Doorbell
2024-02-26 20:58:09.602 | INFO     | mqtt:update_door_entities:295 - Door 1 unlocked by 979899100 , updating sensor and device trigger
2024-02-26 20:58:09.633 | INFO     | mqtt:handle_device_trigger:456 - Invoking device trigger automation{'name': 'Door unlocked', 'type': 'door open', 'subtype': 'door 0', 'payload': {'control_source': '979899100'}}

But i have no activity when pressing the doorbell button at all… anyone have any ideas here?
Cheers in advance

not all doorbell provide the ringing event
i have added an callerinfo and callstatus button, can you try pressing them? it sends an isapi command to receive the callstate , maybe they work for you

Or maybe you need a new firmware on yours? If other succeed? Anyway , you should see it in the add-on log if there is a call coming i

Yep the callstatus and callerinfo buttons work, and they return the idle status and building,room,villa etc ID from the doorbell itself respectively.

All entities discovered by the addon perform as they should, it’s just a lack of any ring/call action from the doorbell button when pressed.
Is this a matter of the doorbell just not having that compatibility with the addon?

No, it’s not related to the add-on, the add-on just uses the SDK from hikvision… But if the device doesn’t generate the SDK event, there is nothing I can do…

But if the buttons are working you can them make yourself a polling automation to trigger that button every xx seconds… not ideal, but it works

Hi, I have intercom 8350 and doorbell 6113
After configuration I had successful connection

  • name: Doorbell
    ip: 192.168.8.51
    username: admin
    password: *****
  • name: Intercom
    ip: 192.168.8.50
    username: admin
    password: *****
    output_relays: 2

2024-02-29 00:32:35.340 | INFO | doorbell:authenticate:79 - Connected to doorbell: Doorbell
2024-02-29 00:32:35.372 | INFO | doorbell:authenticate:79 - Connected to doorbell: Intercom

I have a doorbell and two call panels connected to the intercom, to which I do not have access, but video and events are sent to the intercom.

Now only the events from the doorbell are sent to homeassistant.

What am I doing wrong ?
The 8350 is not accessible via ISAPI.

Is it realistic to make events from 8350 come to homeassistant ?

Is it realistic to get video from 8350 if it is connected to wifi ?

Right now I have a configuration set up with hikcloud + scrypted
The main goal is to display video on apple tv when intercom called and it works (It doesn’t matter who rings the doorbell or the stations on the first floor.), but I don’t really like the scrypted solution.

Hi, the add-on doesn’t provide video, you need to do that manually with the camera integration using the rtsp stream… The indoor station, you don’t need to add it, it doesn’t generate events, it’s only usefully for Zones and sending call signals… Most useful events are coming from outdoor station

If you don’t have access to outdoor, video is indeed not possible… Didn’t find a way yet to capture video from indoor :frowning:

1 Like

Hi guys that want to use Hikvision Doorbells on HomeKit, Alexa or Google with Scrypted:

There’s a new beta plugin created by @vityevato/hikvision-doorbell that apparently can use SIP to calls two way audio.

I will test it asap.

1 Like

I’m using the add-on since then and it’s working pretty good.

If I use the “Don’t Use SIP”, add-on will use ISAPi to send two-way audio, which also works pretty good with DS-KV6113-WPE1(B).

Two way audio, ringing status, motion events is working with no extra steps configuration. Really cool.

To dismiss call, I open the video and press the “Speak” button on HomeKit. The add-on will automatically send the info to reject the call and, as magic, two-way audio is working!

I’m testing only on HomeKit, but Scrypted is compatible with Alexa and Google Assistant too.

1 Like

Keeping Door open / door status
Hi everyone,

Just wanted to share that I’ve successfully installed the plugin, and it’s working great – thanks!

I might have overlooked something in the documentation, so apologies if that’s the case. I have two DS-KD8003-IME1(B) units connected, and they’re functioning properly. However, I’m wondering if there’s a way to send a command to keep Door 1 relay open until I send a new command to close it. This would greatly enhance Home Assistant’s compatibility with my gate. Additionally, since I have the door status contact ( in the DS-KD…) connected for each door, it would be helpful to access this information as well?

Thanks,
Rich

h, thnx for feedback

Hmm, dont think there is a command to keep the relay open… Cause it will close bu the device itself? If i remember correct, there is in IVMS a setting to keep it open for “xx” seconds? i dont think you can turn that settings second completely off?

Maybe you can define it in ivms to keep it longer open?

Hey Pergola.fabio

You do seem to have the option to keep the gate’s open. Is it possible for me to see what command this is sending over or even SSH onto the KD8003-IME1(B) and grab the logs ?

Cheers

Rich

Hey, those B models are based on http , right? i think you can just enable F12 (chrome) to see the commands being used

but in first post, i have added the command to open the door

curl -i --digest -u admin:xxx -X PUT -d '<RemoteControlDoor><cmd>open</cmd></RemoteControlDoor>' http://192.168.0.x/ISAPI/AccessControl/RemoteControl/door/1

you can try that from SSH terminal, just change word “open” to “close” ?

or do you mean the “remain unlocked” one? maybe you can see it with F12 to see the keyword used

Yep it is the B and can access from Http, but it only has the remain unlocked in the “HikCentral” I did grab the below of the web; maybe I need to fire the “alwaysOpen” command. or perhaps I am just getting it all wrong lol

<RemoteControlDoor version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
  <doorNo min="" max=""><!--opt, xs:integer, range of the door No.--></doorNo>
  <cmd opt="open,close,alwaysOpen,alwaysClose,visitorCallLadder,householdCallLadder">
    <!--req, xs:string, command: "open"-open the door, "close"-close the door (controlled), "alwaysOpen"-remain unlocked (free), "alwaysClose"-remain locked (disabled), "visitorCallLadder"-call elevator (visitor), "householdCallLadder"-call elevator (resident)-->
  </cmd>
  <password min="" max="">
    <!--opt, xs:string, password for opening door-->
  </password>
</RemoteControlDoor>

yes, , thats probably the one one :slight_smile:

you can try it from an ssh terminal ?

I have SSH in but can seem to run a command. and when I run the following from command line ( Linux )
curl -i --digest -u admin:password -X PUT -d ‘alwaysOpen’ http://192.168.130.112/ISAPI/AccessControl/RemoteControl/door/1

I get the following output. ( Password and Ip are correct)

HTTP/1.1 401 Unauthorized

**Date**: Wed, 13 Mar 2024 12:49:15 GMT

**Server**: webs

**Content-Length**: 235

**Connection**: close

**X-Frame-Options**: SAMEORIGIN

**Cache-Control**: no-store

**Pragma**: no-cache

**WWW-Authenticate**: Digest qop="auth", realm="DS-B77DC349", nonce="YWI4MTM5ZGZjYjRmODRmNmE0ZmFmNDZlMTNiNGNkNDE=", stale="false", opaque="", domain="::"

**Content-Type**: application/xml

HTTP/1.1 400 Bad Request

**Date**: Wed, 13 Mar 2024 12:49:15 GMT

**Server**: webs

**Content-Length**: 356

**Connection**: close

**X-Frame-Options**: SAMEORIGIN

**Cache-Control**: no-store

**Pragma**: no-cache

**Content-Type**: application/xml

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus version="1.0" xmlns="http://www.std-cgi.com/ver10/XMLSchema">

<requestURL></requestURL>

<statusCode>4</statusCode>

<statusString>Invalid Operation</statusString>

<subStatusCode>invalidOperation</subStatusCode>

<errorCode>1073741830</errorCode>

<errorMsg>invalid operation</errorMsg>

</ResponseStatus>

HTTP/1.1 401 Unauthorized

**Date**: Wed, 13 Mar 2024 12:49:15 GMT

**Server**: webs

**Content-Length**: 235

**Connection**: close

**X-Frame-Options**: SAMEORIGIN

**Cache-Control**: no-store

**Pragma**: no-cache

**WWW-Authenticate**: Digest qop="auth", realm="DS-B77DC349", nonce="ZGUwMDZmNTI2MDg4NmEyMzY1YmQ4ZWE4MWM4ZWM1MmY=", stale="false", opaque="", domain="::"

**Content-Type**: application/xml

HTTP/1.1 400 Bad Request

**Date**: Wed, 13 Mar 2024 12:49:15 GMT

**Server**: webs

**Content-Length**: 356

**Connection**: close

**X-Frame-Options**: SAMEORIGIN

**Cache-Control**: no-store

**Pragma**: no-cache

**Content-Type**: application/xml

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus version="1.0" xmlns="http://www.std-cgi.com/ver10/XMLSchema">

<requestURL></requestURL>

<statusCode>4</statusCode>

<statusString>Invalid Operation</statusString>

<subStatusCode>invalidOperation</subStatusCode>

<errorCode>1073741830</errorCode>

<errorMsg>invalid operation</errorMsg>

</ResponseStatus>

and if you change “alwaysOpen” to just “open” does that work? then you know the rest of the command is correct

Would it be possible that the key codes that the Addon use were the same than the ones stored in the doorbell? Currently, you have to manage two codes: one for the doorbell itself and a longer one reported by the addon. It is not a big deal, but it would great to use the same code for everything.

If you need some tests and feedback, happy to help. Thanks!

I wasnt able to find it with the SDK :frowning:

1 Like

I must be doing something simple wrong. I get the same with “Open”

HTTP/1.1 405 Not Allowed
Server: nginx
Date: Wed, 13 Mar 2024 16:14:52 GMT
Content-Type: text/html
Content-Length: 150
Connection: keep-alive
Keep-Alive: timeout=20

<html>
<head><title>405 Not Allowed</title></head>
<body>
<center><h1>405 Not Allowed</h1></center>
<hr><center>nginx</center>
</body>
</html>
HTTP/1.1 401 Unauthorized
Date: Wed, 13 Mar 2024 16:14:45 GMT
Server: webs
Content-Length: 235
Connection: close
X-Frame-Options: SAMEORIGIN
Cache-Control: no-store
Pragma: no-cache
WWW-Authenticate: Digest qop="auth", realm="DS-B77DC349", nonce="OGMxMjY5Y2M0MDU1NjgxMDljNDA2NWY0OGM5YzI4YTQ=", stale="false", opaque="", domain="::"
Content-Type: application/xml

HTTP/1.1 400 Bad Request
Date: Wed, 13 Mar 2024 16:14:45 GMT
Server: webs
Content-Length: 356
Connection: close
X-Frame-Options: SAMEORIGIN
Cache-Control: no-store
Pragma: no-cache
Content-Type: application/xml

<?xml version="1.0" encoding="UTF-8"?>
<ResponseStatus version="1.0" xmlns="http://www.std-cgi.com/ver10/XMLSchema">
<requestURL></requestURL>
<statusCode>4</statusCode>
<statusString>Invalid Operation</statusString>
<subStatusCode>invalidOperation</subStatusCode>
<errorCode>1073741830</errorCode>
<errorMsg>invalid operation</errorMsg>
</ResponseStatus>
HTTP/1.1 401 Unauthorized
Date: Wed, 13 Mar 2024 16:14:45 GMT
Server: webs
Content-Length: 235
Connection: close
X-Frame-Options: SAMEORIGIN
Cache-Control: no-store
Pragma: no-cache
WWW-Authenticate: Digest qop="auth", realm="DS-B77DC349", nonce="NmZkZWVjZmFlNjJlMjAyOWMyZDRjM2UzMjczZGQ0OTA=", stale="false", opaque="", domain="::"
Content-Type: application/xml

HTTP/1.1 400 Bad Request
Date: Wed, 13 Mar 2024 16:14:45 GMT
Server: webs
Content-Length: 356
Connection: close
X-Frame-Options: SAMEORIGIN
Cache-Control: no-store
Pragma: no-cache
Content-Type: application/xml

<?xml version="1.0" encoding="UTF-8"?>
<ResponseStatus version="1.0" xmlns="http://www.std-cgi.com/ver10/XMLSchema">
<requestURL></requestURL>
<statusCode>4</statusCode>
<statusString>Invalid Operation</statusString>
<subStatusCode>invalidOperation</subStatusCode>
<errorCode>1073741830</errorCode>
<errorMsg>invalid operation</errorMsg>
</ResponseStatus>

Should work indeed, have you actually copy paste the command? Cause I saw your quote was different