Ir al contenido principal
Todas las coleccionesVideovigilancia
OpenALPR - Crear tarea programada en servidor ubuntu para enviar reportes diarios por correo a una hora determinada
OpenALPR - Crear tarea programada en servidor ubuntu para enviar reportes diarios por correo a una hora determinada
Xavier Guereque avatar
Escrito por Xavier Guereque
Actualizado hace más de 4 años

Primero es necesario configurar el servidor para permitir enviar correos mediante SMTP, para esto necesitamos instalar el paquete SSMTP tecleando el siguiente comando en una terminal de ubuntu:

sudo apt install ssmtp

 Una vez finalizado la instalación procederemos a configurarlo, en la terminal tecleamos lo siguiente:

sudo nano /etc/ssmtp/ssmtp.conf

En este ejemplo se utilizará un correo de Gmail, por lo cual la configuración debe quedar de la siguiente manera:

[email protected]
mailhub=smtp.gmail.com:587
hostname=NOMBRE-DE-HOST
FromLineOverride=YES
[email protected]
AuthPass=CONTRASEÑA-CUENTA-GMAIL
UseTLS=YES
UseSTARTTLS=YES

Continuamos instalando Php para generar la instrucción, para esto tecleamos el siguiente comando:

sudo apt install php libapache2-mod-php php-mysql

Después de esto el servidor ya  estará configurado.
Ahora procedemos con la  creación del archivo que descargará los datos y enviará el correo, para esto tecleamos el siguiente comando:

sudo nano /etc/var/www/reporte1.php

y pegaremos el siguiente código:

<?php
//Variables
$fecha_hoy = date("Y-m-d");
$color = "#e4e4e4";
$hora_inicio = "06:00";
$hora_fin = "20:00";

//Información sobre base de datos
$host = "localhost";
$usuario = "openalpr";
$contrasena = "";
$base_datos = "openalpr";
$puerto = 3306;

//Conexión y consultas
$conexion = mysqli_connect($host,$usuario,$contrasena,$base_datos,$puerto);
$query = "select best_plate as 'placa', count(best_plate) as 'cantidad' from openalpr.front_alprgroup where epoch_time_end between adddate('".$fecha_hoy." ".$hora_inicio."', interval 7 hour) and adddate('".$fecha_hoy." ".$hora_fin."', interval 7 hour) group by best_plate";
$consulta = mysqli_query($conexion,$query);

//Armado del mensaje
$mensaje = "".
        "<h2>Reporte OpenALPR</h2>".
        "<table style='text-align:center; border:1px solid; border-spacing:0;'>".
                "<tr>".
                        "<td><b>PLACA</b></td>".
                        "<td><b>CANTIDAD</b></td>".
                "</tr>";
while($tabla = mysqli_fetch_array($consulta))
{
        $mensaje .= "".
                "<tr style='background:$color'>".
                        "<td style='padding:4px'>".$tabla["placa"]."</td>".
                        "<td style='padding:4px'>".$tabla["cantidad"]."</td>".
                "</tr>";
        if($color == "#e4e4e4")
        {
                $color = "#fff";
        }
        else
        {
                $color = "#e4e4e4";
        }
}

$mensaje .= "".
        "</table>";


//Información de contacto
$para = "[email protected]";
$de = "[email protected]";
$asunto = "Reporte OpenALPR";
$cabeceras = 'MIME-Version: 1.0'."\r\n";
$cabeceras .= 'Content-type: text/html; charset=utf-8'."\r\n";
$cabeceras .= "From:".$de;

//Envio de correo
mail($para,'=?UTF-8?B?'.base64_encode($asunto).'?=',$mensaje,$cabeceras);
echo "El correo fué enviado satisfactoriamente";
echo "\r\n";

Deben modificarse las horas de inicio y fin que tomará como rango de consulta para el reporte :

$hora_inicio = "06:00";
$hora_fin = "20:00";

También debe modificarse la linea del destino por en correo de la persona que recibirá el reporte.

 y la linea del destinatario. Aquí debe ir la misma cuenta de correo del SMTP configurado previamente. 


Ya casi todo está listo, sólo hace falta crear la tarea programada, para esto tecleamos el siguiente comando:

sudo crontab -e

y teclearemos la siguiente linea al final:

30 20 * * * /usr/bin/php /var/www/html/reporte1.php

30 20 * * * significa que enviara todos los días el reporte a las20:30 horas y ejecutará la función creada del archivo reporte1.php

El resultado sería el siguiente:

¿Ha quedado contestada tu pregunta?