Bonjour
J’aimerais archiver, dans un fichier texte banal (je ne veux pas utiliser une base de données), la valeur d’une entrée analogique (par exemple), complété par l’heure de lecture
J’ai regroupé ce qui me semble utile
IPX800V4
Usage de STATUS.XML
Cron sur mon sur serveur PHP Syno qui déclenche toutes les minutes
fichier PHP … qui ajoute une ligne à chaque cron à mon fichier Syno
mais je ne sais pas Ă©crire le fichier PHP
J’ai mis en place SaveIPX4V3.php qui fonctionne correctement.
J’ai essayé de modifier mais je n’y arrive pas car je ne connais pas ce langage
Mes recherches sont restées vaines, pourtant, c’est une situation qui me parait basique
Merci pour votre aide ou pour m’aiguiller vers un tuto déjà fait, dans la mesure ou la modif PHP est simple
Cordialement
Yves Puech
1 « J'aime »
fgtoul
Janvier 20, 2021, 11:49
2
Bonjour,
MĂ©thode 1
il peut y avoir plus simple pour sauvegarder une valeur analogique, à intervalle régulier dans un fichier texte :
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 »
Merci d’avoir pris le temps de me répondre
Je teste tout ça et je reviens vers vous
Cordialement
Je n’ai qu’un mot à dire : PARFAIT
Avec tous mes remerciements
Cordialement
Yves
1 « J'aime »
Bonjour tranquille,
pour info, quelle solution avez-vous choisi?
Bonne journée
fgtoul
Janvier 20, 2021, 4:15
6
Je prends le pari pour la seconde qui permet la sauvegarde de n’importe quelle valeur, d’autant que le syno est déjà prêt
2 « J'aime »
Pari gagné @fgtoul
En fait, je mets au point une chaufferie bois, et j’ai besoin d’analyser le comportement de la production, du réseau de chaleur et avoir l’oeil sur quelques paramètres supplémentaires comme le basculement fuel.
Tout ça se passe très lentement, donc, hormis de camper dans la chaufferie, j’ai préféré la télérelève
Une fois calée, la collecte de datas sera arrêtée, quelques widgets suffiront
Bonne soirée à vous
2 « J'aime »
fgtoul
Janvier 20, 2021, 4:55
8
petit rappel Ă toute fin utile
comme pour les sources de données sur les dashboards, le fichier Status.xml contient les valeurs analogiques brutes.
Il faut donc appliquer les formules des sondes pour la conversion.
Pour avoir l’heure de bascule du fuel, ce serait peut être mieux de faire un PUSH OnEvent dans un scenario
1 « J'aime »
Oui, c’est fait dans le tableur
C’est comme en photo, il est toujours plus fiable de partir sur du RAW
Tout va lentement, donc les températures ne vont pas vraiment évoluer entre 2 échantillons
Et il m’est intéressant d’avoir une colonne synchro avec mes relevés
S’il me fallait analyser finement un basculement, soit j’échantillonne plus fin, soit j’incorpore l’horodatage manuellement
Je verrais bien, par contre, dans un fichier séparé, un suivi de défaut. et là , le PUSH On Event aurait tout son sens
2 « J'aime »
fgtoul
Janvier 20, 2021, 5:05
10
attention.
La récupération du fichier status.xml peut occuper l’ipx800. Un pulling trop rapide pourrait la mettre à genoux
Ho
Mais c’est de la daube cette bécane
On peut quantifier la charge du micro ou ça casse d’un coup ?
J’ai un IPX que pour la chaufferie, ça devrait aller
fgtoul
Janvier 20, 2021, 5:13
12
oui, très facilement, en fonction de la vitesse des réponses
plus sérieusement, dans Status.xml il y a la valeur lps.
plus elle baisse, plus l’ipx800 est chargée.
IPX800 vide, lps est largement au dessus de 10000.
Sur une install chargée, lps est de l’ordre de 5000, voire un peu moins sur une très grosse install.
En dessous de 3000, il faut la mettre sous oxygène
Il n’y a aucun ordre de grandeur officiel, ce sont juste des valeurs moyennes remontées par les utilisateurs
2 « J'aime »
tous30
Janvier 20, 2021, 5:32
13
Bonsoir,
Par rapport à ce que je vois sur le forum, ma config ne me parait pas bien grosse et pourtant j’ai un Ips 6827 et un wuc0 779798.
Est-ce la push et Jeedom qui prend du temps processeur ?
J’ai pas beaucoup de tuile
Cordialement
Cyril
fgtoul
Janvier 20, 2021, 5:33
14
bonsoir Tous30
tous30:
Est-ce la push et Jeedom
clairement oui
Pour info, Wuc0 ne correspond pas à un indice de performance, mais au nombre de secondes écoulées depuis le redémarrage de l’ipx800.
Je vous invite à aller faire un tour sur ce wiki : La mesure du temps — GCE Electronics
tous30
Janvier 20, 2021, 5:36
15
Re bonsoir
Ok merci de votre réponse .
1 « J'aime »
fgtoul
Janvier 20, 2021, 5:38
16
@tous30 : 6827 est une excellente valeur
twido
Octobre 1, 2023, 6:19
17
Bonjour,
je me permet de réactiver ce post car je n’arrive pas à faire fonctionner la solution 1 proposée par @fgtoul .
pour la programmation du scénario je pense être ok, par contre là où je rame c’est avec le fichier php et le push.
sur mon serveur (QNAP) j’ai un dossier « DATA » dans lequel je compte récupérer toutes les minutes la valeur analogique et c’est là que je bloque je ne comprend pas le fichier php… en particulier les 2 lignes en gris
un petit coup de main ?
merci
twido
Octobre 3, 2023, 6:03
18
Bonjour,
En continuant de fouiller sur le forum et en recoupant les infos, je suis encore plus perdu !!!
c’est l’IPX qui envoie les données sur le NAS ou alors c’est le NAS qui demande les infos à l’IPX ?
normalement avec l’utilisation de push ça doit être l’IPX qui envoie au NAS.
c’est vraiment pas clair pour moi plus je cherche moins je comprend
fgtoul
Octobre 3, 2023, 9:40
19
bonjour,
tout est possible
l’URL d’un push étant limité en nombre de caractères, comme expliqué plus haut, la méthode dépend du nombre de valeurs à traiter.
Ça dépend aussi de ce que vous souhaitez faire.
bonne journée
twido
Octobre 3, 2023, 10:03
20
J’aimerais juste récupérer dans un fichier CSV les valeurs des entrées analogiques, après la méthode m’importe peu, je dirais la plus simple vu que je suis une bille en comm et programmation
Sachant que la solution Notifix ne me convient pas, l’échantillonnage est trop grand.