pepite Posté(e) le 1 mars 2016 Auteur Signaler Posté(e) le 1 mars 2016 heuuu à priori, après recherche, faute d'aurtografes ;-) C'est "setTimeout", le 2eme T en majuscule lol --[[ %% properties 208 value %% globals --]] ------ User settings ----- local id_RGBs = {239, 545} local ProgRGB = 546 --------------- local currentdate = os.date("%d/%m/%Y %H:%M:%S") fibaro:debug("Démarrage du script : " ..currentdate) -- fonction split ---- function split(s, pattern, maxsplit) local pattern = pattern or ' ' local maxsplit = maxsplit or -1 local s = s local t = {} local patsz = #pattern while maxsplit ~= 0 do local curpos = 1 local found = string.find(s, pattern) if found ~= nil then table.insert(t, string.sub(s, curpos, found - 1)) curpos = found + patsz s = string.sub(s, curpos) else table.insert(t, string.sub(s, curpos)) break end maxsplit = maxsplit - 1 if maxsplit == 0 then table.insert(t, string.sub(s, curpos - patsz - 1)) end end return t end ---------- --------------function GetPutValueRGB---- function GetPutValueRGBs(id) for i = 1, #id_RGBs do -- Recup Couleur et programme des RGBs local result = split(fibaro:getValue(id_RGBs[i], "color"), ',') local Prog = tonumber(fibaro:getValue(id_RGBs[i], "currentProgramID")) -- Debug valeur result et prog fibaro:debug("RGB num : " ..id_RGBs[i].. " avec Couleur : " ..result[1]..","..result[2]..","..result[3]..","..result[4]) fibaro:debug("RGB num " ..id_RGBs[i].. " sur le Programme " ..Prog) setTimeout( function() fibaro:debug("Remise valeur précédente des RGBs") if ((result[1] == "0" and result[2] == "0" and result[3] == "0" and result[4] == "0") and (tonumber(Prog) > 0)) then fibaro:call(id_RGBs[i], "startProgram", Prog) fibaro:debug("Prog " ..Prog.. " sur " ..id_RGBs[i]) else fibaro:call(id_RGBs[i], "setColor", result[1], result[2], result[3], result[4]) fibaro:debug("Couleur sur : " ..id_RGBs[i]) end end, 15000) --tempo 15 secs end end ---------- function PutAlerteRGBs(id) for i = 1, #id_RGBs do -- SI activation cellule 208, demarrage des RGB sur le programme ProgRGB fibaro:debug("Mise des RGBs sur Programme : " ..ProgRGB) fibaro:call(id_RGBs[i], "startProgram", ProgRGB) end end ------------- GetPutValueRGBs() PutAlerteRGBs()
pepite Posté(e) le 1 mars 2016 Auteur Signaler Posté(e) le 1 mars 2016 salut @mprinfo heuuu ben faut voir, le pauvre @did teste tous mes codes avec toutes les erreurs :P 1
mprinfo Posté(e) le 1 mars 2016 Signaler Posté(e) le 1 mars 2016 cela l'occupe et évite qu'il dise du mal de moi 1
Did Posté(e) le 1 mars 2016 Signaler Posté(e) le 1 mars 2016 Salut @mprinfo, Tu n'est pas dehors aujourd'hui?
mprinfo Posté(e) le 1 mars 2016 Signaler Posté(e) le 1 mars 2016 Non pas aujourd'hui. J'avais pas mal de choses a faire donc je me serai bien passé
Did Posté(e) le 1 mars 2016 Signaler Posté(e) le 1 mars 2016 Rien de grave j'espère? @pepite, toujours prêt. Cette fois, avec un bandeau allumé et un éteint, les deux passent en prog 546 puis, après la pause, rebascule sur le prog d'origine pour l'un et s'éteint pour l'autre mais une seule petite seconde et reprennent en cœur le prog 546 et ne s'arrêtent pas. [DEBUG] 17:31:27: Démarrage du script : 01/03/2016 17:31:27 [DEBUG] 17:31:27: RGB num : 239 avec Couleur : 0,0,0,0 [DEBUG] 17:31:27: RGB num 239 sur le Programme 6 [DEBUG] 17:31:27: RGB num : 545 avec Couleur : 0,0,0,0 [DEBUG] 17:31:27: RGB num 545 sur le Programme 0 [DEBUG] 17:31:27: Mise des RGBs sur Programme : 546 [DEBUG] 17:31:27: Mise des RGBs sur Programme : 546 [DEBUG] 17:31:28: Démarrage du script : 01/03/2016 17:31:28 [DEBUG] 17:31:28: RGB num : 239 avec Couleur : 0,0,0,0 [DEBUG] 17:31:28: RGB num 239 sur le Programme 546 [DEBUG] 17:31:28: RGB num : 545 avec Couleur : 0,0,0,0 [DEBUG] 17:31:28: RGB num 545 sur le Programme 546 [DEBUG] 17:31:28: Mise des RGBs sur Programme : 546 [DEBUG] 17:31:28: Mise des RGBs sur Programme : 546 [DEBUG] 17:31:42: Remise valeur précédente des RGBs [DEBUG] 17:31:42: Prog 6 sur 239 [DEBUG] 17:31:42: Remise valeur précédente des RGBs [DEBUG] 17:31:42: Couleur sur : 545 [DEBUG] 17:31:43: Remise valeur précédente des RGBs [DEBUG] 17:31:43: Prog 546 sur 239 [DEBUG] 17:31:43: Remise valeur précédente des RGBs [DEBUG] 17:31:43: Prog 546 sur 545
pepite Posté(e) le 2 mars 2016 Auteur Signaler Posté(e) le 2 mars 2016 Bonjour, ah oui rien de grave @mprinfo ? courage @did, donc cela fonctionne avec le setTimeout pour les 15 secs, on y est presque. heuuu, alors 2 bugs : 1- ca boucle 2 fois ? hihihi, il recupere le programme précédent : ok mais recupere aussi apres etre passe en 546...heuuu 2- il remet le 546 à la fin comme tu m'as dit et on le voit bien sur le debug hihihi Merci, des boulettes dans le code encore lol
pepite Posté(e) le 2 mars 2016 Auteur Signaler Posté(e) le 2 mars 2016 Et comme ceci : Modifications : - appel que d'1 fonction - limitation scene à une seule instance --[[ %% properties 208 value %% globals --]] ------ User settings ----- local id_RGBs = {239, 545} local ProgRGB = 546 --------------- --------- Limitation à 1 seule instance --------- if (fibaro:countScenes() > 1) then fibaro:abort() end ---------------------------------------------- local currentdate = os.date("%d/%m/%Y %H:%M:%S") fibaro:debug("Démarrage du script : " ..currentdate) -- fonction split ---- function split(s, pattern, maxsplit) local pattern = pattern or ' ' local maxsplit = maxsplit or -1 local s = s local t = {} local patsz = #pattern while maxsplit ~= 0 do local curpos = 1 local found = string.find(s, pattern) if found ~= nil then table.insert(t, string.sub(s, curpos, found - 1)) curpos = found + patsz s = string.sub(s, curpos) else table.insert(t, string.sub(s, curpos)) break end maxsplit = maxsplit - 1 if maxsplit == 0 then table.insert(t, string.sub(s, curpos - patsz - 1)) end end return t end ---------- --------------function GetPutValueRGB---- function GetPutValueRGBs(id) for i = 1, #id_RGBs do -- Recup Couleur et programme des RGBs local result = split(fibaro:getValue(id_RGBs[i], "color"), ',') local Prog = tonumber(fibaro:getValue(id_RGBs[i], "currentProgramID")) -- Debug valeur result et prog fibaro:debug("RGB num " ..id_RGBs[i].. " avait comme Couleur : " ..result[1]..","..result[2]..","..result[3]..","..result[4]) fibaro:debug("RGB num " ..id_RGBs[i].. " était sur le Programme " ..Prog) -- SI activation cellule 208, demarrage des RGB sur le programme ProgRGB fibaro:debug("Mise des RGBs sur Programme : " ..ProgRGB) fibaro:call(id_RGBs[i], "startProgram", ProgRGB) setTimeout( function() fibaro:debug("Remise des valeurs précédentes sur les RGBs") if ((result[1] == "0" and result[2] == "0" and result[3] == "0" and result[4] == "0") and (tonumber(Prog) > 0)) then fibaro:call(id_RGBs[i], "startProgram", Prog) fibaro:debug("Prog " ..Prog.. " sur " ..id_RGBs[i]) else fibaro:call(id_RGBs[i], "setColor", result[1], result[2], result[3], result[4]) fibaro:debug("Couleur sur : " ..id_RGBs[i]) end end, 15000) --tempo 15 secs end end ---------- GetPutValueRGBs()
Did Posté(e) le 2 mars 2016 Signaler Posté(e) le 2 mars 2016 Bonjour @pepite, Je dirais qu'on est pas mal là , [DEBUG] 13:50:36: Démarrage du script : 02/03/2016 13:50:36 [DEBUG] 13:50:36: RGB num 239 avait comme Couleur : 0,0,0,0 [DEBUG] 13:50:36: RGB num 239 était sur le Programme 6 [DEBUG] 13:50:36: Mise des RGBs sur Programme : 546 [DEBUG] 13:50:36: RGB num 545 avait comme Couleur : 0,0,0,0 [DEBUG] 13:50:36: RGB num 545 était sur le Programme 0 [DEBUG] 13:50:36: Mise des RGBs sur Programme : 546 [DEBUG] 13:50:51: Remise des valeurs précédentes sur les RGBs [DEBUG] 13:50:51: Prog 6 sur 239 [DEBUG] 13:50:51: Remise des valeurs précédentes sur les RGBs [DEBUG] 13:50:51: Couleur sur : 545 Et où devrais-je insérer ma commande pour le TTS (avant le sleep comme il y a de la latence vers le Sonos)? fibaro:call(535, "pressButton", 2)
pepite Posté(e) le 2 mars 2016 Auteur Signaler Posté(e) le 2 mars 2016 Cool, c'est pas mal d'après le debug ;-) Et les 2 bandeaux se mettent sur le 54 en même temps ? plus de latence ? Quand veux tu que le message TTS ait lieu ? avant la mise sur le 546 ou après ? Pour éviter la latence tu peux faire un mp3 si le message est toujours identique.
Domodial Posté(e) le 2 mars 2016 Signaler Posté(e) le 2 mars 2016 Vous êtes des grands malade En tout les cas bravo
pepite Posté(e) le 2 mars 2016 Auteur Signaler Posté(e) le 2 mars 2016 si effectivement c'est le bon code auj : tu vas pouvoir y aller ;-) @domodial c'est @did qui a bien voulu faire tous les tests ;-) je l'ai bien embete !!
Domodial Posté(e) le 2 mars 2016 Signaler Posté(e) le 2 mars 2016 Ben quand tu dis que tu es plutot timide en code, ça me fait bien rigoler :lol: Je préfère trouver des coquilles parasites, c'est plus simple
Domodial Posté(e) le 2 mars 2016 Signaler Posté(e) le 2 mars 2016 Alors le code fonctionne sans Variables du coup ? J'ai lu tout le topic mais je me suis perdu entre temps
pepite Posté(e) le 2 mars 2016 Auteur Signaler Posté(e) le 2 mars 2016 je suis plus que timide en code, la fonction split vient du code que tu as recupéré. j'aurais jamais pu ecrire ca, j'ai du mal a la comprendre lol Le fonctionnement à approuver par @did - sans variable - on doit pouvoir mettre autant de RGBs que l'on veut. - stocke l'etat de chaque RGB avant une "alerte", soit couleur soit programme. - mise en alerte des RGBs sur un programme : variable ProgRGB - pour les besoins de @Did, tempo de 15 secs sur l'alerte, modifiable facilement je pense qu'on doit pouvoir appeler une varaible dans le setTimeout - remise des Valeurs sur le RGB avant l'alerte, eteint,couleur ou prog
Domodial Posté(e) le 2 mars 2016 Signaler Posté(e) le 2 mars 2016 Je n'ai pas compris cette ligne - mise en alerte des RGBs sur un programme : variable ProgRGB
pepite Posté(e) le 2 mars 2016 Auteur Signaler Posté(e) le 2 mars 2016 Test numero 956 412 ;-) - Temporisation variabilisée dans les "User Settings", je ne sais pas si c'est possible, a tester --[[ %% properties 208 value %% globals --]] ------ User settings ----- local id_RGBs = {239, 545} -- liste des IDs des RGBs concernés local ProgRGB = 546 -- Programme "alerte" souhaité à mettre sur les RGBs local Tempo = 15 -- En secondes, durée de la mise sur le programme "ALERTE" des RGBs, avant remise des valeurs précédentes -------------------- --------- Limitation à 1 seule instance --------- if (fibaro:countScenes() > 1) then fibaro:abort() end ---------------------------------------------- local currentdate = os.date("%d/%m/%Y %H:%M:%S") fibaro:debug("Démarrage du script : " ..currentdate) -- fonction split ---- function split(s, pattern, maxsplit) local pattern = pattern or ' ' local maxsplit = maxsplit or -1 local s = s local t = {} local patsz = #pattern while maxsplit ~= 0 do local curpos = 1 local found = string.find(s, pattern) if found ~= nil then table.insert(t, string.sub(s, curpos, found - 1)) curpos = found + patsz s = string.sub(s, curpos) else table.insert(t, string.sub(s, curpos)) break end maxsplit = maxsplit - 1 if maxsplit == 0 then table.insert(t, string.sub(s, curpos - patsz - 1)) end end return t end ---------- --------------function GetPutValueRGB---- function GetPutValueRGBs(id) for i = 1, #id_RGBs do -- Recup Couleur et programme des RGBs local result = split(fibaro:getValue(id_RGBs[i], "color"), ',') local Prog = tonumber(fibaro:getValue(id_RGBs[i], "currentProgramID")) -- Debug valeur result et prog fibaro:debug("RGB num " ..id_RGBs[i].. " avait comme Couleur : " ..result[1]..","..result[2]..","..result[3]..","..result[4]) fibaro:debug("RGB num " ..id_RGBs[i].. " était sur le Programme " ..Prog) -- SI activation cellule 208, demarrage des RGB sur le programme ProgRGB fibaro:debug("Mise des RGBs sur Programme : " ..ProgRGB) fibaro:call(id_RGBs[i], "startProgram", ProgRGB) setTimeout( function() fibaro:debug("Remise des valeurs précédentes sur les RGBs") if ((result[1] == "0" and result[2] == "0" and result[3] == "0" and result[4] == "0") and (tonumber(Prog) > 0)) then fibaro:call(id_RGBs[i], "startProgram", Prog) fibaro:debug("Prog " ..Prog.. " sur " ..id_RGBs[i]) else fibaro:call(id_RGBs[i], "setColor", result[1], result[2], result[3], result[4]) fibaro:debug("Couleur sur : " ..id_RGBs[i]) end end, Tempo*1000) --tempo end end ---------- GetPutValueRGBs()
pepite Posté(e) le 2 mars 2016 Auteur Signaler Posté(e) le 2 mars 2016 ProgRGB est la variable contenant le numero du programme à mettre sur tous les RGBs de la liste. @Did, sur un declenchement de cellule en l'occurence voulait que ces RGBs se mettent sur le PROGRAMME 546 pendant 15 secs, un peu comme une laerte, c'est pour ca que j'ai utilisé ce terme. - Les RGBs sont allumés ou eteints - un declencheur --> alerte - les RGBs sont tous en "alerte" sur un programme - Duree de l'alerte = Tempo - les RGBs se remettent sur leur état initial avant "l'ALERTE" ;-) Suis pas bien clair. hihi
Domodial Posté(e) le 2 mars 2016 Signaler Posté(e) le 2 mars 2016 208 value c'est quoi ? ha compris c'est un oeil fibaro.
Domodial Posté(e) le 2 mars 2016 Signaler Posté(e) le 2 mars 2016 Je testerais ce soir mais faut que je désactive un script pour ça sinon je sent qu'il va y avoir collision 1
pepite Posté(e) le 2 mars 2016 Auteur Signaler Posté(e) le 2 mars 2016 le 208 value, c'est le declencheur pour @did, pas sur que ce soit un FGMS, ce sont des cellules exterieures je pense. D'ailleurs @Did, à vérifier, mais avec le setTimeout et le countScene limités à 1, si une voiture reste devant les cellules, je pense que la scene tourne en rond : Ce que je comprends : - cellule active : 208 à 1 - lancement de la scene - cellule reste à 1 puisque voiture arretee - le countscene limitée à 1, donc la 1ere instance se termine. - et rebelote : le value à 1 relance la scene
Did Posté(e) le 2 mars 2016 Signaler Posté(e) le 2 mars 2016 Salut @Domodial, 208, c'est l'Id du contact FGBS qui déclenche le jeu de cellules qui sert aussi pour la fermeture du portail (asservissement du FGBS). Alors je viens de tester après avoir retiré les variables du panneau, ça fonctionne. Et en ajoutant un troisième FGRGB (Id 554)au début du code, c'est OK aussi. En effet, il faut que je teste si, comme ce week-end, une voiture reste plus de 15 secondes devant les cellules. Pour le message TTS, il faudrait le lancer au début. [DEBUG] 15:04:06: Démarrage du script : 02/03/2016 15:04:06 [DEBUG] 15:04:06: RGB num 239 avait comme Couleur : 0,0,0,0 [DEBUG] 15:04:06: RGB num 239 était sur le Programme 0 [DEBUG] 15:04:06: Mise des RGBs sur Programme : 546 [DEBUG] 15:04:06: RGB num 545 avait comme Couleur : 0,0,0,0 [DEBUG] 15:04:06: RGB num 545 était sur le Programme 0 [DEBUG] 15:04:06: Mise des RGBs sur Programme : 546 [DEBUG] 15:04:06: RGB num 554 avait comme Couleur : 0,0,0,0 [DEBUG] 15:04:06: RGB num 554 était sur le Programme 0 [DEBUG] 15:04:06: Mise des RGBs sur Programme : 546 [DEBUG] 15:04:21: Remise des valeurs précédentes sur les RGBs [DEBUG] 15:04:21: Couleur sur : 239 [DEBUG] 15:04:21: Remise des valeurs précédentes sur les RGBs [DEBUG] 15:04:21: Couleur sur : 545 [DEBUG] 15:04:21: Remise des valeurs précédentes sur les RGBs [DEBUG] 15:04:21: Couleur sur : 554
pepite Posté(e) le 2 mars 2016 Auteur Signaler Posté(e) le 2 mars 2016 Super @Did, A tester avec des programmes et couleurs differentes ;-) Je t'ai mis le message TTS dans ce code, avec la latence, à voir quand tu vas l'entendre ;-) --[[ %% properties 208 value %% globals --]] ------ User settings ----- local id_RGBs = {239, 545} -- liste des IDs des RGBs concernés local ProgRGB = 546 -- Programme "alerte" souhaité à mettre sur les RGBs local Tempo = 15 -- En secondes, durée de la mise sur le programme "ALERTE" des RGBs, avant remise des valeurs précédentes -------------------- --------- Limitation à 1 seule instance --------- if (fibaro:countScenes() > 1) then fibaro:abort() end ---------------------------------------------- local currentdate = os.date("%d/%m/%Y %H:%M:%S") fibaro:debug("Démarrage du script : " ..currentdate) -- fonction split ---- function split(s, pattern, maxsplit) local pattern = pattern or ' ' local maxsplit = maxsplit or -1 local s = s local t = {} local patsz = #pattern while maxsplit ~= 0 do local curpos = 1 local found = string.find(s, pattern) if found ~= nil then table.insert(t, string.sub(s, curpos, found - 1)) curpos = found + patsz s = string.sub(s, curpos) else table.insert(t, string.sub(s, curpos)) break end maxsplit = maxsplit - 1 if maxsplit == 0 then table.insert(t, string.sub(s, curpos - patsz - 1)) end end return t end ---------- --------------function GetPutValueRGB---- function GetPutValueRGBs(id) for i = 1, #id_RGBs do -- Recup Couleur et programme des RGBs local result = split(fibaro:getValue(id_RGBs[i], "color"), ',') local Prog = tonumber(fibaro:getValue(id_RGBs[i], "currentProgramID")) -- Debug valeur result et prog fibaro:debug("RGB num " ..id_RGBs[i].. " avait comme Couleur : " ..result[1]..","..result[2]..","..result[3]..","..result[4]) fibaro:debug("RGB num " ..id_RGBs[i].. " était sur le Programme " ..Prog) -- SI activation cellule 208, demarrage des RGB sur le programme ProgRGB fibaro:debug("Mise des RGBs sur Programme : " ..ProgRGB) fibaro:call(id_RGBs[i], "startProgram", ProgRGB) setTimeout( function() fibaro:debug("Remise des valeurs précédentes sur les RGBs") if ((result[1] == "0" and result[2] == "0" and result[3] == "0" and result[4] == "0") and (tonumber(Prog) > 0)) then fibaro:call(id_RGBs[i], "startProgram", Prog) fibaro:debug("Prog " ..Prog.. " sur " ..id_RGBs[i]) else fibaro:call(id_RGBs[i], "setColor", result[1], result[2], result[3], result[4]) fibaro:debug("Couleur sur : " ..id_RGBs[i]) end end, Tempo*1000) --tempo end end ---------- --- Message TTS ---- fibaro:call(535, "pressButton", 2) -- Lancement fonction --- GetPutValueRGBs()
Domodial Posté(e) le 2 mars 2016 Signaler Posté(e) le 2 mars 2016 Je pige pas ton programme 546 Si c'est un programme du module RGBW tu en a fait autant pour arriver àce numéro de programme ?
Messages recommandés