Steven Posté(e) le 24 avril 2014 Signaler Posté(e) le 24 avril 2014 Ok j'ai parcouru les 1000 lignes de code. L'utilisateur met une heure que le Scheduler transforme pour faire un fibaro:sleep. Suffit de rechercher la fonction sleep dans son code. On lui met plein d'événements. Il recherche le plus proche en terme de délai et fait un sleep. Une fois l'événement terminé, il sleep jusqu'au prochain. C'est très bien car, contrairement àla plus part des autres, il ne vérifie pas toutes les minutes s'il doit faire quelque chose puisqu'il sait quand il doit le faire.
Shad Posté(e) le 24 avril 2014 Auteur Signaler Posté(e) le 24 avril 2014 Exactement, et donc àchaque reboot de la HC2 il cherche ou est-ce qu'il en était.
Fredric Posté(e) le 25 avril 2014 Signaler Posté(e) le 25 avril 2014 ok, donc j'ai ça maintenant, je suis au bon endroit? --<ADD YOUR LINES HERE IN POFILE SECTIONS> luaDaySchedule:add("Sunset","52", "On" , "", {"All"}, false , -30); luaDaySchedule:add("Sunrise","52", "Off" , "", {"All"}, false , 30); luaDaySchedule:add(getAlarm("alarmTime1"),"4", "" , "startScene", {"All"} ,false); Pourquoi il faut paramétrer une alarme? la je suis largué, le scheduler Control: il sert à quoi? c'est quoi le Active group avec summerNormal?? a quoi servent les vd alarme clok?
Shad Posté(e) le 25 avril 2014 Auteur Signaler Posté(e) le 25 avril 2014 C'est pour te gérer des alarmes, mais toi tu t'en fiches, faut juste configurer les paramètres pour que tu utilises la variable.
Fredric Posté(e) le 25 avril 2014 Signaler Posté(e) le 25 avril 2014 j'ai mis ça pour test, allumer une lampe: luaDaySchedule:add("02:42","182", "turnOn" , "call", {"all"} ,false) luaDaySchedule:add("Sunset","52", "On" , "", {"All"}, false , -30); luaDaySchedule:add("Sunrise","52", "Off" , "", {"All"}, false , 30); et il sort ça: [DEBUG] 02:53:11: Scheduler is intitialising. Loading with profile group SummerNormal. [DEBUG] 02:54:11: Initialise Alarm alarmTime1 in room Scheduler. [DEBUG] 02:54:11: Initialise Alarm alarmTime4 in room Scheduler. [DEBUG] 02:54:11: Initialise Alarm alarmTime2 in room Scheduler. [DEBUG] 02:54:11: Initialise Alarm alarmTime3 in room Scheduler. [ERROR] 02:54:11: line 637: attempt to index field '?' (a nil value)
Shad Posté(e) le 25 avril 2014 Auteur Signaler Posté(e) le 25 avril 2014 luaDaySchedule:add("02:42","182", "turnOn" , "call", {"All"} ,false) luaDaySchedule:add("Sunset","52", "On" , "call", {"All"}, false , -30); luaDaySchedule:add("Sunrise","52", "Off" , "call", {"All"}, false , 30);
Fredric Posté(e) le 25 avril 2014 Signaler Posté(e) le 25 avril 2014 (modifié) Voila, comme j'ai toujours la même erreur, je vais énumérer la procédure que j'ai faite et tu me diras ou j'ai fait une bêtise, en plus, ça servira aux autres qui sont intéressé par le Scheduler ; (si tu le veux bien ) J'ai commencé par télécharger le zip 131 en bas de ton tuto. à l'intérieur ce trouvent tous les fichiers dont on à besoin et qui sont énumérés ci-dessous. j'ai créé une pièce "Scheduler" pour tous centraliser, j'y ai incorporé tous les éléments que j'ai créé par la suite. J'ai créé une scène Lua et j'ai collé le code du fichier Scene-1 - ID 1 Scheduler.txt. j'ai importé le VD Alarm-Clock.vfib 4 fois et le VD Scheduler Control 1 fois. ce qui me donne 4 VD Alarm-Clock.vfib et 1 VD Scheduler Control. J'ai créé dans le panneau Variable de la HC2 les variable suivante: - scheduleGroup - scheduleActive - alarmTime1 - alarmTime2 - alarmTime3 - alarmTime4 - alarmDays1 - alarmDays2 - alarmDays3 - alarmDays4 J'ai créé ensuite une scène Lua que j'ai nommé "redémarrer" et j'ai copier le code suivant: --[[ %% properties %% globals --]] local scheduleScene = 66 while (fibaro:countScenes(scheduleScene) > 0) do fibaro:killScenes(scheduleScene); fibaro:debug("Kill") end; active = active or { Active = 1, Disabled = 2 } activeIndex = activeIndex or { [1] = "Active", [2] = "Disabled"} local scheduleActive = fibaro:getGlobalValue("scheduleActive") or activeIndex[1] if scheduleActive == activeIndex[1] then -- restart a new instance if active fibaro:startScene(scheduleScene) end j'ai mis l'ID de la scène du Schedule (la première scène créé) à la première ligne du code, elle à l'ID 66. Ensuite, dans la scène du scheduler, la première créé: j'ai mis à la ligne 96 l'ID de la scène "redémarrer" qui est ID 68 j'ai mis à la ligne 97 l'ID du VD Scheduler Control qui est ID 192 importé au début. J'ai mis aux lignes 98, 103, 108, et 113 les ID des quatre VD Alarm-Clock.vfib importé au début. ID 188, 189, 190 et 191 comme on peut le voir sur le morceau de code en dessous: local restartScene = 68 local controlDevide = 192 local alarmClocks = { alarmTime1 = {deviceID = 188, timeLabel = "ui.lblTime.value", timeGlobal = "alarmTime1", dayLabel = "ui.lblDays.value", dayGlobal = "alarmDays1"}, alarmTime2 = {deviceID = 189, timeLabel = "ui.lblTime.value", timeGlobal = "alarmTime2", dayLabel = "ui.lblDays.value", dayGlobal = "alarmDays2"}, alarmTime3 = {deviceID = 190, timeLabel = "ui.lblTime.value", timeGlobal = "alarmTime3", dayLabel = "ui.lblDays.value", dayGlobal = "alarmDays3"}, alarmTime4 = {deviceID = 191, timeLabel = "ui.lblTime.value", timeGlobal = "alarmTime4", dayLabel = "ui.lblDays.value", dayGlobal = "alarmDays4"} } Il faut aussi renseigner les variables dans chaque vd Alarm Clock,sur l'onglet "Avancé" et tout en bas du vd, en fait dans trois seulement, car le premier est comme l'image ci-dessous: il y a 4 vd, il suffit de mettre "alarmTime2" à la place de "alarmTime1" et "alarmDays2" à la place de "alarmDays1" et ainsi de suite dans les autres vd. "alarmDays3" et "alarmDays4"... et voila, j'ai bien entendu coché active les deux scène créé. La version 131 du scheduler a un bug qui à très vite était rectifier par @robmac sur le site officiel Fibaro. donc pour ceux qui utilise la version 131, il faut changer la ligne 463 de la scène de Scheduler: if reportRun then fibaro:debug( "fibaro:setSceneEnabled(" .. scene .. ",\"" .. enabled .. "\")" ) end par : if reportRun then fibaro:debug( "fibaro:setSceneEnabled(" .. scene .. ",\"" .. tostring(enabled) .. "\")" ) end pour pouvoir utiliser le paramètre : "setSceneEnabled" pour "activer" une scène, la ligne de commande dans le Scheduler est: luaDaySchedule:add("Sunset","52", true , "setSceneEnabled" , {"All"} ,true, -10) avec vos paramètre évidemment. Modifié le 5 mai 2014 par Fredric
Fredric Posté(e) le 25 avril 2014 Signaler Posté(e) le 25 avril 2014 hey!! c'est presque un tuto ça 1
Fredric Posté(e) le 25 avril 2014 Signaler Posté(e) le 25 avril 2014 Quelque Screenshots des vd et là , j'aimerai bien comprendre comment on les utilise.
Domodial Posté(e) le 25 avril 2014 Signaler Posté(e) le 25 avril 2014 C'est vrais que c'est presque un tuto, ça va m'aider a comprendre ! Dès que je rentre de vacance je m'y met
Shad Posté(e) le 25 avril 2014 Auteur Signaler Posté(e) le 25 avril 2014 Il te manque - alarmDays3 - alarmDays
Fredric Posté(e) le 25 avril 2014 Signaler Posté(e) le 25 avril 2014 ok, rectifier et rectifier également dans ma description en fait, il y a une petite erreur dans ton tuto: LES ALARMES: Pour configurer les alarmes, un fichier vfib est disponible dans le zip joint.A la ligne 92 du scheduler vous devez paramétrer les id de vos modules virtuels ainsi que l'id de la scene du redémarrage du scheduler (également fournie dans le zip). Dans chaque bouton du module virtuel vous devez également reconfigurer l'id de ce module virtuel.Et pour finir vous devez créer des variables globales pour alarmDays1 - alarmDays2 - alarmTime1- alarmTime2. Voici les lignes que vous devez ajoutez à votre scheduler: ce pourquoi je ne les avais pas créés. mais cela ne change pas l'erreur à la ligne 637, cette ligne là : if schedule[luaDaySchedule.days[d]][sTime] == nill then toujours la même erreur: [DEBUG] 15:28:25: Scheduler is intitialising. Loading with profile group SummerNormal. [DEBUG] 15:29:25: Initialise Alarm alarmTime1 in room Scheduler. [DEBUG] 15:29:25: Initialise Alarm alarmTime4 in room Scheduler. [DEBUG] 15:29:25: Initialise Alarm alarmTime2 in room Scheduler. [DEBUG] 15:29:25: Initialise Alarm alarmTime3 in room Scheduler. [ERROR] 15:29:25: line 637: attempt to index field '?' (a nil value) il charge avec le profile group SummerNormal, cela n'a pas d'incidence?
Shad Posté(e) le 25 avril 2014 Auteur Signaler Posté(e) le 25 avril 2014 Essaye comme sa, j'ai enlever les majuscule àALL pour All luaDaySchedule:add("12:05","182", "turnOn" , "call", {"All"} ,false)
Fredric Posté(e) le 25 avril 2014 Signaler Posté(e) le 25 avril 2014 y'a du mieux --<ADD YOUR LINES HERE IN POFILE SECTIONS> luaDaySchedule:add("17:37","182", "turnOn" , "call" , {"All"} ,false) plus d'erreur mais la lumière ne s'allume pas et la scène donne cela: [DEBUG] 17:36:49: Scheduler is intitialising. Loading with profile group SummerHoliday. [DEBUG] 17:37:49: Initialise Alarm alarmTime1 in room Scheduler. [DEBUG] 17:37:49: Initialise Alarm alarmTime4 in room Scheduler. [DEBUG] 17:37:49: Initialise Alarm alarmTime2 in room Scheduler. [DEBUG] 17:37:49: Initialise Alarm alarmTime3 in room Scheduler. [DEBUG] 17:37:49: Catching up actions. [DEBUG] 17:37:49: Pause for ZWave to initialise. [DEBUG] 17:38:49: Catching up finished. [DEBUG] 17:38:49: Next Run at 00:05:05 [DEBUG] 17:38:49: Correct by 44s error, [DEBUG] 17:38:49: Going to sleep for 387mins
Fredric Posté(e) le 25 avril 2014 Signaler Posté(e) le 25 avril 2014 j'ai refait un essai en lui laissant plus de temps, la premier, j'ai mis 17h37 alors qu'il était 17h36, je pense que c’était trop juste. Car là , alléluia , ça marche, je vient d'allumer mon premier périphérique avec le Scheduler......................
Fredric Posté(e) le 25 avril 2014 Signaler Posté(e) le 25 avril 2014 (modifié) Merci monsieur Shad , encore un fois tout n'est pas encore gagné, je pipe rien aux alarme et aux group SummerNormal, SummerHoliday,WinterNormal et WinterHoliday enfin, je ne comprends pas leur fonctionnement. et comme tu t'en doute, j'ai d'autre questions Le but initiale d'utilisation du Scheduler, c'est ma fameuse scène de fermeture des volets. Actuellement, elle fonctionne à l’exception qu'une fois les volets fermés, la scène est toujours active et si je ré-ouvre les volets, elle me les referme! donc, je vais essayer de faire activer cette scène 30 minute avant le couché du soleil et la désactiver 30 minutes après, de façon qu'elle soit active pendant une heure. Donc, a part la désactiver en la décochant dans l'onglet général, je ne touche pas au code? voila mon test: luaDaySchedule:add("Sunset","52", "On" , "", {"All"}, false , -15); --active la scène 15 minutes avant le couché du soleil. luaDaySchedule:add("Sunset","182", "turnOn" , "call" , {"All"} ,false , -15)--active la scène 15 minutes avant le couché du soleil. pour avoir un rendu visuel du fonctionnement de la scène. luaDaySchedule:add("Sunset","52", "Off" , "", {"All"}, false , 15);--coupe la scène 15 minutes après le couché du soleil. luaDaySchedule:add("Sunset","182", "turnOn" , "call" , {"All"} ,false , 15)--coupe la scène 15 minutes après le couché du soleil. toujours pour vérifier le test pour le moment, pas d'erreur Modifié le 25 avril 2014 par Fredric
Shad Posté(e) le 25 avril 2014 Auteur Signaler Posté(e) le 25 avril 2014 Pour les virtuals device Dans le code du scheduler si tu regarde bien tu as: --<ADD YOUR LINES HERE IN POFILE SECTIONS> if scheduleGroup == groupsIndex[1] then -- add lines here that only run for the SummerNormal elseif scheduleGroup == groupsIndex[2] then -- add lines here that only run for the SummerHoliday elseif scheduleGroup == groupsIndex[3] then -- add lines here that only run for the WinterNormal elseif scheduleGroup == groupsIndex[4] then -- add lines here that only run for the WinterHoliday end Ce qui te permet de mettre des lignes pour la saison que tu veux, en l'occurence été/hiver - Vacance/normal Et les alarmes, c'est par exemple pour te faire des réveils ou autre chose. Perso j'en ai modifier 2 pour ma piscine, La première heure de mise en marche et la seconde est modifier toutes les 30 minutes par rapport à la moyenne (relevé toute les 30min) de la température de la piscine. La pour ta scène faudra que je regarde mais je retrouve plus le poste Edit: Et pourquoi tu kil pas la scènes une fois les volets fermés.
Fredric Posté(e) le 25 avril 2014 Signaler Posté(e) le 25 avril 2014 ok pour les vd je mets une scène en gros, sans trigger qui démarre avec le paramétrage d'un des quatre VD. c'est plutôt facile en fait pour la scène, oui, c'est ce que je veux, la killer après exécution jusqu’au prochain démarrage, je pensé que off suffisait, il vaut mieux "Kil" ? --[[ %% properties 187 value %% globals JouretNuit --]] local startSource = fibaro:getSourceTrigger(); local windowscontrolrelay = {57, 65}; --si la nuit tombe et que les volets sont ouverts, meme peut ouverts et que le luminosité est à 40 lux if (tonumber(fibaro:getValue(187, "value")) <= 15) and ( fibaro:getGlobalValue("JouretNuit") == "Nuit") and ((tonumber(fibaro:getValue(57, "value")) > 0) or (tonumber(fibaro:getValue(65, "value")) > 0)) then for i =1, #windowscontrolrelay do if (tonumber(fibaro:getValue(windowscontrolrelay[i], "value")) > 0) then fibaro:call(windowscontrolrelay[i], "close"); end end fibaro:sleep(40*1000); --attente une minute pour attendre que les volets déscendent if ((tonumber(fibaro:getValue(57, "value")) == 0)) and ((tonumber(fibaro:getValue(65, "value")) == 0)) then --si les volets sont fermés fibaro:call(53, "sendDefinedPushNotification", "20"); fibaro:call(58, "sendDefinedPushNotification", "20"); elseif (tonumber(fibaro:getValue(57, "value")) > 0) then --si le volet salon est pas fermés fibaro:call(53, "sendDefinedPushNotification", "23"); fibaro:call(58, "sendDefinedPushNotification", "23"); elseif (tonumber(fibaro:getValue(65, "value")) > 0) then --si le volet cuisine est pas fermés fibaro:call(53, "sendDefinedPushNotification", "24"); fibaro:call(58, "sendDefinedPushNotification", "24"); end fibaro:debug("Volets fermés"); fibaro:sleep(60*1000); end
Fredric Posté(e) le 25 avril 2014 Signaler Posté(e) le 25 avril 2014 j'ai changé "off" par luaDaySchedule:add("Sunset","52", "killScenes" , "", {"All"}, false , 15); c'est presque l'heure
Fredric Posté(e) le 25 avril 2014 Signaler Posté(e) le 25 avril 2014 cela ne fonctionne pas, il y a un problème dans les code des ligne pour démarrer et stopper la scène 52
Shad Posté(e) le 25 avril 2014 Auteur Signaler Posté(e) le 25 avril 2014 Ha be oui, j'avais pas capter que c'était une scène Xd. luaDaySchedule:add("Sunset","52", "" , "startScene", {"All"}, false, -15); mdr Mais si tu veux tester tu peux faire luaDaySchedule:add("21:00","52", "" , "startScene", {"All"}, false);
Fredric Posté(e) le 25 avril 2014 Signaler Posté(e) le 25 avril 2014 luaDaySchedule:add("Sunset","52", "killScenes" , "", {"All"}, false , 15);
Fredric Posté(e) le 25 avril 2014 Signaler Posté(e) le 25 avril 2014 et pour la killer c'est bien ça?en fait, il me reste plus que connaitre les paramètre à mettre
Shad Posté(e) le 25 avril 2014 Auteur Signaler Posté(e) le 25 avril 2014 Oui je crois que c'est bien sa. Tu as tout les paramètres en exemples dans le script Alors ta vu c'est pas trop dur de l'installer ???
Fredric Posté(e) le 25 avril 2014 Signaler Posté(e) le 25 avril 2014 lol, oui, pas trop Et je pense que mon post et mes questions d'aujourd’hui et tes réponses vont en aider un grand nombres donc @FAB971 et @amonthet à vous...... j'ai extrait toutes les lignes exemple et je vais les étudier bon, à la pro scène Shad 2
Messages recommandés