2015年4月28日 星期二

ONVIF -- Profile Q

本文為 ONVIF_Profile_Q_Spec_RC_v1-0.pdf 的重點整理。

當一個設備宣稱支援 ONVIF Profile Q,可能有兩種意義
  • An ONVIF device can be discovered and configured by an ONVIF client.
  • An ONVIF client can discover, configure and control an ONVIF device compliant over an IP network.

要宣稱支援 ONVIF Profile Q,則要回應正確的scope,根據設備目前所在的狀態,可能有兩個回應:
  • onvif://www.onvif.org/Profile/Q/FactoryDefault
  • onvif://www.onvif.org/Profile/Q/Operational
一、Factory Default State 
在進行 hard factory reset 之後,設備應該進入 Factory Default State。
此時設備應該要提供 full anonymous access,直到設備變成 Operation State。我猜測full anonymous access的意思為,此時進行任何操作是不需要帳號密碼的。 
Factory Default State 之下,設備要確定下列功能都是 enable
WS-Discovery(Discoverable mode), DHCP and IPv4 Link Local Address, IPv6 stateless autoconfiguration。 
在 Factory Default State,進行下列其中一項操作,便會切換至 Operation State
  • the operator creates a new admin user by successfully invoking CreateUsers with a non-empty password
  • the operator modifies the password of an existing admin user by invoking SetUser 
二、Operation State 
當進入Operation State 之後,後續的任何操作便需要 HTTP digest authentication 方式進行認證,並且需要符合 ONVIF 定義的 access policy。詳細流程可參考 ONVIF-Core-Specification-v250.pdf 5.12 Security。


Profile Q 所定義的 Mandatory Features
GetServices :(GetServiceCapabilities)
  • 需宣稱支援 ZeroConfiguration
  • 需要提供 MaxUsernameLength 和 MaxPasswordLength 
將 Profile Q 與 Profile S 進行比較,可得知下列 API 也要變成必要功能
  • GetZeroConfiguration
  • SetZeroConfiguration 
  • GetNTP
  • SetNTP 
需新增四個 Monitoring Events
  • tns1:Monitoring/ProcessorUsage
  • tns1:Monitoring/OperatingTime/LastReset
  • tns1:Monitoring/OperatingTime/LastReboot
  • tns1:Monitoring/OperatingTime/LastClockSynchronization
並且需注意 GetServiceCapabilities 回應中所指定的 MaxPullPoints 應該大於 2


Profile Q 所定義的 Conditional Features
需支援下列 API
  • GetRemoteUser
  • SetRemoteUser
  • StartFirmwareUpgrade
  • GetSystemUris
  • StartSystemRestore
  • CreateCertificationPath
  • DeleteCertificate
  • DeleteCertificationPath
  • DeleteKey
  • GetAllCertificates
  • GetAllCertificationPaths
  • GetAllKeys
  • GetCertificate
  • GetCertificationPath
  • GetKeyStatus
  • UploadCertificate
  • AddServerCertificateAssignment
  • GetAssignedServerCertificates
  • RemoveServerCertificateAssignment
  • ReplaceServerCertificateAssignment
  • SetNetworkProtocols 
可以選擇是否要新增下列五個 Events (可參考 topic--20130703.wsdl)
  • tns1:Device/HardwareFailure/FanFailure
  • tns1:Device/HardwareFailure/PowerSupplyFailure
  • tns1:Device/HardwareFailure/StorageFailure
  • tns1:Device/HardwareFailure/TemperatureCritical
  • tns:Monitoring/Backup/Last

註1:ONVIF Device Test Tool v14.12 已經導入了某些 Profile Q 的測試案例。
註2:2016/08/02 Profile Q 正式 release