Visualizzazione risultati 1 fino 28 di 28
Like Tree1Likes
  • 1 Post By muroduro

Discussione: PHP - Catturare snapshot di IPCAM

  1. #1
    muroduro non è connesso Utente AlterBlog
    Data registrazione
    24-06-2020
    Messaggi
    12

    Unhappy PHP - Catturare snapshot di IPCAM

    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 scritto direttamente nel browser
    Codice:
    'http://miodominio.dyndns.org:xxxx/GetImage.cgi?CH=1');
    La Ipcam richiede user e pass per accedere. (user,pass...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.
    Ho provato con questo codice ma non funziona, o meglio alle volte funziona (1 su 10)...ma la maggior parte delle volte restituisce un file vuoto.
    Provato sia con FF che con IE
    Quando funzi0na lo status è diverso da 0...mentre il piu delle volte è ZERO, sembra che non risesca a raggiungere la pagina
    La porta xxxx sul mio router è aperta,funzionate e raggiungibile dall'esterno

    Codice:
    <?php
    $username='user';
    $password='pass';
    $URL='http://miodominio.dyndns.org:xxxx/GetImage.cgi?CH=1';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$URL);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30); //timeout dopo 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);   //ritorna lo satus
    echo $result;
    curl_close ($ch);
    file_put_contents('test.jpeg', $result);
    ?>

    QUalcuno sa darmi qualche dritta per risolvere il problema?
    Grazie e buon proseguimento

    mario

  2. #2
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    4,003

    Predefinito

    Salve,
    lo script che usa, ha il timeout a 30 secondi, ogni qunato la webcam genera l'immagine?

    Per funzionare correttamente, le tempistiche devono essere sicronizzate.

    Nel file c'è anche l'esmpio

  3. #3
    muroduro non è connesso Utente AlterBlog
    Data registrazione
    24-06-2020
    Messaggi
    12

    Predefinito

    Buongiorno e grazie per il replay!
    lo script che usa, ha il timeout a 30 secondi, ogni qunato la webcam genera l'immagine?
    Come ho scritto, la webcam NON ha nel suo setup, la possibilita di mandare immagini in maniera temporizzata (ha circa 8 anni...forse una delle prime) mentre l'accesso , tramite browser , usando il comando html è sempre disponibile.
    Il TIMEOUT nello script , se non ho interpretato male il manuale d'uso del comando CURL, è il tempo che il comando deve attendere la risposta prima di uscire dal comando.
    Dalle prove che ho fatto io, dando il comando diretto da browser, il ritorno, cioè la visualizzazione dell'immagine è pressoche immediata.
    Ho messo io il time out ...quasi per scaramanzia.
    Per funzionare correttamente, le tempistiche devono essere sicronizzate.
    Ho a disposizione, come scrivevo, un cronjob per eseguire piccoli script php in maniera automatica...e questo sarebbe uno di quelli che devo implementare per supplire alla mancanza di un timer sulla ipcam

    Nel file c'è anche l'esmpio
    Non capisco...dovrei vedere un file allegato a questo post?

    Grazie e buon proseguimento

    Mario

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Il TIMEOUT nello script , se non ho interpretato male il manuale d'uso del comando CURL, è il tempo che il comando deve attendere la risposta prima di uscire dal comando.
    Una precisazione: è il tempo massimo che il comando è disposto ad attendere prima di essere interrotto e annullato. A parte questo dettaglio il resto è corretto .

    Ho provato con questo codice ma non funziona, o meglio alle volte funziona (1 su 10)...ma la maggior parte delle volte restituisce un file vuoto.
    Provato sia con FF che con IE
    Quando funzi0na lo status è diverso da 0...mentre il piu delle volte è ZERO, sembra che non risesca a raggiungere la pagina
    La porta xxxx sul mio router è aperta,funzionate e raggiungibile dall'esterno
    Questo suggerisce che la comunicazione è possibile, se a volte funziona vuol dire che non ci sono ostacoli sistematici durante la connessione. Lo status uguale a 0 negli altri casi indica generalmente un problema di connessione. Hai modo di provare a ricevere l'immagine tramite cURL al di fuori di un ambiente web? In ogni caso, prova a usare curl_error() per vedere se vengono restituite informazioni su eventuali errori.

    I suggerimenti che do più spesso:


  5. #5
    muroduro non è connesso Utente AlterBlog
    Data registrazione
    24-06-2020
    Messaggi
    12

    Predefinito

    Ciao mzanella! grazie per il replay.
    Si...spesso sembra che l'indirizzo non possa essere raggiunto,lo status infatti è 0...ma non capisco perchè!
    Hai modo di provare a ricevere l'immagine tramite cURL al di fuori di un ambiente web?
    Non capisco cosa intendi...

    Manualmente, cioè aprendo FF, e scrivendo il comando, ho notato due cose:
    La prima volta mi chiede user e pass..le successive no.
    sto provando a fare il refresh con f5 in maniera veloce per vedere se ci possono essere problemi di "intasamento"...ma niente, non perde un colpo.

    Ho l'impressione che la comunicazione rimanda aperta, e le succesive richieste , per questo motivo , vengano rifiutate.Ti dico cosi perchè quando funziona,la comparse del file nella directory del sito è pressoche immediata..dal secondo tentativo...niente!

  6. #6
    muroduro non è connesso Utente AlterBlog
    Data registrazione
    24-06-2020
    Messaggi
    12

    Predefinito

    Ciao...sto provando a percorre questa strada senza passare da curl ed usando i comandi base per salvare ed inoltre apro e chiudo la sessione.

    Codice:
    <?php
    	session_start();
    	if( ini_get('allow_url_fopen') ) {
          //set the index url
          $source  = file_get_contents('http://admin:admin@iz1kbp.dyndns.org:8891/GetImage.cgi?CH=1');
          $filestr = "ipcam1.jpg";
          $fp = fopen($filestr, 'wb');
          if ($fp !== false) {
            fwrite($fp, $source);
            fclose($fp);
          }
    	  }
    // cancello tutti i dati di sessione
    $_SESSION = array();
    // Cancelliamo l'eventuale cookie di sessione
    if (isset($_COOKIE[session_name()]))
    	{
    	 setcookie(session_name(), '', time()-42000, '/');
    	}
    // distruggiamo la sessione
    session_destroy();
    ?>
    ..
    Se scrivo il comando http.... nel browser l'immagine compare sempre , e schiaccianfo f5, si comporta come ho descritto prima.
    via php ...sempre problemi...

    Bha...non capisco...bel casino
    Ultima modifica di muroduro : 05-07-2020 alle ore 15.49.51

  7. #7
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Non capisco cosa intendi...
    Intendo usando cURL da linea di comando anziché da uno script PHP in un web server, per esempio (su GNU/Linux):
    Codice:
    curl --user username:password miosito.dyndns.org:xxxx/GetImage.cgi?CH=1
    La prima volta mi chiede user e pass..le successive no.
    È normale: la prima volta ti autentichi e viene avviata una sorta di sessione da parte del browser. Questo non succede nelle chiamate server to server, dove le credenziali vanno inviate ogni volta.

    Ho l'impressione che la comunicazione rimanda aperta, e le succesive richieste , per questo motivo , vengano rifiutate.
    Teoricamente il curl_close serve proprio a chiudere la connessione.

    Ciao...sto provando a percorre questa strada senza passare da curl ed usando i comandi base per salvare
    [...]
    curl_error dà qualche informazione?

    I suggerimenti che do più spesso:


  8. #8
    muroduro non è connesso Utente AlterBlog
    Data registrazione
    24-06-2020
    Messaggi
    12

    Predefinito

    Ciao..
    purtroppo no, non ho sistemi linux o comunque a riga di comando e curl_err non mi da errore perche la pagina va in timeout prima...per questo ho l'impressione che qualche cosa rimanga "pending"

    ora sto provando con il sistema sessioni...


  9. #9
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    purtroppo no, non ho sistemi linux o comunque a riga di comando
    Puoi usarlo anche da Windows, oppure tramite strumenti per lo sviluppo di API come Postman. Anche uno script PHP eseguito da una macchina diversa può andare bene.

    curl_err non mi da errore perche la pagina va in timeout prima...per questo ho l'impressione che qualche cosa rimanga
    Il timeout di cURL dovrebbe essere impostato a un valore minore del max script execution time, in modo che curl_err abbia modo di restituire almeno l'errore di timeout (e auspicabilmente qualcosa di più informativo...). Senza avere un metro di paragone riguardo al funzionamento di cURL è difficile trarre conclusioni, il problema potrebbe essere ovunque lungo il "percorso" tra il server di AlterVista e quello dove risiede la camera. Potrebbe anche essere un banale problema di redirect, che i browser gestiscono autonomamente (quindi continuare a provare dal browser non è utile) ma le chiamate cURL no.

    ora sto provando con il sistema sessioni...
    Quali sessioni?

    I suggerimenti che do più spesso:


  10. #10
    muroduro non è connesso Utente AlterBlog
    Data registrazione
    24-06-2020
    Messaggi
    12

    Predefinito

    Ti rispondo da cell...sono fuori sede
    Sessioni》sto provando a cancellare eventuali cookies o altre cose e chiudo la sessione dopo ogni operazione
    Curl da riga di comando》si...potrebbe anche essere un prb dei browser. Tramite Windows non so come si faccia ad eseguire un file php...ma penso di recuperare un altro pc o addirittura Linux.
    Grazie per lo spunto...
    Ti aggiorno appena possoprovare queste soluzioni

  11. #11
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    4,003

    Predefinito

    Sccusi, prima avevo letto alla svelta...

    Quell'ultima frase faceva riferimento ad altro, è rimasta per sbaglio al posto dei saluti.

    Nel suo primo codice, mzanella prima le ha suggerito l'uso di curl_error(), come lo ha messo?
    Lo ha usato in modo simile a questo?
    Codice PHP:
    <?php
    $username
    ='user';
    $password='pass';
    $URL='http://miodominio.dyndns.org:xxxx/GetImage.cgi?CH=1';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$URL);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30); //timeout dopo 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);
    if(!
    $result) {echo "<br><B>Errore: ".curl_error($ch)."</b><br>";}
    $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); //ritorna lo satus
    echo $result;
    curl_close ($ch);
    file_put_contents('test.jpeg', $result);
    ?>
    Cordiali saluti.

  12. #12
    muroduro non è connesso Utente AlterBlog
    Data registrazione
    24-06-2020
    Messaggi
    12

    Predefinito

    Buongiorno a tutti.
    RIspondo a GrapOGLrisore>> Nessun problema!
    CURL error : No, non lo avevo provato cosi.comunque ora ho provato e mi ritorna errore di timeout.
    Lo sospettavo perche quando non funziona...rimane li a pensare!
    QUando invece funziona è quasi istantaneo!
    Ho provato ad allungare il tempo ma non cambia nulla.

    RIspondo a mzanella >> ho provato a mandare il comando direttamente da cmd con powershell (come amministratore) e mi ritorna 404 o 401 a seconda se gli passo user e pass o meno
    powershell -Command "(new-object net.webclient).DownloadString('http://user:pass@miodominio.dyndns.org:xxxx/GetImage.cgi?CH=1')" >>err 404
    oppure
    powershell -Command "(new-object net.webclient).DownloadString('http://miodominio.dyndns.org:xxxx/GetImage.cgi?CH=1')" >> err 401


    Sono un po disorientato...

  13. #13
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    RIspondo a mzanella >> ho provato a mandare il comando direttamente da cmd con powershell (come amministratore) e mi ritorna 404 o 401 a seconda se gli passo user e pass o meno
    Il 401 lo capisco, vuol dire che stai cercando di accedere a una risorsa che richiede autenticazione senza autenticarti. Verosimilmente l'autenticazione è richiesta a livello "globale" dallo host.
    Il 404 un po' meno: vuol dire che l'URL non è corretto, il che è strano, e in ogni caso non spiega l'errore di timeout (cURL dovrebbe piuttosto restituire a sua volta 404).

    Considerando che dei tre diversi client provati (cURL, file_get_contents e powershell) nessuno dà i risultati sperati, ipotizzerei che i problemi siano lato server-camera. C'è qualche documentazione per il software che hai utilizzato?

    I suggerimenti che do più spesso:


  14. #14
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Ciao ti posso confermare che sia con file_get_contents o curl se usati con user:password@dominio:8891/ funziona anche da altervista... però in effetti tramite curl_setopt no :/.

  15. #15
    muroduro non è connesso Utente AlterBlog
    Data registrazione
    24-06-2020
    Messaggi
    12

    Predefinito

    Ciao darbula...preso nei pensieri ho dimenticato di omettere i dati di accesso.


    Non sono dati sensibili quindi semplicemente...pazienza!
    Domanda hai usato quindi lo script nel messaggio #6?
    Se lo script si risolve nell'arco di pochi secondi funziona...se aspetti per piu di 20...purtroppo no.
    Potresti provare ad aprire l'immagine se in effetti è stata salvata o è vuota
    Mi potresti fare uncheck?
    grazie e scusa il disturbo
    Mario

  16. #16
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    4,003

    Predefinito

    Nel codice con curl, provi a sosituire:
    Codice:
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    Con questo:
    Codice:
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
    Cordiali saluti.

  17. #17
    muroduro non è connesso Utente AlterBlog
    Data registrazione
    24-06-2020
    Messaggi
    12

    Predefinito

    sostituzione timeout esito negativo...

    Mi sto perdendo..

  18. #18
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    No puoi usare semplicemente
    Codice PHP:
    if(($file = file_get_contents('abbreviazione di url')) === FALSE)
    $file = 'errore in corso';
    echo
    $file;
    Io uso generalmente questo tipo di script base con supporto per https e opzionalmente un certificato di WordPress ma se puoi installare un certificato nella tua root è ancora meglio (va per se che devi avere sempre php aggiornato).
    Codice PHP:
    <?php
    error_reporting
    (-1);
    $username = $password = 'questo testo è valido per tutte e due le variabili';
    $ch = curl_init("http://{$username}:{$password}@dominio:numero_porta/GetImage.cgi?CH=1");
    curl_setopt($ch , CURLOPT_FRESH_CONNECT, 1);
    /*curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
    if(defined('CURL_SSL_VERIFYHOST')) {
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    }*/
    //curl_setopt($ch, CURLOPT_CAINFO, '/membri/nickname/wp-includes/certificates/ca-bundle.crt');
    curl_setopt($ch, CURLOPT_FAILONERROR, True);
    curl_setopt($ch, CURLOPT_HEADER, True);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, False);
    curl_setopt($ch , CURLOPT_RETURNTRANSFER, True);
    /*curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
    curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");*/
    $res[0] = curl_exec($ch);
    $res[1] = '';
    if((
    $res[2] = curl_error($ch))) {
    $res[2] = "Curl error: $res[2]";
    } else {
    $info = curl_getinfo($ch);
    if((
    $info['header_size'] > 0)) {
    $res[1] = 'Header: '.substr($res[0], 0, $info['header_size']);
    $res[0] = 'Content: '.substr($res[0], $info['header_size']);
    }
    }
    curl_close($ch);
    /* Solo se il target usa una sequenza di byte validi per il charset specificato altrimenti è empty.
    Appunto non adatto per file binari.
    $output = htmlentities($res[1], ENT_COMPAT | ENT_HTML401,'UTF-8');
    $output .= htmlentities($res[0], ENT_COMPAT | ENT_HTML401,'UTF-8');*/
    echo '<pre>';
    echo
    'Totale contenuto con errori, header e output se presenti'."\r\n";
    if(
    $res[2])
    echo
    $res[2]."\r\n";
    if(
    $res[1])
    echo
    $res[1]."\n\r";
    if(
    $res[0])
    echo
    $res[0]."\n\r";
    echo
    '</pre>';
    ?>
    Ultima modifica di darbula : 06-07-2020 alle ore 15.02.20

  19. #19
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Nel codice con curl, provi a sosituire:
    A qual fine modificare il tempo di timeout di connessione per una chiamata che sappiamo già andare in timeout?

    No puoi usare semplicemente [file_get_contents]
    [...]
    file_get_contents non è generalmente lo strumento migliore, in caso di fallimento non fornisce informazioni utili alla diagnostica.

    Io uso generalmente questo tipo di script base con supporto per https e opzionalmente un certificato di WordPress ma se puoi installare un certificato nella tua root è ancora meglio (va per se che devi avere sempre php aggiornato).
    Cosa c'entrano certificati e WordPress adesso?

    Ad ogni modo, a questo punto suggerisco *caldamente* almeno qualche test con cURL da linea di comando. Grazie a darbula che ha notato che in messaggio precedente erano riportati URL e credenziali ho provato questo cURL:
    Codice:
    curl --location --request GET 'iz1kbp.dyndns.org:8891/GetImage.cgi?CH=1' --header 'Authorization: Basic YWRtaW46YWRtaW4='
    e funziona senza problemi, per quante volte di fila lo si chiami.
    Lo stesso tramite PostMan, dal quale è possibile esportare direttamente un codice PHP:
    Codice PHP:
    <?php

    $curl
    = curl_init();

    curl_setopt_array($curl, array(
    CURLOPT_URL => "iz1kbp.dyndns.org:8891/GetImage.cgi?CH=1",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => array(
    "Authorization: Basic YWRtaW46YWRtaW4="
    ),
    ));

    $response = curl_exec($curl);

    curl_close($curl);
    echo
    $response;
    ?>
    che ho testato in locale e anch'esso sembra funzionare per quante volte di fila lo si chiami.

    I suggerimenti che do più spesso:


  20. #20
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Centra quando si parla di url in generale se non hai un certificato con supporto SNI e quindi o php e/o (aggiunto supporto SNI da php 5.3.2 se compilato con supporto OpenSSL 0.9.8j e ovviamente certificato valido https://www.php.net/manual/en/openssl.constsni.php) non aggiornato purtroppo handshake fallisce... generalmente le telecamere propongono il protocollo https (almeno le più recenti).
    Fastcgi ha problemi nel creare l'header Authorization e per questo si occorre nel creare una variabile in htaccess quando si usa il RewriteRule.. (se non si possono modificare le impostazioni del server e ovviamente mod_rewrite funziona presso il proprio dominio e non esterni).
    Ultima modifica di darbula : 06-07-2020 alle ore 14.57.55

  21. #21
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    Centra quando si parla di url in generale se non hai un certificato con supporto SNI e quindi sia php e OpenSsl non aggiornato purtroppo handshake fallisce... generalmente le telecamere propongono il protocollo https (almeno le più recenti).
    Fastcgi ha problemi nel creare l'header Authorization e per questo si occorre nel creare una variabile in htaccess quando si usa il RewriteRule.. (se non si possono modificare le impostazioni del server e ovviamente mod_rewrite funziona presso il proprio dominio e non esterni).
    ... ma anche no, se guardi bene l'URL vedi che viaggia su http, non ci sono strati SSL in mezzo. Anche se fosse, la generazione del certificato riguarda il server, non il client. Anche il discorso del rewrite mi sembra abbastanza scorrelato da quello dell'autenticazione, se non per il fatto che entrambe le cose possono essere gestite dallo stesso file .htaccess.

    I suggerimenti che do più spesso:


  22. #22
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Ciao @maznella mi dispiace di non esprimermi in maniera unica.
    Tralasciando il discorso di telecamera pensa alle url nel più generico possibile, l'utente possiede una stazione meteo e prima o poi dovrà tener conto anche di https.. con il mio codice commentato è già un passo avanti :)
    EDIT: La stramaggioranza dei server condivisi non possiede un certificato idoneo a SNI anche se usa OpenSSL 0.9.8j o successivo l'unica alternativa è installare un certificato poiché impossibile modificare la configurazione di un server condiviso.
    No non puoi impostare il Rewrite se la richiesta è esterna da dove risiede Apache e quindi niente PHP_AUTH_*.
    Ultima modifica di darbula : 06-07-2020 alle ore 22.48.36

  23. #23
    muroduro non è connesso Utente AlterBlog
    Data registrazione
    24-06-2020
    Messaggi
    12

    Predefinito

    Ciao Ragazzi...non litigate!!

    Vi ringrazio per la mano che mi state dando e per lo sbattimento!!

    Ho provato a "mente fredda" e per circa 3 tentativi hanno funzionato sia CURL (il mio primo script) , sia l'ultimo scritp propostomi da mzanella, sia il mio scritp con get senza curl.

    Ero qualsi contento....ma al 4 tentativo (a distanza di circa 5 minuti l'uno dall'altro, come dovrebbe essere nel caso reale tramite cronjob) uno dopo l'altro mi hanno restituito un file VUOTO

    Ho provato anche tramite altro PC (connesso cmq alla stessa rete) ed anche tramite cell ( rete 4g e quindi ho escluso tutto il mio "baraccamento" elettrico.Tutti restitiscono uin file vuoto e quidi penso che l'indirizzo della webcam non venga raggiunto!

    Per ora mi fermo qui...devo provare a "bocce ferme" e riodinare le idee.

    Grazie ancora per il supporto...se qualcuno ha qualche altra idea ...ben lieto di testarla!

    A presto

    Buona naviagazione

    Mario

  24. #24
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Il codice di maznella non è completo echo non funziona su valori booleani, comunque nel mio avrà errore curl $res[2] o il contenuto $res[0] e da header $res[1].
    Se effettivamente visualizzerà un file vuoto non è un problema di connessione..
    Ovviamente può aggiungere l'header o usare la sintassi http://user:pass@dominio.
    Comunque puoi salvare l'eventuale copia del file nella stessa directory del codice php di elaborazione.
    Codice PHP:
    $destinazione = __DIR__.'test.jpeg';
    Ultima modifica di darbula : 06-07-2020 alle ore 22.55.21

  25. #25
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Ero qualsi contento....ma al 4 tentativo (a distanza di circa 5 minuti l'uno dall'altro, come dovrebbe essere nel caso reale tramite cronjob) uno dopo l'altro mi hanno restituito un file VUOTO
    3 client diversi che danno gli stessi risultati sono un forte segnale che il problema è lato server.
    Ripeto: esiste una documentazione per il software utilizzato? Altrimenti qua temo andremo avanti a parlare di niente ancora a lungo

    Soprattutto se ci iniziamo a parlare di certificati ipotizzando una futura gestione di https. A questo punto perché non ci mettiamo anche a installare Redis per un sistema di cache e di un load balancer per SQL? Perché chiaramente prima o poi servirà anche SQL, no? Scherzi a parte, non penso sia utile in questo momento divagare su altre questioni, soprattutto senza conoscere la configurazione del server. Interrogando il server della webcam mi sembra che a rispondere sia un NGINX, non Apache, ed ospitando una ipcam mi sembra molto improbabile sia un server condiviso, quindi tutte le "speculazioni" basate sul comportamento di Apache o .htaccess sono prive di significato.

    Il codice di maznella non è completo echo non funziona su valori booleani
    Come no? Con la configurazione proposta curl_exec non può che restituire una stringa (non vuota, in questo contesto) in caso di successo e false in caso di errore. echo mostra una stringa vuota quando il valore da stampare è booleano, di conseguenza quel codice mostrerà una stringa non vuota se e solo se la chiamata è andata a buon fine (e una stringa vuota se e solo se ci sono stati errori). Non solo la proprietà di completezza è soddisfatta, ma sotto questo punto di vista quello è anche il codice più compatto che la soddisfa...
    Fermo restando che è codice generato automaticamente da PostMan, quindi a lui tutto il merito.
    Ultima modifica di mzanella : 06-07-2020 alle ore 23.53.31

    I suggerimenti che do più spesso:


  26. #26
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Come puoi risolvere un problema se non ne conosci la causa? Ovviamente più completo sarà utilizzare curl_error che dunque rende vano La Stampa di un file vuoto.
    Ultima modifica di darbula : 07-07-2020 alle ore 00.03.23

  27. #27
    muroduro non è connesso Utente AlterBlog
    Data registrazione
    24-06-2020
    Messaggi
    12

    Predefinito

    Buongiorno a tutti...
    sono propenso a pensare che il problema sia legato al firmware della ipcam, ma purtroppo , come scrivevo, non ho possibilita di supporto da parte di hesavision.Comunque questa notte ho fatto un giro per capire qualcosa di piu sui metodi curl per acquisire pagine html dinamiche e , a quanto pare, non sono l'unico ad aver problemi. Tantissime soluzioni , molte provate pure io nei miei tentativi, ma tantissime casistiche ed oguno a quanto pare,ha avuto un sua particolare risoluzione.
    grazie ancora a tutti!
    buon proseguimento

    Mario
    Ultima modifica di muroduro : 07-07-2020 alle ore 07.39.21

  28. #28
    muroduro non è connesso Utente AlterBlog
    Data registrazione
    24-06-2020
    Messaggi
    12

    Predefinito

    Buogiorno a tutti...
    RISOLTO:porte http che venivano chiuse dal router in maniera...random.
    soluzione : ricaricato default router, riconfigurato a mano tutte le porte.
    Probabilmente a furia di scrivere/leggere/modificare qualche cosa è andato storto in maniera subdola!!
    Grazie ancora.
    Per la cronaca : tutte e tre le soluzioni sono funzionanti
    Martio
    mzanella likes this.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •