Aller au contenu
J3R3M

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

Recommended Posts

Je vous confirme le code du RGB, c'est bien cela. fibaro:call(id,r,g,b,w)

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites
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

Partager ce message


Lien à poster
Partager sur d’autres sites
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

Partager ce message


Lien à poster
Partager sur d’autres sites

non désolé, je ne fais pas du tout de domotique en ce moment.

Faut que je m'y remette... Je te tiens au courant :)

Partager ce message


Lien à poster
Partager sur d’autres sites

 Moi aussi, j'installerais ton VD @J3R3M mais je n'ai pas encore eu le temps.

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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:

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Nickel merci de ton retour

Envoyé de mon BND-L21 en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites
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.

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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 :)

Partager ce message


Lien à poster
Partager sur d’autres sites

@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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

 

Partager ce message


Lien à poster
Partager sur d’autres sites
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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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


     

Partager ce message


Lien à poster
Partager sur d’autres sites

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!

Partager ce message


Lien à poster
Partager sur d’autres sites

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

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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 ?

Partager ce message


Lien à poster
Partager sur d’autres sites
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

Partager ce message


Lien à poster
Partager sur d’autres sites

OK oui j'avais pas suivi que tu voulais testé avec les variables, au temps pour moi ;-)

 

Ca s'allume ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

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

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Yeah ;-) ALLUME avant la boucle ;-)

 

Merci au fait.

Partager ce message


Lien à poster
Partager sur d’autres sites
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

 

Partager ce message


Lien à poster
Partager sur d’autres sites

×