COMPTEUR D'EAU SUR BROCHE IMPULSION - RJ12

Échangez ici vos astuces sur la gestion des règles eedomus

COMPTEUR D'EAU SUR BROCHE IMPULSION - RJ12

Messagepar jbsuc » 20 Déc 2021 16:29

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

?>
jbsuc
 
Messages : 2
Inscription : 02 Oct 2018

Retour vers Règles et programmations

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 61 invité(s)