Appel aux connaisseurs de mysql

Salut,

je cherche à archiver (courbes) plusieurs données qui sont dans mon IPX et dans ma Vera sur mon Syno.

Comme la conso d’eau ou d’EDF.

Savez vous comment je dois m’y prendre?

Je possède un Syno DS212j avec mysql/php

Je vois pas par quoi commencer… et comment m’y prendre

Salut

Tu peux utiliser l’appli Multi carte qui fontionne parfaitement sur synology

Cordialement
Thomas
Ps c’est du php donc tu peux t’en inspirer

Bonjour fatal25,
Quand tu dis que tu cherches à archiver (courbes) des données, ça veut dire qu’elles sont déjà sur ton Syno ? Dans une base mySQL ? Ou pour l’instant tu n’as rien en base de données ?

Bonjour fatal25,

Voici comment je procède sur mon Synology DS211+, pour enregistrer les données de voltage de mes batteries solaires, relevées via l’IPX800, dans une base MySQL.

Schématiquement, dans une page PHP, tu lis les valeurs du fichier status.xml que tu vas ensuite écrire dans ta table MySQL via une instruction Insert.

<?php
//Fonctions de connexion à la BDD
          include("fonctions.php"); 
$xml = simplexml_load_file('http://192.168.0.00/status.xml');

$result = array();

 // Pour chaque XML child
foreach($xml->children() as $child){
$result[$child->getName()] = trim($child);
                                   }   

		  
//On se connecte
connectMaBase();
                
$Volt_Batterie = ($result['an1'] *0.03223);
$Volt_Batterie = round($Volt_Batterie, 2);
$Temp1 = ($result['an2'] /3.22);
$Temp1 = round($Temp1, 2);

//On prépare la commande sql d'insertion
$sql = 'INSERT INTO IPX800 VALUES(DEFAULT,DEFAULT,"'.$Volt_Batterie.'","'.$Temp1.'")';
                    
/*on lance la commande (mysql_query) et au cas où, 
on rédige un petit message d'erreur si la requête ne passe pas (or die) 
(Message qui intègrera les causes d'erreur sql)*/
mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
                    
// on ferme la connexion
mysql_close();
?>

Cette page PHP est à appeler toutes les x minutes, via une tache Cron que tu définis. (exemple ci-dessous, toutes les minutes) :
Bien penser à faire des tabulations et pas des espaces entre chaque valeur d’une ligne.

DiskStation> vi /etc/crontab
#minute	hour	mday	month	wday	who	command
*	*	*	*	*	root	cd /volume1/web && /usr/bin/php IPX800_data_sql.php
~
~

Ta table MySQL pouvant rapidement grossir (1440 enregistrements / jour si donnée stockée toutes les minutes), la consultation et les graphiques vont mettre plus de vingt secondes à s’afficher quand tu vas dépasser les 250 000 enregistrements. Ceci est dû au fait q’une table mise à jour fréquemment n’est pas stockée en cache.

Solution : ajouter 2 triggers MySQL qui,

  • pour le premier, t’alimente une table temporaire, lors de chaque Insert dans ta table Archive principale, en y créant une copie de l’enregistrement qui vient d’être écrit.

  • pour le second, supprime les enregistrements plus vieux que n jours, pour maintenir la taille de la table temporaire à environ 5000 enregistrements maxi. Ce 2ème trigger est déclenché chaque matin à 0h00.

Ensuite, tu fais pointer tous tes graphiques sur ta table temporaire, pour obtenir des graphiques en moins de 3 secondes.

Voilà pour le mode op.

NB : Sur le Synology, tu ne disposes pas de la souplesse de paramétrage d’un serveur LAMP que tu as installé toi-même.
Par ex : les paramétrages de démarrage de MySQL sont très difficiles à faire évoluer.

De plus, si tu as effectué les mises à jour du DSM, tes parametrages personnels sont à refaire pour la plupart.

Pour Cron, tu n’as pas Crontab, tu es obligé de passer par un éditeur texte (Vi, Nano,…) pour éditer le fichier /etc/crontab.

M’enfin, cela consomme pas trop et apporte pas mal de fonctionnalités sympa.

NB2 : si tu commences à utiliser ton Synology en 24/24, protèges-le par un onduleur, pour éviter des crashs disques, suite à coupure de courant.

Enjoy,

Yann

et sur la base du serveur multi carte, il y avait également çà:
http://www.domotique-info.fr/2012/04/compteurs-eau-et-gaz-a-impulsion-sur-ipx800/

mais c’était avec le moteur jpgraph. Je ne sais pas ce que ça donne avec www.highcharts.com

Bonsoir,

J’ai édité mon message précédent pour y insérer du code PHP et la ligne correspondante de la Crontab spécifique à un Synology, afin de faciliter la compréhension de mon message.

NB1 : l’éditeur n’a pas correctement conservé les tabulations de la Crontab.
NB2 : Ce code n’est pas à recopier tel que mais à adapter selon vos besoin et votre contexte.

Cordialement,

Yann

Salut

Highcharts donne des graphiques propre.
Yann, il manque le structure de ta table ainsi que la fonction connect, j’ecrit un générateur de graph pour ton exemple.

A+
thomas

Bonjour Thomas,

Effectivement, je me suis limité à un exemple de code, sans inclure la fonction de connexion à la BDD ; celle-ci comportant des paramètres de sécurité (vieux réflexe d’ancien admin. réseau).

Pour la structure de la table MySQL, pas de problème pour l’inclure si je la retrouve dans le portable qui m’accompagne actuellement, étant à plus de 1 500 kms… de mon Synology !

Sinon pour la partie graphique, pour ma part, j’utilise JPGraph, que je trouve simple à paramétrer et qui me génère de beaux graphiques ; celui-ci me permettant aussi de générer les graphiques, directement en Jpg/Png, pour upload sur un site Web distant, hébergé sur Internet.

Mais cette partie graphique ne faisant pas partie de la question d’origine, je ne l’avais pas incluse dans mes réponses.

Au fait, en parlant de question d’origine, avec tous les retours effectués, son émetteur pourrait nous indiquer si cela lui convient, s’il ne comprend pas tout, ou s’il a besoin de précisions :wink:)))))

Cordialement,

Yann

Tu trouveras une demo de graphique avec Highcharts sur :
http://multicardipx800.sourceforge.net/ViewGraph.php?class=relai&numero=carte-1-relai-1

Merci de vos conseils.

Pour l’IPX, ça a l’air d’être logique en utilisant le fichier status.xml

Quand est il pour récupérer une donnée dans une box domotique? Telle que la Vera?

La réponse à ma question :slight_smile:

http://www.touteladomotique.com/forum/viewtopic.php?f=18&t=7962

le multicardipx800 peut être installé avec d’autres pages .php sur le même serveur n’est-ce pas?

Merci

Oui rassure toi fatal, un même serveur php peut hébergé plusieurs sites, donc une multitude de scripts php, sans problème. La seule limite sera la surcharge du serveur, donc sa puissance.

Merci :slight_smile: