Plugin delestage - bug identifé à corriger

Bonjour

je viens de trouver un nouveau bug ! en mode cycle.

Pour ceux que ca intéresse je le détaille
→ On entame un cycle de délestage car le seuil est dépassé. on déleste Eq1
→ On dépasse toujours le seuil, du coup on déleste un equipement de la liste hierarchique en plus , disons Eq3
→ c’est bon on est en dessous du seuil mais pas suffisement pour reactiver des equipements
→ on redessend suffisement pour reactiver Eq1 (la puissance de Eq1 est plus petite que Eq3, si on avait choisit de reactiver Eq3 on aurait dépassé le seuil, donc le programme decide de reactiver Eq1)
→ On a le cron du cycle qui passe, le cycle se fait donc, le programme ne sait pas que l’équipement qui devait être Off dans le cadre du cycle (Eq1) a en fait été réactivé, c’est pas un drame en soit jusqu’a cette ligne de commande :

$key = array_search($equipement_a_reactiver['on'], array_column($stoppedEquipements, 'on'));
unset($stoppedEquipements[$key]);

lorsqu’une recherche renvoi rien en PHP , en fait elle renvoit un boolean : false ( au lieu de l’index de l’élément recherché)
la ligne suivante , supprime des elements délestés l’index en question, sauf que vu que notre équipements n’est plus délesté, on va supprimer ‹ false ›, et la doc PHP est formel, le boolean ‹ false › est traduit en ‹ 0 › lorsqu’un entier est attendu, donc on supprime l’élément ‹ 0 › alors que ce n’est pas du tout ce que l’on désire !

bref un simple check résous le soucis

if($key === false){
	log::add('delestage', 'debug', $this->getHumanName() . '[Cycle] erreur - equipement introuvable dans la liste des équipements délestés');
}else{
	unset($stoppedEquipements[$key]);
}

J’ai passé 1h a comprendre ça et à fouiller les docs !

J’envoie la correction à @Alexandre

1 « J'aime »

@TiTom_59 salut, as tu constaté du mieux depuis le correctif ?

Bonjour @frixo,

De mon côté, plus aucun problème en mode intelligent depuis les 2 dernières mise à jour. A suivre si cela tient dans le temps. Encore merci pour le deboggage.

Salut ouais ça a l’air nettement mieux.
J’ai juste eu une fois mon thermostat qui est passé à 25 j’ai pas compris mais c’est peut-être pas lié au délestage je ne m’en suis pas rendu compte tout de suite du coup j’ai pas vu le log.

bonjour tout le monde,
Je suis impatient de tester cette version corrigée. pour ma part je ne dépasse que très rarement mais ca peut arriver. En tout cas j’avais bien remarqué des bugs notamment le fait que les thermostats ne repartaient pas lorsque le seuil n’etait plus dépassé.

Vous auriez une idée du seuil de tolerance d’un linky sur le delais de dépassement avant coupure ?

1 « J'aime »

Bonjour,
Impossible de répondre simplement à la question de la tolérance de dépassement car cela dépend de la consommation elle-même en fait…
La spec détaillée est dans ce document, chapitre 7 page 29, enjoy :grinning:
https://www.enedis.fr/sites/default/files/Enedis-NOI-CPT_54E.pdf

Merci pour ce document. En gros ça peut varier et ça peut aller d’une seconde à bien plus si j’ai compris.
J’ai 5s entre les relevés du linky je vais essayer de réduire ce délais.

Beaucoup plus d’une seconde en fait… si je ne dit pas de bêtises, la valeur la plus faible sur le graphe est de 3s lorsque tu fais un step de 10*la puissance de coupure (c’est à dire tu consommes 90kW alors que tu as un abonnement de 9kW), ce qui est (certainement) pas réaliste … environ 40s si tu consommes 2.5 * la puissance de coupure (22.5kW pour un abonnement de 9kW, ce qui est encore bcp!) et un peu plus de 230s pour 1.4 * la puissance de coupure, là c’est un cas assez usuel je pense si tu es en tout elec.
Bon en tablant sur une minute ça me semble réaliste tout en ayant aussi de la marge !

1 « J'aime »

Bonsoir,

Je relance mon sujet, car à part le 0 qui ne s’affiche plus, je n’ai toujours pas la liste des équipements délestés dans ma notification…

