Requêtes HTTP sur camera IP D-Llink

52322661

Tour d’horizon

Documentation D-Link

Les caméras IP D-Link peuvent être interrogées et paramétrées par l’intermédiaire de requêtes http. Hélas, force est de constater que D-Link ne communique pas là-dessus. Je n’ai trouvé aucune documentation du constructeur propre à mes caméras concernant cet aspect.

La première documentation D-Link que j’ai trouvée est IP Camera CGI Interface et concerne les caméras IP DCS-910 et DCS-920. Bien que trouvée sur un site D-Link, il ne s’agit pas vraiment d’une documentation D-Link mais de la version 1.2 de IP Camera CGI Interface (IPCamCGI). J’ai ensuite trouvé quelques véritables documentations D-Link mais toujours concernant des produits assez anciens (DCS-3420, DCS-6620/G, DCS-3220/G, DCS-5300/G, DCS-2100/G/+, DCS-2000, DVS-301, DCS-5220, DCS-2120).

Il existe un Forum D-Link qui constitue une véritable mine d’informations sur les produits D-Link. C’est sur ce forum que j’ai découvert que la caméra IP DCS-2230 est compatible avec l’API NVSCGI.

Common Gateway Interface (CGI)

La Common Gateway Interface (CGI) est une interface utilisée par les serveurs web permettant d’exécuter côté serveur des scripts générant du code HTML afin de générer des pages dynamiques. Cette interface a été normalisée (RFC 3875).

D-Link et la norme Onvif

ONVIF (Open Network Video Interface Forum) est un organisme à but non lucratif dont la mission est de créer une norme mondiale pour l’interface des produits de sécurité basés IP, tels que les caméras IP, les plateformes de gestion vidéo (VMS, NVR) et les systèmes de contrôle d’accès. Les spécifications de base établies par l’ONVIF incluent : la configuration IP ; la découverte des dispositifs ; la gestion des dispositifs ; la configuration des médias ; le visionnage en temps réel ; la gestion d’événements ; le contrôle de caméras PTZ ; la vidéo analytique ; la sécurité ; le stockage ; les aspects de l’analytique. Fin 2012, l’ONVIF a lancé Profile S afin d’améliorer l’interopérabilité entre produits conformes aux différentes versions des spécifications de base ONVIF.

D-Link travaille en étroite collaboration avec l’ONVIF afin que ses produits de surveillance IP soient plus faciles à intégrer avec des dispositifs tiers. Voici la liste complète des produits D-Link conformes aux exigences ONVIF :

Je n’ai cependant rien trouvé expliquant comment interagir avec une caméra IP en utilisant des requêtes HTTP dans le cadre de cette norme.

Requêtes HTTP sur DCS-2230 et DCS-6511

Les caméra IP DCS-2230 et DCS-6511 (et probablement la plupart des caméra D-Link actuelles) sont compatibles avec l’API NVSCGI (Network Video Server CGI Application Programming Interface) ou encore avec l’API NIPCA (Network IP Camera Application Programming Interface). Le problème est qu’il existe plusieurs variantes de chacune. Je n’ai pas trouvé de documentation D-Link détaillant (ou même abordant) cet aspect. La marque Convision documente cette API pour ses produits. En voici plusieurs variantes, les spécifications des premières (en gras) sont partiellement compatibles avec mes caméras D-Link : NVSCGI API-1.0,CGI_2121, DCS2121 support table, EV1180-NVSCGI API-V1.4a, CONVISION_CC-8213-L_D_en, CONVISION_CC-801x-Encoder-NVSCGI API-V1.6, CONVISION_CC-8xxx-Camera-NVSCGI API-V1.7c.

Il est enfin théoriquement possible de télécharger les sources des firmwares qui sont sous licence GPL afin d’en explorer le code pour y trouver les requêtes implémentées. Théoriquement car D-Link bride le débit de téléchargement au point de rendre ce dernier illusoire (D-Link viole la GPL ?). Dans cette optique, ce fichier request.c (relatif à une DCS-2130) est une mine d’information.

Voici quelques exemples de requêtes que j’ai pu tester avec succès. Les url doivent commencer par http://<ipCam>:<port> ou par http://<usr>:<pwd>@<ipCam>:<port> pour inclure l’authentification dans l’url.

  • Prendre une photo (depuis le flux 1) : /dms?nowprofileid=1
  • Prendre une photo : /image/jpeg.cgi
  • Streaming video en direct(depuis le flux 1) : /video/mjpg.cgi?profileid=1
  • Query stream information : /config/stream_info.cgi
  • Get basic information : /common/info.cgi
  • Get network config : /config/network.cgi
  • Get motion detection : /config/motion.cgi
  • Set motion detection (activation et sensibilité à 50) : /config/motion.cgi?enable=yes&sensitivity=50
  • Get digital input/output : /config/io.cgi
  • Set digital output (activation) : /config/io.cgi?out1=on
    (You can only set the available digital outputs, inputs are read-only)
  • Get LED : /config/led.cgi
  • Set LED (éteindre) : /config/led.cgi?led=off
  • Get ICR config : /config/icr.cgi
  • Get IR config : /config/irled.cgi
  • Set ICR (mode=auto|night|day|schedule) : /config/icr.cgi?mode=auto
  • Set ICR (planification du mode jours de 8h à 20h) :
    /config/icr.cgi?mode=schedule&starttime=08:00&endtime=20:00
  • Fichier log de la caméra : /cgi-bin/exportlog.cgi
  • SD Card config : /config/sdcard.cgi
  • Get audio stream : /audio/ACAS.cgi

Cette entrée a été publiée dans Domotique, DLink, Surveillance and taguée . Placez un signet sur le permalien.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *