Aller au contenu

Running Instances Dans Le Toolkit


sebcbien

Messages recommandés

Bonjour,

 

J'ai installé depuis peu le Toolkit de Kirchoff et mon attention a été attirée par le nombre de running instances qu'occupe un scénario block:

 

capture d'écran du toolkit:
post-826-0-19145100-1404296612_thumb.png

 

C'est un script simple qui vérifie si la télé est allumée depuis plus d'1h30 et envoie une notification.

 

Le voici et le script suivant étant le même mais qui vérifie si une lampe n'a pas été allumée depuis 2h (et ne génère pas des running instances)

J'avais testé ces scripts avec de petites durées (5-10 minutes) et fonctionnaient, mais depuis que j'ai mis 1h30 et 2h00 il n'ont pas l'air de fonctionner

 

blocks:

post-826-0-73380900-1404297383_thumb.png

LUA:

--[[
%% autostart
%% properties
80 valueSensor
%% globals
--]]

fibaro:sleep(5400000);
local delayedCheck0 = false;
local tempDeviceState0, deviceLastModification0 = fibaro:get(80, "valueSensor");
if (( tonumber(fibaro:getValue(80, "valueSensor")) > 300 ) and (os.time() - deviceLastModification0) >= 5400) then
	delayedCheck0 = true;
end

local startSource = fibaro:getSourceTrigger();
if (
 ( delayedCheck0 == true )
or
startSource["type"] == "other"
)
then
	fibaro:call(53, "sendDefinedPushNotification", "4");
	fibaro:sleep(10000);
	fibaro:call(26, "sendDefinedPushNotification", "4");
end


--[[
%% autostart
%% properties
54 valueSensor
%% globals
--]]

fibaro:sleep(7200000);
local delayedCheck0 = false;
local tempDeviceState0, deviceLastModification0 = fibaro:get(54, "valueSensor");
if (( tonumber(fibaro:getValue(54, "valueSensor")) > 200 ) and (os.time() - deviceLastModification0) >= 7200) then
	delayedCheck0 = true;
end

local startSource = fibaro:getSourceTrigger();
if (
 ( delayedCheck0 == true )
or
startSource["type"] == "other"
)
then
	fibaro:call(26, "sendDefinedPushNotification", "5");
	fibaro:call(53, "sendDefinedPushNotification", "5");
end

J'ai pas mal de dead nodes qui apparaissent ces derniers temps et je me demande si ce n'est pas lié.

 

Merci pour votre avis

post-826-0-19145100-1404296612_thumb.png

post-826-0-73380900-1404297383_thumb.png

Lien vers le commentaire
Partager sur d’autres sites

Oui c'est pas normal d'avoir 20 instances de ta scène, c'est un coup à  prendre 20 notifications !!!

 

Un bon reboot de la box pour commencer puis revérifier...

 

et dans le doute ajouter dans la scène le code suivant au début pour éviter d'avoir x instances en même temps:

if (fibaro:countScenes() > 1) then fibaro:abort() end;
Lien vers le commentaire
Partager sur d’autres sites

Juste après un reboot, ... j'ai toujours 20 instances !!!??!?

J'ai fait un stop, c'est retombé à0.

Je vais voir si ça continue, et alors je vais essayer de re-creer la scène sinon bah je vais passer en full LUA, probablement avec le GEA.

Domage, j'aime bien les blocs

Lien vers le commentaire
Partager sur d’autres sites

Le mode bloc n'est pas en cause...enfin pas complétement je m'explique ...

 

Suivant le code: le trigger id#80 déclenche la scène si > 300W puis bloque l’exécution de la dite scène avec un sleep pour 5400 secondes afin de valider ou pas la condition "TV allumée depuis plus de x minutes...", le truc c'est que si il y a des fluctuations dans la mesure de puissance et que la conso passe à  299W puis de nouveau > 300W il est possible que le trigger déclenche une nouvelle scène et ainsi de suite .... C'est facilement vérifiable en examinant les valeurs de ton ID80 dans le panneau énergie :15:

 

Donc soit passage en LUA avec la ligne de code

if (fibaro:countScenes() > 1) then fibaro:abort() end;

soit voir pour affiner la conso pour éviter les multiples déclenchements ou aussi pourquoi pas utiliser un variable global en plus pour préserver l'état de la TV -> ON / OFF par exemple....

 

Pour info, le mode bloc n' est juste qu'une surcouche graphique, c'est toujours du LUA qui tourne derrière ;)

Lien vers le commentaire
Partager sur d’autres sites

En fait sur cette prise j'ai mis tout le "multimédia", ma vielle TV étant la grosse consommatrice, quand elle est allumée l'ensemble monte à  400w facile et descend à  une bonne centaine de W éteinte.

 

J'ai effacé et recréé la scène avec un seuil à  200w et en 10 minutes je suis déjà  à  13 instances alors que la conso est aux alentours de 10w actuellement ... :huh:  

 

Très bizarre

Lien vers le commentaire
Partager sur d’autres sites

Oui très bizarre, et dans le panneau énergie: l'historique sur ton module ça donne quoi sur 10 minutes, il y a peut-être des piques (invisibles) de consommation...

 

Tu peux essayer la scène version LUA avec la ligne de code en plus au début ? (Histoire de lever le doute sur un possible bug)

Lien vers le commentaire
Partager sur d’autres sites

c'est peut être du a l'instabilité de la conso, àchaque modification de conso de quelques w, un event trigger la scène, et hop une boucle de plus.

Et comme j'ai un long laps de temps ces boucles n'expirent pas.

En fait je pense que il vaut peut être mieux utiliser la valeur kwh, probablement calculée àl'heure, mais alors je ne pourrai plus mesurer sur 1h30

Lien vers le commentaire
Partager sur d’autres sites

En fait je pense qu'il manque en mode bloc la possibilité de limiter le nombre d'instance de la scène afin d'éviter les comportements comme celui ci ;)

Donc, Pas un bug mais une conception un peu limite pour le mode bloc!

Envoyé de mon iPhone àl'aide de Tapatalk

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...