Bonjour akua
J'ai continué la simulation avec ton script et une version modifiée pour être plus facilement adaptable à diverses situations. J'ai utilisé ta règle de déclenchement, toutes les heures au lieu de 1 fois par jour, et je n'ai observé aucun problème de déclenchement; il s'agit en fait d'une simulation, car je ne dispose pas du contrat Tempo : j'ai utilisé le Linky normal et un interrupteur d'activation du mode "rouge".
Quand tu n'as pas de mise à jour, est-ce-que la règle a bien déclenché?
Voici ce que j'ai testé
- device
- akua.png (28.28 Kio) Consulté 1180 fois
- regle
- akua_regle.png (22.21 Kio) Consulté 1180 fois
Le nouveau script n'est pas différent du tien dans son principe, mais :
L'id du compteur est dans VAR1 (pas dans le script)
L'id du device et l'unité du compteur sont récupérés automatiquement
Le facteur pour la consommation est dans VAR2 (1000 par défaut)
Le nombre de décimales est dans VAR3 (1 par défaut)
On peut effectuer un débogage dans la fenêtre de test, sans perdre le résultat de XPATH
Les variables ont été renommées pour que ça fonctionne avec n'importe quel compteur totalisateur.
La ligne de commande a été complétée et le XPATH (le compteur n'est pas nécessairement HP Rouge).
Pour utiliser un compteur particulier, il suffit de modifier VAR1 et la règle de déclenchement sans intervenir sur le script.
- Code : Tout sélectionner
<?
// Gestion Consommation compteur pour box eedomus
// But : relevé journalier de compteur si actif
// Heure de relevé et gestion de l'activité par une règle
// Version 1 Akua janvier 2025, adaptation (opa95 17/01/2025)
// Appel http://localhost/script/?exec=releve_compteur.php&counter=[VAR1]
// ou http://localhost/script/?exec=releve_compteur.php&counter=[VAR1]&factor=[VAR2]&prec=[VAR3]
// pour debogage, dans la fenêtre de test, ajouter &debug=1
// la sortie reste valable même en mode debug
// VAR1 id du compteur (linky HP Rouge : 3235756)
// VAR2 (optionnel) facteur d'échelle pour consommation (défaut DEFFACT = 1000)
// VAR3 (optionnel) précision de la consommation (défaut : DEFPREC = 1)
// XPath //index
// Frequence de la requête : 0
// Appel par règle à 23h (entre 22h05 et 05h59) si HP
define('DEFFACT',1000);//Diviseur par défaut
define('DEFPREC',1);//Precision par défaut
$joursSemaine = array(1 => "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", "Dim");
$periph_id = getArg ('eedomus_controller_module_id');//id du periph
$counter_id = getArg('counter');//id du compteur (dans [VAR1])
$factor = getArg('factor',false,"");
if ($factor == "") $factor = DEFFACT;
$prec = getArg('prec',false,DEFPREC);
if ($prec == "") $prec = DEFPREC;
$debug = getArg('debug',false,0);//
//recupération ancien index
$periph_values = getValue($periph_id, true);//
$periph_old_value = $periph_values['value'];
$old_value = explode(" - ", $periph_old_value);
$old_index = $old_value[1];//dernierindex valide
//recupération nouvel index
$new_compteur = getValue($counter_id, true);
$new_index = $new_compteur['value'];//new_index
$unit = $new_compteur['unit'];
$conso = ($new_index - $old_index)/$factor;
switch ($factor){
case 1000 : $unit_conso = 'k'.$unit;break;
case 100 : $unit_conso = 'h'.$unit;break;
case 10 : $unit_conso = 'D'.$unit;break;
default : $unit_conso = $unit;
}
$unit_conso = substr($unit_conso,0,-1);
@sdk_header('text/xml');
echo '<?xml version="1.0" encoding="UTF-8"?>'."\n";
if ($debug) {
echo "<!--\n";//commentaire
echo "id periph : $periph_id\n";
echo "id Compteur : $counter_id\n";
echo "Facteur : $factor\n";
echo "Precision : $prec\n";
echo "Periph\n";
var_dump($periph_values);
echo "Linky\n";
var_dump($new_compteur);
echo "Ancien : $periph_old_value\n";
echo "Nouvel index ($unit) : $new_index\n";
echo "Ancien index ($unit) : $old_index\n";
echo "Conso ($unit_conso) : $conso\n";
echo "-->\n";
}
$xml = "<root><result>";
// Exemple de sortie : "Mar 14/01/2025 - 390672 - Conso 33.6 kWh"
if ($conso > 0) {
$conso = round($conso,$prec);
$xml .= $joursSemaine[date('N')]." ".date('d/m/Y')." - $new_index - Conso $conso $unit_conso";
} else {
$xml .= "Erreur, script lance hors periode";
}
$xml .= "</result></root>";
echo $xml;
?>
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)