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. Il manquait une ligne de déclaration de variable !! Le mode Fade=0 ne fonctionnait pas sans cette ligne. J'ai mis à jour la scène du premier post. Désolé!
  2. Désolé, je n’ai peut-être pas été très clair Je vais essayer de me rattraper Le réveil fonctionnera toujours sous le principe suivant : - Allumage Progressif Lights - Allumage Progessif Speakers Et ce, quelque soit l’heure du réveil, qu’il fasse jour ou non. Néanmoins, si tu souhaites agrémenter cette scène en fonction de la lumière extérieure, il suffit de rajouter un mode « jour » ou « nuit » pour les entrés du tableau Lightslist en question. Ainsi, les entrées où le mode « jour » est précisé ne seront traitées que s’il fait jour et inversement pour le mode « nuit ». Je précise que, sans aucun mode précisé, l’entrée s’allumera dans tous cas. Admettons que, dans la chambre, tu aies un volet roulant et un dimmer. Tu peux simplement simuler cette « aube » avec le dimmer et les volets roulants simultanément. -> Inutile de préciser un mode sur les entrées Tu peux aussi rendre la démarche plus « smart » en décidant que, s’il fait nuit dehors, seul l’allumage du dimmer a un intérêt, mais que les deux doivent s’activer quand il fait jour. -> Dimmer sans mode précisé ou « both » -> Volet Roulant en mode « jour » Autre option, tu souhaites qu’en fonction de l’état du soleil, soit le dimmer (nuit), soit le volet roulant (de jour donc, sinon peu d’intérêt je pense...) s’active. -> Dimmer en mode « nuit » -> Volet roulant en mode « jour » Voilà avec une situation simple et commune de pièce. Mais tu peux aussi cumuler avec d’autres modules et jouer avec les modes comme bon te semble, pour obtenir exactement ce que tu souhaites. Est-ce plus clair désormais?
  3. J'ai mis à jour le premier post avec la nouvelle version de la scène. J'ai commencé à donner des explications sur le fonctionnement de cette version... Je vais le faire en plusieurs fois je pense, pour être au maximum clair et précis
  4. En fait, oui et non. Celle qui faisait ça était un essai qui n'a pas été concluant, puisque le but était de pouvoir démarrer le programme et surtout de gérer son intensité, ce qui n'est visiblement pas possible. Désormais, il y a donc simplement une ligne type RGBW qui sera utile pour afficher une couleur qui aura la possibilité d'être variée en intensité. Alors que la ligne type Program démarrera simplement un programme à un moment souhaité de la variation de la lumière, sans possibilité de le faire varier en intensité, il s'agit uniquement d'un Start Ecoute, je pense que c'est bon. Je vais mettre à jour mon premier post et commencer à mettre à jour les explications. Il ne restera plus qu'à attendre que davantage de personnes utilisent cette scène et juger de l'efficacité avec le recul Enorme merci à toi @Did!
  5. Bien évidemment. J'espère bien que ce script finira carrément sur ta HC2 principale En mode classique, cela donnera une ligne de ce type : table.insert(LightsList, {typ="RGBW", id=20, r=0, g=100, b=0, w=255}); Alors que le mode programme donnera quelque chose du genre : table.insert(LightsList, {typ="Program", id=20, program=3, start=50});
  6. Quelle efficacité et rapidité! Si tu as la possibilité de tester pas mal de possibilités : Avec ou sans fade, VD, Volets Roulants, RGBW en mode classique et programme...
  7. Chers amis, voici une scène avec les modifications suivantes : Pour faciliter la compréhension, les modes utilisés peuvent être jour/day et nuit/night ainsi que Both/BOTH Si aucun mode n'est spécifié, le mode Both sera utilisé par défaut Si Temps Aube = 0mn : Toutes les entrées lights sont lancées au démarrage de la scène à la valeur paramétrée Si Temps Fade > 0 : Les entrées de type "program" et "VD" (VD d'actions sur bouton, sans slider) nécessitent le paramètre start pour indiquer à quel pourcentage de ce fade ce programme/bouton sera démarré/appuyé Quelques optimisations de code, création de variables pour limiter les appels répétés à des valeurs contenues dans un tableau, enrichissement du DEBUG J'ai tenu compte des tests effectués ces derniers jours, j'ai testé le script dans un compileur LUA et ai fait plusieurs essais, je n'ai pas réussi à le faire planter! Il y a beaucoup plus de vérifications afin d'afficher des DEBUG plutôt que des erreurs LUA. Bien évidemment, je précise que le but n'est surtout pas de trouver comment faire planter cette scène, parce qu'il doit bien rester des moyens @Did, normalement, ça devrait rouler... J'espère -- -- Scène Réveil Paramétrable v2.6 BETA -- -- Date : 23 Mars 2020 -- Auteur : J3R3M --
  8. Effectivement @Lazer, ça sera carrément plus clair. Comme le dit @Did, je suis parti sur un état du soleil et je n'ai pas cherché plus loin qu'un soleil levé ou couché. Je vais changer ça, puisque le but est que ça soit simple à configurer, sans se prendre la tête! Je redémarre sur la bonne partition et je m'en occupe! Merci de ces remarques
  9. Bon courage... J’en avais mis un en place pour du EnOcean... Je n’ai jamais réussi à en faire ce que je voulais
  10. Effectivement, j’y compte bien! il risque d’y avoir une prochaine version beta car je vais refaire des modifs... mais si cette beta fonctionne, elle risque de se transformer très rapidement en version 2 stable!
  11. @Did, admettons que tu aies deux entrées dans LightsList : un Roller Shutter et un F-RGBW. Si tu souhaites que le F-RGBW ne s’allume que s’il fait encore nuit, mais que ça soit le Roller Shutter qui s’ouvre s’il fait jour : - F-RGBW en mode « down » - Roller Shutter en mode « up » Si tu souhaites que le F-RGBW s’allume dans tous les cas, mais que le Roller Shutter ne s’ouvre que s’il fait jour : - F-RGBW en mode « both » - Roller Shutter en mode « up » Si tu souhaites que le F-RGBW ne s’allume que s’il fait jour, mais que ça soit le Roller Shutter qui s’ouvre s’il fait nuit (intérêt très limité, mais c’est possible!) : - F-RGBW en mode « up » - Roller Shutter en mode « down » Si tu souhaites que les F-RGBW et Roller Shutter s’ouvrent dans tous les cas, jours et nuits : - F-RGBW en mode « both » - Roller Shutter en mode « both » C’est vraiment à la carte
  12. Ah si, tout-à-fait. La scène se contente uniquement de détecter quand il fait jour afin d’agir sur les bons éléments (VD, Modules RGBW, Dimmer...) Mais le réglage de ces éléments, notamment quand ils doivent s’allumer (seulement en cas de jour, seulement en cas de nuit, ou dans tous les cas) est paramétré par chaque utilisateur dans les réglages de début de scène La scène ne prend aucune décision par elle-même, elle applique seulement les réglages paramétrés, en ayant « l’intelligence » de savoir s’il fait jour ou non, afin de satisfaire uniquement la volonté des utilisateurs
  13. Demain, je ferai encore quelques petites modifications pour s’adapter aux résultats des tests de @Did concernant les programmes. Et on devrait arriver très rapidement à une nouvelle version sur le premier avec un nouveau descriptif complet. Cette nouvelle version sera totalement compatible avec le VD déjà installé, il faudra simplement copier/coller les lignes de réglage du début du script. il y aura aussi un peu d’adaptation sur les modes puisque les valeurs de ceux-ci ont changé de AND/OR à BOTH/UP/DOWN. Merci encore de ces précisions! C’est donc pour cela que l’on a pas la main sur l’intensité, puisqu’elle a déjà été enregistrée lors de la création du programme. Je vais adapter la scène pour que le programme RGBW puisse être lance directement juste avant l’allumage des enceintes Avec grand plaisir! Encore une fois merci à toi de tous ces essais en cette période loin d’une HC2 pour moi... Et merci d’avoir également testé ce fondu. Cela faisait longtemps qu’on n’avait pas vu de scène aller jusqu’au bout, tiens Effectivement, les entrées en mode « up » et « down » sont lancées - ou non - en fonction de la lumière du jour ( calculé automatiquement en fonction du lever / coucher du soleil). Très exactement, le temps de « jour » est calculé à h+1h, en mode « jour aéronautique ». Le but étant de ne pas considérer qu’il fait jour alors que le soleil vient à peine de pointer le bout de son nez et qu’il va faire nuit encore quasiment 1h, pour le lever du soleil. À l’inverse, quand le soleil est couché, il fait jour encore pendant environ une heure
  14. Ouiiiiiii Oui, c'est exactement pour cela! Si tu souhaites que ça se déclenche à chaque fois, ne saisis pas de mode ou spécifie-le sur "both" Il y a juste un problème minime dans l'affichage du debug de SpeakersFade : Le pourcentage ne prend pas en compte le delta que l'on a rajouté pour que le son démarre, non pas à zéro mais à une valeur définie... Je verrai cela demain je pense, car ça ne change en rien le fonctionnement du script, c'est simplement un calcul à ajuster Il semblerait qu'un programme ne soit pas censé être dimmable... Et donc la moindre commande de modulation relancerait les paramètres RGBW précédents. Je vais voir pour creuser un peu, demander confirmation aux professionnels Fibaro et ajusterai cette version très prochainement alors! Je vais très prochainement pouvoir proposer une version définitive et stable
  15. AAAAAarrrrgh, le logiciel que j'ai téléchargé fait des suggestions de code LUA par anticipation et j'ai dû valider par inadvertance à un moment. Sincèrement désolé... Cette fois, j'ai pris le temps de tester la scène complète (hors fonctions Fibaro), je n'ai aucune erreur en retour, la scène se déroule entièrement. Sachant qu'on a pas mal avancé ensemble dans les bugs rencontrés avec les fonctions Fibaro, j'ai bon espoir qu'on arrive au terme de tous ces tests! Merci encore @Did! -- -- Scène Réveil Paramétrable v2.5 BETA -- -- Date : 22 Mars 2020 -- Auteur : J3R3M -- -- Code de la Chambre correspondant à la Variable Globale créée local PIECE = "CHAMBRE"; -- Volume à partir duquel démmarrera le Fade-in sur les enceintes local StartVolume = 15; -- Tableaux qui seront exploités LightsList, SpeakerAction = {},{}; -- Liste des devices à traiter pour la simulation d'aube --table.insert(LightsList, {typ="Shutter", mode="both", id=279, pas=6}); --table.insert(LightsList, {typ="Device", mode="both", id=27}); --table.insert(LightsList, {typ="VD", mode="both", id=44, slider=10, btn=16}); table.insert(LightsList, {typ="VD", mode="both", id=18, btn=4}); --table.insert(LightsList, {typ="RGBW", mode="down", id=20, r=0, g=100, b=0, w=255}); --table.insert(LightsList, {typ="Program", mode="up", id=20, program=3}); -- Liste des actions à effectuer sur les enceintes table.insert(SpeakerAction, {id=15, slider=15}); table.insert(SpeakerAction, {id=15, btn=7}); -- DEBUG local debug = 1; local tempo = 1; -- seconde local DayLightDelay = 60; -- minutes local VolDiffMin = 5; -- % -- Cette scène doit uniquement être lancée depuis le VD et une seule fois if fibaro:getSourceTrigger() == 'autostart' or fibaro:countScenes() > 1 then fibaro:abort(); end local function Debug(color,message,tour) tour = tour or 25; if debug == 1 and message ~= nil and ( tour == 25 or tour == 50 or tour == 75 or tour == 100 ) then fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")); end end local function SunState() if ( os.date("%H:%M", os.time()-DayLightDelay*60) >= fibaro:getValue(1, "sunriseHour") ) and ( os.date("%H:%M", os.time()-DayLightDelay*60) < fibaro:getValue(1, "sunsetHour") ) then return true; else return false; end end -- Transfert des différentes valeurs dans des variables local TotalLights, TotalSpeakers, SunIsUp = #LightsList, #SpeakerAction, SunState(); -- Debug début de script avec informations Debug("white", "Démarrage de la scène... "..TotalLights.." entrée(s) Lights et "..TotalSpeakers.." entrée(s) Speakers à traiter"); if SunIsUp then Debug("yellow", "Il fait jour! Seules les entrées en mode 'both' et 'up' seront traitées"); else Debug("blue", "Il fait nuit! Seules les entrées en mode 'both' et 'down' seront traitées"); end -- Lights / Shutters Management local function LightsBtn(Puissance) Debug("green", "[LightsBtn] -> Début de la fonction"); for i=1,TotalLights do if LightsList[i].mode == "both" or LightsList[i].mode == nil or ( LightsList[i].mode == "up" and SunIsUp ) or ( LightsList[i].mode == "down" and not SunIsUp ) then if LightsList[i].typ == "VD" and LightsList[i].btn ~= nil then fibaro:call(LightsList[i].id, "pressButton", tostring(LightsList[i].btn)); Debug("grey", "[LightsBtn] [VD "..LightsList[i].id.."] Le bouton "..LightsList[i].btn.." a été appuyé"); elseif LightsList[i].typ == "Program" and LightsList[i].program ~= nil then fibaro:call(LightsList[i].id, "startProgram", tostring(LightsList[i].program)); fibaro:call(LightsList[i].id, "setValue", "1"); Debug("grey", "[LightsBtn] [Device "..LightsList[i].id.."] Le programme "..LightsList[i].program.." a été démarré à 1%"); else Debug("grey", "[LightsBtn] ["..LightsList[i].typ.." "..LightsList[i].id.."] Pas d'action à effectuer pour cette entrée"); end -- Condition traitement else Debug("grey", "[LightsBtn] ["..LightsList[i].typ.." "..LightsList[i].id.."] Aucune action car le mode est "..LightsList[i].mode..""); end fibaro:sleep(tempo*1000); end -- Boucle entrée par entrée Debug("purple", "[LightsBtn] -> Fin de la fonction"); end local function LightsFade(Puissance, TpsFade) Debug("green", "[LightsFade] -> Début de la fonction"); if tonumber(TpsFade) > 0 then Debug("yellow","[LightsFade] Durée d'allumage prévue : "..TpsFade.."mn"); for i=1,100 do for j=1,TotalLights do if LightsList[j].typ ~= "Shutter" and ( LightsList[j].mode == "both" or LightsList[j].mode == nil or ( LightsList[j].mode == "up" and SunIsUp ) or ( LightsList[j].mode == "down" and not SunIsUp ) ) then if LightsList[j].typ == "VD" and LightsList[j].slider ~= nil then fibaro:call(LightsList[j].id, "setSlider", tostring(LightsList[j].slider), math.ceil(i*Puissance/100)); Debug("grey","[LightsFade] [VD "..LightsList[j].id.."] [Puissance réglée: "..Puissance.."] Allumage en cours... "..i.."%", i); elseif LightsList[j].typ == "Device" then fibaro:call(LightsList[j].id, "setValue", math.ceil(i*Puissance/100)); Debug("grey","[LightsFade] [Device "..LightsList[j].id.."] [Puissance réglée: "..Puissance.."] Allumage en cours... "..i.."%", i); elseif LightsList[j].typ == "Program" then fibaro:call(LightsList[j].id, "setValue", math.ceil(i*Puissance/100)); Debug("grey","[LightsFade] [Device "..LightsList[j].id.."] [Puissance réglée: "..Puissance.."] Allumage du programme en cours... "..i.."%", i); elseif LightsList[j].typ == "RGBW" then local facteur = i*Puissance/10000; local red,green,blue,white = math.floor(LightsList[j].r*facteur),math.floor(LightsList[j].g*facteur),math.floor(LightsList[j].b*facteur),math.floor(LightsList[j].w*facteur); fibaro:call(LightsList[j].id, "setColor", red, green, blue, white); Debug("grey","[LightsFade] [RGBW "..LightsList[j].id.."] [Puissance réglée: "..Puissance.."] ["..i.."%] Facteur:"..facteur.." R:"..red.." G:"..green.." B:"..blue.." W:"..white, i); elseif i == 1 then Debug("orange","[LightsFade] Rien à effectuer sur l'entrée "..j.." de LightsList"); end elseif LightsList[j].typ == "Shutter" and ( LightsList[j].mode == "both" or LightsList[j].mode == nil or ( LightsList[j].mode == "up" and SunIsUp ) or ( LightsList[j].mode == "down" and not SunIsUp ) ) then local Pas, CountPas = LightsList[j].pas, 1; if Pas < 2 then Pas = 2; elseif Pas > 20 then Pas = 20; end local CalculPas = math.ceil(100/Pas); if i < 100 then for k=CalculPas,100,CalculPas do if k == i then fibaro:call(LightsList[j].id, "setValue", i); Debug("grey","[LightsFade] [Shutter "..LightsList[j].id.."] [Pas "..CountPas.." / "..Pas.."] Volet roulant ouvert à "..i.."%"); end -- Condition vérification valeur k==i CountPas=CountPas+1; end -- Boucle Valeurs de Pas else fibaro:call(LightsList[j].id, "setValue", 100); Debug("grey","[LightsFade] [Shutter "..LightsList[j].id.."] [Pas "..Pas.." / "..Pas.."] Volet roulant ouvert à 100%"); end -- i < 100 end -- Condition modes end -- Boucle device par device fibaro:sleep(TpsFade/100*60*1000); end -- Boucle 1->100 else -- Début - Si aucun fade Debug("yellow","[LightsFade] Temps d'aube nul : allumage direct des éléments de LightsList"); for j=1,TotalLights do if LightsList[j].typ ~= "Shutter" and ( LightsList[j].mode == "both" or LightsList[j].mode == nil or ( LightsList[j].mode == "up" and SunIsUp ) or ( LightsList[j].mode == "down" and not SunIsUp ) ) then if LightsList[j].typ == "VD" and LightsList[j].slider ~= nil then fibaro:call(LightsList[j].id, "setSlider", tostring(LightsList[j].slider), Puissance); Debug("grey","[LightsFade] [VD "..LightsList[j].id.."] [Puissance réglée: "..Puissance.."] VD allumé directement !"); elseif LightsList[j].typ == "Device" then fibaro:call(LightsList[j].id, "setValue", Puissance); Debug("grey","[LightsFade] [Device "..LightsList[j].id.."] [Puissance réglée: "..Puissance.."] Device allumé directement !"); elseif LightsList[j].typ == "Program" then fibaro:call(LightsList[j].id, "setValue", Puissance); Debug("grey","[LightsFade] [Device "..LightsList[j].id.."] [Puissance réglée: "..Puissance.."] Programme lancé directement !"); elseif LightsList[j].typ == "RGBW" then 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); Debug("grey","[LightsFade] [RGBW "..LightsList[j].id.."] [Puissance réglée: "..Puissance.."] Device RGBW allumé directement ! R:"..red.." G:"..green.." B:"..blue.." W:"..white, i); else Debug("orange", "[LightsFade] Rien à effectuer sur l'entrée "..j.." de LightsList"); end elseif LightsList[j].typ == "Shutter" and ( LightsList[j].mode == "both" or LightsList[j].mode == nil or ( LightsList[j].mode == "up" and SunIsUp ) or ( LightsList[j].mode == "down" and not SunIsUp ) ) then fibaro:call(LightsList[j].id, "setValue", 100); Debug("grey","[LightsFade] [Shutter "..LightsList[j].id.."] Ouvert directement à 100% !"); end -- Condition modes end -- Boucle device par device end -- Condition TpsFade > 0 Debug("purple", "[LightsFade] -> Fin de la fonction"); end -- Speakers Management local function SpeakersAction(VolMax) Debug("green", "[SpeakersAction] -> Début de la fonction"); if tonumber(VolMax) <= tonumber(StartVolume) then Debug("orange", "[SpeakersAction] Incohérence !! StartVolume = "..StartVolume.." & VolMax = "..VolMax..""); VolMax = StartVolume + VolDiffMin; end if TotalSpeakers > 0 then for i=1,TotalSpeakers do if tonumber(SpeakerAction[i].slider) ~= nil then fibaro:call(SpeakerAction[i].id, "setSlider", tostring(SpeakerAction[i].slider), tostring(StartVolume)); Debug("grey", "[SpeakersAction] [VD "..SpeakerAction[i].id.."] Le slider "..SpeakerAction[i].slider.." est à "..StartVolume.." %."); fibaro:sleep(tempo*1000); elseif tonumber(SpeakerAction[i].btn) ~= nil then fibaro:call(SpeakerAction[i].id, "pressButton", tostring(SpeakerAction[i].btn)); Debug("grey", "[SpeakersAction] [VD "..SpeakerAction[i].id.."] Le bouton "..SpeakerAction[i].btn.." a été appuyé"); fibaro:sleep(tempo*1000); else Debug("orange", "[SpeakersAction] [VD "..SpeakerAction[i].id.."] Erreur : Ni bouton, ni slider configuré pour ce VD"); fibaro:sleep(tempo*1000); end end else Debug("yellow","Aucune enceinte à traiter dans cette fonction"); end Debug("purple", "[SpeakersAction] -> Fin de la fonction"); end local function SpeakersFade(VolMax,TpsFade) Debug("green", "[SpeakersFade] -> Début de la fonction"); if tonumber(VolMax) <= tonumber(StartVolume) then Debug("orange", "[SpeakersFade] Incohérence !! StartVolume = "..StartVolume.." & VolMax = "..VolMax..""); VolMax = StartVolume + VolDiffMin; end if TotalSpeakers > 0 then for i=StartVolume,VolMax do for j=1,TotalSpeakers do if tonumber(SpeakerAction[j].slider) ~= nil then fibaro:call(SpeakerAction[j].id, "setSlider", tostring(SpeakerAction[j].slider), i); local Pourcentage = math.floor(i*100/VolMax); Debug("grey", "[SpeakersFade] [VD "..SpeakerAction[j].id.."] [Slider "..SpeakerAction[j].slider.."] Fade-In en cours... "..Pourcentage.."% ("..i.." / "..VolMax..")", Pourcentage); end -- Condition y'a-t'il un slider ? end -- Boucle entrée par entrée fibaro:sleep(math.floor(TpsFade/VolMax*1000)); end -- Boucle envoi volume else Debug("yellow","Aucune enceinte à traiter dans cette fonction"); end -- Check nb enceintes Debug("purple", "[SpeakersFade] -> Fin de la fonction"); end -- Fonction Principale local TableReveil = json.decode(fibaro:getGlobalValue("REVEIL_"..PIECE)); local function reveil(LightsPower,LightsTps,SpeakersPower,SpeakersTps) LightsBtn(LightsPower); LightsFade(LightsPower,LightsTps); SpeakersAction(SpeakersPower); 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!");
  16. Décidément... Des comparaisons simples qui se fonctionnent plus... Mais bon, on arrive quasiment au bout de la scène maintenant... La scène suivante devrait remédier à ces nouveaux bug Dans le doute, je t'incite à nouveau à repasser par l'enregistrement d'une scène vide avant de copier celle-ci afin qu'elle soit bien prise en compte -- -- Scène Réveil Paramétrable v2.4 BETA -- -- Date : 22 Mars 2020 -- Auteur : J3R3M --
  17. Alors là... C’est exactement ce que j’ai modifié juste avant, sauf que c’est corrigé cette fois... Également, le premier message de DEBUG « Démarrage en cours... » ne correspond pas à celui de la dernière version de la scène. Je suppose que oui, mais à tout hasard, as-tu fait un simple copier/coller de toute la scène ou en as-tu copié qu’une partie? Dans le doute, tu peux tenter d’effacer complètement cette scène et l’enregistrer vide ensuite, avant de retenter d’y coller à nouveau le code entier. Si le résultat est similaire, je pense qu’il faudrait retenter carrément la nouvelle scène... Merci encore beaucoup !
  18. Bon, j'espère que ça sera bon pour cette fois-ci... Ça commence à être frustrant ces erreurs à la chaîne Et ça doit être embêtant pour toi de cumuler ces tests cher @Did... Merci encore pour ces tests et cette patience! -- -- Scène Réveil Paramétrable v2.3 BETA -- -- Date : 21 Mars 2020 -- Auteur : J3R3M --
  19. Merci de ton retour. J’ai ciblé le problème, il semblerait que je n’ai pas enregistré certaines modifications... Car ça je l’avais bien changé Je re-refais une version dans les prochaines minutes
  20. Ce genre de panne éventuelle de saisie n'est pas censée se reproduire avec la nouvelle version du script. En espérant qu'il fonctionne suite à la modification de la fonction SunState par celle-ci: local function SunState() if ( os.date("%H:%M", os.time()-DayLightDelay*60) >= fibaro:getValue(1, "sunriseHour") ) and ( os.date("%H:%M", os.time()-DayLightDelay*60) < fibaro:getValue(1, "sunsetHour") ) then return true; else return false; end end Tu me rediras si jamais tu as une énième occasion de tester cela par la suite
  21. Merci de ton retour rapide! Cette erreur signifie normalement qu'un champ est manquant dans l'entrée traitée. Tu avais testé directement la ligne VD, sans mettre le champ slider peut être ? Ça aussi, c'est épatant, après vérification, la ligne en question a l'air bonne! Même testée directement dans un compileur LUA, je n'ai pas de retour... Peut être une subtilité du compileur Fibaro que je ne comprends pas ? On peut essayer de modifier la fonction SunState() ainsi (j'ai simplement rajouté 4 parenthèses inutiles) : local function SunState() if ( os.date("%H:%M", os.time()-DayLightDelay*60) >= fibaro:getValue(1, "sunriseHour") ) and ( os.date("%H:%M", os.time()-DayLightDelay*60) < fibaro:getValue(1, "sunsetHour") ) then return true; else return false; end end
  22. Bon, j'ai effectué les deux modifications dont je parlais hier. Je pensais que ça serait plus long à mettre en place. Voici donc une nouvelle version. Normalement, tout est fonctionnel, mais reste à tester ce qui est purement Fibaro : Le comportement sur une entrée de type Program : allumage et fade propres ? La gestion autonome du lever/coucher du soleil -- -- Scène Réveil Paramétrable v2.2 BETA -- -- Date : 21 Mars 2020 -- Auteur : J3R3M --
  23. Si tu as l'occasion de tester la ligne Programme par la suite, ça serait top, histoire de voir comment ça réagit. Alors cette erreur m'épate! C'est marrant, car le numéro des lignes ne correspond à rien chez moi... Ecoute, tu peux essayer de remplacer la ligne 125 : if TpsFade > 0 then Par celle-ci : if tonumber(TpsFade) > 0 then Mais la valeur de cette variable a toujours été numérique La scène plante sur la fonction LightsFade, visiblement lors de la vérification de la valeur de la durée du fade... C'est exactement ça! Le réveil ne se désactive que si la scène se déroule entièrement. Le reset ne s'effectue que si la ligne "Fin de la scène. Debout maintenant!" s'affiche dans le DEBUG
  24. Ça sera beaucoup plus simple que ça Je me suis rendu compte que les "AND" et "OR" pouvaient vite faire mal à la tête et demander à réfléchir. Aussi, à force de rajouter des options à la volée, ça commençait à faire trop d'ajouts sur les ajouts... Le code est plus propre, avec quelques ajouts par-ci, par-là. Par exemple, c'est désormais possible de demander l'appui sur un bouton de VD, sans préciser de slider. Si la durée de l'aube est paramétrée sur 0 dans le VD, il n'y aura plus de bug et les éléments de LightsList seront directement mis à leur valeur haute. Il y a notamment la partie typ="Program" qui demande à être testée pour le moment... Concernant Both, Up et Down, ça sera simplement pour indiquer quand cette entrée (Device, Dimmer, VD, RGBW et donc programme si ça fonctionne ?) devra ou non être active à l'activation de la scène : Up : quand le soleil est levé Down : Quand le soleil est couché Both : Dans tous les cas Chacun paramètrera ce qu'il préfèrera à la carte en fonction de ce qu'il souhaite, sans être bridé par une logique imposée par le script original. Améliorations à venir : - Gestion autonome possible des informations soleil levé et couché, sans avoir la nécessité d'une VG - Si aucun mode précisé, détection automatique du mode Both - D'autres bricoles, ça vient et ça repart, faut que je note ou applique au fur-et-à-mesure
  25. -- -- Scène Réveil Paramétrable v2.1 BETA -- -- Date : 20 Mars 2020 -- Auteur : J3R3M -- Bon, j'y ai finalement passé mon après-midi, mais j'ai comme l'impression qu'une version 2 se profile rapidement, qui sera plus sécurisée et surtout plus simple à mettre en place. Aussi, plus simple à comprendre avec les modes "AND" et "OR" qui laisseront place à des actions en rapport directement avec le soleil! @Did @pepite, si vous avez l'occasion de tester ça en cette période de confinement et de moments en famille
×
×
  • Créer...