IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Alerte sur dépassement de valeurs issues de calculs php


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Dessinateur industriel
    Inscrit en
    Février 2021
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Dessinateur industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2021
    Messages : 90
    Points : 42
    Points
    42
    Par défaut Alerte sur dépassement de valeurs issues de calculs php
    Bonjour,
    Je fait un applicatif de suivi de consommations de compteurs. Mon site fonctionne, il tournera en "production" en local sur un RPI ou équivalent.
    Je cherche à ajouter une fonctionnalité d'alertes sur la page utilisateur, et surtout, alerte emails sur des consommations excessives dans la journée, ou à l'inverse, consommations non atteinte à telle heure.

    Les index des compteurs sont dans une base de données MySQL, actualisées régulièrement (entre 15min et 1 heure).
    Les consommations sont actuellement calculées dans une page PHP (pour la conso du jour, conso = index max du jour - Index max du jour précédent) qui affiche un graphique et un tableau.

    Ceci fonctionne en tant qu'utilisateur car je consulte le site, mais j'aimerai que les alertes puissent fonctionner à tout moment. C'est donc côté serveur qu'il faut régulièrement tester les règles des alertes.
    Pourriez vous m'orienter sur les outils / méthodes. Je débute totalement, est-ce qu'il faut utiliser un système de tâche régulière (CRON ?) sur un script avec chaque règle. C'est très flou.
    Merci de votre aide.

  2. #2
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    Bonjour,

    Si il ni a pas d'événement actionneur le cron est obligatoire, mais
    Les index des compteurs sont dans une base de données MySQL, actualisées régulièrement (entre 15min et 1 heure)
    ici peut-être gérer les alertes.
    Sinon pour le cron il faut un script php d'entrée https://matthieu.developpez.com/exec...dique/#LIV-D-2 attention l'article date mais le principe du cronr este identique

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par makimax Voir le message
    Ceci fonctionne en tant qu'utilisateur car je consulte le site, mais j'aimerai que les alertes puissent fonctionner à tout moment.
    Si c'est à tout moment sans que personne ne consulte le site, pour par exemple t'envoyer un mail d'avertissement en cas de dépassement des quotas oui il te faut un cron. Mais en même temps ces quotas ne seront dépassés que si l'on utilise le site, c'est à dire que tu pourrais aussi mettre une routine dans tes scripts pour incrémenter les ressources utilisées au fur et à mesure et n'envoyer un message qu'en cas de dépassement. Au final le cron ne pourrait être nécessaire qu'en absence d'utilisation du site pour envoyer un message de sous utilisation des ressources ? Décris-nous les ressources mesurées plus exactement si tu veux que l'on puisse te répondre plus précisément.

  4. #4
    Membre du Club
    Homme Profil pro
    Dessinateur industriel
    Inscrit en
    Février 2021
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Dessinateur industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2021
    Messages : 90
    Points : 42
    Points
    42
    Par défaut
    Bonjour et merci de votre aide.
    Les compteurs d'eaux transmettent leur "index" régulièrement. Attention cet "index" n'est pas la valeur de consommation, c'est un incrément, comme un compteur d'électricité. Pour connaître la valeur et la comparer à une règle d'alerte, il faut donc la calculer.
    Par exemple si je demande une alerte, chaque jour, si la consommation dépasse 1000L : il faut donc vérifier soit régulièrement (CRON), soit par un déclencheur par exemple lorsque le compteur dépose sa valeur d'index dans la base de données, si Index du jour - Index max du jour précédent est supérieur à 1000L.

  5. #5
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    si les compteurs transmettent une valeur, c'est que du code php est déjà lancé à ce moment ? ils ne modifient pas directement la base de données je suppose sinon les compteurs devraient avoir les codes d'accès mysql ce qui poserait un problème.

  6. #6
    Membre du Club
    Homme Profil pro
    Dessinateur industriel
    Inscrit en
    Février 2021
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Dessinateur industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2021
    Messages : 90
    Points : 42
    Points
    42
    Par défaut
    Les compteurs (pulse) sont reliés à un "automate" et gère l'incrément de l'index. Ces valeurs d'index sont déposés via Node-Red par un échange en Modbus TCP. Je prévois de le remplacer par autre chose que NodeRed comme la libraire PyModbus mais le principe est le même un Maître Modbus déposent les valeurs dans une base de données.
    Il me faut donc un évènement / calcul / analyse par rapport à une règle et une action si l'alerte est vrai.

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Oui bon cela ne m'aide pas plus car je ne connais pas ces interfaces d'automatisme. Cela dit puisque tu dis plus haut que cela fonctionne quand tu consultes ton site, tu devrais pouvoir faire l'équivalent avec des tâches cron. En fait le serveur appellera ton fichier php toutes les X heures, tous les x jours et x semaines. C'est l'équivalent d'afficher une page ou de la rafraichir sauf que bien sûr personne ne verra de résultat mais tout le code sera exécuté et tu peux faire tout ce qu'un script php peut faire, un CRUD sur une bdd, envoyer des mails etc.

    En fait ces tâches automatisées sont très faciles à mettre en oeuvre avec les interfaces administrateur fournies par les hébergeurs. Un exemple de mise en place d'un CRON chez OVH pour les hébergements mutualisés. J'ai vérifié sur mon hébergement mutualisé de type perso, j'ai bien exactement cette interface.

  8. #8
    Membre du Club
    Homme Profil pro
    Dessinateur industriel
    Inscrit en
    Février 2021
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Dessinateur industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2021
    Messages : 90
    Points : 42
    Points
    42
    Par défaut
    Mon site actuel affiche un tableau et un graphique suivant une période sélectionnée dans un daterangepicker
    Dans cette idée d'utiliser CRON, cela serait donc un script PHP dédié qui ferait la comparaison et qui tournerait sur le serveur de façon répétitive. Et d'ailleurs si on peu comme faire un CRUD, cela veut dire que je peut alimenter une table d'historique d'alarme. Et ce script, si la règle est vrai, comment ensuite envoyer un mail ?

    CRON peut peut-être être remplacer ou mis en complément d'un déclencheur, je ne sais pas si on peut avoir un retour de la part de MySQL lorsqu'une donnée est insérée, si c'est possible, à chaque nouvel INSERT, je lance le script. Peut être que Node-Red peut le faire mais je vais essayer de découvrir un peu le Python pour le remplacer par une librairie dédiée au Modbus.

  9. #9
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par makimax Voir le message
    Mon site actuel affiche un tableau et un graphique suivant une période sélectionnée dans un daterangepicker
    Dans cette idée d'utiliser CRON, cela serait donc un script PHP dédié qui ferait la comparaison et qui tournerait sur le serveur de façon répétitive. Et d'ailleurs si on peu comme faire un CRUD, cela veut dire que je peut alimenter une table d'historique d'alarme. Et ce script, si la règle est vrai, comment ensuite envoyer un mail ?
    Php a une fonction mail, donc trivialement si tu définis une variable $regle qui prend les valeurs true ou false en fonction de l'état de ta table d'historique d'alarme :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ($regle) {
        mail('monmail@example.com', 'Mon Sujet', $message);
    }

    Citation Envoyé par makimax Voir le message
    CRON peut peut-être être remplacer ou mis en complément d'un déclencheur, je ne sais pas si on peut avoir un retour de la part de MySQL lorsqu'une donnée est insérée, si c'est possible, à chaque nouvel INSERT, je lance le script.
    L'extension php PDO pour MySQL possèdent une fonction rowCount pour déterminer le nombre de lignes affectées par la dernière requête DELETE, INSERT ou UPDATE exécutée par PDO. Si tu n'utilise pas php pour insérer ces données faut voir avec l'interface que tu utilises, et pour que cela fonctionne comme tu veux il faudrait que ton langage puisse tester le retour (si c'est un insert tu peux peut-être simplement testé qu'il s'est fait correctement) et ensuite lancer ton script.

  10. #10
    Membre du Club
    Homme Profil pro
    Dessinateur industriel
    Inscrit en
    Février 2021
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Dessinateur industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2021
    Messages : 90
    Points : 42
    Points
    42
    Par défaut
    Merci, je vais regardé du côté de l'interface qui collecte et insert les données dans la DB donc Node-RED, ou du Python si je me met à utiliser la librairie PyModbus, mais dans ce cas, je dois aussi apprendre à m'en servir et ce n'est pas gagné, je débute totalement.

Discussions similaires

  1. [XL-2003] Envoi d'une alerte sur boite mail outlook en cas de dépassement de délais
    Par yannick59190 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/04/2018, 12h11
  2. Message d'alerte sur changement de valeur d'un champs
    Par JeremyOxymétal dans le forum SAGE
    Réponses: 4
    Dernier message: 23/10/2015, 13h57
  3. Réponses: 0
    Dernier message: 23/02/2013, 15h38
  4. [IP-2010] règle sur un contrôle "valeur calculée"
    Par angeld dans le forum InfoPath
    Réponses: 2
    Dernier message: 20/02/2012, 15h13
  5. Alerte sur des valeurs
    Par Chikatilo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/06/2008, 11h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo