đź“‹ 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