Aller au contenu

[VD + Scène] Réveil paramétrable avancé v3.6 : Réveil compatible Dimmers, RGBW, Shutters, VD Philips Hue, VD Sonos, VD Yamaha Multicast...


Messages recommandés

Posté(e) (modifié)

Bonsoir,

Rentré depuis peu, j'ai effectué une dizaine d'essais différents et ça a l'air fonctionnel.

Je n'ai pas rencontré d'erreur, la scène enchaîne les options correctement.

La seule vérification restante à faire semble être pour les modules RGBW :)

Je fais le fou-dingue et j'ai confiance, j'ai mis à jour le premier post en donnant quelques précisions sur la nouvelle version de cette scène.

 

Ce qui est fou, c'est que plus d'options sont rajoutées et moins elle semble longue! :lol:

Modifié par J3R3M
  • Like 2
Posté(e)
Le 16/03/2019 à 17:18, J3R3M a dit :

Un appui sur : affichera 12:00

Une bonne grasse matinée ;-)

 

Super les details sur le 1er post, c'est très clair ;-) Merci

Posté(e)
Le 22/03/2019 à 09:31, pepite a dit :

Une bonne grasse matinée ;-)

En effet! Il suffit de changer la valeur du bouton pour s'enregistrer un preset basique à vrai dire :)

Le 22/03/2019 à 09:31, pepite a dit :

Super les details sur le 1er post, c'est très clair ;-) Merci

Je viens de modifier encore un peu le premier post pour éclaircir certains points et moins rebuter les intéressés!

 

D'ailleurs, avez-vous pu tester ? :)

  • Upvote 1
Posté(e)

Bonjour,

Désolé, pas eu le teps non plus, mais promis c'est dans ma TODOList rapidement ;-)

Merci pour la MAJ du 1er pst. Même plus à penser, ca me va très bien :60:

Posté(e)

Merci de vos réponses :)

La dernière version marche parfaitement pour moi en tous cas :)

Rester à confirmer pour les devices RGBW, mais je suis confiant :)

  • Like 1
  • 10 mois après...
Posté(e)
Le 06/04/2019 à 21:08, J3R3M a dit :

Rester à confirmer pour les devices RGBW, mais je suis confiant :)

Bonjour bonjour,

 

J'ai mis le temps non ? ;-)

 

En test en ce moment, ca ne fonctionne pas pour moi ;-), le RGBW reste éteint, c'est c... ;-)

 

- local PIECE : modifiée partout, les 3 boutons + mainloop VD

TableReveil ok :

[DEBUG] 09:16:01: {"Son":"0","FLights":"11","Min":0,"Heure":10,"Mode":1,"Lights":"100","FSon":"0"}

La scène est configurée comme ceci
 

-- Code de la Chambre correspondant à la Variable Globale créée
local PIECE = "Ch_Noemie";

-- Tableau Etat du soleil (pour gestion volets roulants)
local Soleil = {Etat=1, VG="HOME_SOLEIL", Up="1"};

-- Tableaux qui seront exploités
LightsList, SpeakerAction = {},{};

--Liste des devices à traiter pour la simulation d'aube
--[[table.insert(LightsList, {typ="Device", mode="OR", id=27});
table.insert(LightsList, {typ="VD", mode="OR", id=115, slider=10, btn=6});
table.insert(LightsList, {typ="Shutter", mode="OR", id=279, pas=6});
table.insert(LightsList, {typ="RGBW", mode="AND", id=279, r=255, g=100, b=0, w=100});

-- Liste des actions à effectuer sur les enceintes
table.insert(SpeakerAction, {id=242, slider=10});
table.insert(SpeakerAction, {id=242, btn=18});--]]
table.insert(LightsList, {typ="RGBW", mode="AND", id=279, r=255, g=255, b=100, w=200});

-- DEBUG
local debug = 1;
local tempo = 1; -- seconde

 

La scene se lance bien

