Calculs sur Heure Pleine / Heure Creuse et Tarifications / Coûts

Ok, je vais comme tu le dis, et pour rajouter la date de collecte, comment faire ?
Merci
Antoine

Il y a ça dans le code:

## Commandes
$commande_conso_hier_hc = cmd::byString("#[Appartement][Variables EDF][Conso Jour HC]#");

# Historisation
$commande_conso_mois_hp->event($conso_mois_hp, $date_valeurs);

A adapter…

Après désolé, je n’ai pas vraiment le temps de donner des cours de PHP. Je t’invite donc à te renseigner sur les bases du langage de programmation PHP pour comprendre comment ça marche et avoir les bases. Après tu pourras faire tout ce que tu veux dans les scénarios Jeedom :slight_smile:

Alors déja, chapeau l’artiste… faut bien avouer que tu as fais un travail remarquable. J’ai suivi toute cette page comme on mange un délicieux gâteau et j’ai tout mis en place a la lettre en vérifiant chaque caractère/manipulation a la lettre.
Ouais je me connais j’ai tendance a ne pas voir un nez au milieu de la figure. Donc je pense que tout est ok tant mon cas est soimple avec 1 créneau HP et 1 HC. Pas de turlupinage grâce à toi.
J’ai juste une question sur ton exemple de logs, notemment celui du 2021-02-12 si tu me le permet?
L’absence de data horaire est elle normale ou signale t elle une erreur ou que ce soit?

J’ai dans mes logs de scénarios uniquement ce type de log je viens seulement de tout activer après mise en place.
Voilà j’éspère que tu auras le temps l’énérgie et la volonté de m’éclairer.
Merci encore l’artiste et bonne journée.

Ah si… alors je ne sais pas si ca vaut quelque chose mais j’ai vérifié auprès de plusieurs de mes amis/famille (8personnes différentes non représentatives de la population carcérale unipolaire a double choix de Papouasie) , mais en allant checker les info conso notamment horaires, il s’avère que les relevés de la veille ne s’affichent pas. Enfin si ! Uniquement celle de 23h30 a 00h, par contre -2 jours (dans les faits ceux du 24) sont correctement détaillés.

Ca s’rai ti pas ca qui fait toute la cacade a 0 pour les gens ?§ mdr

Hello

Pour l’erreur horaire data absente c’est normal pour l’instant
J’ai la même
le site Enedis déconne actuellement

Regarde je te met mon log pour comparé au tient

