PrettyPrint

lunedì 15 febbraio 2010

LM35+LCD+web+MySQL - 5) Logger,mysql e cron

logger è lo script incaricato di leggere la temperatura (mediante fetcher) e inserirla nel server MySQL. Questo script viene lanciato in automatico da cron ogni mezz'ora.

Quindi si crea prima la il database con la tabella sql, poi lo script e infine si configura cron.

Il codice sql per creare il database e la tabella che conterrà orario e temperatura interna sarà:
LOG.SQL

CREATE DATABASE `temperature` ;

CREATE TABLE `temperature`.`log` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
`temp_int` FLOAT NOT NULL
) ENGINE = MYISAM ;

Lo script logger.php va salvato in una directory diversa da quella html pubblica proprio perché non deve essere richiamabile via web.

Personalmente li ho salvati nella cartella utente /home/frank ma si potrebbe pensare anche alla directory /usr/local/bin:

LOGGER.PHP


<?
/*************************************************************************************************
*
* Motivazione: memorizza in un database MySQL il valore di temperatura acquisito da Arduino.
*
* Autore : Francesco Parisi (fparisi at tiscali dot it) , (fparisi at gmail dot com)
*
* Richiede : db.php, fetcher.php
*
*************************************************************************************************/

require_once('fetcher.php');
require_once('db.php');

// Apre la connessione al server
$conn = mysql_connect( $host, $user, $pass )
or die('Impossibile connettersi al server: ' . mysql_error());

// Seleziona il database
$sel = mysql_select_db( $dbname, $conn )
or die('Impossibile selezionare il database: ' . mysql_error());

// Legge da Arduino la temperatura
$temperature = fetchTemp();

// Query di inserimento
$sql=("INSERT INTO `log` (`id` ,`time` ,`temp_int`)
VALUES (NULL, NULL, ". $temperature .")");

// Esegue la query
$res = mysql_query( $sql )
or die('Impossibile eseguire query: ' . mysql_error());


// Chiude connessione
mysql_close( $conn )
or die('Impossibile chiudere connessione: ' . mysql_error());


?>



Nel file logger.php viene incluso un file db.php, che contiene i dati di accesso al server MySQL. Sostituire con i propri parametri:

DB.PHP



<?php
$host = 'localhost';
$dbname = 'temperature';
$user = 'root';
$pass = 'tua_password_qui';
?>







Infine, si configurerà cron per lanciare il comando:

php /home/frank/logger.php > /dev/null 2>&1


ogni mezz'ora.

Da shell, lanciare

$ crontab -e


Apparirà l'editor di cron per l'utente corrente. Aggiungere la seguente riga:

*/30 * * * * php /home/frank/logger.php # logga temperatura


Salvare il file e uscire dall'editor testo

Assicurarsi che il compito sia stato correttamente inserito:


$ crontab -l


Non ci resta ora che la creazione del grafico e una pagina web che mostri la temperatura corrente e il grafico stesso

Nessun commento:

Posta un commento