[DEBUG] 06:23:00: [LightsBtn] -> Début de la fonction
[DEBUG] 06:23:00: [LightsBtn] [RGBW 279] Pas de bouton à appuyer pour cette entrée
[DEBUG] 06:23:01: [LightsBtn] -> Fin de la fonction
[DEBUG] 06:23:01: [LightsFade] -> Début de la fonction
[DEBUG] 06:23:03: [LightsBtn] -> Début de la fonction
[DEBUG] 06:23:03: [LightsBtn] [RGBW 279] Pas de bouton à appuyer pour cette entrée
[DEBUG] 06:23:04: [LightsBtn] -> Fin de la fonction
[DEBUG] 06:23:04: [LightsFade] -> Début de la fonction
[DEBUG] 06:25:25: [LightsFade] [RGBW 279] Allumé à 25% de la valeur prédéfinie (100)
[DEBUG] 06:25:28: [LightsFade] [RGBW 279] Allumé à 25% de la valeur prédéfinie (100)
[DEBUG] 06:27:55: [LightsFade] [RGBW 279] Allumé à 50% de la valeur prédéfinie (100)
[DEBUG] 06:27:58: [LightsFade] [RGBW 279] Allumé à 50% de la valeur prédéfinie (100)
[DEBUG] 06:30:25: [LightsFade] [RGBW 279] Allumé à 75% de la valeur prédéfinie (100)
[DEBUG] 06:30:28: [LightsFade] [RGBW 279] Allumé à 75% de la valeur prédéfinie (100)
[DEBUG] 06:32:55: [LightsFade] [RGBW 279] Allumé à 100% de la valeur prédéfinie (100)
[DEBUG] 06:32:58: [LightsFade] [RGBW 279] Allumé à 100% de la valeur prédéfinie (100)
[DEBUG] 06:33:01: [LightsFade] -> Fin de la fonction
[DEBUG] 06:33:01: [SpeakersAction] -> Début de la fonction
[DEBUG] 06:33:01: Aucune enceinte à traiter dans cette fonction
[DEBUG] 06:33:01: [SpeakersAction] -> Fin de la fonction
[DEBUG] 06:33:01: [SpeakersFade] -> Début de la fonction
[DEBUG] 06:33:01: Aucune enceinte à traiter dans cette fonction
[DEBUG] 06:33:01: [SpeakersFade] -> Fin de la fonction
[DEBUG] 06:33:01: Fin de la scène. Debout maintenant!
[DEBUG] 06:33:04: [LightsFade] -> Fin de la fonction
[DEBUG] 06:33:04: [SpeakersAction] -> Début de la fonction
[DEBUG] 06:33:04: Aucune enceinte à traiter dans cette fonction
[DEBUG] 06:33:04: [SpeakersAction] -> Fin de la fonction
[DEBUG] 06:33:04: [SpeakersFade] -> Début de la fonction
[DEBUG] 06:33:04: Aucune enceinte à traiter dans cette fonction
[DEBUG] 06:33:04: [SpeakersFade] -> Fin de la fonction
[DEBUG] 06:33:04: Fin de la scène. Debout maintenant!

On rentre donc bien dans la boucle

 

elseif ( LightsList[j].typ == "RGBW" and LightsList[j].mode == "AND" ) or ( LightsList[j].typ == "RGBW" and Soleil.Etat == 1 and LightsList[j].mode == "OR" and SunState() ) then
        local facteur = math.floor(i*Puissance/10000);
        local red,green,blue,white = LightsList[j].r*facteur,LightsList[j].g*facteur,LightsList[j].b*facteur,LightsList[j].w*facteur;
        fibaro:call(LightsList[j].id, "setColor", red, green, blue, white);
        Debug("grey","[LightsFade] ["..LightsList[j].typ.." "..LightsList[j].id.."] Allumé à "..i.."% de la valeur prédéfinie ("..Puissance..")", i);

Je confirme le fonctionnement de la commande :

fibaro:call(id,r,g,b,w) 

cela allume bien le ruban.

 

 

Posté(e)

Boooooonjour @pepite!

Et merci de ce retour! Et également d'avoir pris le temps de tester cette scène!

 

Alors, on va essayer de comprendre ce qu'il se passe sans avoir de module RGBW sous la main...

Ni quoi que ce soit de domotique pour le coup :D J'ai effectivement déménagé récemment et tout ce qui concerne la domotique est encore dans les cartons :ph34r:

 

Dans un premier temps, je vois que tu as deux lignes concernant le module 279, était-ce simplement pour un test ?

Je prends le temps de regarder à quoi ressemblait cette scène et où pourrait se situer le problème et je reviens vers toi au plus vite :)

Posté(e) (modifié)

@pepite, me revoilà!

 

Dans tes paramètres, je constate des incohérences sur les lignes suivantes :

table.insert(LightsList, {typ="Shutter", mode="OR", id=279, pas=6});
table.insert(LightsList, {typ="RGBW", mode="AND", id=279, r=255, g=100, b=0, w=100});

-- Liste des actions à effectuer sur les enceintes
table.insert(SpeakerAction, {id=242, slider=10});
table.insert(SpeakerAction, {id=242, btn=18});--]]
table.insert(LightsList, {typ="RGBW", mode="AND", id=279, r=255, g=255, b=100, w=200});

 

Comme dit ci-dessus, tu as deux fois la ligne concernant ton module RGBW 279, avec des valeurs différentes, ce qui doit créer un conflit lors du traitement dans la boucle.

Aussi et c'est plus problématique, il semble que tu aies aussi un volet roulant avec l'ID 279. Ton volet roulant a un bandeau RGBW intégré ? xD

 

Plus sérieusement, puisque tu ne m'as pas dit que ton volet roulant ne s'ouvrait pas, il y a des chances que l'ID précisé pour le module RGBW ne soit pas correct.

Je t'invite également à supprimer une des deux lignes concernant le même module RGBW pour éviter de changer sans cesses la valeur du même module.

 

J'attends ton retour :)

 

Edit : Je viens de voir qu'il s'agissait des valeurs d'exemple intégrés dans la scène et que c'était en commentaire. Désolé, ce n'est pas flagrant avec les balises Code. Je regarde du plus près :P

Modifié par J3R3M
Posté(e)

Hop hop salut;-)

 

Non non, je n'ai qu'une ligne, c'est le copier coller quand tu mets la balise code ne les commente pas lol

 

Ma scene ressemble à ceci


 

--Liste des devices à traiter pour la simulation d'aube
--[[table.insert(LightsList, {typ="Device", mode="OR", id=27});
table.insert(LightsList, {typ="VD", mode="OR", id=115, slider=10, btn=6});
table.insert(LightsList, {typ="Shutter", mode="OR", id=279, pas=6});
table.insert(LightsList, {typ="RGBW", mode="AND", id=279, r=255, g=100, b=0, w=100});

-- Liste des actions à effectuer sur les enceintes
table.insert(SpeakerAction, {id=242, slider=10});
table.insert(SpeakerAction, {id=242, btn=18});--]]
table.insert(LightsList, {typ="RGBW", mode="AND", id=279, r=255, g=255, b=255, w=255});

 

J'ai testé plusieurs choses jusqu'a en arriver la..

bizarrement il ne fait pas le fibaro:call que j'ai reteste avec les memes valeurs dans une scene test : qui allume bien le ruban

 

elseif ( LightsList[j].typ == "RGBW" and LightsList[j].mode == "AND" ) or ( LightsList[j].typ == "RGBW" and Soleil.Etat == 1 and LightsList[j].mode == "OR" and SunState() ) then
        --local facteur = math.floor(i*Puissance/10000);
        --local red,green,blue,white = LightsList[j].r*facteur,LightsList[j].g*facteur,LightsList[j].b*facteur,LightsList[j].w*facteur;
        --local red,green,blue,white = LightsList[j].r,LightsList[j].g,LightsList[j].b,LightsList[j].w;        
        --fibaro:call(LightsList[j].id, "setColor", red, green, blue, white);
        fibaro:call(279, "setColor", 255, 151, 143, 255);
        Debug("grey","[LightsFade] ["..LightsList[j].typ.." "..LightsList[j].id.."] Allumé à "..i.."% de la valeur prédéfinie ("..Puissance..")", i);

