Salvataggio snapshot IPCAM tramite PHP

iz1kbp

Nuovo Utente
3 Lug 2020
6
0
1
Buongiorno a Tutti,
Sto lavorando su una vecchia IP CAM che ho installato com WEBCAM meteo nel mio sito meteo, ma che purtroppo non ha implementato ,nel suo pannello di controllo, il salvataggio temporizzato dell'immagine (snapshot)
La mia necessita è questa : dovrei salvare sul mio sito, l'immagine, snapshot ,della webcam IP ad intervalli di tempo predefiniti
Questa funzione la attuo (gia lo faccio per altre periferiche IP che uso) tramite cronjob che richiama ad intervalli di tempo, alcuni piccoli script php.
Alcuni di questi script, per esempio, catturano i dati meteo della stazione (temperatura, umidita etc etc) e li scrivono in database mysql , oppure li sovrascrivono sull'immagine di un'altra Webcam (analogica su webserver video linux) e cosi via...

Lo snapshot della mia ipcam riesco a raggiungerlo tramite questo comando html
Codice:
'http://miodominio.dyndns.org:xxxx/GetImage.cgi?CH=1');
La Ipcam richiede user e pass per accedere. (admin,admin...semplicemente). Alla richiesta del browser, semplicemente, inserisco i dati e mi compare nel browser l'immagine (snapshot).
Quel che vorrei fare io è , automatizzare questa operazione tramite script php richiamato da cronjob (server side) e salvare questa immagine in un file sul mio sito , per poi poterlo elaborare.
Non ho molta esperienza in php, e sto cercando di risolvere il problema...ma senza riuscirci.
Sono arenato su questo semplice codice che mi restituisce errore di NON autorizzato : failed to open stream: HTTP request failed! HTTP/1.0 401 Unauthorized in /web/htdocs/www ....etc etc...

PHP:
<?php
$username='admin';
$password='admin';
$URL='http://iz1kbp.dyndns.org:8891/GetImage.cgi?CH=1';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$URL);
curl_setopt($ch, CURLOPT_TIMEOUT, 30); //timeout after 30 seconds
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
$result=curl_exec ($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);   //get status code
echo $result;
curl_close ($ch);
?>
La mia domanda? qualcuno mi puo dare una mano a risolvere il problema di user, pass e poi, a salvare questo snapshot, in una directory del mio sito?
Grazie a chiunque mi possa dare dei suggerimenti!
Buon proseguimento
IZ1KBP, Mario
 

iz1kbp

Nuovo Utente
3 Lug 2020
6
0
1
Ho provato una via piu spiccia...non mi restituisce errore di autorizzazione ma in compenso mi salva un file vuoto
PHP:
<?php
$rCURL = curl_init();
curl_setopt($rCURL, CURLOPT_URL, 'http://admin:[email protected]:xxxx/GetImage.cgi?CH=1');
curl_setopt($rCURL, CURLOPT_HEADER, 0);
curl_setopt($rCURL, CURLOPT_RETURNTRANSFER, 1);
$aData = curl_exec($rCURL);
curl_close($rCURL);
file_put_contents('test.jpeg', $aData);
?>
Avete qualche suggerimento/correzione da propormi ?
Mario
 

marino51

Utente Attivo
28 Feb 2013
2.931
166
63
Lombardia
ho usato il tuo primo script, inserendo,
file_put_contents('test.jpeg', $result);
e funziona senza intoppi,
1593780963426.png
 

iz1kbp

Nuovo Utente
3 Lug 2020
6
0
1
ho usato il tuo primo script, inserendo,
file_put_contents('test.jpeg', $result);
e funziona senza intoppi,
Vedi l'allegato 7505
Ciao Marino, grazie per il test...
Ho provato ad aggiungere la funzione get come suggerisci tu (spero di averlo fatto nel modo corretto) ma purtroppo a me continua restituire un file vuoto
PHP:
<?php
$username='admin';
$password='admin';
$URL='http://iz1kbp.dyndns.org:8891/GetImage.cgi?CH=1';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$URL);
curl_setopt($ch, CURLOPT_TIMEOUT, 30); //timeout after 30 seconds
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
$result=curl_exec ($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);   //get status code
echo $result;
curl_close ($ch);
file_put_contents('test.jpeg', $result);
?>
Cattura.PNG

La directory sul server con il file php di prova e con il file risultante, in rosso, vuoto

Non capisco...
 

iz1kbp

Nuovo Utente
3 Lug 2020
6
0
1
Normalmente lavoro con FF....per scrupolo ho provato con IE 11 e ....funziona!
Non capisco....ulteriormente!:oops:
 

iz1kbp

Nuovo Utente
3 Lug 2020
6
0
1
Mi correggo....funzionava. Dopo 2 tentativi andati a buon fine...nulla. tutto come prima, pure con IE....:(