J’ai d’ailleurs essayé de d’afficher cette valeur ( #[Maison][Delestage Jeedom][Equipements délestés]#) dans d’autres types de notifications extérieures au plugin sans succès…
Le seul endroit où la liste s’affiche n’est finalement que le plugin en lui même, sur le dashboard

chez moi ca marche
c3

c1

Tu peux me fournir plus de détails, plus de photo

J’ai 5s entre les relevés du linky je vais essayer de réduire ce délais. => tu veux dire quoi ?
Linky donne pas en temps réel la conso, seulement a J+1

je te comprend mal

Si j’ai relié le TIC du linky. Et je relève toutes les 5s

Voilà ce que cela me donne, je viens de faire un scénario vite fait pour « récupérer » l’info des équipements délestés dans une variable.
Je te mets quelques copies d’écran:
Le scénario

Son Log, on voit bien que le scénario marche mais n’envoie rien dans la variable

Le paramétrage de la notification dans le plugin délestage

Et son résultat sur mon téléphone…
Capture d'écran 2021-02-02 à 21.55.56 PM

J’ai oublié le screenshot du plugin sur le dashboard:
Capture d'écran 2021-02-02 à 22.05.35 PM

Ainsi que celui de la variable lors du delestage
Capture d'écran 2021-02-02 à 22.06.14 PM

Tu as fais comment ?

Un module zwave ?

j’ai relié le compteur a un eco RT2 Gestion énergie Ecodevices 2
C’est aussi cet appareil qui gere les fils pilote avec les extensions X4FP
J’utlise le plug in RT2 dans jeedom pour controler le tout

Merci à ceux qui ont eu le courage de mettre les mains dans le cambouis, visiblement il y avait du boulot :slight_smile:

Modeste contribution de ma part pour remonter un bug sur la partie smart.

Le plugin passe les thermostats en « off » et rétablit le mode initial (avant delestage) ensuite quand la puissance est inférieure au seuil. La dessus pas spécialement de problème (en théorie).

MAIS, lorsqu’un thermostat est délesté et que l’on ouvre une fenêtre (déclarée en ouvrant dans le thermostat), et que la puissance repasse en dessous du seuil, le plugin délestage relance la chauffe en ignorant que la fenêtre est encore ouverte (et la vous comprenez que ça peut chauffer l’extérieur un bon moment…)

Je pense, mais je n’ai pas encore vérifié, que si le thermostat change de mode en étant délesté (programmé par le calendrier) en sortie de délestage le mode rétabli ne sera pas le bon.

Ma suggestion, il faudrait que le plugin agisse de la même manière qu’il un « ouvrant » et suspende la chauffe sans toucher au mode du thermostat (on reste par ex. en « comfort » mais on coupe la chauffe), cela permettrait :

  • d’accepter les changements de mode demandés par le calendrier (ça j’ai vérifié avec une fenêtre ouverte, le thermostat prend en compte la nouvelle consigne et ne relance qu’une fois tous les ouvrants fermés)
  • de ne pas relancer la chauffe tant que d’autres ouvrants suspendent le thermostat en question.

Également une proposition d’amélioration : la possibilité d’inclure du hiérarchique dans le Smart.
Pour mon cas d’usage : j’ai un délestage hiérarchique sur mon chauffe eau (c’est le seul équipement) avec un seuil à 5000W et un smart qui agit sur 3 thermostats (seuil 5500w), le problème (qui n’est pas un bug) c’est que les 2 délestages se tirent un peu la bourre si j’ai un gros pic de puissance, et que le hiérarchique se rétablit parfois avant le smart (car il a une puissance déclarée inférieure au plus petit des thermostats) pour contrer ça je peux tricher en déclarant in puissance supérieure mais je ne trouve pas ça très « propre »

Merci à tous !

Je viens de tester un truc en plus et du coup j’en conclus que le problème que je remonte n’est pas uniquement lié au plugin délestage mais également au plugin thermostat qui ne tient pas compte des ouvrants lorsqu’on le passé de « Off » à un un autre mode (comfort par ex) et c’est également très fâcheux ! Vous pensez que ça mérite un post dédié à ce plugin ?

Bonjour a tous

une nouvelle maj a été poussé à @Alexandre

nouvelle maj, core et desktop pour possiblement (c’est optionnel) mettre une info equipment comme seuil , ainsi on peut changer le seuil de façon interactive ! mais on peut encore saisir une valeur manuelle !