------------------------------------
[2021-03-22 10:45:01][SCENARIO] Start : Scenario execute automatiquement sur programmation.
[2021-03-22 10:45:01][SCENARIO] Exécution du sous-élément de type [action] : code
[2021-03-22 10:45:01][SCENARIO] Exécution d'un bloc code
[2021-03-22 10:45:01][SCENARIO] Seulement 1 jour a updater
[2021-03-22 10:45:01][SCENARIO] Ajout du 2021-03-21
[2021-03-22 10:45:02][SCENARIO] conso_hier_hp = 17.34
[2021-03-22 10:45:02][SCENARIO] conso_hier_hc = 14.59
[2021-03-22 10:45:02][SCENARIO] tarif_hier_hp = 2.855898
[2021-03-22 10:45:02][SCENARIO] tarif_hier_hc = 1.807701
[2021-03-22 10:45:02][SCENARIO] tarif_hier = 4.663599
[2021-03-22 10:45:02][SCENARIO] conso_mois_hc = 21.79
[2021-03-22 10:45:02][SCENARIO] conso_mois_hp = 31.39
[2021-03-22 10:45:02][SCENARIO] moyenne_conso_jour_hc = 10.895000
[2021-03-22 10:45:02][SCENARIO] moyenne_conso_jour_hp = 15.695000
[2021-03-22 10:45:02][SCENARIO] jour_restant_mois = 9
[2021-03-22 10:45:02][SCENARIO] estimation_conso_mois_hc = 119.845
[2021-03-22 10:45:02][SCENARIO] estimation_conso_mois_hp = 172.645
[2021-03-22 10:45:02][SCENARIO] estimation_conso_mois = 292.49
[2021-03-22 10:45:02][SCENARIO] estimation_prix_mois_hc = 14.8487955
[2021-03-22 10:45:02][SCENARIO] estimation_prix_mois_hp = 28.4346315
[2021-03-22 10:45:02][SCENARIO] estimation_prix_mois_global = 54.883427
[2021-03-22 10:45:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2021-03-23 10:45:01][SCENARIO] Start : Scenario execute automatiquement sur programmation.
[2021-03-23 10:45:01][SCENARIO] Exécution du sous-élément de type [action] : code
[2021-03-23 10:45:01][SCENARIO] Exécution d'un bloc code
[2021-03-23 10:45:01][SCENARIO] Seulement 1 jour a updater
[2021-03-23 10:45:01][SCENARIO] Donnees horaire non presente. Replanification de la tache. Derniere collecte horaire EDF presente: 2021-03-22 00:00:00
[2021-03-23 10:45:01][SCENARIO] Fin correcte du scénario
------------------------------------
[2021-03-24 10:45:02][SCENARIO] Start : Scenario execute automatiquement sur programmation.
[2021-03-24 10:45:02][SCENARIO] Exécution du sous-élément de type [action] : code
[2021-03-24 10:45:02][SCENARIO] Exécution d'un bloc code
[2021-03-24 10:45:02][SCENARIO] Attention: 2jours a updater
[2021-03-24 10:45:02][SCENARIO] Donnees horaire non presente. Replanification de la tache. Derniere collecte horaire EDF presente: 2021-03-23 00:00:00
[2021-03-24 10:45:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2021-03-25 10:45:02][SCENARIO] Start : Scenario execute automatiquement sur programmation.
[2021-03-25 10:45:02][SCENARIO] Exécution du sous-élément de type [action] : code
[2021-03-25 10:45:02][SCENARIO] Exécution d'un bloc code
[2021-03-25 10:45:02][SCENARIO] Attention: 3jours a updater
[2021-03-25 10:45:02][SCENARIO] Donnees horaire non presente. Replanification de la tache. Derniere collecte horaire EDF presente: 2021-03-24 00:00:00
[2021-03-25 10:45:02][SCENARIO] Fin correcte du scénario
------------------------------------
[2021-03-25 21:17:50][SCENARIO] Start : Scenario lance manuellement.
[2021-03-25 21:17:50][SCENARIO] Exécution du sous-élément de type [action] : code
[2021-03-25 21:17:50][SCENARIO] Exécution d'un bloc code
[2021-03-25 21:17:50][SCENARIO] Attention: 3jours a updater
[2021-03-25 21:17:50][SCENARIO] Donnees horaire non presente. Replanification de la tache. Derniere collecte horaire EDF presente: 2021-03-24 00:00:00
[2021-03-25 21:17:50][SCENARIO] Fin correcte du scénario
------------------------------------
[2021-03-25 21:22:38][SCENARIO] Start : Scenario lance manuellement.
[2021-03-25 21:22:38][SCENARIO] Exécution du sous-élément de type [action] : code
[2021-03-25 21:22:38][SCENARIO] Exécution d'un bloc code
[2021-03-25 21:22:38][SCENARIO] Attention: 3jours a updater
[2021-03-25 21:22:38][SCENARIO] Donnees horaire non presente. Replanification de la tache. Derniere collecte horaire EDF presente: 2021-03-24 00:00:00
[2021-03-25 21:22:38][SCENARIO] Fin correcte du scénario
------------------------------------
[2021-03-26 00:32:57][SCENARIO] Start : Scenario lance manuellement.
[2021-03-26 00:32:57][SCENARIO] Exécution du sous-élément de type [action] : code
[2021-03-26 00:32:57][SCENARIO] Exécution d'un bloc code
[2021-03-26 00:32:57][SCENARIO] Attention: 4jours a updater
[2021-03-26 00:32:57][SCENARIO] Donnees horaire non presente. Replanification de la tache. Derniere collecte horaire EDF presente: 
[2021-03-26 00:32:57][SCENARIO] Fin correcte du scénario
------------------------------------
[2021-03-26 10:45:01][SCENARIO] Start : Scenario execute automatiquement sur programmation.
[2021-03-26 10:45:01][SCENARIO] Exécution du sous-élément de type [action] : code
[2021-03-26 10:45:01][SCENARIO] Exécution d'un bloc code
[2021-03-26 10:45:01][SCENARIO] Attention: 4jours a updater
[2021-03-26 10:45:01][SCENARIO] Donnees horaire non presente. Replanification de la tache. Derniere collecte horaire EDF presente: 
[2021-03-26 10:45:01][SCENARIO] Fin correcte du scénario
------------------------------------
[2021-03-26 14:43:24][SCENARIO] Start : Scenario lance manuellement.
[2021-03-26 14:43:24][SCENARIO] Exécution du sous-élément de type [action] : code
[2021-03-26 14:43:24][SCENARIO] Exécution d'un bloc code
[2021-03-26 14:43:24][SCENARIO] Attention: 4jours a updater
[2021-03-26 14:43:24][SCENARIO] Donnees horaire non presente. Replanification de la tache. Derniere collecte horaire EDF presente: 
[2021-03-26 14:43:24][SCENARIO] Fin correcte du scénario

ok merci camarade… wait&see

Hello,

merci pour ton retour et les remerciements :slight_smile:

Alors j’ai retouché un peu le code, maintenant tu as ce message et pas un truc vide:

[2021-03-26 19:13:52][SCENARIO] Start : Lancement provoque par le scenario  : [Technique][Tools][Scenario Scheduler].
[2021-03-26 19:13:52][SCENARIO] Exécution du sous-élément de type [action] : code
[2021-03-26 19:13:52][SCENARIO] Exécution d'un bloc code
[2021-03-26 19:13:52][SCENARIO] Attention: 2 jours a updater
[2021-03-26 19:13:52][SCENARIO] Donnees horaire non presente. Replanification de la tache. Derniere collecte horaire EDF presente: 2021-03-24 00:00:00
[2021-03-26 19:13:52][SCENARIO] Fin correcte du scénario

Comment expliqué, j’avais mis en place un mécanisme de calcul automatique selon les statistiques si les données étaient perdues du fait de la non remontée par le plugin enedis des données horaires. C’est bien fonctionnel de mon côté. Si vous mettez en place le code que je mis en haut, vous devriez pouvoir avoir les infos approximatives selon les stats du mois en cours.

Il faut suivre ce message : [Scénario pour Plugin Enedis] [Tuto] Calculs sur Heure Pleine / Heure Creuse et Tarifications / Coûts - #91 par mick74

Je pense que je vais également éditer le message initiale du sujet pour ajouter la fonctionnalité.

En tout cas actuellement il y a bien 2 jours de trous de données.

Bonjour à tous,

pour info j’ai mis à jour tous les scénarios. Ils ajoutent donc maintenant la fonctionnalité expliquée précédemment qui permet d’évaluer le « ratio HP/HC » dans le cas où les données horaires ne sont pas présentes et que le plugin enedis n’aura pas pu les récupérer (trous).

Ainsi un cas de ce type pourra être rattrapé:

Bonne soirée.

Bonjour,
Merci pour ce post. J’avais prévu de rajouter tous ces calculs… mais j’avoue avoir espéré que le plug-in Enedis le rajoute nativement !
Avant de commencer à appliquer tout ce que tu as présenté ici, j’ai deux questions:

  1. est-on sûr que le plug-in Enedis ne va pas le proposer prochainement ?
  2. as-tu prévu d’en faire un plug-in prochainement ?
    Si les deux réponses sont non, je m’y mets :wink:

Merci énormément pour ton travail.

Bonjour,
On est sûr de rien ^^ mais je doute que ce soit ajouté au plugin enedis vu que j’ai déjà vu des demandes sur le forum et qu’ils ont répondu que c’était un plugin très simple qui fait que récupérer les données et qu’on pouvait faire ses calculs dans des virtuels.

Après faire un plugin de mon côté, je ne sais pas si ce serait pertinent juste pour quelques petits calculs. Ou sinon il faudrait y mettre d’autres idées.
Mais pourquoi pas si vous trouvez ça pertinent. Je veux juste éviter de perdre du temps si Jeedom se dit cool on va rajouter la fonctionnalité à notre plugin et que j’ai dev un plugin pour rien… C’est surtout ça qui me freine et aussi le fait qu’il peut y avoir 20 cas différents d’heures creuses et que ça risque de vite être une usine à gaz pour prendre en compte tous les cas ^^

Hello

Un plugin , euh pense aux idiots comme moi hein, cela me serais utile !! mdr

:rofl: :rofl: :rofl: :rofl:

Après pourquoi pas , mais je pense que cela te prendrais du temps et donc de ce fait prévoir une donation quelques soit par paypal par exemple.

Oui certain diront non malheureusement , mais avec le temps passé dessus pour crée le plugin je suis suis du partisan : "TOUT TRAVAIL MERITE SALAIRE"

Je vote pour le plugin aussi. De la même façon un petit prix ne me gène pas : j’en ai pour des centaines d’euros de matériel il n’est pas abusé d’investir aussi dans le soft. J’en ai déjà acheté plein.

2 « J'aime »

Encore un grand merci, tu es un orfèvre.
Bon, moi j’ai toujours 0 mais je suppose que c’est juste parceque je n’ai jamais eu de data, pas de data pas d’histo pas d’histo pas d’eva pas d’éval pas de pierre pas de pierre pas palais et pas de palais pas de palais mdr.
Wait and see.
En parrallèle, effectivement l’idée du plugin est top mais j’avoue que mettre les mains dans le camboui c’est top ca nous force a nous mobiliser et j’aime beaucoup. D’autant que tu as vraiment bien le sens du tuto et ca c’est pas donné. Encore bravo et merci l’artiste.

Puisque l’on peut voter :smiley: (je plaisante), je vote pour le pluggin !
Et merci à tous les développeurs !

1 « J'aime »

Hello

Je viens de pensé a deux trois choses

tu as bien validé ton compte Enedis avec les serveurs cloud de jeedom ?
Ton compte Enedis tu l’a crée y’ combien de temps ??

PS: Les données horaires sont de nouveau fonctionnelle

Créé en octobre 2020. Validation Ok. Effectivement j’ai un retour qui historise que depuis le 26 donc non représentatif pour le moment mais a suivre.
.
En tout cas un ENOOOORME Merci.

Hello la team Enedis :stuck_out_tongue: , merci pour vos soutiens :slight_smile:
Vu vos avis je vais regarder pour créer un plugin, ce sera l’occasion de m’y mettre et me permettra d’analyser encore plus le fonctionnement de Jeedom ^^
Je vais essayer de voir pour créer des vues et autres choses du style. Je suppose qu’il faudra créer en mode objet pour pouvoir gérer plusieurs compteurs et remontés.
Je vais réfléchir à tout ça.
Si vous avez des idées de choses, n’hésitez pas.
Après de mon côté je ne vais pas me mettre la pression, je ne pourrai faire ça que sur mon peu de temps libre, donc pour le moment, vous pouvez utiliser le scénario, je ferai attention à ce qu’on puisse réimporter les donnés issues du scénario sur les objets créés par le plugin.

Question bête, vous savez jusqu’à combien de périodes d’heures creuses on peut avoir ? Pour le moment j’ai cru comprendre qu’on peut déjà en avoir 3…

2 « J'aime »

Cool de lire cela

Si tu as besoin de beta testeur je suis présent :wink:

Et oui ne te met pas le pression !!

Pour demain le plugin est prêt et fonctionnelle ?? :rofl: :rofl:

Pour les heures creuses le souci est quand faite c’est la ville qui décide, oui j’ai appris cela en souhaitant changer mes heures creuse ( info de EDF )

:+1: super !

1 « J'aime »

@mick74 Gros +1 pour un plugin :+1:. Je pense qu’il serait vraiment très pratique.

Je m’associe une nouvelle fois aux remerciements de la communauté pour ton travail soigné :slight_smile: Après plusieurs semaines de recul le code fonctionne très bien. Tant qu’Enedis arrive à fournir les données… C’est un réel plaisir de consulter ses graph :smile:
D’ailleurs dans mon cas je n’ai pas ajouté la fonction « bouche trou » que tu proposes, je préfère un trou plutôt qu’une approximation, chacun ses préférences. Cela pourrait peut-être une option du futur plugin !?

Tous mes encouragements dans la poursuite du projet :wink:

Bonjour

mon compteur linky est devenu communiquant mais le scénario ne fonctionne pas
Je l’ai recontrôlé mais je ne trouve pas ce qui cloche

log du scénario

