Вызывные панели HiWatch, iFlow и других брендов на базе Hikvision поддерживают управление замком через API-интерфейс ISAPI. Это позволяет открывать дверь удалённо — например, интегрировать домофон в систему «умный дом» или управлять доступом через сценарии. В этой статье разберём готовый рабочий пример и объясним, как он работает.


Рабочий пример команды

Для дистанционного открытия замка используется HTTP-запрос типа PUT к устройству с XML-телом. Вот готовый рабочий curl-запрос, который открывает дверь:

curl --insecure -u admin:Pa$$w0rD --digest -X PUT -d "<RemoteControlDoor><cmd>open</cmd></RemoteControlDoor>" http://192.168.100.137/ISAPI/AccessControl/RemoteControl/door/1

Этот пример взят из реальной практики интеграции панелей HiWatch с системами автоматизации и гарантированно открывает замок при корректных учётных данных и IP-адресе.


Как это работает: разбор команды

ПараметрЗначениеПояснение
--insecure(флаг)Отключает проверку SSL-сертификата — полезно, если на панели самоподписанный сертификат
-u admin:Pa$$w0rDлогин:парольУчётные данные от веб-интерфейса панели (администратор)
--digest(флаг)Включает Digest-аутентификацию — обязательный тип авторизации для Hikvision ISAPI
-X PUTметод запросаИспользуется метод PUT для отправки команды управления
-d "<RemoteControlDoor>...</RemoteControlDoor>"XML-телоКоманда открытия замка в формате XML
http://192.168.100.137/.../door/1URLАдрес устройства, путь ISAPI, номер двери — 1

Почему обязателен --digest

Hikvision и его суббренды (HiWatch, iFlow) используют Digest-аутентификацию для ISAPI-запросов. Без этого флага устройство вернёт ошибку аутентификации 401 или badAuthorization . Это стандарт безопасности, который защищает пароль от перехвата.

curl с флагом --digest автоматически выполняет двухшаговую процедуру: сначала получает от устройства nonce (случайное число), затем отправляет запрос с хешем, сгенерированным из пароля и этого числа.


Где взять IP-адрес и пароль

  1. IP-адрес панели можно узнать:
    • В интерфейсе вашего роутера (список подключённых устройств)
    • Через программу SADP (для Hikvision/HiWatch)
    • В меню самой панели (если есть дисплей)
  2. Логин и пароль — это учётная запись администратора панели. Обычно:
    • Логин: admin
    • Пароль: тот, который вы установили при активации панели. Заводской пароль 12345 работает только до первой активации — после принудительной смены он перестаёт действовать.

Альтернативная структура XML

В некоторых случаях требуется более полная XML-структура с указанием xmlns и version. Для таких ситуаций подходит следующий вариант:

curl --digest -u admin:Pa$$w0rD 'http://192.168.100.137/ISAPI/AccessControl/RemoteControl/door/1' -X 'PUT' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' --data-raw '<RemoteControlDoor xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0"><cmd>open</cmd></RemoteControlDoor>' --insecure

Обе версии (краткая и полная) рабочие, но полная рекомендуется для совместимости с разными моделями и прошивками.


Дополнительные команды

Помимо открытия замка, через тот же эндпоинт можно отправить и другие команды :

КомандаXML-телоНазначение
Открыть<RemoteControlDoor><cmd>open</cmd></RemoteControlDoor>Импульсное открытие замка
Держать открытым<RemoteControlDoor><cmd>alwaysOpen</cmd></RemoteControlDoor>Открывает замок и удерживает его в открытом состоянии (до команды resume)
Вернуть в обычный режим<RemoteControlDoor><cmd>resume</cmd></RemoteControlDoor>Возвращает замок в обычный режим после alwaysOpen

Когда использовать alwaysOpen и resume

Команда alwaysOpen полезна, если нужно временно разблокировать дверь для пропуска группы людей или въезда автомобиля. Однако важно помнить, что дверь останется открытой до получения команды resume. Если забыть вернуть замок в обычный режим, это создаст уязвимость в системе безопасности.


Проверка доступных команд

Чтобы узнать, какие команды поддерживает ваша панель, отправьте GET-запрос к эндпоинту capabilities:

curl --digest -u admin:Pa$$w0rD 'http://192.168.100.137/ISAPI/AccessControl/RemoteControl/door/capabilities' --insecure

Ответ покажет, какие команды разрешены и какой диапазон номеров дверей доступен:

<RemoteControlDoor xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
<doorNo min="1" max="2"/>
<cmd opt="open,close,alwaysOpen,resume"/>
</RemoteControlDoor>

Если в ответе нет open, значит, замок не поддерживает дистанционное открытие через ISAPI — либо требуется другая версия протокола.


Частые ошибки и их решение

ОшибкаПричинаРешение
401 Unauthorized или badAuthorizationОтсутствует Digest-аутентификация или неверный логин/парольДобавьте флаг --digest, проверьте пароль
404 Not FoundНеверный путь или номер двериПроверьте путь: /ISAPI/AccessControl/RemoteControl/door/1. Попробуйте door/2 или door/0
Invalid OperationКоманда не поддерживаетсяИспользуйте только openalwaysOpenresume
badXmlContentНеверный формат XML или кодировкаИспользуйте полную структуру с xmlns и version="2.0"
403 ForbiddenНедостаточно прав у пользователяУбедитесь, что используется учётная запись администратора

Интеграция в системы автоматизации

Этот API-вызов можно использовать в различных сценариях:

  • Home Assistant: через RESTful-команду с указанием метода PUT, типа аутентификации digest и XML-тела
  • Node-RED: через HTTP Request node с телом запроса и Digest Auth
  • ioBroker: через соответствующий адаптер или прямые HTTP-запросы
  • Собственные скрипты: на Python, JavaScript или любом языке, поддерживающем HTTP

В любом случае структура запроса остаётся той же: PUT к эндпоинту /ISAPI/AccessControl/RemoteControl/door/1 с XML-телом <RemoteControlDoor><cmd>open</cmd></RemoteControlDoor> и обязательной Digest-аутентификацией.