[RESOLU] Historique des ouvertures de contact Enocean

Bonjour,

Je possède un IPX800 V4 avec un X-ENO et souhaiterai garder l’historique (date et heure) des ouvertures d’un contacteur d’ouverture Enocean Nodon.

Est-ce possible ?
Si oui, je veux bien un petit coup de main pour m’assister.

Merci

Bonjour,

Je pense que ce ne sera pas possible sans un serveur externe (sur lequel se trouvera soit un fichier de log, soit une base de données), de type NAS ou Raspberry Pi.

L’idée serait la suivante :

  1. Le contact Enocean s’ouvre
  2. L’IPX envoie un PUSH vers le serveur
  3. Un script sur ce serveur interprète le PUSH et stock soit dans un fichier soit dans une base de données la date, l’heure, le contact, et sa position.
1 « J'aime »

@XavierO merci pour ta réponse.

J’ai un NAS Synology avec PhpMysql mais malheureusement je ne suis pas sûr d’avoir toutes les compétences pour créer le push ni pour l’interpréter.

Si une âme charitable peut m’assister j’en serai ravi

Merci

Quelques petites questions pour essayer de t’aider au mieux :

  1. On parle d’un seul contacteur ?
  2. N’ayant pas de X-ENO, je ne sais pas comment il est intégré dans le moteur de scenarios. Est-ce que le contacteur Enocean est déclenché par un ou des scenarios ? Si oui, peux-tu décrire ces scenarios ? Dans le cas contraire, est-ce que les contacteurs Enocean peuvent être utilisés comment points d’entrée d’un scenario ?
  3. Pour la consultation du log, est-ce que tu as en tête une interface un peu user-friendly, ou est-ce qu’un fichier texte de type « Nom du contacteur (Tabulation) Etat (Tabulation) Date et heure », à consulter en accédant au système de fichiers du NAS, suffit ?
  1. Oui un seul contacteur pour l’instant, on verra plus tard s’il est possible de le faire avec d’autres contacteurs

  2. Le contacteur Enocean envoi son état à l’IPX800 à chaque changement d’état.
    On peut utiliser l’état de ce contacteur dans un scenario:

J’ai créé un scénario qui fera une action quand le contacteur passera à l’état « OFF » qui correspond à l’ouverture du portillon de mon logement.
Il me suffirait de faire un push dans ce cas.

  1. Pour la consultation, le plus simple me convient bien : un fichier texte avec “Nom du contacteur (Tabulation) Etat (Tabulation) Date et heure”. Je peux aussi consulter Phpmyadmin pour lire la base de données.

Bonjour,

Le script suivant (non testé, et perfectible - notamment sur la gestion des erreurs éventuelles) doit faire l’affaire pour démarrer.

Il faut donc :

  1. Mettre ce script sur le serveur, par exemple dans un fichier log.php
  2. S’assurer que le script à les droits en lecture et écriture sur le répertoire où il se trouve (CHMOD 777 pour l’utilisateur php)
  3. Dans l’IPX, créer un push qui sur le ON va appeler le script (fin de l’URL = « log.php?etat=on »), et qui sur le OFF va également appeler le script (fin de l’URL = « log.php?etat=off »).
  4. Créer le scenario de type SI RELAIS ENOCEAN 1 ALORS ON/OFF PUSH

En en théorie, ça fonctionne (sauf si je suis un boulet et que j’ai fait une erreur bête quelque part :smiley: )

Le script :

<?
    $etat = ($_GET['etat'] == 'on') ? 'Allumage' : 'Extinction'; // On récupère l'état du relais envoyé par le push

    $horodatage = date('d/m/Y à H:i'); // Date courante au format "01/01/2018 à 15h05". L'heure se base sur le fuseau horaire du serveur
    $ligne_log = $etat . ' du relais Enocean 1 le ' . $horodatage . '\n';


    $log = fopen('log.txt', 'a+'); // On ouvre le fichier de log. S'il n'existe pas, il est créé automatiquement à condition que le script ait les droits sur le répertoire


    fseek($log, 0); // On se place au début de log (on aura donc les enregistrements les plus récents en haut)

    fwrite($log, $ligne_log);
    fclose($log);

    ?>
4 « J'aime »

@XavierO Merci pour ton aide.

Cela fonctionne :+1:.

Si je peux me permettre, peut-on modifier le script pour qu’un retour à la ligne se fasse après chaque enregistrement dans le fichier log.txt pour avoir les logs les uns sur les autres plutôt qu’à la suite.

Merci beaucoup.

J’ai regardé sur le net et j’ai trouvé la modification à apporter, il faut ajouter \r avant \n

J’ai aussi pu faire cette petite correction et mettre « \r\n » à la place de ‹ \r\n ›

Je tiens à adresser un très grand merci à @XavierO pour m’avoir aidé car je ne connais pas du tout le « scripting ».

Diode

1 « J'aime »

Super que tu aies trouvé comment adapter le script à tes besoins. :slight_smile: