Ciao ragazzi,
ho un problemino.
Praticamente da quando ho passato il mandare le immagini della mia webcam all'FTP del mio sito altervista, dopo 3/4 giorni il traffico si è esaurito.
Per far "riandare" il tutto, ho dovuto comprare (gratuitamente) altri 10gb ma anch'essi stanno finendo.
Come mai succede questo?
Sono le immagini troppo pesanti?
Come posso risolvere?
Grazie mille.
PS: la foto scattata dalla webcam pesa 1.5MB, va nell'FTP e qui girando nello script fuorisce con il peso di ben 10/15MB.
![]()
Inverno 2011/2012: 6-7 Febbraio 2012 (3 cm a terra, 7-10 cm eolici)My sitometeo con dashboard di tutti i dati della mia stazione aggiornati ogni minuto --> http://marconiameteo.altervista.org/
Ultima immagine 4K (aggiornata ogni minuto) --> https://assets3.webcam.io/w/P1a2OP/latest_hd.jpg
My Webcam 4K in Marconia (MT) - direzione N (si vedono 2/3 della Puglia + Adriatico) --> https://webcam.io/webcams/P1a2OP (timelapse)
Inverno 2012/2013: 9-10 Febbraio 2013 (Neve farinosa)
Inverno 2013/2014: l'inverno del nulla cosmico.
Inverno 2014/2015: el buco metapontino
Inverno 2015/2016: nada de nada
Inverno 2016/2017: 6-7-8-9-10 Gennaio 2017 "The Story" (>20cm)
Inverno 2018/2019: 3-4 Gennaio 2019 "Goduria (>10cm)
Devi variare qualche parametro della tua ricetta:
Una foto al minuto x 31 giorni = 60 * 24 * 31 = 44640 foto al mese
Se ogni foto pesa 1 mega alla fine del mese hai 44GB di traffico ( che sinceramente è 'tantino' ) solo per trasferire le immagini ( a cui andrebbe aggiunto il traffico per visualizzare le immagini, probabilmente molto più basso )
Opzioni:
- nello script ( php immagino ) ci dovrebbe essere essere un comando imagejpeg ( che genera l'immagine ), il terzo parametro è la qualità dell'immagine ( va da 0, qualità bassa, a 100, qualità massima ), abbassalo ( es 75-80 ) e verifica la dimensione dell'immagine
- diminuisci la frequenza delle immagini
- se le immagini non vengono salvate ma solo visualizzate sul browser, si potrebbe anche cambiare il sistema, cioè non trasferire in continuazione le immagini ( anche se nessuno le visualizza ), ma andarle a pescare solo quando il browser la richiede
P.S.
Per il problema dell'immagine incompleta ( potrebbe essere un difetto della camera, oppure, più saltuariamente, potrebbe essere la sovrapposizione dell'invio ftp con la lettura da parte del tuo script ), il tuo script potrebbe verificare la dimensione dell'immagine: se inferiore ad un valore impostato l'immagine viene scartata e presa la precedente ( questo va bene se le immagini hanno nome diverso e lo script la rinomina )
Ultima modifica di davidefa; 28/01/2022 alle 09:28
Ciao Davide,
innanzitutto grazie mille della risposta.
1) Per quanto riguarda l'FTP, spero di aver risolto utilizzando un nuovo sito Altervista, utilizzando Alterblog, ove dovrebbe esserci traffico illimitato.
Facendo un calcolo di media, utilizzerei ben 660GB al mese di traffico, cosa folle e mi verrebbe su Altervista normale ben 162euro.
Devo capire perchè le foto che escono dalla webcam pesano 1.5MB, entrano nell'FTP e girando nello script escono ben più pesanti (di giorno la media è di 8MB, di notte anche 14MB).
2) Le immagini dalla Hikvision sono sempre uscite perfette di qualità e nitidezza, mai avuto un problema (te lo dico perchè controllo la web ogni giorno e anche i timelapse). E' tutto iniziato con lo script modificato da @gianvi97, molto simile alla discussione sulle Foscam.
3) Le immagini vengono scattate ogni minuto, collegate a webcam.io, il quale crea timelapse ogni giorno con 1440 ogni 24h.
4) La modifica dello script inserendo la dimensione dell'immagine la sto provando proprio oggi, impostando come limite 7000kb, ma a quanto vedo non funziona.
Nel senso che, ora non so se lo script è tuo o di un altro utente, ma questa "verifica" deve essere fatta (secondo me) dopo che l'immagine "pura" è uscita dallo script, poichè il mio problema enorme è che appunto le immagini che escono hanno una dimensione grandicella. Mi servirebbe uno script che appunto, facesse entrare sempre l'immagine pura (e che pesa poco) e che poi, entrando nello script sovrascrivendo i dati della mia Davis, vada nel controllo finale. Se x immagine pesa meno di 7MB, viene automaticamente scartata perchè probabilmente è uscita "male". Se invece supera i 7MB, allora può avere l'OK per essere mandata.
Non so se sono stato chiaro. Insomma, non è sicuramente semplice.
Inverno 2011/2012: 6-7 Febbraio 2012 (3 cm a terra, 7-10 cm eolici)My sitometeo con dashboard di tutti i dati della mia stazione aggiornati ogni minuto --> http://marconiameteo.altervista.org/
Ultima immagine 4K (aggiornata ogni minuto) --> https://assets3.webcam.io/w/P1a2OP/latest_hd.jpg
My Webcam 4K in Marconia (MT) - direzione N (si vedono 2/3 della Puglia + Adriatico) --> https://webcam.io/webcams/P1a2OP (timelapse)
Inverno 2012/2013: 9-10 Febbraio 2013 (Neve farinosa)
Inverno 2013/2014: l'inverno del nulla cosmico.
Inverno 2014/2015: el buco metapontino
Inverno 2015/2016: nada de nada
Inverno 2016/2017: 6-7-8-9-10 Gennaio 2017 "The Story" (>20cm)
Inverno 2018/2019: 3-4 Gennaio 2019 "Goduria (>10cm)
Ora sperando che il problema spazio si sia risolto (sto pregando), il mio unico problema "serio" è il fatto che da quando sono passato ad Alterblog non mi gira più script.php.
Nel senso che, non manda in output i dati della stazione sul file testo1.txt.
Non so cosa sia, anche perchè webcamlogo.php va benissimo.
Mi sto dannando.
Ti lascio il codice, magari ci dai un'occhiata.
Codice PHP:
<?php
$url = "https://api.weather.com/v2/pws/observations/current?stationId=IBASILIC18&format=json&numericPrecision=decimal&units=m&apiKey=be7e967c89cc451bbe967c89cc251b88";
$outFileName = "testo1.txt";
$debug = "1";
$json = file_get_contents($url);
$data = json_decode($json);
file_put_contents($outFileName, "Temp. ".number_format($data->observations[0]->metric->temp,1)."°C ");
file_put_contents($outFileName, "UR. ".$data->observations[0]->humidity."% ", FILE_APPEND);
file_put_contents($outFileName, "D.P. ".number_format($data->observations[0]->metric->dewpt,1)."°C ", FILE_APPEND);
file_put_contents($outFileName, "Temp. percepita ".number_format($data->observations[0]->metric->windChill,1)."°C ", FILE_APPEND);
file_put_contents($outFileName, "Vento ".number_format($data->observations[0]->metric->windSpeed,1)." km/h ", FILE_APPEND);
file_put_contents($outFileName, "da ".wind_cardinal($data->observations[0]->winddir), FILE_APPEND);
file_put_contents($outFileName, " Pressione ".round($data->observations[0]->metric->pressure)." hPa ", FILE_APPEND);
file_put_contents($outFileName, "Pioggia oggi ".number_format($data->observations[0]->metric->precipTotal,1)." mm ", FILE_APPEND);
function wind_cardinal( $winddir ) {
switch( $winddir ) {
case ( $winddir >= 348.75 && $winddir <= 360 ):
$cardinal = "N";
break;
case ( $winddir >= 0 && $winddir <= 11.249 ):
$cardinal = "N";
break;
case ( $winddir >= 11.25 && $winddir <= 33.749 ):
$cardinal = "NNE";
break;
case ( $winddir >= 33.75 && $winddir <= 56.249 ):
$cardinal = "NE";
break;
case ( $winddir >= 56.25 && $winddir <= 78.749 ):
$cardinal = "ENE";
break;
case ( $winddir >= 78.75 && $winddir <= 101.249 ):
$cardinal = "E";
break;
case ( $winddir >= 101.25 && $winddir <= 123.749 ):
$cardinal = "ESE";
break;
case ( $winddir >= 123.75 && $winddir <= 146.249 ):
$cardinal = "SE";
break;
case ( $winddir >= 146.25 && $winddir <= 168.749 ):
$cardinal = "N";
break;
case ( $winddir >= 168.75 && $winddir <= 191.249 ):
$cardinal = "S";
break;
case ( $winddir >= 191.25 && $winddir <= 213.749 ):
$cardinal = "SSW";
break;
case ( $winddir >= 213.75 && $winddir <= 236.249 ):
$cardinal = "SW";
break;
case ( $winddir >= 236.25 && $winddir <= 258.749 ):
$cardinal = "WSW";
break;
case ( $winddir >= 258.75 && $winddir <= 281.249 ):
$cardinal = "W";
break;
case ( $winddir >= 281.25 && $winddir <= 303.749 ):
$cardinal = "WNW";
break;
case ( $winddir >= 303.75 && $winddir <= 326.249 ):
$cardinal = "NW";
break;
case ( $winddir >= 326.25 && $winddir <= 348.749 ):
$cardinal = "NNW";
break;
default:
$cardinal = null;
}
return $cardinal;
}
if ($debug)
{
print_r($data); echo "<br>";
echo $data->observations[0]->metric->temp."<br>";
echo $data->observations[0]->humidity."<br>";
echo $data->observations[0]->metric->dewpt."<br>";
echo $data->observations[0]->metric->windChill."<br>";
echo $data->observations[0]->metric->windSpeed."<br>";
echo $data->observations[0]->cardinal."<br>";
echo $data->observations[0]->metric->pressure."<br>";
echo $data->observations[0]->metric->precipTotal."<br>";
}
?>
Inverno 2011/2012: 6-7 Febbraio 2012 (3 cm a terra, 7-10 cm eolici)My sitometeo con dashboard di tutti i dati della mia stazione aggiornati ogni minuto --> http://marconiameteo.altervista.org/
Ultima immagine 4K (aggiornata ogni minuto) --> https://assets3.webcam.io/w/P1a2OP/latest_hd.jpg
My Webcam 4K in Marconia (MT) - direzione N (si vedono 2/3 della Puglia + Adriatico) --> https://webcam.io/webcams/P1a2OP (timelapse)
Inverno 2012/2013: 9-10 Febbraio 2013 (Neve farinosa)
Inverno 2013/2014: l'inverno del nulla cosmico.
Inverno 2014/2015: el buco metapontino
Inverno 2015/2016: nada de nada
Inverno 2016/2017: 6-7-8-9-10 Gennaio 2017 "The Story" (>20cm)
Inverno 2018/2019: 3-4 Gennaio 2019 "Goduria (>10cm)
Questo è webcamlogo.php
Codice PHP:
<?php
header("Refresh: 60; url=" . $_SERVER["PHP_SELF"]);
// prepara l'array per i nomi dei file
$directory = array();
// prepara l'handler per la directory
$handler = opendir('../Hikvision');
// apre la directory e legge i singoli nomi dei file
while ($file = readdir($handler)) {
// se il nome del file contiene il testo iniziale imposto dalla ipcamera lo mette nell'array
if (substr("$file", 0, 3) == "192") {
$directory[] = $file;
}
}
// chiude l'handler
closedir($handler);
// ordina la lista dei file per nome (il piu' nuovo sara' l'ultimo)
sort($directory);
// conta i file
$fileCount = count($directory);
// copia il file piu' nuovo in webcam.jpg
// $index corrispondera' all'ultimo elemento dell'array (il primo e' 0)
$index = $fileCount - 1;
$fileDaCopiare = $directory[$index];
copy($fileDaCopiare, 'webcam.jpg');
// cancella tutti i file i cui nomi sono nell'array
for($index=0; $index < $fileCount; $index++) {
$fileDaCancellare = $directory[$index];
unlink($fileDaCancellare);
}
$nome_immagine="webcam.jpg"; // file contenente l'immagine
$nome_testo1="testo1.txt"; // file contenente le scritte
$nome_testo2="testo2.txt";
$fp = fopen($nome_testo1,"r")
or die("impossibile aprire il file testo1.txt.");
$testo_sinistra1=fgets($fp,190); // nella prima riga la scritta allineata a sinistra
$testo_destra1=fgets($fp,100); // nella seconda riga la scritta allineata a destra
fclose($fp);
$fp = fopen($nome_testo2,"r")
or die("impossibile aprire il file testo2.txt.");
$testo_sinistra2=fgets($fp,190); // nella prima riga la scritta allineata a sinistra
$testo_destra2=fgets($fp,100); // nella seconda riga la scritta allineata a destra
fclose($fp);
header("Content-type: image/png");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
$im = imagecreatefromjpeg($nome_immagine);
//$black = imagecolorallocate($im, 0, 0, 0);
//$white = imagecolorallocate($im, 255, 255, 255);
$colore_barra = imagecolorallocatealpha($im, 132, 166, 201, 85); // colore della barra formato RGBA
$colore_testo = imagecolorallocate($im, 255, 255, 255); // colore per testo
$x=imagesx($im);
$y=imagesy($im);
$font1 = "VeraBd.ttf";
$font2 = "VeraBd.ttf";
$size1 = 21; // dimensione del testo1
$size2 = 21; // dimensione del testo2
$altezza_barra = 45; // dimensione della barra
imagefilledrectangle($im, 0, $y-$altezza_barra, $x-1, $y-1, $colore_barra);
imagefilledrectangle($im, 0, $y-$altezza_barra, $x-1, $y-100, imagecolorallocatealpha($im, 0, 0, 0, 127));
$bbox1 = imagettfbbox ($size2, 0, $font1, $testo_sinistra1);
$dy = (($bbox[1] - $bbox[7]) / 2);
imagettftext($im, $size2, 0, 4, $y-($altezza_barra / 2) + $dy - 40, $colore_testo, $font1, $testo_sinistra1);
$bbox1 = imagettfbbox ($size2, 0, $font1, $testo_destra1); //NON TOCCARE
$dx = ($bbox1[2] - $bbox1[0]); //NON TOCCARE
imagettftext($im, $size2, 0, $x-5-$dx, $y-($altezza_barra / 2) + $dy - 1038, $colore_testo, $font1, $testo_destra1); //TESTO DI DESTRA ($size, 0 = orientazione testo, $x-5-$dx = spostamento testo dal bordo laterale sinistro, $altezza_barra / 2 = centramento testo sulla barra, $dy - 5 = spostamento testo dal basso)
$bbox2 = imagettfbbox ($size1, 0, $font1, $testo_sinistra2);
$dy = (($bbox2[1] - $bbox2[7]) / 2);
imagettftext($im, $size1, 0, 7, $y-($altezza_barra / 2) + $dy - 3, $colore_testo, $font1, $testo_sinistra2);
$bbox2 = imagettfbbox ($size1, 0, $font1, $testo_destra2); //NON TOCCARE
$dx = ($bbox2[2] - $bbox2[0]); //NON TOCCARE
imagettftext($im, $size1, 0, $x-5-$dx, $y-($altezza_barra / 2) + $dy - 3, $colore_testo, $font1, $testo_destra2); //TESTO DI DESTRA ($size, 0 = orientazione testo, $x-5-$dx = spostamento testo dal bordo laterale sinistro, $altezza_barra / 2 = centramento testo sulla barra, $dy - 5 = spostamento testo dal basso)
$info = getimagesize($nome_immagine); //carica immagine
$logo = imagecreatefrompng("logo1.png") ; //carica 1° logo - h/= cartella - logo1.png = nome del file e estensione.png
//$logo2 = imagecreatefrompng("logo2.png") ; //carica 2° logo - h/= cartella - logo2.png = nome del file e estensione.png
//$logo3 = imagecreatefrompng("logo3png") ; //carica 3° logo - h/= cartella - logo3.png = nome del file e estensione.png
imagecopy($im, $logo, 1600, $info[1]-130, 0, 0, 286, 87); //posizione 1°logo(1600 = sposta verso destra, -130 = sposta dal basso, 286 87 = dimensioni logo)
//imagecopy($im, $logo2, 5, $info[1]-75, 0, 0, 150,38); //posizione 2°logo(da sx= 700 ,dal fondo= -65)dimensione 2°logo(156=larghezza ,38=altezza )
//imagecopy($im, $logo3, 5, $info[1]-210, 0, 0, 150,53); //posizione 3°logo(da sx= 865, dal fondo= -80)dimensione 3°logo(150=larghezza ,53=altezza )
imagepng($im);
imagedestroy($im);
?>
Inverno 2011/2012: 6-7 Febbraio 2012 (3 cm a terra, 7-10 cm eolici)My sitometeo con dashboard di tutti i dati della mia stazione aggiornati ogni minuto --> http://marconiameteo.altervista.org/
Ultima immagine 4K (aggiornata ogni minuto) --> https://assets3.webcam.io/w/P1a2OP/latest_hd.jpg
My Webcam 4K in Marconia (MT) - direzione N (si vedono 2/3 della Puglia + Adriatico) --> https://webcam.io/webcams/P1a2OP (timelapse)
Inverno 2012/2013: 9-10 Febbraio 2013 (Neve farinosa)
Inverno 2013/2014: l'inverno del nulla cosmico.
Inverno 2014/2015: el buco metapontino
Inverno 2015/2016: nada de nada
Inverno 2016/2017: 6-7-8-9-10 Gennaio 2017 "The Story" (>20cm)
Inverno 2018/2019: 3-4 Gennaio 2019 "Goduria (>10cm)
@davidefa Scusami la quantità di messaggi, ma di programmazione ne so zero![]()
Inverno 2011/2012: 6-7 Febbraio 2012 (3 cm a terra, 7-10 cm eolici)My sitometeo con dashboard di tutti i dati della mia stazione aggiornati ogni minuto --> http://marconiameteo.altervista.org/
Ultima immagine 4K (aggiornata ogni minuto) --> https://assets3.webcam.io/w/P1a2OP/latest_hd.jpg
My Webcam 4K in Marconia (MT) - direzione N (si vedono 2/3 della Puglia + Adriatico) --> https://webcam.io/webcams/P1a2OP (timelapse)
Inverno 2012/2013: 9-10 Febbraio 2013 (Neve farinosa)
Inverno 2013/2014: l'inverno del nulla cosmico.
Inverno 2014/2015: el buco metapontino
Inverno 2015/2016: nada de nada
Inverno 2016/2017: 6-7-8-9-10 Gennaio 2017 "The Story" (>20cm)
Inverno 2018/2019: 3-4 Gennaio 2019 "Goduria (>10cm)
Segnalibri