Hi,
I am using a Hikvision door station DS-KV8113-WME1(C) running firmware V2.2.78 and 3 Hikvision indoor stations DS-KH6320-WTE1 running firmware V2.2.100.
1 indoor station is configured as a main station connected to the door station and 2 indoor stations are extension stations connected to the main station.
To integrate Hikvision devices into Home Assistant I use the Hikvision Doorbell addon version 3.0.22.
I tried to get following automation working to automatically dismiss ringing state on my doorbell right after opening frontdoor. To achieve this I installed a tuya contact sensor to check if door is closed or open and trigger this automation when the sensor’s state changed. So there is no need to reject the call manually from one of the indoor stations:
alias: Hikvision TĂĽrklingel Anruf beenden
description: ""
triggers:
- trigger: state
entity_id:
- binary_sensor.contact_sensor_2_tur
conditions:
- condition: template
value_template: >-
{{ (as_timestamp(now()) -
as_timestamp(states.sensor.door_station_call_state.last_changed)) < 30 }}
actions:
- action: hassio.addon_stdin
data:
addon: aff2db71_hikvision_doorbell
input: reject indoor_substation_dg
- action: hassio.addon_stdin
data:
addon: aff2db71_hikvision_doorbell
input: reject indoor_substation_og
- action: hassio.addon_stdin
data:
addon: aff2db71_hikvision_doorbell
input: reject indoor_station_eg
- action: hassio.addon_stdin
data:
addon: aff2db71_hikvision_doorbell
input: reject door_station
- action: text.set_value
target:
entity_id: text.indoor_substation_dg_isapi_request
data:
value: >-
PUT /ISAPI/VideoIntercom/callSignal?format=json
{"CallSignal":{"cmdType":"reject"}}
- action: text.set_value
target:
entity_id: text.indoor_substation_og_isapi_request
data:
value: >-
PUT /ISAPI/VideoIntercom/callSignal?format=json
{"CallSignal":{"cmdType":"reject"}}
- action: text.set_value
target:
entity_id: text.indoor_station_eg_isapi_request
data:
value: >-
PUT /ISAPI/VideoIntercom/callSignal?format=json
{"CallSignal":{"cmdType":"reject"}}
- action: text.set_value
target:
entity_id: text.door_station_isapi_request
data:
value: >-
PUT /ISAPI/VideoIntercom/callSignal?format=json
{"CallSignal":{"cmdType":"reject"}}
Here are the Hikvision Doorbell debug logs after the automation has been executed:
2025-06-10 00:35:59.935 | DEBUG | event:_handle_callback:220 - Callback invoked from SDK
2025-06-10 00:35:59.935 | DEBUG | event:_invoke_handlers:192 - Invoking 2 handlers
2025-06-10 00:35:59.935 | INFO | event:video_intercom_alarm:120 - Video intercom alarm from Door Station
2025-06-10 00:35:59.935 | INFO | mqtt:video_intercom_alarm:392 - Doorbell ringing, updating sensor
settings: mqtt=MQTT(host='192.168.1.227', port=1883, username='mqtt', password='', client_name=None, tls_key=None, tls_certfile=None, tls_ca_cert=None, discovery_prefix='homeassistant', state_prefix='hmd') entity=SensorInfo(component='sensor', device=DeviceInfo(name='Door Station', model='DS-KV8113-WME1(C)', manufacturer='Hikvision', sw_version='V2.2.78', hw_version='0x0', identifiers='6883457586564949514587776949406741484950485052494850578282708254575553545149', connections=None, configuration_url=None), device_class=None, enabled_by_default=None, entity_category=None, expire_after=None, force_update=None, icon='mdi:bell', name='Call state', object_id='door_station_call_state', qos=None, unique_id='6883457586564949514587776949406741484950485052494850578282708254575553545149-call_state', unit_of_measurement=None, state_class=None) debug=False manual_availability=True
topic_prefix: sensor/Door-Station/Call-state
config_topic: homeassistant/sensor/Door-Station/Call-state/config
state_topic: hmd/sensor/Door-Station/Call-state/state
wrote_configuration: True
[2025-06-10 00:35:59.935][INF] Alarm[0] IP[192.168.1.135] data_len[568] alarm_len[568] status[430]
2025-06-10 00:36:08.047 | DEBUG | input:loop_forever:39 - Received: reject indoor_substation_dg
2025-06-10 00:36:08.047 | INFO | input:execute_command:114 - Rejecting the call
2025-06-10 00:36:08.047 | DEBUG | sdk.utils:call_ISAPI:125 - Call ISAPI request method url body: PUT /ISAPI/VideoIntercom/callSignal?format=json {"CallSignal": {"cmdType": "reject"}}
[2025-06-10 00:36:08.051][INF] Private connect 192.168.1.33:8000 sock=278 this=0x331d6994 cmd=0x117001 port=40292
2025-06-10 00:36:08.059 | DEBUG | sdk.utils:call_ISAPI:165 - Response output: {
"statusCode": "1",
"statusString": "OK",
"subStatusCode": "ok",
"errorMsg": "ok",
"errorCode": 1
}
2025-06-10 00:36:08.059 | DEBUG | input:loop_forever:39 - Received: reject indoor_substation_og
2025-06-10 00:36:08.059 | INFO | input:execute_command:114 - Rejecting the call
2025-06-10 00:36:08.059 | DEBUG | sdk.utils:call_ISAPI:125 - Call ISAPI request method url body: PUT /ISAPI/VideoIntercom/callSignal?format=json {"CallSignal": {"cmdType": "reject"}}
2025-06-10 00:36:08.060 | INFO | mqtt_input:_isapi_input_callback:505 - Received input text for doorbell: Indoor Substation DG
2025-06-10 00:36:08.060 | DEBUG | sdk.utils:call_ISAPI:125 - Call ISAPI request method url body: PUT /ISAPI/VideoIntercom/callSignal?format=json {"CallSignal":{"cmdType":"reject"}}
[2025-06-10 00:36:08.059][DBG] SimpleSTDCommandToDvr with out cmd[PUT /ISAPI/VideoIntercom/callSignal?format=json], input size[37], max segment length[262144]
[2025-06-10 00:36:08.065][INF] Private connect 192.168.1.136:8000 sock=278 this=0x331d6994 cmd=0x117001 port=38582
2025-06-10 00:36:08.072 | DEBUG | sdk.utils:call_ISAPI:165 - Response output: {
"statusCode": "1",
"statusString": "OK",
"subStatusCode": "ok",
"errorMsg": "ok",
"errorCode": 1
}
2025-06-10 00:36:08.072 | DEBUG | input:loop_forever:39 - Received: reject indoor_station_eg
2025-06-10 00:36:08.072 | INFO | input:execute_command:114 - Rejecting the call
2025-06-10 00:36:08.072 | DEBUG | sdk.utils:call_ISAPI:125 - Call ISAPI request method url body: PUT /ISAPI/VideoIntercom/callSignal?format=json {"CallSignal": {"cmdType": "reject"}}
[2025-06-10 00:36:08.072][DBG] SimpleSTDCommandToDvr with out cmd[PUT /ISAPI/VideoIntercom/callSignal?format=json], input size[37], max segment length[262144]
[2025-06-10 00:36:08.075][INF] Private connect 192.168.1.17:8000 sock=278 this=0x331d6994 cmd=0x117001 port=50870
2025-06-10 00:36:08.082 | DEBUG | sdk.utils:call_ISAPI:165 - Response output: {
"statusCode": "1",
"statusString": "OK",
"subStatusCode": "ok",
"errorMsg": "ok",
"errorCode": 1
}
2025-06-10 00:36:08.082 | DEBUG | input:loop_forever:39 - Received: reject door_station
2025-06-10 00:36:08.082 | INFO | input:execute_command:114 - Rejecting the call
2025-06-10 00:36:08.082 | DEBUG | sdk.utils:call_ISAPI:125 - Call ISAPI request method url body: PUT /ISAPI/VideoIntercom/callSignal?format=json {"CallSignal": {"cmdType": "reject"}}
2025-06-10 00:36:08.087 | DEBUG | sdk.utils:call_ISAPI:165 - Response output: {
"statusCode": "1",
"statusString": "OK",
"subStatusCode": "ok",
"errorMsg": "ok",
"errorCode": 1
}
[2025-06-10 00:36:08.078][INF] Private connect 192.168.1.33:8000 sock=281 this=0x331d6f78 cmd=0x117001 port=40300
[2025-06-10 00:36:08.082][DBG] SimpleSTDCommandToDvr with out cmd[PUT /ISAPI/VideoIntercom/callSignal?format=json], input size[37], max segment length[262144]
[2025-06-10 00:36:08.083][INF] Private connect 192.168.1.135:8000 sock=278 this=0x331d6994 cmd=0x117001 port=50080
[2025-06-10 00:36:08.087][DBG] SimpleSTDCommandToDvr with out cmd[PUT /ISAPI/VideoIntercom/callSignal?format=json], input size[35], max segment length[262144]
2025-06-10 00:36:08.088 | INFO | mqtt_input:_isapi_input_callback:505 - Received input text for doorbell: Indoor Substation OG
2025-06-10 00:36:08.088 | DEBUG | sdk.utils:call_ISAPI:125 - Call ISAPI request method url body: PUT /ISAPI/VideoIntercom/callSignal?format=json {"CallSignal":{"cmdType":"reject"}}
2025-06-10 00:36:08.089 | INFO | mqtt_input:_isapi_input_callback:505 - Received input text for doorbell: Indoor Station EG
2025-06-10 00:36:08.089 | DEBUG | sdk.utils:call_ISAPI:125 - Call ISAPI request method url body: PUT /ISAPI/VideoIntercom/callSignal?format=json {"CallSignal":{"cmdType":"reject"}}
2025-06-10 00:36:08.090 | INFO | mqtt_input:_isapi_input_callback:505 - Received input text for doorbell: Door Station
2025-06-10 00:36:08.090 | DEBUG | sdk.utils:call_ISAPI:125 - Call ISAPI request method url body: PUT /ISAPI/VideoIntercom/callSignal?format=json {"CallSignal":{"cmdType":"reject"}}
[2025-06-10 00:36:08.091][INF] Private connect 192.168.1.135:8000 sock=283 this=0x331d7b40 cmd=0x117001 port=50092
[2025-06-10 00:36:08.092][INF] Private connect 192.168.1.136:8000 sock=281 this=0x331d6f78 cmd=0x117001 port=38590
[2025-06-10 00:36:08.092][INF] Private connect 192.168.1.17:8000 sock=282 this=0x331d755c cmd=0x117001 port=50886
2025-06-10 00:36:08.098 | DEBUG | sdk.utils:call_ISAPI:165 - Response output: {
"statusCode": "1",
"statusString": "OK",
"subStatusCode": "ok",
"errorMsg": "ok",
"errorCode": 1
}
2025-06-10 00:36:08.099 | DEBUG | sdk.utils:call_ISAPI:165 - Response output: {
"statusCode": "1",
"statusString": "OK",
"subStatusCode": "ok",
"errorMsg": "ok",
"errorCode": 1
}
2025-06-10 00:36:08.102 | DEBUG | sdk.utils:call_ISAPI:165 - Response output: {
"requestURL": "/ISAPI/VideoIntercom/callSignal",
"statusCode": 1,
"statusString": "OK",
"subStatusCode": "ok"
}
[2025-06-10 00:36:08.098][DBG] SimpleSTDCommandToDvr with out cmd[PUT /ISAPI/VideoIntercom/callSignal?format=json], input size[35], max segment length[262144]
[2025-06-10 00:36:08.099][DBG] SimpleSTDCommandToDvr with out cmd[PUT /ISAPI/VideoIntercom/callSignal?format=json], input size[35], max segment length[262144]
[2025-06-10 00:36:08.102][DBG] SimpleSTDCommandToDvr with out cmd[PUT /ISAPI/VideoIntercom/callSignal?format=json], input size[37], max segment length[262144]
2025-06-10 00:36:08.108 | DEBUG | sdk.utils:call_ISAPI:165 - Response output: {
"requestURL": "/ISAPI/VideoIntercom/callSignal",
"statusCode": 1,
"statusString": "OK",
"subStatusCode": "ok"
}
[2025-06-10 00:36:08.108][DBG] SimpleSTDCommandToDvr with out cmd[PUT /ISAPI/VideoIntercom/callSignal?format=json], input size[35], max segment length[262144]
[2025-06-10 00:36:17.805][DBG] Alarm chan [0] recv timeout[2]!
2025-06-10 00:36:30.408 | DEBUG | event:_handle_callback:220 - Callback invoked from SDK
2025-06-10 00:36:30.408 | DEBUG | event:_invoke_handlers:192 - Invoking 2 handlers
2025-06-10 00:36:30.408 | INFO | event:video_intercom_alarm:120 - Video intercom alarm from Door Station
2025-06-10 00:36:30.408 | INFO | mqtt:video_intercom_alarm:395 - Call dismissed, updating sensor
settings: mqtt=MQTT(host='192.168.1.227', port=1883, username='mqtt', password='', client_name=None, tls_key=None, tls_certfile=None, tls_ca_cert=None, discovery_prefix='homeassistant', state_prefix='hmd') entity=SensorInfo(component='sensor', device=DeviceInfo(name='Door Station', model='DS-KV8113-WME1(C)', manufacturer='Hikvision', sw_version='V2.2.78', hw_version='0x0', identifiers='6883457586564949514587776949406741484950485052494850578282708254575553545149', connections=None, configuration_url=None), device_class=None, enabled_by_default=None, entity_category=None, expire_after=None, force_update=None, icon='mdi:bell', name='Call state', object_id='door_station_call_state', qos=None, unique_id='6883457586564949514587776949406741484950485052494850578282708254575553545149-call_state', unit_of_measurement=None, state_class=None) debug=False manual_availability=True
topic_prefix: sensor/Door-Station/Call-state
config_topic: homeassistant/sensor/Door-Station/Call-state/config
state_topic: hmd/sensor/Door-Station/Call-state/state
wrote_configuration: True
The automation doesn’t stop ringing at all. There’s no change on doorbell ringing state. Ringing ends after 30 seconds timeout or after rejecting call manually.
I know that there’s usually no need to send “reject” command to all indoor stations and doorbell but I tried to send the request in 2 different ways (addon function and ISAPI function) to all devices to see if this makes a difference but it doesn’t.
I connected doorbell and indoor main station to Hik-Connect cloud service to see if this will solve the problem but it doesn’t.
What am I doing wrong?
Any help appreciated.