Aller au contenu

Scenario


jtella45

Messages recommandés

Besoin d'aide,

j'ai un scenario qui gere mon ballon d'eau chaude tous les soirs, il allume le ballon a 00h05 et l'éteint à05h45

tout était fonctionnel jusqu'àil y a 2 jours

a l'heure dite le scénario ne s'enclenche plus, il fonctionne si je le démarre manuellement

je n'ai rien rajouté àla box, ni rien enlevé

j'ai fait un test en changeant l'heure hier soir et ça a fonctionné, j'ai donc remis l'heure à00h05 et ce matin pas d'eau chaude !!!

quelqu'un a t il une idée?

Lien vers le commentaire
Partager sur d’autres sites

Salut! Poste peut être ton code en LUA, il y a des pros ici! J'ai cru voir une fois sur un forum que l'heure doit être dans un format spécial. Genre pour 6h c'était 6 et non 06 ou l'inverse je ne me rappelle plus. Sinon crée ton script avec les blocs tu n'auras surement pas de problème c'est pratique pour tout ce qui est gestion en fonction des jours et des heures. Si tu code est bien en LUA tu peux le poster entre les 2 balises

['code'] script LUA ['/code'] (supprime les ' que j'ai mises)

il sera aux couleurs de fibaro (merci domotique-fibaro).

Lien vers le commentaire
Partager sur d’autres sites

en simple c'est 

tous les jours de la semaine coché a ce moment precis 00h05

alors

allume ballon eau chaude

et 

eteindre ballon eau chaude après 20100s

 

ca a fonctionné pendant quinze jours

et ca ne marche pas depuis 2 jours, comme si l'info n'était pas transmise

Lien vers le commentaire
Partager sur d’autres sites

ok j'essaie mais bon suis sceptique

le plus bizarre c'est que si j'essaie maintenant en mettant 21h10 ca va fonctionner et que tout àl'heure il se peut que ça ne fonctionne pas

c'est comme si il y avait une coupure de courant au moment du déclenchement àminuit cinq

Lien vers le commentaire
Partager sur d’autres sites

Je pense que quand tu as la scène qui n'a plus fonctionné, tu as peut être la veille appuyé sur le bouton RUN. A partir de ce moment la, la boucle de lecture infinie ne se fait plus. Tu as vérifié sur ton dashboard comme je t'ai dis?

--[[
%% autostart
%% properties
%% globals
--]]

local sourceTrigger = fibaro:getSourceTrigger();
if (sourceTrigger["type"] == "autostart") then
while true do

local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
 ( ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "00:05") )
)
then
    fibaro:call(107, "turnOn");
    fibaro:sleep(20100000);
    fibaro:call(107, "turnOff");
end

fibaro:sleep(60*1000);
end
else

local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
startSource["type"] == "other"
)
then
    fibaro:call(107, "turnOn");
    fibaro:sleep(20100000);
    fibaro:call(107, "turnOff");
end

end


Regarde en 9 si la source de déclenchement de la scène est autostart, tu as la lecture en boucle infinie (while true do), mais en 30 si la source de déclenchement de la scène est other (manuel en appuyant sur run), le script est lu une seule fois et du coup il allume ton ballon. Il n'y a plus d'utilisation de la partie heure et journée (variable currentDate est utilisée dans le script en autostart, mais pas en déclenchement manuel). C'est ce que je n'aime pas avec les blocs graphiques, tu ne peux pas voir les "erreurs" du logiciel.

Lien vers le commentaire
Partager sur d’autres sites

En fait ca veut dire que si la scene est déclenchée grâce à  autostart, elle démarre automatiquement et si tu lis avec tes yeux le script a partir de la, il va utiliser la commande while true do qui fera lire le script à  ta box, en boucle indéfiniment. Et dans cette boucle de lecture, il y a vérification de l'heure, du jour etc.

--[[
%% autostart
%% properties
%% globals
--]]

local sourceTrigger = fibaro:getSourceTrigger();
if (sourceTrigger["type"] == "autostart") then -- si la source de déclenchement de la scène est autostart, la lecture du script se lance automatiquement après enregistrement
while true do -- Ensuite cette commande lance une lecture en boucle infinie

local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
 ( ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "00:05") )
) -- vérification de tes conditions heures et jours
then
    fibaro:call(107, "turnOn");
    fibaro:sleep(20100000);
    fibaro:call(107, "turnOff");
end -- fin de la condition

fibaro:sleep(60*1000);
end -- fin du script, mais la box va reprendre la lecture depuis en haut. En gros le script sera lu par la box en qqs secondes et recommencera indéfiniment
Lien vers le commentaire
Partager sur d’autres sites

Par contre si tu appuies sur run, même si la lecture du script est en cours via la boucle de lecture infinie, la box va lire à  partir de ce moment la

local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
startSource["type"] == "other" -- déclenchement manuel de la lecture du script à  la suite de l'appui sur le bouton run de la scène
)
then
    fibaro:call(107, "turnOn");
    fibaro:sleep(20100000);
    fibaro:call(107, "turnOff");
end

Donc pas de lecture en boucle infinie, la box va lire le script une seule fois rapidement et en plus il n'y aura pas de condition heures et jours... En gros il allumera ton ballon directement et l'eteindra au bout du temps défini.

Lien vers le commentaire
Partager sur d’autres sites

Je te conseille du coup de mettre en LUA

--[[
%% autostart
%% properties
%% globals
--]]

while true do

local currentDate = os.date("*t");

if (
 ( ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "00:05") )
)
then
    fibaro:call(107, "turnOn");
    fibaro:debug('Il est 00:05, le ballon démarre la chauffe')
    fibaro:sleep(20100*1000);
    fibaro:call(107, "turnOff");
    fibaro:debug('Il est 05:45, le ballon arrête la chauffe')
end

fibaro:sleep(60*1000);
end

Une dernière chose importante. Quand une scène est en lecture en boucle infinie avec while true do (on appelle ca aussi infinite loop), si tu veux modifier la scène, tu dois aller tout en bas du script et cliquer sur le bouton bleu désactiver. Tu arrêtes la lecture. Ensuite change le script et enregistre. Vérifie dans le dashboard que la scène est bien active et normalement ca sera bon. Je t'ai intégré une fonction debug pour que le lendemain tu vérifie que le ballon s'est bien allumé ou éteint aux heures voulues.

 

Et pense à  modifier ton numéro de device à  la place du mien (107)

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...