📉 DATA LOGGER valeurs analogiques

Bonjour,

MĂ©thode 1

il peut y avoir plus simple pour sauvegarder une valeur analogique, à intervalle régulier dans un fichier texte :

  • Il faut crĂ©er une sortie virtuelle et rĂ©gler son Tb (exemple 600 pour 10 minutes)
    Cette SV sera rendue clignotante par un scénario. Ce scénario effectuera un push vers le PHP sur Syno :

    scène sur IPX :
    NON SV1 ON PUSH;SV1(tb=600)

  • param du PUSH :

    serveur : adresse Syno
    url ON : monScript.php?time=$TS&a1=$A01&a2=$A02&cptEau=$C01

Voici le code monScript.php Ă  placer sur le synology :

<?php
//url attendue :
//http://ipSyno/DossierWeb/monScript.php?time=$TS&a1=$A01&a2=$A02&cptEau=$C01

$monHisto=fopen('./Histo.csv', 'a+');
fputs($monHisto, $_GET["time"] . ";" . $_GET["a1"] . ";"   . $_GET["a2"] . ";"   . $_GET["cptEau"] . ";"  ."\n");
fclose($monHisto);
?>

Un fichier nommé Histo.csv sera automatiquement créé dans le même dossier que le fichier php.
En ouvrant ce fichier avec un tableur (excel par exemple), il sera facile de faire des stats ou graphiques.

MĂ©thode 2
Evidemment, la précédente méthode permet d’envoyer quelques éléments par push vers le syno. Mais la longueur de l’URL du push est limitée en nb de caractères.
Pour outrepasser cette limite, il faudra effectivement passer par une lecture du fichier Status.xml dans le php, et Ă©crire les valeurs dans le fichier CSV.

exemple de php :

<?php
// Variables Ă  modifier dans ce script
$IPX800_IP = '192.168.X.Y' ;   // Mettre ici l'adresse IP ou le nom DNS de l'IPX800 V4
$IPX800_PORT = '80' ;      // Mettre ici le port d'accès de l'IPX800 - 80 par défaut
$IPX800_USER = 'user' ;    // Mettre ici l'utilisateur pour l'accès restreint si activé sur IPX800 V4
$IPX800_PWD = 'MotDePasse' ;  // Mettre ici le mot de passe User pour l'accès restreint  si activé sur IPX800 V4
$IPX800_RESTREINT = false; //mettre true pour un accès restreint, false si accès non protégé

// URL résultante d'accès au status de l'IPX800
if ( $IPX800_RESTREINT ) {
		$IPX800_URL = "http://{$IPX800_USER}:{$IPX800_PWD}@{$IPX800_IP}:{$IPX800_PORT}/user/status.xml";
} else {
		$IPX800_URL = "http://{$IPX800_IP}:{$IPX800_PORT}/user/status.xml";
}

// Vérification de l'accessibilité de l'IPX800
$ipx800_available= false ;
$ipx800_check = @get_headers($IPX800_URL);
if (strpos($ipx800_check[0],'200 OK') !== false ) { $ipx800_available = true ; }
unset ($ipx800_check );

// Si l'IPX800 est accessible on l'interroge et on sauvegarde le contenu "décodé"
if ( $ipx800_available ) { 
   $ipx800_status = @simplexml_load_file($IPX800_URL);
   //récupération analogique 1
  $IPX800_A1=$ipx800_status->analog0;
  //récupération analogique 2
  $IPX800_A2=$ipx800_status->analog1;
  //Récupération de la valeur du compteur 1
  $IPX800_C1 = $ipx800_status->cpt0; 
  //Récupération statut Relais 8
  $IPX800_R8 = $ipx800_status->led7;
  //sauvegarde dans CSV  
  $monHisto=fopen('./Histo.csv', 'a+');
  fputs($monHisto, date("Y-m-d H:i:s") . ";" . $IPX800_A1 . ";"   . $IPX800_A2 . ";"   . $IPX800_C1 . ";"  . $IPX800_R8 . ";" ."\n");
  fclose($monHisto);
}
?>

cdt

5 « J'aime »