_Home_ My.Projects() $BLOG! About.me #Contact

Login

 | jDCS-Viewer


Caratteristiche

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.

File di modello

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>

Sviluppi futuri

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.

Codice sorgente

GITHUB LOGO Sorgente (English)