Il semble que tout soit rentré dans l’ordre, sans comprendre pourquoi. Merci @Pilou54170 pour ta proposition malgré tout. Et bonne année
Salut à vous tous , est ce que quelqu’un a reussi a avancer sur le sujet du code avec l’offre Tempo de edf.
Personnelement j’ai aussi souscrit a cette offre et c’est vrai que ce genre de scenario couplé à l’offre Tempo serait top.
Je veux bien servir de beta testeur s’il le faut mais malheuresement je ne peux pas faire avancer le code car je n’ai pas du tout les capacités pour le faire
Merci à vous si quelqu’un se penche sur le sujet
oui il est en beta.
il fonctionne très bien couplé à suiviconso, un pluggin payant mais vraiment top.
sinon je referais une passe dessus pour la version stand alone.
Que veux tu exactement en produit de sorti ?
voici un exemple de suiviconso alimenter par le scenarion tempo
J’hesite a passer le pas pour le olugin suivi conso . Apparement il n’est plus maintenu par le dev. Et avec la chance que jai , cest dangereux pour moi de mettre 8e dessus .
Pour suivi conso faut il aussi une cle lixee ???
Si il est bien maintenu par mes bons soins.
Avec une clé lixee, cela fonctionne. Le mieux c’est d’avoir un module qui récupère la téléinfo du Linky. Peu importe le protocole et la marque
Ok, je pensais que la clé lixee etait justement un module qui recupere la teleinfo du linky , aurais tu un lien pour le module teleinfo . Pour que je pars sur une bonne base .
Sans module teleinfo ou cle lixee le plugin suiviconso ne sert a rien ?
Alors oui, le lixee récupère la teleinfo. Je disais simplement que ce n’est pas obligé d’être un Lixee. Perso jai un Ecodevices.
Et le plugin fonctionne aussi avec un module de mesure simple. Mais pour tempo, c’est mieux de récupérer la teleinfo du compteur.
Il fonctionne meme avec le plugin enedis
si tu as une clé à bran cher dans ton linky c’est encore mieux que sans car tu recupères en temps réel. Moi je n’en ai pas car mon compteur est trop loin. Donc je me sers des remontées du pluggin Enedis que j’injecte dans suivi conso. Donc je ne peux voir, au pas de la 1/2h le jour J qu’en J+1.
je ne peux que te conseiller suivi conso(avec ou sans clé) car tu peux vraiment piloter ta facture et ta conso…
le code beta est ici https://community.jeedom.com/t/tempo-injection-quotidienne-dans-suiviconso-des-donnees-enedis-au-pas-de-30/116444/4
Bonjour depuis un mois environ le calcul de mes conso HC / HP est erroné avec ce scenario.
Par exemple pour hier il m’affiche 9.4kwh en HP et 17.1kwh en HC pour un total de … 13.3kwh.
Le total est juste mais le detail HP / HC est faux. D’ou ca peut venir ?
C’est vrai que le plugin semble bien, je l’ai acheté il y a plusieurs moi mais je m’en sors pas avec toute la conf et les prix plus les TVA
Les HP et HC sont multipliés par 2
Cumul par 1/2 h et non pas par heure ?
Pour ajouter à l’explication de rjcb.
Les remontées Enedis se font au pas de la 1/2h depuis plus ou moins une année en fonction de ta zone. Et Enedis n’a toujours remonté que la puissance consommé pendant 1h.
Et la consommation est égal à la puissance (en W) consommé pendant une heure…soit des Wh
En passant au pas de la 1/2h elle donne toujours des puissances extrapolé sur 1h…
c’est pour cela qu’il faut diviser par 2 pour ramené la lecture de cette consommation (puissance consommé sur 1h) à la réalité de 30’.
je ne sais pas s’y j’ai été clair.
donc tu as bien consommé 13.3KWh : 4.7 en HP et 8.55 en HC…aux arrondis près car la somme des arrondis n’est pas égales à l’arrondi des sommes…
tu as pris quel scénario que je regardes pourquoi tu as eu ces résultats ?
Salut
Désolé je n’avais pas vu la réponse avant ! En effet l’explication semble bien claire.
Je pense que je suis passé sur un pas de 30 a 15 minutes depuis le 31 décembre! SI j’ai tout bien compris je dois diviser par 4 et non par 2.
J’ai pris le scenario suivant :
################################################
## Scenario début heures creuses avant minuit ##
################################################
## Vérification présence des variables ou implémentation avec valeurs par défaut
(empty($scenario->getData("EDF_HP_Start"))) ? $scenario->setData("EDF_HP_Start", "07:00") : null;
(empty($scenario->getData("EDF_HC_Start"))) ? $scenario->setData("EDF_HC_Start", "23:00") : null;
(empty($scenario->getData("EDF_Tarif_KWh_HP"))) ? $scenario->setData("EDF_Tarif_KWh_HP", "0.2164") : null;
(empty($scenario->getData("EDF_Tarif_KWh_HC"))) ? $scenario->setData("EDF_Tarif_KWh_HC", "0.1607") : null;
(empty($scenario->getData("EDF_Tarif_Abo_Mois"))) ? $scenario->setData("EDF_Tarif_Abo_Mois", "19.97") : null;
(empty($scenario->getData("EDF_Last_Var_Update"))) ? $scenario->setData("EDF_Last_Var_Update", date('Y-m-d H:i:s',strtotime("now - 1 days"))) : null;
## Vérification de la dernière exécution réussie
$commande_conso_hier_hp = cmd::byString("#[Maison][Variables EDF][Conso Jour HP]#");
$collectDate_conso_hier_hp = $commande_conso_hier_hp->getCollectDate();
if (date('Y-m-d', strtotime($collectDate_conso_hier_hp)) == date('Y-m-d',strtotime("yesterday"))){
$scenario->setLog("Scenario déjà lancé, annulation. Date dernier enregistrement valeurs:".date('Y-m-d', strtotime($collectDate_conso_hier_hp)));
} else {
## récupération de la date de dernière maj et vérification du nombre de jours à updater
$derniere_maj_donnees = date('Y-m-d',strtotime($scenario->getData("EDF_Last_Var_Update")));
$nb_jour_a_updater = scenarioExpression::time_diff($derniere_maj_donnees, "now",d);
if ($nb_jour_a_updater == 1){
$scenario->setLog("Seulement 1 jour a updater");
} else {
$scenario->setLog("Attention: ".$nb_jour_a_updater." jours a updater");
}
### Verification presences donnees horaires
$commande_ConsoHoraire = cmd::byString("#[Maison][Linky44][Consommation Horaire]#");
$collectDate_ConsoHoraire = $commande_ConsoHoraire->getCollectDate();
if (date('Y-m-d', strtotime($collectDate_ConsoHoraire)) == date('Y-m-d',strtotime("now"))) {
### Get and Set variables
$debut_heure_pleine = $scenario->getData("EDF_HP_Start");
$debut_heure_creuse = $scenario->getData("EDF_HC_Start");
$tarif_heure_pleine = $scenario->getData("EDF_Tarif_KWh_HP");
$tarif_heure_creuse = $scenario->getData("EDF_Tarif_KWh_HC");
$tarif_abonnement = $scenario->getData("EDF_Tarif_Abo_Mois");
## Commandes
$commande_conso_hier_hc = cmd::byString("#[Maison][Variables EDF][Conso Jour HC]#");
$commande_tarif_hier_hp = cmd::byString("#[Maison][Variables EDF][Tarif Jour HP]#");
$commande_tarif_hier_hc = cmd::byString("#[Maison][Variables EDF][Tarif Jour HC]#");
$commande_tarif_hier = cmd::byString("#[Maison][Variables EDF][Tarif Jour]#");
$commande_conso_mois_hp = cmd::byString("#[Maison][Variables EDF][Conso Mois HP]#");
$commande_conso_mois_hc = cmd::byString("#[Maison][Variables EDF][Conso Mois HC]#");
$commande_moyenne_conso_jour_hp = cmd::byString("#[Maison][Variables EDF][Moyenne Conso Jour HP]#");
$commande_moyenne_conso_jour_hc = cmd::byString("#[Maison][Variables EDF][Moyenne Conso Jour HC]#");
$commande_estimation_conso_mois_hp = cmd::byString("#[Maison][Variables EDF][Estimation Conso Mois HP]#");
$commande_estimation_conso_mois_hc = cmd::byString("#[Maison][Variables EDF][Estimation Conso Mois HC]#");
$commande_estimation_conso_mois = cmd::byString("#[Maison][Variables EDF][Estimation Conso Mois]#");
$commande_estimation_prix_mois_hp = cmd::byString("#[Maison][Variables EDF][Estimation Prix Mois HP]#");
$commande_estimation_prix_mois_hc = cmd::byString("#[Maison][Variables EDF][Estimation Prix Mois HC]#");
$commande_estimation_prix_mois = cmd::byString("#[Maison][Variables EDF][Estimation Prix Mois Global]#");
$id_commande_ConsoHoraire = $commande_ConsoHoraire->getId();
$id_commande_ConsoHoraireCreux = $commande_conso_hier_hc->getId();
$id_commande_ConsoHorairePlein = $commande_conso_hier_hp->getId();
### Lancement du calcul des données pour x jours
for($n=($nb_jour_a_updater-1); $n >= 0; $n--){
$date_valeurs = date('Y-m-d H:i:s', strtotime("yesterday - $n days 00:01"));
$date_JourEt1_minuit = date('Y-m-d H:i:s', strtotime("today - $n days 00:00"));
$scenario->setLog("Ajout du ".date('Y-m-d', strtotime("yesterday - $n days")));
$jour_restant_mois = scenarioExpression::time_diff("now - $n days", "first day of next month",d);
## NOTE: la valeur de la minute 0 ne doit pas être prise => ajout de 1mn
$debut_hp = date('Y-m-d H:i:s', strtotime("yesterday - $n days $debut_heure_pleine +1 minute"));
$debut_hc = date('Y-m-d H:i:s', strtotime("yesterday - $n days $debut_heure_creuse + 1 minute"));
$conso_hier_hp = history::getStatistique($id_commande_ConsoHoraire, $debut_hp, $debut_hc)["sum"] /2;
## Si donnée horaire à 0, envoyer un message dans le centre de message et utiliser les moyennes
if (empty($conso_hier_hp)) {
$title = 'Scénario Variables EDF';
$message = 'Données de consommation horaire vide pour le '.date('Y-m-d', strtotime("yesterday - $n days")).'. Estimation des valeurs via les statistiques de consommation du mois en cours.';
message::add($title, $message);
#Récupération de la consommation du jour
$id_commande_ConsoJour = cmd::byString("#[Maison][Linky44][Consommation Jour]#")->getId();
$conso_hier = history::getStatistique($id_commande_ConsoJour, date('Y-m-d H:i:s', strtotime("yesterday - $n days 00:00:00")), date('Y-m-d H:i:s', strtotime("yesterday - $n days 23:59:59")))["last"];
$moyenne_conso_jour_hc = $commande_moyenne_conso_jour_hc->execCmd();
$moyenne_conso_jour_hp = $commande_moyenne_conso_jour_hp->execCmd();
$ratio_conso_hp = ($moyenne_conso_jour_hp / ($moyenne_conso_jour_hp + $moyenne_conso_jour_hc)) * 100;
$conso_hier_hp = ($conso_hier * $ratio_conso_hp) / 100;
$conso_hier_hc = ($conso_hier * (100 - $ratio_conso_hp)) / 100;
} else {
#Calcul de l'heure creuse si valeurs journalières OK
$conso_hier_hc = (history::getStatistique($id_commande_ConsoHoraire, $date_valeurs, $debut_hp)["sum"] + history::getStatistique($id_commande_ConsoHoraire, $debut_hc, $date_JourEt1_minuit)["sum"] ) /2;
}
# Si les données ne sont pas vides ou nulls, continuer les calculs
if (!empty($conso_hier_hc) && !empty($conso_hier_hp)) {
# Finalisation des calculs divers
$tarif_hier_hp = $conso_hier_hp * $tarif_heure_pleine;
$tarif_hier_hc = $conso_hier_hc * $tarif_heure_creuse;
$tarif_hier = $tarif_hier_hp + $tarif_hier_hc;
# Historisation intermédiaire
$commande_conso_hier_hp->event($conso_hier_hp, $date_valeurs);
$commande_conso_hier_hc->event($conso_hier_hc, $date_valeurs);
$commande_tarif_hier_hp->event($tarif_hier_hp, $date_valeurs);
$commande_tarif_hier_hc->event($tarif_hier_hc, $date_valeurs);
$commande_tarif_hier->event($tarif_hier, $date_valeurs);
# Calculs
$conso_mois_hc = scenarioExpression::statisticsBetween($id_commande_ConsoHoraireCreux, "sum", "first day of this month midnight", "now");
$conso_mois_hp = scenarioExpression::statisticsBetween($id_commande_ConsoHorairePlein, "sum", "first day of this month midnight", "now");
$moyenne_conso_jour_hc = scenarioExpression::statisticsBetween($id_commande_ConsoHoraireCreux, "avg", "first day of this month midnight", "now");
$moyenne_conso_jour_hp = scenarioExpression::statisticsBetween($id_commande_ConsoHorairePlein, "avg", "first day of this month midnight", "now");
$estimation_conso_mois_hc = $conso_mois_hc + ($moyenne_conso_jour_hc * $jour_restant_mois);
$estimation_conso_mois_hp = $conso_mois_hp + ($moyenne_conso_jour_hp * $jour_restant_mois);
$estimation_conso_mois = $estimation_conso_mois_hc + $estimation_conso_mois_hp;
$estimation_prix_mois_hc = $estimation_conso_mois_hc * $tarif_heure_creuse;
$estimation_prix_mois_hp = $estimation_conso_mois_hp * $tarif_heure_pleine;
$estimation_prix_mois_global = $estimation_prix_mois_hc + $estimation_prix_mois_hp + $tarif_abonnement;
## Log dans le scénario pour tracer si besoin
$scenario->setLog("conso_hier_hp = ".$conso_hier_hp);
$scenario->setLog("conso_hier_hc = ".$conso_hier_hc);
$scenario->setLog("tarif_hier_hp = ".$tarif_hier_hp);
$scenario->setLog("tarif_hier_hc = ".$tarif_hier_hc);
$scenario->setLog("tarif_hier = ".$tarif_hier);
$scenario->setLog("conso_mois_hc = ".$conso_mois_hc);
$scenario->setLog("conso_mois_hp = ".$conso_mois_hp);
$scenario->setLog("moyenne_conso_jour_hc = ".$moyenne_conso_jour_hc);
$scenario->setLog("moyenne_conso_jour_hp = ".$moyenne_conso_jour_hp);
$scenario->setLog("jour_restant_mois = ".$jour_restant_mois);
$scenario->setLog("estimation_conso_mois_hc = ".$estimation_conso_mois_hc);
$scenario->setLog("estimation_conso_mois_hp = ".$estimation_conso_mois_hp);
$scenario->setLog("estimation_conso_mois = ".$estimation_conso_mois);
$scenario->setLog("estimation_prix_mois_hc = ".$estimation_prix_mois_hc);
$scenario->setLog("estimation_prix_mois_hp = ".$estimation_prix_mois_hp);
$scenario->setLog("estimation_prix_mois_global = ".$estimation_prix_mois_global);
# Historisation
$commande_conso_mois_hp->event($conso_mois_hp, $date_valeurs);
$commande_conso_mois_hc->event($conso_mois_hc, $date_valeurs);
$commande_moyenne_conso_jour_hp->event($moyenne_conso_jour_hp, $date_valeurs);
$commande_moyenne_conso_jour_hc->event($moyenne_conso_jour_hc, $date_valeurs);
$commande_estimation_conso_mois_hp->event($estimation_conso_mois_hp, $date_valeurs);
$commande_estimation_conso_mois_hc->event($estimation_conso_mois_hc, $date_valeurs);
$commande_estimation_conso_mois->event($estimation_conso_mois, $date_valeurs);
$commande_estimation_prix_mois_hp->event($estimation_prix_mois_hp, $date_valeurs);
$commande_estimation_prix_mois_hc->event($estimation_prix_mois_hc, $date_valeurs);
$commande_estimation_prix_mois->event($estimation_prix_mois_global, $date_valeurs);
# Mise à jour variable dernière màj en fois boucle terminée si pas d'erreur
$scenario->setData("EDF_Last_Var_Update", date('Y-m-d H:i:s',strtotime("now - $n days")));
} else {
$scenario->setLog("Les données de consommation du ".date('Y-m-d', strtotime("yesterday - $n days"))." n'ont pas pu être traitées ni avec les données horaires ni via les statistiques de consommation du mois");
}
}
} else { ## Si données horaires non présentes, rescheduler un lancement 30mn plus tard
$scenario->setLog("Donnees horaire non presente. Replanification de la tache. Derniere collecte horaire EDF presente: ".$collectDate_ConsoHoraire);
# Infos sur le schéduleur
$scenario_scheduler = scenario::byString("#[Aucun][Aucun][Scenario Scheduler recup donnnees EDF]#");
#Récupération des tags du scénario
$tags = $scenario_scheduler->getTags();
#Modification des tags
$tags['#cible#'] = "EDF";
$tags['#action#'] = "LAUNCH";
$tags['#duree#'] = 30 ;
#Envoi des tags et le lancement de la reprogrammation
$scenario_scheduler->setTags($tags);
$scenario_scheduler->launch();
}
}```
En effet si tu es au pas de 15’…(je n’avais pas vu passé cette info d’Enedis…je vais fouiller pour voir quand ma zone sera elligible !) tu dois en effet diviser par 4 au lieu de 2 ligne 79 et 99
Bonjour j’utilise depuis longtemps le scenario qui marche tres bien.
Mais je viens de m’apercevoir que la conso horaire correspond a une moyenne des puissances sur l’heure ou la demie heure et non la « vraie » conso (différence d’index entre debut de l’heure et la fin).
Est ce bien cela?
Car maintenant je fais du relevé en live avec un Zlinky_tic et je trouve presque la meme chose alors que je prends la difference entre le debut et la fin de l’heure (a la minute pres).
Ca me parait etonnant qu’une moyenne de puissance soit si juste que la vrai conso.
Merci pour votre retour
Bonjour
Désolé pour cette réponse tardive. je n’avais pas vu votre réponse.
Mon explication précédente etait un peu trop simplifié… désolé
Vous avez raison Enedis donne une valeur moyenne de la puissance consommée sur le pas de temps choisis (15’,30’ ou 1h).
Donc en fonction de votre pas de temps vous devez pour avoir des kWh (-kW pendant 1h-)
- d’abord faire la somme des données par heure
- et la diviser par le nombre de valeurs additionnés.
Donc pour un pas de 30’ il faut deux valeurs pour faire 60’(1h), donc il faut diviser la somme par 2… et pour 15’ par 4 et pour 60’ par 1
Le kWh prend en compte le temps de marche des appareils. Dis différemment le kilowatt-heure( kWh) met en relation la puissance à la durée de fonctionnement de l’appareil
Donc il est aussi logique que la somme de puissance instantané relevé avec linky sur 1h soit égale à la différence des index de début et fin de cette heure relevé par linky
Et il est tout aussi logique que la moyenne des puissances réelles ramenés à un pas de temps de 15’,30’,ou 60’ par Enedis soient le reflet quasi exacte de tes index.
La différence est surement du à ce que l’arrondi d’une somme n’est pas égal à la somme des arrondis
exemple :
additionnons 10,123 et 20,124
Arrondi de la somme : 10,123+ 20,124 = 30,247 l’arrondi est = à 30,50
Somme des arrondis : 10,12 + 20,12 = 30,44
Alors y a un truc qui m’échappe… Comment vous faites pour avoir les données des heures creuses avec ce scénario et element virtuel, alors que ENEDIS ne renvoit les données que de la veille ??
on n’a pas les infos sur les heures, donc je vois vraiment pas comment c’est possible
Bonsoir,
c’est bien les données de la veille qui sont traitées.
le pluggin Enedis nous permet de récupérer les consommations de la veille détaillé par 1/2h de 00h00 à 23h59.
Dans le scenario vous renseignez votre créneau d’heures creuses dans les lignes du début ici 23h00-07h00 :
(empty($scenario->getData(« EDF_HP_Start »))) ? $scenario->setData(« EDF_HP_Start », « 07:00 ») : null;
(empty($scenario->getData(« EDF_HC_Start »))) ? $scenario->setData(« EDF_HC_Start », « 23:00 ») : null;
et il en tient compte dans son calcul.
si je ne suis pas clair, n’hesitez pas
OK c’est très clair effectivement
Je savais pas qu’on pouvait récupérer toutes les infos à la 1/2heure pret de la veille par API
Bonjour tout le monde
Mon plugin Enedis fonctionne bien. Il me remonte correctement les data
NB : je n’ai historisé que la consommation jour (peut etre la raison de mon pb ?)
Par contre, le scenario semble ne pas aimer quelque chose, mais je ne sais pas quoi ^^
Quelqu’un pourrait il m’aider ?
Merci
################################################
## Scenario début heures creuses avant minuit ##
################################################
## Vérification présence des variables ou implémentation avec valeurs par défaut
(empty($scenario->getData("EDF_HP_Start"))) ? $scenario->setData("EDF_HP_Start", "06:30") : null;
(empty($scenario->getData("EDF_HC_Start"))) ? $scenario->setData("EDF_HC_Start", "22:30") : null;
(empty($scenario->getData("EDF_Tarif_KWh_HP"))) ? $scenario->setData("EDF_Tarif_KWh_HP", "0.24036") : null;
(empty($scenario->getData("EDF_Tarif_KWh_HC"))) ? $scenario->setData("EDF_Tarif_KWh_HC", "0.1768") : null;
(empty($scenario->getData("EDF_Tarif_Abo_Mois"))) ? $scenario->setData("EDF_Tarif_Abo_Mois", "17.0066") : null;
(empty($scenario->getData("EDF_Last_Var_Update"))) ? $scenario->setData("EDF_Last_Var_Update", date('Y-m-d H:i:s',strtotime("now - 1 days"))) : null;
## Vérification de la dernière exécution réussie
$commande_conso_hier_hp = cmd::byString("#[HOME][-V- Variables EDF][Conso Jour HP]#");
$collectDate_conso_hier_hp = $commande_conso_hier_hp->getCollectDate();
if (date('Y-m-d', strtotime($collectDate_conso_hier_hp)) == date('Y-m-d',strtotime("yesterday"))){
$scenario->setLog("Scenario déjà lancé, annulation. Date dernier enregistrement valeurs:".date('Y-m-d', strtotime($collectDate_conso_hier_hp)));
} else {
## récupération de la date de dernière maj et vérification du nombre de jours à updater
$derniere_maj_donnees = date('Y-m-d',strtotime($scenario->getData("EDF_Last_Var_Update")));
$nb_jour_a_updater = scenarioExpression::time_diff($derniere_maj_donnees, "now",d);
if ($nb_jour_a_updater == 1){
$scenario->setLog("Seulement 1 jour a updater");
} else {
$scenario->setLog("Attention: ".$nb_jour_a_updater." jours a updater");
}
### Verification presences donnees horaires
$commande_ConsoHoraire = cmd::byString("#[HOME][EDF][Consommation Horaire]#");
$collectDate_ConsoHoraire = $commande_ConsoHoraire->getCollectDate();
if (date('Y-m-d', strtotime($collectDate_ConsoHoraire)) == date('Y-m-d',strtotime("now"))) {
### Get and Set variables
$debut_heure_pleine = $scenario->getData("EDF_HP_Start");
$debut_heure_creuse = $scenario->getData("EDF_HC_Start");
$tarif_heure_pleine = $scenario->getData("EDF_Tarif_KWh_HP");
$tarif_heure_creuse = $scenario->getData("EDF_Tarif_KWh_HC");
$tarif_abonnement = $scenario->getData("EDF_Tarif_Abo_Mois");
## Commandes
$commande_conso_hier_hc = cmd::byString("#[HOME][-V- Variables EDF][Conso Jour HC]#");
$commande_tarif_hier_hp = cmd::byString("#[HOME][-V- Variables EDF][Tarif Jour HP]#");
$commande_tarif_hier_hc = cmd::byString("#[HOME][-V- Variables EDF][Tarif Jour HC]#");
$commande_tarif_hier = cmd::byString("#[HOME][-V- Variables EDF][Tarif Jour]#");
$commande_conso_mois_hp = cmd::byString("#[HOME][-V- Variables EDF][Conso Mois HP]#");
$commande_conso_mois_hc = cmd::byString("#[HOME][-V- Variables EDF][Conso Mois HC]#");
$commande_moyenne_conso_jour_hp = cmd::byString("#[HOME][-V- Variables EDF][Moyenne Conso Jour HP]#");
$commande_moyenne_conso_jour_hc = cmd::byString("#[HOME][-V- Variables EDF][Moyenne Conso Jour HC]#");
$commande_estimation_conso_mois_hp = cmd::byString("#[HOME][-V- Variables EDF][Estimation Conso Mois HP]#");
$commande_estimation_conso_mois_hc = cmd::byString("#[HOME][-V- Variables EDF][Estimation Conso Mois HC]#");
$commande_estimation_conso_mois = cmd::byString("#[HOME][-V- Variables EDF][Estimation Conso Mois]#");
$commande_estimation_prix_mois_hp = cmd::byString("#[HOME][-V- Variables EDF][Estimation Prix Mois HP]#");
$commande_estimation_prix_mois_hc = cmd::byString("#[HOME][-V- Variables EDF][Estimation Prix Mois HC]#");
$commande_estimation_prix_mois = cmd::byString("#[HOME][-V- Variables EDF][Estimation Prix Mois Global]#");
$id_commande_ConsoHoraire = $commande_ConsoHoraire->getId();
$id_commande_ConsoHoraireCreux = $commande_conso_hier_hc->getId();
$id_commande_ConsoHorairePlein = $commande_conso_hier_hp->getId();
### Lancement du calcul des données pour x jours
for($n=($nb_jour_a_updater-1); $n >= 0; $n--){
$date_valeurs = date('Y-m-d H:i:s', strtotime("yesterday - $n days 00:01"));
$date_JourEt1_minuit = date('Y-m-d H:i:s', strtotime("today - $n days 00:00"));
$scenario->setLog("Ajout du ".date('Y-m-d', strtotime("yesterday - $n days")));
$jour_restant_mois = scenarioExpression::time_diff("now - $n days", "first day of next month",d);
## NOTE: la valeur de la minute 0 ne doit pas être prise => ajout de 1mn
$debut_hp = date('Y-m-d H:i:s', strtotime("yesterday - $n days $debut_heure_pleine +1 minute"));
$debut_hc = date('Y-m-d H:i:s', strtotime("yesterday - $n days $debut_heure_creuse + 1 minute"));
$conso_hier_hp = history::getStatistique($id_commande_ConsoHoraire, $debut_hp, $debut_hc)["sum"] /2;
## Si donnée horaire à 0, envoyer un message dans le centre de message et utiliser les moyennes
if (empty($conso_hier_hp)) {
$title = 'Scénario Variables EDF';
$message = 'Données de consommation horaire vide pour le '.date('Y-m-d', strtotime("yesterday - $n days")).'. Estimation des valeurs via les statistiques de consommation du mois en cours.';
message::add($title, $message);
#Récupération de la consommation du jour
$id_commande_ConsoJour = cmd::byString("#[HOME][EDF][Consommation Jour]#")->getId();
$conso_hier = history::getStatistique($id_commande_ConsoJour, date('Y-m-d H:i:s', strtotime("yesterday - $n days 00:00:00")), date('Y-m-d H:i:s', strtotime("yesterday - $n days 23:59:59")))["last"];
$moyenne_conso_jour_hc = $commande_moyenne_conso_jour_hc->execCmd();
$moyenne_conso_jour_hp = $commande_moyenne_conso_jour_hp->execCmd();
$ratio_conso_hp = ($moyenne_conso_jour_hp / ($moyenne_conso_jour_hp + $moyenne_conso_jour_hc)) * 100;
$conso_hier_hp = ($conso_hier * $ratio_conso_hp) / 100;
$conso_hier_hc = ($conso_hier * (100 - $ratio_conso_hp)) / 100;
} else {
#Calcul de l'heure creuse si valeurs journalières OK
$conso_hier_hc = (history::getStatistique($id_commande_ConsoHoraire, $date_valeurs, $debut_hp)["sum"] + history::getStatistique($id_commande_ConsoHoraire, $debut_hc, $date_JourEt1_minuit)["sum"] ) /2;
}
# Si les données ne sont pas vides ou nulls, continuer les calculs
if (!empty($conso_hier_hc) && !empty($conso_hier_hp)) {
# Finalisation des calculs divers
$tarif_hier_hp = $conso_hier_hp * $tarif_heure_pleine;
$tarif_hier_hc = $conso_hier_hc * $tarif_heure_creuse;
$tarif_hier = $tarif_hier_hp + $tarif_hier_hc;
# Historisation intermédiaire
$commande_conso_hier_hp->event($conso_hier_hp, $date_valeurs);
$commande_conso_hier_hc->event($conso_hier_hc, $date_valeurs);
$commande_tarif_hier_hp->event($tarif_hier_hp, $date_valeurs);
$commande_tarif_hier_hc->event($tarif_hier_hc, $date_valeurs);
$commande_tarif_hier->event($tarif_hier, $date_valeurs);
# Calculs
$conso_mois_hc = scenarioExpression::statisticsBetween($id_commande_ConsoHoraireCreux, "sum", "first day of this month midnight", "now");
$conso_mois_hp = scenarioExpression::statisticsBetween($id_commande_ConsoHorairePlein, "sum", "first day of this month midnight", "now");
$moyenne_conso_jour_hc = scenarioExpression::statisticsBetween($id_commande_ConsoHoraireCreux, "avg", "first day of this month midnight", "now");
$moyenne_conso_jour_hp = scenarioExpression::statisticsBetween($id_commande_ConsoHorairePlein, "avg", "first day of this month midnight", "now");
$estimation_conso_mois_hc = $conso_mois_hc + ($moyenne_conso_jour_hc * $jour_restant_mois);
$estimation_conso_mois_hp = $conso_mois_hp + ($moyenne_conso_jour_hp * $jour_restant_mois);
$estimation_conso_mois = $estimation_conso_mois_hc + $estimation_conso_mois_hp;
$estimation_prix_mois_hc = $estimation_conso_mois_hc * $tarif_heure_creuse;
$estimation_prix_mois_hp = $estimation_conso_mois_hp * $tarif_heure_pleine;
$estimation_prix_mois_global = $estimation_prix_mois_hc + $estimation_prix_mois_hp + $tarif_abonnement;
## Log dans le scénario pour tracer si besoin
$scenario->setLog("conso_hier_hp = ".$conso_hier_hp);
$scenario->setLog("conso_hier_hc = ".$conso_hier_hc);
$scenario->setLog("tarif_hier_hp = ".$tarif_hier_hp);
$scenario->setLog("tarif_hier_hc = ".$tarif_hier_hc);
$scenario->setLog("tarif_hier = ".$tarif_hier);
$scenario->setLog("conso_mois_hc = ".$conso_mois_hc);
$scenario->setLog("conso_mois_hp = ".$conso_mois_hp);
$scenario->setLog("moyenne_conso_jour_hc = ".$moyenne_conso_jour_hc);
$scenario->setLog("moyenne_conso_jour_hp = ".$moyenne_conso_jour_hp);
$scenario->setLog("jour_restant_mois = ".$jour_restant_mois);
$scenario->setLog("estimation_conso_mois_hc = ".$estimation_conso_mois_hc);
$scenario->setLog("estimation_conso_mois_hp = ".$estimation_conso_mois_hp);
$scenario->setLog("estimation_conso_mois = ".$estimation_conso_mois);
$scenario->setLog("estimation_prix_mois_hc = ".$estimation_prix_mois_hc);
$scenario->setLog("estimation_prix_mois_hp = ".$estimation_prix_mois_hp);
$scenario->setLog("estimation_prix_mois_global = ".$estimation_prix_mois_global);
# Historisation
$commande_conso_mois_hp->event($conso_mois_hp, $date_valeurs);
$commande_conso_mois_hc->event($conso_mois_hc, $date_valeurs);
$commande_moyenne_conso_jour_hp->event($moyenne_conso_jour_hp, $date_valeurs);
$commande_moyenne_conso_jour_hc->event($moyenne_conso_jour_hc, $date_valeurs);
$commande_estimation_conso_mois_hp->event($estimation_conso_mois_hp, $date_valeurs);
$commande_estimation_conso_mois_hc->event($estimation_conso_mois_hc, $date_valeurs);
$commande_estimation_conso_mois->event($estimation_conso_mois, $date_valeurs);
$commande_estimation_prix_mois_hp->event($estimation_prix_mois_hp, $date_valeurs);
$commande_estimation_prix_mois_hc->event($estimation_prix_mois_hc, $date_valeurs);
$commande_estimation_prix_mois->event($estimation_prix_mois_global, $date_valeurs);
# Mise à jour variable dernière màj en fois boucle terminée si pas d'erreur
$scenario->setData("EDF_Last_Var_Update", date('Y-m-d H:i:s',strtotime("now - $n days")));
} else {
$scenario->setLog("Les données de consommation du ".date('Y-m-d', strtotime("yesterday - $n days"))." n'ont pas pu être traitées ni avec les données horaires ni via les statistiques de consommation du mois");
}
}
} else { ## Si données horaires non présentes, rescheduler un lancement 30mn plus tard
$scenario->setLog("Donnees horaire non presente. Replanification de la tache. Derniere collecte horaire EDF presente: ".$collectDate_ConsoHoraire);
# Infos sur le schéduleur
$scenario_scheduler = scenario::byString("#[Scénarios][Divers][EDF scheduler]#");
#Récupération des tags du scénario
$tags = $scenario_scheduler->getTags();
#Modification des tags
$tags['#cible#'] = "EDF";
$tags['#action#'] = "LAUNCH";
$tags['#duree#'] = 30 ;
#Envoi des tags et le lancement de la reprogrammation
$scenario_scheduler->setTags($tags);
$scenario_scheduler->launch();
}
}
------------------------------------
[2024-07-05 12:51:22][SCENARIO] -- Début : Scenario lance manuellement.
[2024-07-05 12:51:22][SCENARIO] - Exécution du sous-élément de type [action] : code
[2024-07-05 12:51:22][SCENARIO] Exécution d'un bloc code
[2024-07-05 12:51:22][SCENARIO] Commande introuvable : #[Appartement][Variables EDF][Conso Jour HP]# => #[Appartement][Variables EDF][Conso Jour HP]#
[2024-07-05 12:51:22][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-07-05 12:52:37][SCENARIO] -- Début : Scenario lance manuellement.
[2024-07-05 12:52:37][SCENARIO] - Exécution du sous-élément de type [action] : code
[2024-07-05 12:52:37][SCENARIO] Exécution d'un bloc code
[2024-07-05 12:52:37][SCENARIO] Seulement 1 jour a updater
[2024-07-05 12:52:37][SCENARIO] Ajout du 2024-07-04
[2024-07-05 12:52:37][SCENARIO] conso_hier_hp = NAN
[2024-07-05 12:52:37][SCENARIO] conso_hier_hc = NAN
[2024-07-05 12:52:37][SCENARIO] tarif_hier_hp = NAN
[2024-07-05 12:52:37][SCENARIO] tarif_hier_hc = NAN
[2024-07-05 12:52:37][SCENARIO] tarif_hier = NAN
[2024-07-05 12:52:37][SCENARIO] conso_mois_hc = 0.00
[2024-07-05 12:52:37][SCENARIO] conso_mois_hp = 0.00
[2024-07-05 12:52:37][SCENARIO] moyenne_conso_jour_hc = 0.000000
[2024-07-05 12:52:37][SCENARIO] moyenne_conso_jour_hp = 0.000000
[2024-07-05 12:52:37][SCENARIO] jour_restant_mois = 27
[2024-07-05 12:52:37][SCENARIO] estimation_conso_mois_hc = 0
[2024-07-05 12:52:37][SCENARIO] estimation_conso_mois_hp = 0
[2024-07-05 12:52:37][SCENARIO] estimation_conso_mois = 0
[2024-07-05 12:52:37][SCENARIO] estimation_prix_mois_hc = 0
[2024-07-05 12:52:37][SCENARIO] estimation_prix_mois_hp = 0
[2024-07-05 12:52:37][SCENARIO] estimation_prix_mois_global = 17.0066
[2024-07-05 12:52:37][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-07-05 12:54:15][SCENARIO] -- Début : Scenario lance manuellement.
[2024-07-05 12:54:15][SCENARIO] - Exécution du sous-élément de type [action] : code
[2024-07-05 12:54:15][SCENARIO] Exécution d'un bloc code
[2024-07-05 12:54:15][SCENARIO] Scenario déjà lancé, annulation. Date dernier enregistrement valeurs:2024-07-04
[2024-07-05 12:54:15][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-07-05 14:04:26][SCENARIO] -- Début : Scenario lance manuellement.
[2024-07-05 14:04:26][SCENARIO] - Exécution du sous-élément de type [action] : code
[2024-07-05 14:04:26][SCENARIO] Exécution d'un bloc code
[2024-07-05 14:04:26][SCENARIO] Scenario déjà lancé, annulation. Date dernier enregistrement valeurs:2024-07-04
[2024-07-05 14:04:26][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-07-06 10:45:02][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-07-06 10:45:02][SCENARIO] - Exécution du sous-élément de type [action] : code
[2024-07-06 10:45:02][SCENARIO] Exécution d'un bloc code
[2024-07-06 10:45:02][SCENARIO] Seulement 1 jour a updater
[2024-07-06 10:45:02][SCENARIO] Donnees horaire non presente. Replanification de la tache. Derniere collecte horaire EDF presente: 2024-07-05 00:00:00
[2024-07-06 10:45:02][SCENARIO] Commande introuvable : #[Scénarios][Divers][EDF scheduler]# => #[Scénarios][Divers][EDF scheduler]#
[2024-07-06 10:45:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-07-07 11:14:12][SCENARIO] -- Début : Scenario execute automatiquement sur programmation.
[2024-07-07 11:14:12][SCENARIO] - Exécution du sous-élément de type [action] : code
[2024-07-07 11:14:12][SCENARIO] Exécution d'un bloc code
[2024-07-07 11:14:12][SCENARIO] Attention: 2 jours a updater
[2024-07-07 11:14:12][SCENARIO] Donnees horaire non presente. Replanification de la tache. Derniere collecte horaire EDF presente: 2024-07-06 00:00:00
[2024-07-07 11:14:12][SCENARIO] Commande introuvable : #[Scénarios][Divers][EDF scheduler]# => #[Scénarios][Divers][EDF scheduler]#
[2024-07-07 11:14:12][SCENARIO] Fin correcte du scénario
------------------------------------
[2024-07-07 13:10:24][SCENARIO] -- Début : Scenario lance manuellement.
[2024-07-07 13:10:24][SCENARIO] - Exécution du sous-élément de type [action] : code
[2024-07-07 13:10:24][SCENARIO] Exécution d'un bloc code
[2024-07-07 13:10:25][SCENARIO] Attention: 2 jours a updater
[2024-07-07 13:10:25][SCENARIO] Donnees horaire non presente. Replanification de la tache. Derniere collecte horaire EDF presente: 2024-07-06 00:00:00
[2024-07-07 13:10:25][SCENARIO] Commande introuvable : #[Scénarios][Divers][EDF scheduler]# => #[Scénarios][Divers][EDF scheduler]#
[2024-07-07 13:10:25][SCENARIO] Fin correcte du scénario