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

Hello
Bon voila une grosse récap de ce que j’ai fait :





Mon code :

Citation## Vérification présence des variables ou setting par défaut
(empty($scenario->getData(« EDF_Nb_Plages »))) ? $scenario->setData(« EDF_Nb_Plages », « 1 ») : null;
(empty($scenario->getData(« EDF_HP_Start »))) ? $scenario->setData(« EDF_HP_Start », « 08:08 ») : null;
(empty($scenario->getData(« EDF_HC_Start »))) ? $scenario->setData(« EDF_HC_Start », « 00:08 ») : null;
(empty($scenario->getData(« EDF_Tarif_KWh_HP »))) ? $scenario->setData(« EDF_Tarif_KWh_HP », « 0.1727 ») : null;
(empty($scenario->getData(« EDF_Tarif_KWh_HC »))) ? $scenario->setData(« EDF_Tarif_KWh_HC », « 0.1296 ») : null;
(empty($scenario->getData(« EDF_Tarif_Abo_Mois »))) ? $scenario->setData(« EDF_Tarif_Abo_Mois », « 11.60 ») : 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 HC]# »);
$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")));
	
	if($derniere_maj_donnees == 0) {}
	$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][Compteur Linky][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
	$nb_plages_horaires = $scenario->getData("EDF_Nb_Plages");
	$debut_heure_pleine = $scenario->getData("EDF_HP_Start");
	$debut_heure_creuse = $scenario->getData("EDF_HC_Start");
	$debut_heure_pleine2 = $scenario->getData("EDF_HP2_Start");
	$debut_heure_creuse2 = $scenario->getData("EDF_HC2_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][Tarif Jour HP]#");
	$commande_tarif_hier_hp = cmd::byString("#[MAISON][Variables EDF][Tarif Jour HC]#");
	$commande_tarif_hier_hc = cmd::byString("#[MAISON][Variables EDF][Tarif Jour]#");
	$commande_tarif_hier = cmd::byString("#[MAISON][Variables EDF][Conso Mois HP]#");
	$commande_conso_mois_hp = cmd::byString("#[MAISON][Variables EDF][Conso Mois HC]#");
	$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"));
		
		if ($nb_plages_horaires == 1) {
			$conso_hier_hp = history::getStatistique($id_commande_ConsoHoraire, $debut_hp, $debut_hc)["sum"] /2;
		}else{
			$debut_hp2 = date('Y-m-d H:i:s', strtotime("yesterday - $n days $debut_heure_pleine2 +1 minute"));
			$debut_hc2 = date('Y-m-d H:i:s', strtotime("yesterday - $n days $debut_heure_creuse2 +1 minute"));
			## Heures pleines =  Minuit j-1 => $debut_hc + $debut_hp => $debut_hc2 + $debut_hp2 => minuit
			$conso_hier_hp = ((history::getStatistique($id_commande_ConsoHoraire, $date_valeurs, $debut_hc)["sum"]) + (history::getStatistique($id_commande_ConsoHoraire, $debut_hp, $debut_hc2)["sum"]) + (history::getStatistique($id_commande_ConsoHoraire, $debut_hp2, $date_JourEt1_minuit)["sum"])) /2;
		}
		
		## Si donnée horaire à 0, envoyer un message dans le centre de message, sinon continuer
		if ($conso_hier_hp == 0) {

			$title = 'Erreur Récupération données EDF';
			$message = 'Données de consommation horaire null pour le '.date('Y-m-d', strtotime("yesterday - $n days"));
			message::add($title, $message);
			
		} else {
			if ($nb_plages_horaires == 1) {
				$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;
			} else {
				## Heures creuses = $debut_hc => $debut_hp + $debut_hc2 => $debut_hp2
				$conso_hier_hc = (history::getStatistique($id_commande_ConsoHoraire, $debut_hc, $debut_hp)["sum"] + history::getStatistique($id_commande_ConsoHoraire, $debut_hc2, $debut_hp2)["sum"] ) /2;
			}
			$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", "now");
			$conso_mois_hp = scenarioExpression::statisticsBetween($id_commande_ConsoHorairePlein, "sum", "first day of this month", "now");

			$moyenne_conso_jour_hc = scenarioExpression::statisticsBetween($id_commande_ConsoHoraireCreux, "avg", "first day of this month", "now");
			$moyenne_conso_jour_hp = scenarioExpression::statisticsBetween($id_commande_ConsoHorairePlein, "avg", "first day of this month", "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 {     ## 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("#[MAISON][TECHNIQUE][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();
}





Mais j’ai du loupé quelque chose car comme on peux le voir sur mon virtuel ( en vert ) tout reste à 0

Merci

Salut, c’est top, tu as bien avancé !

Je pense que ça commence à être pas mal.
Ici tu es à 0 partout car je suppose que personne n’a eu la mise à jour des données horaires (cf précédents messages) et donc les calculs ne se sont pas faits.

Je vois que tu as adapté les variables pour supprimer les horaires secondaires, c’est parfait. Par contre attention il y a moyen que tu ais des erreurs à l’exécution quand les conditions seront bonnes car à un moment le script va chercher à seter des données de variables qui n’existent pas. Ex: $debut_heure_pleine2 = $scenario->getData("EDF_HP2_Start");

Sinon est-ce normal que tu ais une plage d’heures creuses de 00:08 à 08:08 ? Je sais pas comment le script va réagir vu que la période n’est pas à cheval sur 2 jours. Pour l’heure pleine ça devrait le faire, mais l’heure creuse ça va prendre de 00:01(« j-1 ») => 08:08 (donc ~ ok) mais il va aussi faire un calcul de 00:08 => 00:00 et donc prendre toute la journée… Si vraiment c’est ton créneau d’heures creuses, il faudra adapter le calcul de l’heure creuse.

Hello

Pour en apprendre un plus j’ai lu ton script (code ) effectivement j’ai viré deux ligne des EDF_HP2_Start

Au pire je vais les remettre

Pourquoi j’ai des horaires à la con en 00h08 et 08h08 tout simplement car j’entent mon relais jour / nuit ce déclenché à ses heures … Enedis qui envoi pas à des heures comme à 00H00 ou 08H00

Je vais mettre des heures ronde.

pour :mise à jour des données horaires
Je vais regarder dans mon debug Enedis pour voir

Perso j’ai les infos dans l’application EDF sur la page d’accueil

Re, moi j’ai pas de telle info ( Cdiscount Energie ) pas aussi sophistiqué leurs site

Sinon j’ai fait les modif
j’ai arrondi à 00h00 et 08h00 pour le calcul des heures HP/HC
et remis les les deux lignes que j’avais supp.

Ensuite , a mon avis le site Enedis dois encore etre down enfin presque car j’ai ceci en debug.

[2021-02-27 20:01:31][DEBUG] : [MAISON][Compteur Linky] Interrogation des serveurs Enedis
[2021-02-27 20:01:31][DEBUG] : [MAISON][Compteur Linky][Consommation Jour] Données déjà enregistrées pour le 26/02/2021
[2021-02-27 20:01:31][DEBUG] : [MAISON][Compteur Linky][Consommation Puissance max] Données déjà enregistrées pour le 26/02/2021
[2021-02-27 20:01:32][DEBUG] : [MAISON][Compteur Linky][Consommation horaire] Erreur sur la récupération des données : no_data_found no measure found for this usage point

Oui le site est toujours HS.

Sinon si vraiment tu as juste un créneau de 00h à 08h, tu devrais changer cette partie.

$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;

En

$conso_hier_hc = (history::getStatistique($id_commande_ConsoHoraire, $date_valeurs, $debut_hp)["sum"] ) /2;

Et là ça devrait être pas mal.

Merci bcp Mick74

Bon j’ai modifié la ligne 104 du script par celle que tu me donnes, je te tiens au courant de l’évolution …
:crossed_fingers: :+1:

Hello all, pour info ce matin il y a eu la mise à jour des données horaires d’enedis, si vous voulez voir ce que ça a donné :slight_smile:

D’ailleurs @Mikael, si tu supprimes le compteur, le recrée pour avoir toutes les données sur 7 jours, modifie la date de dernier lancement validé du scénario (la variable - 7 jours) et relance le scénario, ça devrait tout te calculer nickel :slight_smile:
Là tes données que tu avais, devaient déjà être historisées, donc pas bonnes pour les calculs (groupées en 1h et pas 30mn), en faisant ça tu auras 7 jours de données en format 30mn.

Hello

Le script ( code ) à l’air d’avoir fonctionné car toutes mes valeurs Enedis sont à jour

Pourtant mon virtuelle reste à 0

Et les modifs. que tu m’as suggéré hier on étais faite




Il y a un problème dans les messages, « Dernière collecte horaire EDF présente : », ne montre pas la date après les : . Ça veut dire que la variable des données horaires de l’objet Linky n’est pas bonne dans ton code.

C’est ici qu’il y a quelque chose qui va pas :
$commande_ConsoHoraire = cmd::byString("#[MAISON][Compteur Linky][Consommation horaire]#");

@mick74 En train de tester ton scénario

[2021-02-28 13:30:23][SCENARIO] Start : Scenario lance manuellement.
[2021-02-28 13:30:23][SCENARIO] Exécution du sous-élément de type [action] : code
[2021-02-28 13:30:23][SCENARIO] Exécution d'un bloc code
[2021-02-28 13:30:23][SCENARIO] Attention: 7 jours a updater
[2021-02-28 13:30:23][SCENARIO] Ajout du 2021-02-21
[2021-02-28 13:30:23][SCENARIO] Ajout du 2021-02-22
[2021-02-28 13:30:23][SCENARIO] Ajout du 2021-02-23
[2021-02-28 13:30:23][SCENARIO] Ajout du 2021-02-24
[2021-02-28 13:30:23][SCENARIO] Ajout du 2021-02-25
[2021-02-28 13:30:23][SCENARIO] Ajout du 2021-02-26
[2021-02-28 13:30:23][SCENARIO] Ajout du 2021-02-27
[2021-02-28 13:30:23][SCENARIO] Fin correcte du scénario

Mais le virtuel n’est pas mis à jour.

Sur l’historique Linky, on voit les trous dans le relevé horaire et aussi je pense une anomalie sur le dernier jour qui doit regroupé plusieurs jours. :

mais alerte donnée nul .

S’il affiche ça dans le centre de message, c’est qu’il est dans la condition où il a fait le calcul des heures pleines mais que le résultat est null et donc ne fait pas la suite. Il y a donc un souci probable dans tes variables, ou que tu es dans un cas spécifique. Il faut surement adapter le code.

Quand c’est bon cela doit ressembler à ça dans les logs du scénario :

Hello

on dirais la même erreur que moi [consommation horaire] NULL

La mienne [DONNEE HORAIRE NON PRESENTE]…

Non c’est pas la même chose.

Ok

je dépouille le script, le virtuel, les variables je vois rien qui pourrais me provoqué cette erreur …
Un truc de fou , lol

A moins que j’ai pas les yeux en face des trous



Moi j’ai trouvé mon soucis.

J’ai les heures creuses de 00:00 à 8:00
si pour EDF_HC_Start j’ai 00:00
alors

------------------------------------
[2021-02-28 14:50:51][SCENARIO] Start : Scenario lance manuellement.
[2021-02-28 14:50:51][SCENARIO] Exécution du sous-élément de type [action] : code
[2021-02-28 14:50:51][SCENARIO] Exécution d'un bloc code
[2021-02-28 14:50:51][SCENARIO] Attention: 7 jours a updater
[2021-02-28 14:50:51][SCENARIO] Ajout du 2021-02-21
[2021-02-28 14:50:51][SCENARIO] Ajout du 2021-02-22
[2021-02-28 14:50:51][SCENARIO] Ajout du 2021-02-23
[2021-02-28 14:50:51][SCENARIO] Ajout du 2021-02-24
[2021-02-28 14:50:51][SCENARIO] Ajout du 2021-02-25
[2021-02-28 14:50:51][SCENARIO] Ajout du 2021-02-26
[2021-02-28 14:50:51][SCENARIO] Ajout du 2021-02-27
[2021-02-28 14:50:51][SCENARIO] Fin correcte du scénario

si je teste EDF_HC_Start = 23:00

------------------------------------
[2021-02-28 14:51:32][SCENARIO] Start : Scenario lance manuellement.
[2021-02-28 14:51:32][SCENARIO] Exécution du sous-élément de type [action] : code
[2021-02-28 14:51:32][SCENARIO] Exécution d'un bloc code
[2021-02-28 14:51:32][SCENARIO] Attention: 7 jours a updater
[2021-02-28 14:51:32][SCENARIO] Ajout du 2021-02-21
[2021-02-28 14:51:32][SCENARIO] conso_hier_hp = 7.53
[2021-02-28 14:51:32][SCENARIO] conso_hier_hc = 1.87
[2021-02-28 14:51:32][SCENARIO] tarif_hier_hp = 1.126488
[2021-02-28 14:51:32][SCENARIO] tarif_hier_hc = 0.172975
[2021-02-28 14:51:32][SCENARIO] tarif_hier = 1.299463
[2021-02-28 14:51:32][SCENARIO] conso_mois_hc = 1.87
[2021-02-28 14:51:32][SCENARIO] conso_mois_hp = 7.53
[2021-02-28 14:51:32][SCENARIO] moyenne_conso_jour_hc = 1.870000
[2021-02-28 14:51:32][SCENARIO] moyenne_conso_jour_hp = 7.530000
[2021-02-28 14:51:32][SCENARIO] jour_restant_mois = 7
[2021-02-28 14:51:32][SCENARIO] estimation_conso_mois_hc = 14.96
[2021-02-28 14:51:32][SCENARIO] estimation_conso_mois_hp = 60.24
[2021-02-28 14:51:32][SCENARIO] estimation_conso_mois = 75.2
[2021-02-28 14:51:32][SCENARIO] estimation_prix_mois_hc = 1.3838
[2021-02-28 14:51:32][SCENARIO] estimation_prix_mois_hp = 9.011904
[2021-02-28 14:51:32][SCENARIO] estimation_prix_mois_global = 23.895704
[2021-02-28 14:51:32][SCENARIO] Ajout du 2021-02-22
[2021-02-28 14:51:32][SCENARIO] conso_hier_hp = 8.105
[2021-02-28 14:51:32][SCENARIO] conso_hier_hc = 3.35
[2021-02-28 14:51:32][SCENARIO] tarif_hier_hp = 1.212508
[2021-02-28 14:51:32][SCENARIO] tarif_hier_hc = 0.309875
[2021-02-28 14:51:32][SCENARIO] tarif_hier = 1.522383
[2021-02-28 14:51:32][SCENARIO] conso_mois_hc = 5.22
[2021-02-28 14:51:32][SCENARIO] conso_mois_hp = 15.64
[2021-02-28 14:51:32][SCENARIO] moyenne_conso_jour_hc = 2.610000
[2021-02-28 14:51:32][SCENARIO] moyenne_conso_jour_hp = 7.820000
[2021-02-28 14:51:32][SCENARIO] jour_restant_mois = 6
[2021-02-28 14:51:32][SCENARIO] estimation_conso_mois_hc = 20.88
[2021-02-28 14:51:32][SCENARIO] estimation_conso_mois_hp = 62.56
[2021-02-28 14:51:32][SCENARIO] estimation_conso_mois = 83.44
[2021-02-28 14:51:32][SCENARIO] estimation_prix_mois_hc = 1.9314
[2021-02-28 14:51:32][SCENARIO] estimation_prix_mois_hp = 9.358976
[2021-02-28 14:51:32][SCENARIO] estimation_prix_mois_global = 24.790376
[2021-02-28 14:51:32][SCENARIO] Ajout du 2021-02-23
[2021-02-28 14:51:32][SCENARIO] conso_hier_hp = 5.81
[2021-02-28 14:51:32][SCENARIO] conso_hier_hc = 2
[2021-02-28 14:51:32][SCENARIO] tarif_hier_hp = 0.869176
[2021-02-28 14:51:32][SCENARIO] tarif_hier_hc = 0.185
[2021-02-28 14:51:32][SCENARIO] tarif_hier = 1.054176
[2021-02-28 14:51:32][SCENARIO] conso_mois_hc = 7.22
[2021-02-28 14:51:32][SCENARIO] conso_mois_hp = 21.45
[2021-02-28 14:51:32][SCENARIO] moyenne_conso_jour_hc = 2.406667
[2021-02-28 14:51:32][SCENARIO] moyenne_conso_jour_hp = 7.150000
[2021-02-28 14:51:32][SCENARIO] jour_restant_mois = 5
[2021-02-28 14:51:32][SCENARIO] estimation_conso_mois_hc = 19.253335
[2021-02-28 14:51:32][SCENARIO] estimation_conso_mois_hp = 57.2
[2021-02-28 14:51:32][SCENARIO] estimation_conso_mois = 76.453335
[2021-02-28 14:51:32][SCENARIO] estimation_prix_mois_hc = 1.7809334875
[2021-02-28 14:51:32][SCENARIO] estimation_prix_mois_hp = 8.55712
[2021-02-28 14:51:32][SCENARIO] estimation_prix_mois_global = 23.8380534875
[2021-02-28 14:51:32][SCENARIO] Ajout du 2021-02-24
[2021-02-28 14:51:32][SCENARIO] conso_hier_hp = 18.445
[2021-02-28 14:51:32][SCENARIO] conso_hier_hc = 4.025
[2021-02-28 14:51:32][SCENARIO] tarif_hier_hp = 2.759372
[2021-02-28 14:51:32][SCENARIO] tarif_hier_hc = 0.3723125
[2021-02-28 14:51:32][SCENARIO] tarif_hier = 3.1316845
[2021-02-28 14:51:32][SCENARIO] conso_mois_hc = 11.25
[2021-02-28 14:51:32][SCENARIO] conso_mois_hp = 39.90
[2021-02-28 14:51:32][SCENARIO] moyenne_conso_jour_hc = 2.812500
[2021-02-28 14:51:32][SCENARIO] moyenne_conso_jour_hp = 9.975000
[2021-02-28 14:51:32][SCENARIO] jour_restant_mois = 4
[2021-02-28 14:51:32][SCENARIO] estimation_conso_mois_hc = 22.5
[2021-02-28 14:51:32][SCENARIO] estimation_conso_mois_hp = 79.8
[2021-02-28 14:51:32][SCENARIO] estimation_conso_mois = 102.3
[2021-02-28 14:51:32][SCENARIO] estimation_prix_mois_hc = 2.08125
[2021-02-28 14:51:32][SCENARIO] estimation_prix_mois_hp = 11.93808
[2021-02-28 14:51:32][SCENARIO] estimation_prix_mois_global = 27.51933
[2021-02-28 14:51:32][SCENARIO] Ajout du 2021-02-25
[2021-02-28 14:51:32][SCENARIO] conso_hier_hp = 20.03
[2021-02-28 14:51:32][SCENARIO] conso_hier_hc = 17.115
[2021-02-28 14:51:32][SCENARIO] tarif_hier_hp = 2.996488
[2021-02-28 14:51:32][SCENARIO] tarif_hier_hc = 1.5831375
[2021-02-28 14:51:32][SCENARIO] tarif_hier = 4.5796255
[2021-02-28 14:51:32][SCENARIO] conso_mois_hc = 28.37
[2021-02-28 14:51:32][SCENARIO] conso_mois_hp = 59.93
[2021-02-28 14:51:32][SCENARIO] moyenne_conso_jour_hc = 5.674000
[2021-02-28 14:51:32][SCENARIO] moyenne_conso_jour_hp = 11.986000
[2021-02-28 14:51:32][SCENARIO] jour_restant_mois = 3
[2021-02-28 14:51:32][SCENARIO] estimation_conso_mois_hc = 45.392
[2021-02-28 14:51:32][SCENARIO] estimation_conso_mois_hp = 95.888
[2021-02-28 14:51:32][SCENARIO] estimation_conso_mois = 141.28
[2021-02-28 14:51:32][SCENARIO] estimation_prix_mois_hc = 4.19876
[2021-02-28 14:51:32][SCENARIO] estimation_prix_mois_hp = 14.3448448
[2021-02-28 14:51:32][SCENARIO] estimation_prix_mois_global = 32.0436048
[2021-02-28 14:51:32][SCENARIO] Ajout du 2021-02-26
[2021-02-28 14:51:32][SCENARIO] Ajout du 2021-02-27
[2021-02-28 14:51:32][SCENARIO] conso_hier_hp = 70.71
[2021-02-28 14:51:32][SCENARIO] conso_hier_hc = 35.3
[2021-02-28 14:51:32][SCENARIO] tarif_hier_hp = 10.578216
[2021-02-28 14:51:32][SCENARIO] tarif_hier_hc = 3.26525
[2021-02-28 14:51:32][SCENARIO] tarif_hier = 13.843466
[2021-02-28 14:51:32][SCENARIO] conso_mois_hc = 63.67
[2021-02-28 14:51:32][SCENARIO] conso_mois_hp = 130.64
[2021-02-28 14:51:32][SCENARIO] moyenne_conso_jour_hc = 10.611667
[2021-02-28 14:51:32][SCENARIO] moyenne_conso_jour_hp = 21.773333
[2021-02-28 14:51:32][SCENARIO] jour_restant_mois = 1
[2021-02-28 14:51:32][SCENARIO] estimation_conso_mois_hc = 74.281667
[2021-02-28 14:51:32][SCENARIO] estimation_conso_mois_hp = 152.413333
[2021-02-28 14:51:32][SCENARIO] estimation_conso_mois = 226.695
[2021-02-28 14:51:32][SCENARIO] estimation_prix_mois_hc = 6.8710541975
[2021-02-28 14:51:32][SCENARIO] estimation_prix_mois_hp = 22.8010346168
[2021-02-28 14:51:32][SCENARIO] estimation_prix_mois_global = 43.1720888143
[2021-02-28 14:51:32][SCENARIO] Fin correcte du scénario

Donc mon problème vient du fait que les heures creuses commence à minuit.

Bonjour à tous,
Je tiens à félicité @mick74 et les autres pour ce super scénario
Je viens de tester avec plusieurs lecture et suis arrivé à mes fins
Vraiment génial
Je n’ai pas de compteur de nuit et vous mets une capture de mon résultat
J’ai juste un doute sur la Conso Mois HP, Tarif Jour HP et Moyenne Conso Jour HP
Variable

Bonne journée

1 « J'aime »

Pour info : [Scénario pour Plugin Enedis] [Tuto] Calculs sur Heure Pleine / Heure Creuse et Tarifications / Coûts - #43 par mick74

Merci pour ton retour :slight_smile:

En fait vu que les statistiques se basent sur les données horaires et non sur les données du jour (pour avoir des stats sur les HP et HC), si on n’a pas correctement les données qui sont mises à jour coté Enedis, on se retrouve avec des trous et donc les données ne peuvent pas être très représentatives… Du coup tant qu’il n’y aura pas une gestion du côté du plugin-enedis pour reprendre les trous en cas de 1 ou 2 jours de coupures, les données ne seront pas correctes malheureusement… mais bon ça permet d’avoir des indications :slight_smile:

J’ai tester la modifications :

		### 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"));
		
		if ($nb_plages_horaires == 1) {
			$conso_hier_hp = history::getStatistique($id_commande_ConsoHoraire, $debut_hp, $debut_hc)["sum"] /2;
		}else{
			$debut_hp2 = date('Y-m-d H:i:s', strtotime("yesterday - $n days $debut_heure_pleine2 +1 minute"));
			$debut_hc2 = date('Y-m-d H:i:s', strtotime("yesterday - $n days $debut_heure_creuse2 +1 minute"));
			## Heures pleines =  Minuit j-1 => $debut_hc + $debut_hp => $debut_hc2 + $debut_hp2 => minuit
			$conso_hier_hc = (history::getStatistique($id_commande_ConsoHoraire, $date_valeurs, $debut_hp)["sum"] ) /2;
		}
		
		## Si donnée horaire à 0, envoyer un message dans le centre de message, sinon continuer
		if ($conso_hier_hp == 0) {

			$title = 'Erreur Récupération données EDF';
			$message = 'Données de consommation horaire null pour le '.date('Y-m-d', strtotime("yesterday - $n days"));
			message::add($title, $message);
			
		} else {
			if ($nb_plages_horaires == 1) {
				$conso_hier_hc = (history::getStatistique($id_commande_ConsoHoraire, $date_valeurs, $debut_hp)["sum"] ) /2;
			} else {
				## Heures creuses = $debut_hc => $debut_hp + $debut_hc2 => $debut_hp2
				$conso_hier_hc = (history::getStatistique($id_commande_ConsoHoraire, $date_valeurs, $debut_hp)["sum"] ) /2;
			}
			$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;

j’ai toujours l’erreur que je teste avec 00:00 ou 01:00 avec 23:00 pas de soucis.