[2021-06-22 07:27:58][SCENARIO] Start : Scenario lance manuellement.
[2021-06-22 07:27:58][SCENARIO] Exécution du sous-élément de type [action] : code
[2021-06-22 07:27:58][SCENARIO] Exécution d'un bloc code
[2021-06-22 07:27:58][SCENARIO] Attention: 43 jours a updater
[2021-06-22 07:27:58][SCENARIO] Donnees horaire non presente. Replanification de la tache. Derniere collecte horaire EDF presente:
[2021-06-22 07:27:58][SCENARIO] Fin correcte du scénario
------------------------------------
[2021-06-22 07:28:19][SCENARIO] Start : Scenario lance manuellement.
[2021-06-22 07:28:19][SCENARIO] Exécution du sous-élément de type [action] : code
[2021-06-22 07:28:19][SCENARIO] Exécution d'un bloc code
[2021-06-22 07:28:19][SCENARIO] Attention: 43 jours a updater
[2021-06-22 07:28:19][SCENARIO] Donnees horaire non presente. Replanification de la tache. Derniere collecte horaire EDF presente:
[2021-06-22 07:28:19][SCENARIO] Fin correcte du scénario
------------------------------------
[2021-06-22 10:00:03][SCENARIO] Start : Scenario execute automatiquement sur programmation.
[2021-06-22 10:00:03][SCENARIO] Exécution du sous-élément de type [action] : code
[2021-06-22 10:00:03][SCENARIO] Exécution d'un bloc code
[2021-06-22 10:00:03][SCENARIO] Attention: 43 jours a updater
[2021-06-22 10:00:03][SCENARIO] Donnees horaire non presente. Replanification de la tache. Derniere collecte horaire EDF presente:
[2021-06-22 10:00:04][SCENARIO] Fin correcte du scénario
------------------------------------
[2021-06-23 10:00:04][SCENARIO] Start : Scenario execute automatiquement sur programmation.
[2021-06-23 10:00:04][SCENARIO] Exécution du sous-élément de type [action] : code
[2021-06-23 10:00:04][SCENARIO] Exécution d'un bloc code
[2021-06-23 10:00:05][SCENARIO] Attention: 44 jours a updater
[2021-06-23 10:00:05][SCENARIO] Donnees horaire non presente. Replanification de la tache. Derniere collecte horaire EDF presente:
[2021-06-23 10:00:05][SCENARIO] Fin correcte du scénario
------------------------------------
[2021-06-24 10:00:04][SCENARIO] Start : Scenario execute automatiquement sur programmation.
[2021-06-24 10:00:04][SCENARIO] Exécution du sous-élément de type [action] : code
[2021-06-24 10:00:04][SCENARIO] Exécution d'un bloc code
[2021-06-24 10:00:04][SCENARIO] Attention: 45 jours a updater
[2021-06-24 10:00:04][SCENARIO] Donnees horaire non presente. Replanification de la tache. Derniere collecte horaire EDF presente:
[2021-06-24 10:00:04][SCENARIO] Fin correcte du scénario
------------------------------------
[2021-06-24 10:07:41][SCENARIO] Start : Scenario lance manuellement.
[2021-06-24 10:07:41][SCENARIO] Exécution du sous-élément de type [action] : code
[2021-06-24 10:07:41][SCENARIO] Exécution d'un bloc code
[2021-06-24 10:07:41][SCENARIO] Attention: 45 jours a updater
[2021-06-24 10:07:41][SCENARIO] Donnees horaire non presente. Replanification de la tache. Derniere collecte horaire EDF presente:
[2021-06-24 10:07:41][SCENARIO] Fin correcte du scénario
################################################
## 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:30") : null;
(empty($scenario->getData("EDF_HC_Start"))) ? $scenario->setData("EDF_HC_Start", "23:30") : null;
(empty($scenario->getData("EDF_Tarif_KWh_HP"))) ? $scenario->setData("EDF_Tarif_KWh_HP", "0,2339") : null;
(empty($scenario->getData("EDF_Tarif_KWh_HC"))) ? $scenario->setData("EDF_Tarif_KWh_HC", "0,1836") : null;
(empty($scenario->getData("EDF_Tarif_Abo_Mois"))) ? $scenario->setData("EDF_Tarif_Abo_Mois", "14.33") : 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("#[compteur electrique][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("#[compteur electrique][enedis][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("#[compteur electrique][Variables EDF][Conso Jour HC]#");
		$commande_tarif_hier_hp = cmd::byString("#[compteur electrique][Variables EDF][Tarif Jour HP]#");
		$commande_tarif_hier_hc = cmd::byString("#[compteur electrique][Variables EDF][Tarif Jour HC]#");
		$commande_tarif_hier = cmd::byString("#[compteur electrique][Variables EDF][Tarif Jour ]#");
		$commande_conso_mois_hp = cmd::byString("#[compteur electrique][Variables EDF][Conso Mois HP]#");
		$commande_conso_mois_hc = cmd::byString("#[compteur electrique][Variables EDF][Conso Mois HC]#");
		$commande_moyenne_conso_jour_hp = cmd::byString("#[compteur electrique][Variables EDF][Moyenne Conso Jour HP]#");
		$commande_moyenne_conso_jour_hc = cmd::byString("#[compteur electrique][Variables EDF][Moyenne Conso Jour HC]#");
		$commande_estimation_conso_mois_hp = cmd::byString("#[compteur electrique][Variables EDF][Estimation Conso Mois HP]#");
		$commande_estimation_conso_mois_hc = cmd::byString("#[compteur electrique][Variables EDF][Estimation Conso Mois HC]#");
		$commande_estimation_conso_mois = cmd::byString("#[compteur electrique][Variables EDF][Estimation Conso Mois]#");
		$commande_estimation_prix_mois_hp = cmd::byString("#[compteur electrique][Variables EDF][Estimation Prix Mois HP]#");
		$commande_estimation_prix_mois_hc = cmd::byString("#[compteur electrique][Variables EDF][Estimation Prix Mois HC]#");
		$commande_estimation_prix_mois = cmd::byString("#[compteur electrique][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("#[compteur electrique][enedis][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("#[compteur electrique][electricite][scenario 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();
	}

}

compteur linky


virtuel


un coup de main serait le bien venu

merci de votre aide