ONVIF Ошибка SetSystemDateAndTime: конфликт ручной установки и NTP
- Команда изменения времени
SetSystemDateAndTimeзавершается ошибкойter:InvalidArgValилиCannot change manual time while NTP is active. - Рассинхронизация времени между сервером СКУД/VMS и камерой приводит к инвалидации токенов WS-Security.
- Метка времени накладываемого экранного меню (OSD) постоянно «прыгает» на несколько часов.
1. Механизмы синхронизации времени в спецификации ONVIF
Метод SetSystemDateAndTime сервиса Device поддерживает два взаимоисключающих режима управления временем (DateTimeType):
- NTP: Время автоматически синхронизируется с внешними серверами времени. Ручная установка даты и времени в этом режиме запрещена и вызывает отказ;
- Manual: Время задается вручную клиентом по сети (в формате UTC).
2. Пошаговый перевод камеры в ручной режим управления временем
Для ручной синхронизации времени передайте параметр <tt:DateTimeType>Manual</tt:DateTimeType> и отключите режим NTP:
<soapenv:Body>
<tds:SetSystemDateAndTime xmlns:tds="http://www.onvif.org/ver10/device/wsdl" xmlns:tt="http://www.onvif.org/ver10/schema">
<tds:DateTimeType>Manual</tds:DateTimeType>
<tds:DaylightSavings>false</tds:DaylightSavings>
<tds:TimeZone>
<tt:TZ>UTC-03:00</tt:TZ>
</tds:TimeZone>
<tds:UTCDateTime>
<tt:Time>
<tt:Hour>14</tt:Hour>
<tt:Minute>30</tt:Minute>
<tt:Second>00</tt:Second>
</tt:Time>
<tt:Date>
<tt:Year>2025</tt:Year>
<tt:Month>1</tt:Month>
<tt:Day>15</tt:Day>
</tt:Date>
</tds:UTCDateTime>
</tds:SetSystemDateAndTime>
</soapenv:Body>3. Правильная настройка синхронизации через NTP (Рекомендуемый подход)
Вместо циклической отправки ручного времени настройте корпоративный NTP-сервер:
<soapenv:Body>
<tds:SetNTP xmlns:tds="http://www.onvif.org/ver10/device/wsdl" xmlns:tt="http://www.onvif.org/ver10/schema">
<tds:FromDHCP>false</tds:FromDHCP>
<tds:NTPManual>
<tt:Type>IPv4</tt:Type>
<tt:IPv4Address>192.168.1.1</tt:IPv4Address>
</tds:NTPManual>
</tds:SetNTP>
</soapenv:Body>4. Формат временных зон POSIX TZ
Обратите внимание: в стандарте POSIX знак смещения зоны инвертирован относительно стандарта ISO. Например, зона Москва GMT+3 в нотации POSIX TZ записывается как MSK-3.
Частые вопросы (FAQ)
Почему после успешного вызова SetSystemDateAndTime время снова сбивается?
Если на камере включен флаг 'FromDHCP' в настройках NTP, DHCP-сервер при каждом обновлении аренды перезаписывает адрес NTP и время сбрасывается.
Как получить текущее время с камеры без авторизации?
Метод GetSystemDateAndTime по спецификации ONVIF является открытым (не требует заголовка WS-Security) для обеспечения начальной калибровки часов клиента.
Почему OSD надпись времени отстает на 3 часа?
UTCDateTime задает глобальное системное время, а OSD накладывает локальное время с учетом поля TimeZone. Проверьте правильность строки TZ.
Что произойдет, если батарейка RTC на плате камеры разряжена?
При каждом отключении питания часы камеры будут сбрасываться на заводскую дату сборки прошивки (например, 1970 или 2018 год), блокируя авторизацию до первого ответа NTP.