đź“‹ EVENT LOGGER IPX800 V4 sur NAS (PHP)

Bonjour Ă  tous,

souvent il a Ă©tĂ© demandĂ© comment faire un historique des Ă©vĂ©nements qui surviennent sur l’IPX800 V4. La rĂ©ponse Ă©tait toujours « faire un PUSH Â» sur une condition « OnEvent Â»

voici, pour ceux qui en ont besoin, la manière de le mettre en place :

Dans un dossier web de votre synology, raspberry, ou web hébergé (FAI, …), collez ce code dans un fichier onEvent.php

<?php
//url attendues :
//http://ipSyno/DossierWeb/monScript.php?time=$TS&type=SV&val=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//http://ipSyno/DossierWeb/monScript.php?time=$TS&type=EV&val=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//http://ipSyno/DossierWeb/monScript.php?time=$TS&type=ED&val=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//http://ipSyno/DossierWeb/monScript.php?time=$TS&type=SR&val=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

$type=$_GET["type"];
if ($type=="SV" || $type=="EV"){
	$nbcar=128;
}
if ($type=="ED"  || $type=="SR"){
	$nbcar=56;
}
$message="";
for ($i = 0; $i < $nbcar; $i++) {
  $message=$message . substr($_GET["val"],$i,1) . ";";
}

$monHisto=fopen('./Histo' . $type . '.csv', 'a+');
fputs($monHisto, $_GET["time"] . ";" . $type . ";"   . $message ."\n");
fclose($monHisto);
echo "ok " . $type;
?>

Donnez les droits Lecture/Ecriture à l’utilisateur SYSTEM

sur IPX800, créer ces 4 scènes

  • ONEVENT(« EntrĂ©es physiques Â») ON PUSH(preset=ED)
  • ONEVENT(« Sorties physiques Â») ON PUSH(preset=SR)
  • ONEVENT(« EntrĂ©es virtuelles Â») ON PUSH(preset=EV)
  • ONEVENT(« Sorties virtuelles Â») ON PUSH(preset=SV)

créer ces 4 preset de PUSH

ED:
serveur : ip synology
Url ON : /monDossierWeb/onEvent.php?time=$TS&type=ED&val=$D

SR:
serveur : ip synology
Url ON : /monDossierWeb/onEvent.php?time=$TS&type=SR&val=$R

EV:
serveur : ip synology
Url ON : /monDossierWeb/onEvent.php?time=$TS&type=EV&val=$VI

SV:
serveur : ip synology
Url ON : /monDossierWeb/onEvent.php?time=$TS&type=SV&val=$VO

adaptez l’url vers votre fichier onEvent.php

le script créera 4 fichiers csv comportant le timeStamp et les valeurs de chaque entrée ou sortie. Il suffira d’ouvrir le fichier avec un tableur.

Exemple de fichier généré pour les sorties virtuelles :

En ouvrant le fichier dans un tableur, les changements d’états sont visibles très facilement
Dans l’exemple, c’est SV6 qui génère le ON Event par ses changements successifs d’état

Pour information, SV6 est configurée avec un Tb de 30 secondes. Nous remarquons que les horodatages des changements ON->OFF sont espacés de 30s. Le fait que l’IPX800 pousse son propre timeStamp ($TS) augmente la précision des historiques.

Pour ceux qui connaissent, les règles de mise en forme conditionnelle peuvent aider pour mettre en exergue les changements d’état et donc faciliter l’analyse des données.

cdt

5 « J'aime »

Merci pour ce tuto qui se révèlera fort utile, je pense !

1 « J'aime »

Bonjour @fgtoul

Merci pour ce script que j’ai essayé mais, je ne trouve pas de fichier .csv dans le dossier créer pour .
Donc je pense avoir un problème d’url et voici ma question quand les fichier .csv sont t’il générés ?
J’ai fais plusieurs essais avec des url différentes et chaque fois j’allumai une entrée virtuel puis regardais dans le dossier mais rien.
Merci d’avance

Bonjour Jboboubou et bienvenue sur le forum,
le fichier est créé au 1er push s’il n’existe pas, ensuite les enregistrements sont ajoutés.

  • vĂ©rifiez l’URL dans le push (y compris la casse des caractères)
  • vĂ©rifiez les droits sur le dossier du NAS. L’utilisateur SYSTEME doit pouvoir Ă©crire

bonne journée

Merci pour la réponse, pour l’URL, j’ai fait un copier/coller de l’emplacement directement depuis le dsm dans propriété du fichier onEvent.php, et j’ai attribuer les droits en lecture écriture au dossier et sous dossier et fichier.

Donc je vais continuer de chercher ce qui ne va pas.

Bonsoir @jboboubou

Avez vous le paquet Webstation d installé ?
Si oui ds le dossier web créé automatiquement par la Webstation avez vous créer par ex un dossier GCE et mis le fichier onEvent.php dedans?
Les URL à renseigner ds ce cas d exemple sont pour les push : /GCE/onEvent.php?time …

Bonsoir
alors oui j’ai bien installer webstation et il est lancer.
Mon erreur était bien dans l’URL et grâce à votre exemple j’ai pu corrigé facilement.
en fait je mettais /volume2/web/ipx800/onEvent.php alors qu’il fallait mettre seulement /ipx800/onEvent.php.

Merci beaucoup cela fonctionne Ă  present

1 « J'aime »

moi qui croyais avoir expliqué la même chose dans le tuto :thinking:

Url ON : /monDossierWeb/onEvent.php?time=$TS&type=EV&val=$VI

2 « J'aime »

bonsoir,

Oui en fait la solution était sous mon nez et le tuto est bien fait mais je ne sais pas pourquoi je m’étais mis en tête qu’il falais mettre toute l’url.

Et en lisant le massage de Jweb j’ai eu un déclic. :upside_down_face:

juste pour la clareté :wink:
l’url demandée dans le tuto est assurément l’url complète.
elle est donc sous la forme http://ipSyno/gce/onEvent.php?.
Bien sûr elle est tronçonnée dans les champs de paramétrage du push sur l’ipx800.

*Volume0 ne fait pas partie de l’URL, c’est en fait le chemin physique local d’accès au fichier, donc rien à voir avec l’URL.

Bonjour,
Y en a t il qui ont fait la meme chose avec une V5?
Cordialement,
J

Bonjour,
Toujours pas moyen de faire cela sur la V5? est ce un developement prevu?
C’est vraiement important dans pas mal de cas de pouvoir enregistrer les changements d’etat, pour certaines applications ca disqualifie met meme l’IPX V5…
Y a t il du nouveau la dessus, j’avais cru comprendre que c’etait dans le road map. Mais meme une solution sur le NAS comme avec la V4 serait acceptable.

Par avance merci. Cordialement,
Yannick

Bonjour
Vous pouvez le faire avec jeedom ou sur NAS mais toujours à intervalle régulier.
Si vous n’avez que quelques io à surveiller le Push sur changement d’état est facile à mettre en oeuvre.

Il faut se rappeler que la V4 n’avait pas plusieurs dizaines de milliers d’IO à gérer.

Oui juste quelques IO a surveiller. le push est OK. Y a t il un tuto compatible V5?

Il y a plusieurs tuto( wiki et forum)

https://wiki.gce-electronics.com/index.php?title=IHM_V5_en_détails_:_Les_liens

OK merci, le tuto avec Jeedom est tres bien fait et ca marche bien.

Par contre si je veux seeulement envoyer des push de certaines entrees de ma V5 sur mon NAS (fichier csv tel que c’etait le cas avec la V4), faut il modifier le script onEvent.php (et comment)?