mardi 28 août 2012

Téléinformation 4/5 (Base de données)

Et enfin ,la partie sauvegarde/affichage.
Ceci est possible sur un site hébergé ou bien sur un NAS en local.
Les pré-requis sont d'avoir une base de donnée (MySQL pour ma part) et PHP.

Commençons par la base de données.
J'ai donc une base de données définie comme cela :

Voici le script SQL pour créer la base :

CREATE TABLE IF NOT EXISTS `teleinfo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `temps` datetime DEFAULT NULL,
  `hchp` bigint(9) DEFAULT NULL,
  `hchc` bigint(9) DEFAULT NULL,
  `ptec` text CHARACTER SET latin1 COLLATE latin1_general_ci,
  `papp` int(5) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7317 ;


Une fois la table créée, il faut avoir les fichiers php qui vont bien pour que la vera puisse insérer les élément dans le table.
Comme vu dans le poste précédent, la vera appel le fichier update.php qui est le suivant :

<?php
// Connexion MySql et requète.
$serveur="xxxxxx";
$login="xxxxxx";
$base="xxxxxx";
$pass="xxxxxx";
$table="teleinfo";

if(!isset($_GET["HCHP"])) {
    $hchp= "NULL";
}else {
    $hchp= $_GET["HCHP"];
}

if(!isset($_GET["HCHC"])) {
    $hchc= "NULL";
}else {
    $hchc= $_GET["HCHC"];
}

if(!isset($_GET["PTEC"])) {
    $ptec= "NULL";
}elseif ($_GET["PTEC"] == "HP..") {
    $ptec= "HP";
}elseif ($_GET["PTEC"] == "HC..") {
    $ptec= "HC";
}

if(!isset($_GET["PAPP"])) {
    $papp= "NULL";
}else {
    $papp= $_GET["PAPP"];
}

$con = mysql_connect($serveur, $login, $pass);
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db($base) or die("Erreur de connexion a la base de donnees $base");
mysql_query("SET NAMES 'utf8'");

$requete = mysql_query("INSERT INTO $table (temps,hchp,hchc,ptec,papp) VALUES(NOW(),$hchp,$hchc,'$ptec',$papp)");
?>


Enfin il faut un la vera envera à intervalle régulier dans le base de données les valeurs issues de la carte arduino contenant le compteur EDF HP, HC, la tranche horaire, la puissance instantannée consommée. La date y sera ajoutée lors de l'insertion dans la base.

Le prochain message sera sur l'affichage.

Aucun commentaire:

Enregistrer un commentaire