Aller au contenu

J3R3M

Membres confirmés
  • Compteur de contenus

    593
  • Inscription

  • Dernière visite

  • Jours gagnés

    8

Tout ce qui a été posté par J3R3M

  1. D'accord, merci de ta confirmation. On rencontre visiblement un bug de la HC2 sur la gestion de cette scène. On va essayer autre chose : supprime carrément la scène et recrées-en une nouvelle avec le code ci-dessus. Pense à modifier l'ID de la scène dans le VD.
  2. La scène en question est juste au-dessus et j'avais effectivement rajouté le math.floor() sur les valeurs. @Did, plusieurs choses : Il y a un problème, la scène que tu modifies ne doit pas être la bonne. As-tu plusieurs scènes comme celle-ci? Après plusieurs essais en rajoutant des DEBUG différents ou en changeant simplement leur texte, tes DEBUGs restent les mêmes! Essaie pour Sonos, mais j'ai testé moi-même sur une paire stéréo. Par contre, il ne faut utiliser qu'un seul VD pour la paire stéréo.
  3. Bonjour @Did, Je ne saisis pas ce qu'il se passe sur la partie Sonos. Tes enceintes sont-elles groupées ensemble dans le contrôleur? Si oui, tente de dégrouper toutes les enceintes et de recommencer. Concernant la lumière, je ne pige pas non plus... Les valeurs du DEBUG sont bonnes et on a vérifié précédemment avec @pepite qu'il y avait au moins l'allumage sur la valeur 100. Est-tu es certain de l'ID 20 de ton module RGBW? Si oui, peux-tu essayer de le démarrer depuis une scène quelconque avec simplement le code suivant : fibaro:call(20, "setColor", 0, 0, 0, 255); Je te laisse refaire un essai avec cette nouvelle scène, dont j'ai modifié le DEBUG pour avoir plus de détails sur ce qu'il se passe réellement dans les valeurs : -- -- Scène Réveil Paramétrable BETA -- -- Date : 18 Mars 2020 -- Auteur : J3R3M --
  4. Merci de ton retour @pepite! Au moins, ça s'allume chez toi J'ai une petite idée sur l'origine éventuelle de ce non-allumage. J'ai corrigé dans le script de la scène ci-dessus, si vous avez l'occasion de tester cela
  5. Ecoute là, ça m'épate. Je ne regarde que depuis le forum, alors je passe peut être à côté de quelque chose de flagrant... Si même sur Sonos ça merdouille désormais, c'est qu'il y a une subtilité que je n'ai pas suivie dans les mises à jour malheureusement. Ça risque d'être complexe à résoudre sans HC2 à disposition :/ On va essayer de comprendre ce qu'il se passe sur ce bandeau RGBW... Je ne comprends déjà pas pourquoi ma ligne de DEBUG supplémentaire ne s'affiche pas... Pour gagner du temps, n'hésite pas à changer le temps du fade depuis le VD (à 1 ou 2mn), afin de ne pas attendre autant Essayons à nouveau avec cette scène : -- -- Scène Réveil Paramétrable BETA -- -- Date : 13 Mars 2020 -- Auteur : J3R3M --
  6. @Did, remplace la scène complète par la suivante s'il-te-plaît. C'est très étrange, car visiblement ça fonctionnait pour @pepite alors que tu dis que ça ne fonctionne pas du tout pour toi pour le même module. Aussi, pour la gestion de SONOS, j'ai utilisé le script pendant des mois tel quel et je n'ai jamais eu le moindre problème, j'ai toujours eu un fondu parfait 0 -> Valeur paramétrée. Visiblement, soit on me fait une blague, soit il y a une petite mise à jour HC2 qui a mis le cirque là-dedans -- -- Scène Réveil Paramétrable BETA -- -- Date : 6 Mars 2020 -- Auteur : J3R3M --
  7. Tu veux dire qu'il n'y a pas eu de fondu, que le son était directement au volume 20 ? As-tu bien changé la fonction par celle que je t'ai donnée dans mon message d'hier? Il y a simplement une ligne de DEBUG en plus et elle n'apparaît pas du tout dans le tien, ce qui n'est pas tellement possible... Je te redonne la procédure afin de gagner du temps pour les tests : Programme un réveil quelconque depuis le VD, peu importe l'heure Va ensuite sur la scène et lance-la manuellement, sans attendre qu'elle soit lancée par le VD, la scène se lancera avec les paramètres renseignés Poste ensuite le DEBUG ici Poste également le début de la scène s'il-te-plaît, les réglages que tu as paramétré. Pour rappel, le fonction LightsFade() est à remplacer par celle-ci : Code supprimé
  8. Dans le réglage de la scène, sois vigilent à avoir désactivé la gestion du soleil levé/couché : -- Tableau Etat du soleil (pour gestion volets roulants) local Soleil = {Etat=0}; Et de bien être en mode "AND" sur ton entrée.
  9. Il doit y avoir du mélange là... Si tu es bien parti sur le script original, changer simplement la fonction devrait te faire exactement le même résultat, avec davantage de lignes de DEBUG Pour gagner du temps sur la recherche de problème, programme simplement un réveil Lun-Vend depuis le VD et lance ensuite manuellement la scène pour voir ce qu'il se passe, ça permet d'éviter une autre source éventuelle de problème
  10. @Did, le DEBUG que tu as posté dans ton premier message ne correspond pas à celui de la scène de mon premier message, mais plutôt à ceux des tests qu'on a fait ces derniers jours avec @pepite On se relance dans le DEBUG pour comprendre ce qu'il se passe alors Evidemment, je n'ai toujours aucune box ni aucun module domotique sous la main... Essaie de remplacer la fonction LightsFade() par celle-ci et poste le DEBUG, s'il-te-plaît : Code supprimé
  11. Salut @Did et merci de ton retour. Peux-tu retenter en limitant la scène à une seule instance s’il-te-plaît ?
  12. Hello, Tout fonctionne parfaitement du coup? Si tel est le cas, j'espère que tu es satisfait et que cette petite scène pourra t'être utile!
  13. Effectivement, c'est normal, c'est de ma faute! J'avais un peu oublié qu'il manquait un paramètre dans cette fonction Debug... Car on rentre bien dans la condition, sinon les informations sur le fade en cours ne se seraient pas affichées. Quel idiot suis-je... Repars sur la scène de base, retire simplement la fonction math.floor() de la variable facteur. C'est cet arrondi qui crée le zéro... Forcément, sur un pourcentage... La ligne de la fonction LightsFade : local facteur = math.floor(i*Puissance/10000); Devient simplement : local facteur = i*Puissance/10000; Ça devrait aller beaucoup mieux... Par contre, ça reste mystérieux, car tu avais essayé de mettre directement ta commande simple et ça n'avait pas fonctionné
  14. Le but est d'avoir quelque chose de fonctionnel, même un an plus tard xD Essayons cela maintenant. Reposte ensuite le DEBUG rouge s'il-te-plaît. Code supprimé
  15. 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
  16. Me revoici sur ordi, on est repartis! 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
  17. 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
  18. 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);
  19. 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!
  20. 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... Cela fait plusieurs mois que j'ai tout remballé, une mise à jour majeure aurait-elle vue le jour et aurait-elle pu provoquer cela ? Là, chacune des fonctions est lancée deux fois 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.
  21. @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
  22. 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 J'ai effectivement déménagé récemment et tout ce qui concerne la domotique est encore dans les cartons 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
  23. J'ai essayé de cette manière, notamment lorsque j'ai essayé plusieurs mètres lasers et qu'ils permettaient des mesures continues avec enregistrement des valeurs mini et maxi. Cependant, bien que cette méthode donne une indication certaine, elle est à peine plus précise que notre oeil, avec un peu d'entrainement. J'ai besoin d'indications relativement précises pour véritablement gagner du temps Si jamais le mur était accessible, je me contenterai d'utiliser un projecteur laser de ligne verticale à 90° de celui-ci, afin de simplement me placer sur cette ligne pour respecter mes contraintes, ça serait tellement simple!
  24. J'ai fait l'essai avec plusieurs télémètres "inclinomètres" et j'avais effectivement une mesure d'angle par rapport au sol. Ça donnait un niveau à bulles à affichage digital finalement On arriverait à nos fins en resortant les cours de Mathématiques, c'est certain. Le but d'un tel appareil serait de gagner du temps dans certaines phases de mon travail, malheureusement le reste de mes connaissances et le fait de devoir se poser sur une feuille m'en ferait plus perdre de temps qu'autre chose Ci-dessous, un schéma fait rapidement. Cela me semblait plus simple d'expliquer cela vue de dessus. Admettons que je l'appareil effectue la mesure au milieu de la croix de droite, il peut donc effectuer une rotation au niveau du point central de la croix : le point rouge. En fonction de cette rotation, les angles entre l'appareil de mesure et le mur vont varier. J'aimerais connaître ces angles. Pour moi, la finalité est de savoir exactement lorsque je suis à un angle de 90° du mur, tout en gardant à l'esprit qu'il n'est pas possible d'accéder à ce mur. De plus, si cet outil pouvait également afficher la distance qui me séparait de ce mur, ce serait parfait!
×
×
  • Créer...