jDCS-Viewer
jDCS-Viewer permette di visualizzare il feed video da ip camera D-Link della serie DCS-xxxx, oltre che il panning per le ipcam che lo supportano.
Le ip cam della serie DCS espongono diversi entry point URL. Ad esempio, è possibile visualizzare un fermo immagine tramite browser, usando il seguende URL
(si suppone che l'ip della cam sia 192.168.1.100):
http://username:password@192.168.1.100/image.cgi
Questo meccanismo non è limitato alla serie DCS della D-Link, ma è possibile trovarlo anche su altre ipcam.
Per quanto simili, diverse ip camere potrebbero avere leggere differenze negli URL, ad esempio nel nome dei parametri o nel loro ordine, oppure direttamente
nella loro forma. Un file di modello permette di indicare l'url corretto per ogni categoria di controlli, in formato XML, permettendo a chiunque di aggiungere
la propria IP cam tra quelle supportate.
Un esempio di questo file è riportato di seguito:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<ipcamdata>
<model>DCS-5009L</model>
<version>1.0</version>
<author>Pier Riccardo Monzo</author>
<!--
Usa le seguenti variabili come placeholder:
- %IP% per l'indirizzo IP/URL della ipcam
- %DEGREE% per l'angolo di rotazione della ipcam (PAN/TILT)
- %PRESET% l'indice della posizione preimpostata (0 - home)
-->
<video>
<URLstream>http://%IP%/mjpeg.cgi</URLstream>
<URLimage>http://%IP%/image.jpg</URLimage>
</video>
<audio>
<URLstream>http://%IP%/audio.cgi</URLstream>
</audio>
<panning>
<pannable>true</pannable>
<URLpanUp>http://%IP%/pantiltcontrol.cgi?PanSingleMoveDegree=%DEGREE%&TiltSingleMoveDegree=%DEGREE%&PanTiltSingleMove=1</URLpanUp>
<URLpanDown>http://%IP%/pantiltcontrol.cgi?PanSingleMoveDegree=%DEGREE%&TiltSingleMoveDegree=%DEGREE%&PanTiltSingleMove=7</URLpanDown>
<URLpanLeft>http://%IP%/pantiltcontrol.cgi?PanSingleMoveDegree=%DEGREE%&TiltSingleMoveDegree=%DEGREE%&PanTiltSingleMove=3</URLpanLeft>
<URLpanRight>http://%IP%/pantiltcontrol.cgi?PanSingleMoveDegree=%DEGREE%&TiltSingleMoveDegree=%DEGREE%&PanTiltSingleMove=5</URLpanRight>
<URLpreset>http://%IP%/pantiltcontrol.cgi?PanTiltPresetPositionMove=%PRESET%</URLpreset>
</panning>
<command>
<NVtogglable>true</NVtogglable>
<URLNVon>http://%IP%/daynight.cgi?DayNightMode=3&ConfigReboot=no</URLNVon>
<URLNVoff>http://%IP%/daynight.cgi?DayNightMode=2&ConfigReboot=no</URLNVoff>
<URLNVauto>http://%IP%/daynight.cgi?DayNightMode=0&ConfigReboot=no</URLNVauto>
<MotionTogglable>true</MotionTogglable>
<URLmotionOn>http://%IP%/motion.cgi?MotionDetectionEnable=1&ConfigReboot=no</URLmotionOn>
<URLmotionOff>http://%IP%/motion.cgi?MotionDetectionEnable=0&ConfigReboot=no</URLmotionOff>
</command>
</ipcamdata>
Molte di queste ipcam fanno ancora uso di applet java per alcune delle funzioni di configurazione: la selezione delle aree per il rilevamento del movimento
è un'applet java, così come uno dei due player (avete letto bene, supporta due formati con DUE player diversi, uno per formato video). Questo significa che praticamente
nessun browser odierno permette di configurare completamente queste IP cam.
L'idea è quindi quella di sviluppare un'app che faccia esattamente le stesse cose di questa applicazione, e un server da installare sulla stessa rete dell'ipcam.
L'app invia i comandi al server, che a sua volta invia (su richiesta) il flusso video (più l'audio, se richiesto) all'app.
Ovviamente risulta essere particolarmente scomodo dover utilizzare un pc (anche un raspberry pi) solo per poter continuare ad utilizzare una vecchia ipcam,
quando potrebbe essere più economico acquistarne una nuova.