[DEBUG] 11:16:00: [LightsBtn] -> Début de la fonction
[DEBUG] 11:16:00: [LightsBtn] [RGBW 279] Pas de bouton à appuyer pour cette entrée
[DEBUG] 11:16:01: [LightsBtn] -> Fin de la fonction
[DEBUG] 11:16:01: [LightsFade] -> Début de la fonction
[DEBUG] 11:16:03: [LightsBtn] -> Début de la fonction
[DEBUG] 11:16:03: [LightsBtn] [RGBW 279] Pas de bouton à appuyer pour cette entrée
[DEBUG] 11:16:04: [LightsBtn] -> Fin de la fonction
[DEBUG] 11:16:04: [LightsFade] -> Début de la fonction
[DEBUG] 11:17:13: [LightsFade] [RGBW 279] Allumé à 25% de la valeur prédéfinie (100)
[DEBUG] 11:17:16: [LightsFade] [RGBW 279] Allumé à 25% de la valeur prédéfinie (100)
[DEBUG] 11:18:28: [LightsFade] [RGBW 279] Allumé à 50% de la valeur prédéfinie (100)
[DEBUG] 11:18:31: [LightsFade] [RGBW 279] Allumé à 50% de la valeur prédéfinie (100)
[DEBUG] 11:19:43: [LightsFade] [RGBW 279] Allumé à 75% de la valeur prédéfinie (100)
[DEBUG] 11:19:46: [LightsFade] [RGBW 279] Allumé à 75% de la valeur prédéfinie (100)
[DEBUG] 11:20:58: [LightsFade] [RGBW 279] Allumé à 100% de la valeur prédéfinie (100)
[DEBUG] 11:21:01: [LightsFade] -> Fin de la fonction
[DEBUG] 11:21:01: [LightsFade] [RGBW 279] Allumé à 100% de la valeur prédéfinie (100)
[DEBUG] 11:21:01: [SpeakersAction] -> Début de la fonction
[DEBUG] 11:21:01: Aucune enceinte à traiter dans cette fonction
[DEBUG] 11:21:01: [SpeakersAction] -> Fin de la fonction
[DEBUG] 11:21:01: [SpeakersFade] -> Début de la fonction
[DEBUG] 11:21:01: Aucune enceinte à traiter dans cette fonction
[DEBUG] 11:21:01: [SpeakersFade] -> Fin de la fonction
[DEBUG] 11:21:01: Fin de la scène. Debout maintenant!
[DEBUG] 11:21:04: [LightsFade] -> Fin de la fonction
[DEBUG] 11:21:05: [SpeakersAction] -> Début de la fonction
[DEBUG] 11:21:05: Aucune enceinte à traiter dans cette fonction
[DEBUG] 11:21:05: [SpeakersAction] -> Fin de la fonction
[DEBUG] 11:21:05: [SpeakersFade] -> Début de la fonction
[DEBUG] 11:21:05: Aucune enceinte à traiter dans cette fonction

 

1624209216_Capturedu2020-03-0511-34-22.png.6a42d82a43a8a96d45c3cf8653c82e5e.png

 

Posté(e)
il y a 9 minutes, pepite a dit :

[DEBUG] 11:16:00: [LightsBtn] -> Début de la fonction
[DEBUG] 11:16:00: [LightsBtn] [RGBW 279] Pas de bouton à appuyer pour cette entrée
[DEBUG] 11:16:01: [LightsBtn] -> Fin de la fonction
[DEBUG] 11:16:01: [LightsFade] -> Début de la fonction
[DEBUG] 11:16:03: [LightsBtn] -> Début de la fonction
[DEBUG] 11:16:03: [LightsBtn] [RGBW 279] Pas de bouton à appuyer pour cette entrée
[DEBUG] 11:16:04: [LightsBtn] -> Fin de la fonction
[DEBUG] 11:16:04: [LightsFade] -> Début de la fonction

Merci de ta réponse. Déjà dans le DEBUG, il y a cette partie qui me parait étrange.

Les fonctions LightsBtn et LightsFade sont appelées une seule fois, l'une après l'autre, à aucun moment elles ne sont censées se chevaucher... :blink:

 

Cela fait plusieurs mois que j'ai tout remballé, une mise à jour majeure aurait-elle vue le jour et aurait-elle pu provoquer cela ? :huh:

Là, chacune des fonctions est lancée deux fois :ph34r:

Combien d'instances de la scène sont autorisées ? Si plus de 1, retente avec une seule instance au maximum s'il-te-plaît.

Posté(e)

Avec 1 instance : c'est meiux mais eteint ;-)

[DEBUG] 13:54:01: [LightsBtn] -> Début de la fonction
[DEBUG] 13:54:01: [LightsBtn] [RGBW 279] Pas de bouton à appuyer pour cette entrée
[DEBUG] 13:54:02: [LightsBtn] -> Fin de la fonction
[DEBUG] 13:54:02: [LightsFade] -> Début de la fonction
[DEBUG] 13:55:14: [LightsFade] [RGBW 279] Allumé à 25% de la valeur prédéfinie (100)
[DEBUG] 13:56:29: [LightsFade] [RGBW 279] Allumé à 50% de la valeur prédéfinie (100)
[DEBUG] 13:57:44: [LightsFade] [RGBW 279] Allumé à 75% de la valeur prédéfinie (100)
[DEBUG] 13:58:59: [LightsFade] [RGBW 279] Allumé à 100% de la valeur prédéfinie (100)
[DEBUG] 13:59:02: [LightsFade] -> Fin de la fonction
[DEBUG] 13:59:02: [SpeakersAction] -> Début de la fonction
[DEBUG] 13:59:02: Aucune enceinte à traiter dans cette fonction
[DEBUG] 13:59:02: [SpeakersAction] -> Fin de la fonction
[DEBUG] 13:59:02: [SpeakersFade] -> Début de la fonction
[DEBUG] 13:59:02: Aucune enceinte à traiter dans cette fonction
[DEBUG] 13:59:02: [SpeakersFade] -> Fin de la fonction
[DEBUG] 13:59:02: Fin de la scène. Debout maintenant!

J'ai essaye avec allume une lampe toute simple, elle ne s'allume pas non plus, je comprends pas pourquoi cela ne fait pas le fibaro:call

local red,green,blue,white = LightsList[j].r*facteur,LightsList[j].g*facteur,LightsList[j].b*facteur,LightsList[j].w*facteur;
        --local red,green,blue,white = LightsList[j].r,LightsList[j].g,LightsList[j].b,LightsList[j].w;        
        --fibaro:call(LightsList[j].id, "setColor", red, green, blue, white);
        --fibaro:call(279, "setColor", 255, 151, 143, 255);
        fibaro:call(12,"turnOn")
        Debug("grey","[LightsFade] ["..LightsList[j].typ.." "..LightsList[j].id.."] Allumé à "..i.."% de la valeur prédéfinie ("..Puissance..")", i);


     

Posté(e)

Bon, on avance. Ça signifie qu'il y a des modifications à effectuer par la suite du côté du VD pour qu'il ne lance qu'une seule fois la scène. Je verrai ça plus tard.

 

Tu dois pouvoir tester la scène directement, sans passer par le VD, en la lançant directement depuis le bouton adéquat.

Désolé, encore une fois, n'ayant rien sous la main, je vais te demander de faire des essais pour essayer de comprendre où le problème se situe, puisqu'il n'est visiblement pas évident.

 

Avançons par étape, essayons de ne rien déclarer dans LightsList() et SpeakerAction() :

-- Code de la Chambre correspondant à la Variable Globale créée
local PIECE = "Ch_Noemie";

-- Tableau Etat du soleil (pour gestion volets roulants)
local Soleil = {Etat=0, VG="HOME_SOLEIL", Up="1"};

-- Tableaux qui seront exploités
LightsList, SpeakerAction = {},{};

