Forum eedomus http://forum.eedomus.fr/ |
|
COMPTEUR D'EAU SUR BROCHE IMPULSION - RJ12 http://forum.eedomus.fr/viewtopic.php?f=18&t=11159 |
Page 1 sur 1 |
Auteur: | jbsuc [ 20 Déc 2021 16:29 ] |
Sujet du message: | COMPTEUR D'EAU SUR BROCHE IMPULSION - RJ12 |
Voici une astuce pour créer un compteur d'impulsion à l'aide des brocheRJ12 J'installe un compteur GIANOLA à comptage d'impulsion 1L=1Imp que je branche sur un RJ12 comme ceci: Commencez par créer le compteur d'impulsion sur une broche, dans mon cas ce sera sur la broche B4: Dans mon cas, j'ai choisi de compter toutes les 30 minutes, il est important de comprendre comment fonctionne le compteur d'impulsion Eedomus, dans le cas plus haut: Le compteur est branché sur la Broche B4 du RJ12, si l'on compte toutes les 30 minutes, il faut ajouter un coef multiplicateur, en effet le comptage d'impulsion, calcule à la fin de la période l'équivalent sur une heure. Si période de mesure = 30 minutes, alors 1 Impulsion enregistrera une valeur de 2 car 1Imp/30min équivaut 2Imp/h, c'est cette dernière valeur que calcule la Box, il faut donc multiplier par 0,5 pour retenir une 1Imp=1L . Il faut créer 4 périphériques d'état : (L) Nombre décimal EAU Minuit à maintenant (compte la quantité d'eau de la journée en cours) EAUStatJ (Cumul de quantité d'eau de la veille) EAU Début du mois à maintenant (compte la quantité d'eau du mois en cours) EAUStatM (Cumul de quantité d'eau du mois précedent) Il faut ensuite Créer un actionneur HTTP: On créé 4 valeurs possibles d'actionneur : Off: http://localhost/script/?exec=ConsoEauV ... EauJ=(CODE APICompteur ImplusionRJ12)&EauM=(CODE API Eau cumulé Mois en cours)&EauStatJ=(CODE API Eau cumulé Jour en cours)&EauStatM=(CODE API conso d'eau du mois M-1)&EauJavant=(CODE API conso d'eau du Jours J-1) Incrémentation : http://localhost/script/?exec=ConsoEauV ... EauJ=(CODE APICompteur ImplusionRJ12)&EauM=(CODE API Eau cumulé Mois en cours)&EauStatJ=(CODE API Eau cumulé Jour en cours)&EauStatM=(CODE API conso d'eau du mois M-1)&EauJavant=(CODE API conso d'eau du Jours J-1) StatsEau : http://localhost/script/?exec=ConsoEauV ... EauJ=(CODE APICompteur ImplusionRJ12)&EauM=(CODE API Eau cumulé Mois en cours)&EauStatJ=(CODE API Eau cumulé Jour en cours)&EauStatM=(CODE API conso d'eau du mois M-1)&EauJavant=(CODE API conso d'eau du Jours J-1) Rest: http://localhost/script/?exec=ConsoEauV ... EauJ=(CODE APICompteur ImplusionRJ12)&EauM=(CODE API Eau cumulé Mois en cours)&EauStatJ=(CODE API Eau cumulé Jour en cours)&EauStatM=(CODE API conso d'eau du mois M-1)&EauJavant=(CODE API conso d'eau du Jours J-1) On crée une règle Compteur Eau On : additionne les impulsions toutes les 30min. Le script ConsoEauV2.php à enregistrer : <? //Ce script calcule la consommation d'eau, par jour et par mois //Il est appelé par les règles "Compteur Eau On", "Compteur Eau Off" et "Conso Eau Stats" //Version 2.0, JB SUC // //Paramètre "Command" peut prendre les valeurs suivantes //On: Impulsion On compteur d'Eau //Off: Impulsion Off compteur d'Eau //Stats: A exécuter avant minuit, par exemple 23h56. Le script met à jour les variable "ConsoEauJ" et "ConsoEauM", // et ConsoEauJ et ConsoEauM si le Compteur est en fonction. // Donc important, à exécuter uniquement 1x par jour, et entre 23h00 et minuit. //Reset: pour remettre à zéro toutes les variables (Etats virtuels + variables sur la box) // //Et les autres paramètres: //Parameter "ConsoEauJ" = ConsoEau depuis minuit //Parameter "ConsoEauM" = ConsoEau depuis le début du mois //Parameter "ConsoEauStatJ" = ConsoEau journalière //Parameter "ConsoEauStatM" = ConsoEau mensuelle // //Exemple d'appel: //http://localhost/script/?exec=ConsoEauV2.php&CommandEau=Reset&EauJ=(AAA)&EauM=(BBB)&EauStatJ=(CCC)&EauStatM=(DDD)&EauJavant=(EEE) // //////////////////////////////////////// //MAIN //////////////////////////////////////// $EauJavant_id = getArg('EauJavant','-1'); // Récupère le paramètre EauJavant correspondant aux impulsions $EauJ_id = getArg('EauJ','-1'); //Récupère le paramètre EauJ $EauM_id = getArg('EauM','-1'); //Récupère le paramètre EauM $EauStatJ_id = getArg('EauStatJ','-1'); //Récupère le paramètre EauStatJ $EauStatM_id = getArg('EauStatM','-1'); //Récupère le paramètre EauStatM //echo "EauJ_id: ", $EauJ_id , "\n"; //Debug //echo "EauM_id: " , $EauM_id , "\n"; //Debug //echo "EauStatJ_id: ", $EauStatJ_id , "\n"; //Debug //echo "EauStatM_id: " , $EauStatM_id , "\n"; //Debug $t = getValue($EauJavant_id); $EauJavant=$t['value']; //Récupère la valeur prédente de EauJavant correspondant aux impulsions du compteur toutes les heures $t = getValue($EauJ_id); $EauJ=$t['value']; //Récupère la valeur prédente de EauJ $t = getValue($EauM_id); $EauM=$t['value']; //Récupère la valeur prédente de EauM //echo "Previous EauJ: ", $EauJ , "\n"; //Debug //echo "Previous EauM: " , $EauM , "\n"; //Debug //var_dump($t); //Debug $CommandEau = getArg('CommandEau','-1'); //CommandEau, doit être Incrementation, Off, StatsEau ou Reset //echo "CommandEau: " , $CommandEau , "\n"; //Debug switch ($CommandEau) { //Incrementation///////////////////// case "Incrementation": { setValue($EauJ_id, $EauJ + $EauJavant); //Met à jour la conso depuis minuit setValue($EauM_id, $EauM + $EauJavant); //Met à jour la conso depuis le début du mois } //Ne fait rien si la séquence n'est pas bonne break; //And exit //Off///////////////////// case "Off": { } //Ne fait rien si la séquence n'est pas bonne break; //And exit //StatsEau///////////////////// case "StatsEau": //Comptabilise l'enclenchement en cours si le brûleur est en fonction { setValue($EauStatJ_id, $EauJ); //Met à jour la conso du jour précédent (faut il rajouter +EauJavant) setValue($EauJ_id, 0, false); //Réinitialise le compteur journalier setValue($EauM_id, $EauM); //Met à jour la conso depuis le début du mois //Nouveau mois? $tomorrow = date("d", strtotime("+1 day")); //Dernier jour du mois si demain, c'est le 1er //echo "Tomorrow= ", $tomorrow, "\n"; //Debug $h=date("G"); //Heure, format 0 to 23 if ($tomorrow == 1 AND $h == 23) { setValue($EauStatM_id, $EauM, false); //Met à jour la conso du mois précédent setValue($EauM_id, 0, false); //Réinitialise le compteur mensuel }; } break; //And exit //Reset///////////////////// case "Reset": saveVariable('CompteurElapse', 0); //Met à zéro les variables sur la box saveVariable('CompteurLastOn', 0); setValue($EauJ_id, 0, false); //Et les Etats virtuels setValue($EauM_id, 0, false); setValue($EauStatJ_id, 0, false); setValue($EauStatM_id, 0, false); break; //And exit default: //Au cas ou break; } //switch ?> |
Page 1 sur 1 | Le fuseau horaire est UTC+1 heure |
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/ |