2010-08-29 22 views
5

Câu hỏi của tôi là về đặc tả ONVIF. http://www.onvif.org/imwp/download.asp?ContentID=18006 Trong phần 5.10, nó nói:ONVIF: Cách tạo địa chỉ dịch vụ web của thiết bị từ địa chỉ IP của NVT

Một dịch vụ là một tập hợp các cổng có liên quan. Đặc tả này không quy định bất kỳ nguyên tắc đặt tên dịch vụ nào.

Cho phép nói rằng tôi có địa chỉ IP của NVT (Máy phát video mạng như máy ảnh IP chẳng hạn), làm cách nào để tạo địa chỉ của dịch vụ web quản lý thiết bị? Dịch vụ này là điểm vào của toàn bộ hệ thống.

Cảm ơn bạn.

Trả lời

4

Theo official document (phần 5.1.1), bạn có thể truy cập vào dịch vụ tại http://<IP address>/onvif/device_service

2

bạn phải thêm dịch vụ trong tập tin xsdl ONVIF (cho phép nói http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl)

<wsdl:definitions ......> 
     .............. 
     </wsdl:binding> 
     <!--===============================--> 
     <wsdl:service name="DeviceService"> 
      <wsdl:port name="DevicePort" binding="tds:DeviceBinding"> 
       <soap:address location="http://ip/onvif/device_service"/> 
      </wsdl:port> 
      </wsdl:service> 
    </wsdl:definitions> 

và tạo ws mã nguồn khách hàng (đối với java có thể sử dụng wsimport)

Như đã đề cập, điểm nhập cho webservice là http://ip/onvif/device_service

0

Quy ước được chỉ định bởi Şafak được mô tả trong tiêu chuẩn ONVIF. Nhưng trong thực tế, một số thiết bị không tuân theo nó. Trong trường hợp này, bạn hãy thử gửi unicast ws-discovery Probe yêu cầu (hoặc multicast và sau đó lọc ProbeMatch trả lời bằng địa chỉ ip), trường XAddrs trong ProbeMatch trả lời sẽ chứa địa chỉ cần thiết cho dịch vụ thiết bị.

0

Chỉ cần lưu ý sử dụng ở mọi nơi có địa chỉ *http://IP/onvif/device_service* để tiếp cận các dịch vụ. Theo yêu cầu GetServices:

<env:Body> 
     <tds:GetServicesResponse> 
      <tds:Service> 
       <tds:Namespace>http://www.onvif.org/ver10/device/wsdl</tds:Namespace> 
       <tds:XAddr>http://IP/onvif/device_service</tds:XAddr> 
       <tds:Version> 
        <tt:Major>2</tt:Major> 
        <tt:Minor>10</tt:Minor> 
       </tds:Version> 
      </tds:Service> 

      <tds:Service> 
       <tds:Namespace>http://www.onvif.org/ver10/media/wsdl</tds:Namespace> 
       <tds:XAddr>http://IP/onvif/Media</tds:XAddr> 
       <tds:Version> 
        <tt:Major>2</tt:Major> 
        <tt:Minor>10</tt:Minor> 
       </tds:Version> 
      </tds:Service> 

      <tds:Service> 
       <tds:Namespace>http://www.onvif.org/ver10/events/wsdl</tds:Namespace> 
       <tds:XAddr>http://IP/onvif/Events</tds:XAddr> 
       <tds:Version> 
        <tt:Major>2</tt:Major> 
        <tt:Minor>10</tt:Minor> 
       </tds:Version> 
      </tds:Service> 

      <tds:Service> 
       <tds:Namespace>http://www.onvif.org/ver20/ptz/wsdl</tds:Namespace> 
       <tds:XAddr>http://IP/onvif/PTZ</tds:XAddr> 
       <tds:Version> 
        <tt:Major>2</tt:Major> 
        <tt:Minor>10</tt:Minor> 
       </tds:Version> 
      </tds:Service> 

      <tds:Service> 
       <tds:Namespace>http://www.onvif.org/ver20/imaging/wsdl</tds:Namespace> 
       <tds:XAddr>http://IP/onvif/Imaging</tds:XAddr> 
       <tds:Version> 
        <tt:Major>2</tt:Major> 
        <tt:Minor>10</tt:Minor> 
       </tds:Version> 
      </tds:Service> 

      <tds:Service> 
       <tds:Namespace>http://www.onvif.org/ver10/deviceIO/wsdl</tds:Namespace> 
       <tds:XAddr>http://IP/onvif/DeviceIO</tds:XAddr> 
       <tds:Version> 
        <tt:Major>2</tt:Major> 
        <tt:Minor>10</tt:Minor> 
       </tds:Version> 
      </tds:Service> 

      <tds:Service> 
       <tds:Namespace>http://www.onvif.org/ver20/analytics/wsdl</tds:Namespace> 
       <tds:XAddr>http://IP/onvif/Analytics</tds:XAddr> 
       <tds:Version> 
        <tt:Major>2</tt:Major> 
        <tt:Minor>10</tt:Minor> 
       </tds:Version> 
      </tds:Service> 
     </tds:GetServicesResponse> 

    </env:Body> 

Bạn có thể có các dịch vụ khác nhau trên các url khác nhau. Điều này đã được nhìn thấy trên một trong những máy ảnh HikVision. Hầu hết trong số họ sử dụng *http://IP/onvif/device_service*.

0

Thực ra qua WS-Discovery, bạn chỉ có thể nhận địa chỉ dịch vụ thiết bị. Địa chỉ của các dịch vụ khác mà bạn phải nhận được với DeviceService: Yêu cầu GetServices hoạt động 100% với địa chỉ bạn đã có trước đó với WS-Discovery.