-- Liste des devices à traiter pour la simulation d'aube

-- Liste des actions à effectuer sur les enceintes

Mais, que tu indiques ton code directement dans la fonction principale reveil() (en fin de scène) :

-- Fonction Principale
local TableReveil = json.decode(fibaro:getGlobalValue("REVEIL_"..PIECE));
local function reveil(LightsPower,LightsTps,SpeakersPower,SpeakersTps)
  LightsBtn();
  LightsFade(LightsPower,LightsTps);
  fibaro:call(279, "setColor", 255, 151, 143, 255);
  SpeakersAction();
  SpeakersFade(SpeakersPower,SpeakersTps);
  -- Changement Mode
  if TableReveil.Mode == 1 then TableReveil.Mode = 3; fibaro:setGlobal("REVEIL_"..PIECE, json.encode(TableReveil)); end
end

On devrait avoir un DEBUG de fonctions qui ne font que checker et ne rien faire. À voir si ton ruban RGBW s'allume cette fois!

Posté(e)

Well done, allumé ;-)

-- Fonction Principale
local TableReveil = json.decode(fibaro:getGlobalValue("REVEIL_"..PIECE));
local function reveil(LightsPower,LightsTps,SpeakersPower,SpeakersTps)
  LightsBtn();
  LightsFade(LightsPower,LightsTps);
  fibaro:call(279, "setColor", 255, 151, 143, 255);
  SpeakersAction();
  SpeakersFade(SpeakersPower,SpeakersTps);
  -- Changement Mode
  if TableReveil.Mode == 1 then TableReveil.Mode = 3; fibaro:setGlobal("REVEIL_"..PIECE, json.encode(TableReveil)); end
end

-- Si pas de réveil programmé
if tonumber(fibaro:getGlobalValue("REVEIL_"..PIECE)) ~= nil or fibaro:getGlobalValue("REVEIL_"..PIECE) == nil or ( type(TableReveil) == "table" and  TableReveil.Mode == 3 ) then
  Debug("red", "Aucun réveil n'a été programmé via le VD associé.");
  --fibaro:abort();
end

-- On exécute
reveil(TableReveil.Lights,TableReveil.FLights,TableReveil.Son,TableReveil.FSon);
Debug("lightblue", "Fin de la scène. Debout maintenant!");
[DEBUG] 15:20:35: Aucun réveil n'a été programmé via le VD associé.
[DEBUG] 15:20:35: [LightsBtn] -> Début de la fonction
[DEBUG] 15:20:35: [LightsBtn] -> Fin de la fonction
[DEBUG] 15:20:35: [LightsFade] -> Début de la fonction
[DEBUG] 15:25:35: [LightsFade] -> Fin de la fonction
[DEBUG] 15:25:35: [SpeakersAction] -> Début de la fonction
[DEBUG] 15:25:35: Aucune enceinte à traiter dans cette fonction
[DEBUG] 15:25:35: [SpeakersAction] -> Fin de la fonction
[DEBUG] 15:25:35: [SpeakersFade] -> Début de la fonction
[DEBUG] 15:25:35: Aucune enceinte à traiter dans cette fonction
[DEBUG] 15:25:35: [SpeakersFade] -> Fin de la fonction
[DEBUG] 15:25:35: Fin de la scène. Debout maintenant

 

Posté(e) (modifié)

Je suis sur mobile et n’ai pas accès à la balise code, mais l’étape suivante serait de réintégrer seulement ton entrée LightsList :

table.insert(LightsList, {typ="RGBW", mode="AND", id=279, r=255, g=255, b=255, w=255});

Et, changer la fonction principale ainsi :

LightsFade(LightsPower,LightsTps);

fibaro:call(LightsList[1].id, "setColor", LightsList[1].r, LightsList[1].g, LightsList[1].b, LightsList[1].w);

 

Modifié par J3R3M
Balsie code
Posté(e)

Ok, mais ce qui voudrait dire que je ne pourrais pas ajouter d'autres devices lampes et que je n'aurai plus la fonctionnalite de fade ?

Posté(e) (modifié)
il y a 13 minutes, pepite a dit :

Ok, mais ce qui voudrait dire que je ne pourrais pas ajouter d'autres devices lampes et que je n'aurai plus la fonctionnalite de fade ?

Si jamais on en restait là, oui.

Mais là, la démarche est d’y aller par étape afin de localiser le problème, voir où cela coince, pour faire en sorte que ça marche intégralement à l’issue de ces tests :77:

Modifié par J3R3M
  • Like 1
Posté(e)

Me revoici sur ordi, on est repartis! :60:

Bon, donc la syntaxe fonctionne correctement, même en utilisant les valeurs de LightsList(). On continue!

 

Tu peux remettre la fonction principale comme elle était, à savoir :

-- Fonction Principale
local TableReveil = json.decode(fibaro:getGlobalValue("REVEIL_"..PIECE));
local function reveil(LightsPower,LightsTps,SpeakersPower,SpeakersTps)
  LightsBtn();
  LightsFade(LightsPower,LightsTps);
  SpeakersAction();
  SpeakersFade(SpeakersPower,SpeakersTps);
  -- Changement Mode
  if TableReveil.Mode == 1 then TableReveil.Mode = 3; fibaro:setGlobal("REVEIL_"..PIECE, json.encode(TableReveil)); end
end

Et on va partir dans la fonction LightsFade() en espérant rapidement trouver où et pourquoi ça coince.

Remplace ta fonction par celle-ci, enregistre cette nouvelle scène, programme un réveil quelconque depuis le VD, lance la scène et redis-mois si le ruban s'est allumé s'il-te-plaît.

On va mettre l'action directe du fibaro:call() à différents niveaux de la fonction, afin de constater à quel moment elle n'est plus active.

local function LightsFade(Puissance, TpsFade)
  Debug("green", "[LightsFade] -> Début de la fonction");
  fibaro:call(LightsList[1].id, "setColor", LightsList[1].r, LightsList[1].g, LightsList[1].b, LightsList[1].w);
  for i=1,100 do
    for j=1,#LightsList do
      if LightsList[j].typ ~= "Shutter" and ( LightsList[j].mode == "AND" or ( Soleil.Etat == 1 and LightsList[j].mode == "OR" and not SunState() ) ) then
        if LightsList[j].typ == "VD" then
          fibaro:call(LightsList[j].id, "setSlider", tostring(LightsList[j].slider), math.ceil(i*Puissance/100));
        elseif LightsList[j].typ == "Device" then
          fibaro:call(LightsList[j].id, "setValue", math.ceil(i*Puissance/100));
        end
        Debug("grey","[LightsFade] ["..LightsList[j].typ.." "..LightsList[j].id.."] Allumé à "..i.."% de la valeur prédéfinie ("..Puissance..")", i);
      elseif ( LightsList[j].typ == "Shutter" and LightsList[j].mode == "AND" ) or ( LightsList[j].typ == "Shutter" and Soleil.Etat == 1 and LightsList[j].mode == "OR" and SunState() ) then
        local Pas = math.ceil(100/LightsList[j].pas);
        if Pas < 2 then Pas = 2; elseif Pas > 20 then Pas = 20; end
        if i < 100 then
          for k=1,tonumber(LightsList[j].pas) do
            if k*Pas == i then
              fibaro:call(LightsList[j].id, "setValue", i);
              Debug("grey","[LightsFade] [Shutter "..LightsList[j].id.."] Ouvert à "..i.."%");
            end -- Condition vérification valeur k*Pas
          end -- Boucle Valeurs de pas
        else
          fibaro:call(LightsList[j].id, "setValue", 100);
          Debug("grey","[LightsFade] [Shutter "..LightsList[j].id.."] Ouvert à 100%");
        end -- i < 100
      elseif ( LightsList[j].typ == "RGBW" and LightsList[j].mode == "AND" ) or ( LightsList[j].typ == "RGBW" and Soleil.Etat == 1 and LightsList[j].mode == "OR" and SunState() ) then
        local facteur = math.floor(i*Puissance/10000);
        local red,green,blue,white = LightsList[j].r*facteur,LightsList[j].g*facteur,LightsList[j].b*facteur,LightsList[j].w*facteur;
        --fibaro:call(LightsList[j].id, "setColor", red, green, blue, white);
        --Debug("red","[LightsFade] ["..LightsList[j].typ.." "..LightsList[j].id.."] R: "..red.." -  V: "..green.." - B: "..blue.." - W: "..white..", i);
      end -- Condition mod
    end -- Boucle device par device
    fibaro:sleep(TpsFade/100*60*1000);
  end -- Boucle 1->100
  Debug("purple", "[LightsFade] -> Fin de la fonction");
end

 

Posté(e)
il y a 57 minutes, pepite a dit :

Yeah ;-) ALLUME avant la boucle ;-) 

 

Merci au fait.

Avec plaisir! On continue :-)

Annule et remplace la fonction LightsFade par celle-ci :

local function LightsFade(Puissance, TpsFade)
  Debug("green", "[LightsFade] -> Début de la fonction");
  for i=1,100 do
    for j=1,#LightsList do
      if i == 50 then Debug("red", "Fibaro:call() OK"); fibaro:call(LightsList[j].id, "setColor", LightsList[j].r, LightsList[j].g, LightsList[j].b, LightsList[j].w); end
      if LightsList[j].typ ~= "Shutter" and ( LightsList[j].mode == "AND" or ( Soleil.Etat == 1 and LightsList[j].mode == "OR" and not SunState() ) ) then
        if LightsList[j].typ == "VD" then
          fibaro:call(LightsList[j].id, "setSlider", tostring(LightsList[j].slider), math.ceil(i*Puissance/100));
        elseif LightsList[j].typ == "Device" then
          fibaro:call(LightsList[j].id, "setValue", math.ceil(i*Puissance/100));
        end
        Debug("grey","[LightsFade] ["..LightsList[j].typ.." "..LightsList[j].id.."] Allumé à "..i.."% de la valeur prédéfinie ("..Puissance..")", i);
      elseif ( LightsList[j].typ == "Shutter" and LightsList[j].mode == "AND" ) or ( LightsList[j].typ == "Shutter" and Soleil.Etat == 1 and LightsList[j].mode == "OR" and SunState() ) then
        local Pas = math.ceil(100/LightsList[j].pas);
        if Pas < 2 then Pas = 2; elseif Pas > 20 then Pas = 20; end
        if i < 100 then
          for k=1,tonumber(LightsList[j].pas) do
            if k*Pas == i then
              fibaro:call(LightsList[j].id, "setValue", i);
              Debug("grey","[LightsFade] [Shutter "..LightsList[j].id.."] Ouvert à "..i.."%");
            end -- Condition vérification valeur k*Pas
          end -- Boucle Valeurs de pas
        else
          fibaro:call(LightsList[j].id, "setValue", 100);
          Debug("grey","[LightsFade] [Shutter "..LightsList[j].id.."] Ouvert à 100%");
        end -- i < 100
      elseif ( LightsList[j].typ == "RGBW" and LightsList[j].mode == "AND" ) or ( LightsList[j].typ == "RGBW" and Soleil.Etat == 1 and LightsList[j].mode == "OR" and SunState() ) then
        local facteur = math.floor(i*Puissance/10000);
        local red,green,blue,white = LightsList[j].r*facteur,LightsList[j].g*facteur,LightsList[j].b*facteur,LightsList[j].w*facteur;
        --fibaro:call(LightsList[j].id, "setColor", red, green, blue, white);
        --Debug("red","[LightsFade] ["..LightsList[j].typ.." "..LightsList[j].id.."] R: "..red.." -  V: "..green.." - B: "..blue.." - W: "..white..", i);
      end -- Condition mod
    end -- Boucle device par device
    fibaro:sleep(TpsFade/100*60*1000);
  end -- Boucle 1->100
  Debug("purple", "[LightsFade] -> Fin de la fonction");
end

 

×
×
  • Créer...