Je souhaite conserver certaines données de l’EcoDevices RT2. Pour cela j’aimerai envoyer les données vers une base de données MySql se trouvant sur un NAS Synology.
Par exemple :
La consommation d’électricité en provenance de la TIC, la consommation d’eau et de fioul toutes les 15 minutes.
En fin de journée, le total de la consommation d’électricité en provenance de la TIC, la consommation d’eau et de fioul.
Je pense qu’il est possible de le faire en exécutant un fichier php via le planificateur de tâche du Nas Synology. Je souhaiterai éviter de passer par une application tierce comme vu dans le forum.
Je n’ai malheureusement pas les connaissances ni les compétences pour créer ce fichier et serai ravi d’avoir un petit coup de main pour m’aider à le réaliser.
Bonjour,
Je n’ai absolument aucune compétence en php. J’ai tenté de de mutualiser les infos trouvées.
Voici (en pièce jointe) le début du fichier mais qui n’est pas complet car je sèche face à ce langage qui est du charabia pour moi :
<?php
$db_host = "localhost";
$db_username = "root";
$db_password = "password";
$db_name = "BDD";
$table_name = "table";
// Début de connection à la base de donnée
mysql_connect($db_host,$db_username,$db_password) or die ('Impossible de se connecter à la base de donné:'.mysql_error());
mysql_select_db($db_name) or die ('Impossible d'ouvrir la base de donnée , FAIL ! '.$db_name.' : '.mysql_error());
//Fin : connexion à la base et sa séléction
//On charge le fichier XML contenant les données
$table = simplexml_load_file('http://192.168.1.57/admin/status.xml');
// Pour le deboggage on affiche les résultat en HTML et avec l'encodage utf8
header('Content-Type: text/html; charset=utf-8');
?>
Est-ce qu’une âme charitable, qui connait ce langage, pourrait contrôler ce que j’ai déjà fait et m’aider pour finaliser ce fichier php pour intégrer dans Mysql, par exemple, l’index TIC du fichier http://192.168.1.57/admin/status.xml
J’ai fait un petit script complet qui ne nécessite pas de base de donnée mais un simple fichier.
A la base il est prévu pour récupérer une donnée du fichier « status.xml » d’un IPX 4, mais le format xml étant universel, il devrait fonctionner avec n’importe quel matériel.
Mais je cherche absolument a intégrer les infos dans la base de données Mysql de mon Nas car une application ira les chercher par la suite.
Je ne connais pas du tout ce langage et ne sais pas du tout comment indiquer, dans le fichier php, comment prendre les données voulues du fichier status.xml pour les mettre dans la base de données dans telle table et dans telle colonne.
J’ai modifié le fichier php pour qu’il puisse accéder au status.xml de mon ERT et j’ai mis « etiquette03 » dans $xml car c’est ce contenu que je souhaite intégrer dans la base de données.
$xml = « etiquetteEC3 »; ← ce que vous souhaitez récupérer (la ok pas de pb)
$sql_data ← C’est la structure a mettre a jour dans la base de données.
D’origine j’avais mis « lps0 », en le modifiant, vous devez également modifier votre base de données. (voir plus bas).
En effet, le script ne peut pas mettre a jour une structure inexistante.
Mais avant toute chose, avez-vous créé la base de données ?
(« import » dans phpMyAdmin → fichier « domotique-statusxml.sql »)
Une fois crée, modifiez la « structure » « lps0 » qui se trouve dans « domotique/statusxml » par
« etiquetteEC3 ».
Et pour terminer, il faut renseigner dans la page PHP les identifiants: nom d’utilisateur et mot de passe de votre base de données (« Paramètres connexion MYSQL »).
j’ai mis les lignes 42 et 43 en commentaire car ça mettait une valeur dans la base de données qui ne provenait pas du fichier xml. Est-ce qu’il ne fallait pas le faire?
voici la base de données avec les colonnes souhaitées (date, heure, indexTIC) :
PHP Fatal error: Call to undefined function mysqli_connect() in /volume1/web/edf/connexion_bdd_CM.php on line 36
Fatal error: Call to undefined function mysqli_connect() in /volume1/web/edf/connexion_bdd_CM.php on line 36
Pouce savoir si votre script s’exécute de façon planifié, modifiez la valeur de indexTIC dans la bdd, puis exécutez la planification. Retournez voir la bdd voir si la valeur a été modifiée.
Concernant cette série de chiffres 9, cela indique en général un problème de format.
En mettant « DECIMAL 10,3 », il est possible qu’un arrondi soit opéré, si le chiffre a enregistrer dépasse: 9999999,999 (donc supérieur a 10000000), la valeur enregistrée sera toujours le maximum que vous avez spécifié: 9999999,999.
Vous pouvez contourner le problème (oui je sais, c’est pas bien…) en mettant « VARCHAR » a la place de « DECIMAL ».
Cela pourrai aider a solutionner le problème
Si le problème persiste, exécutez le script et donnez moi le résultat affiché
J’ai besoin de connaitre la donnée récupérée qu’il essai d’enregistrer dans la bdd avant que celle-ci ne fasse d’arrondi ou autre.
Par la suite, que faudra t il modifier pour qu’à chaque lancement du script la donnée souhaitée s’inscrive dans la base de données dans une nouvelle ligne?
Que faut il modifier pour ajouter des colonnes dans la base de données avec des données provenant d’autres « étiquettes » du fichier xml?