mprinfo Posté(e) le 21 février 2017 Auteur Signaler Posté(e) le 21 février 2017 Si tu laisses tourner une scène 5400s c'est normal qu'il y risque d'avoir un problème d'instances. Surtout si tu ne gères pas bien les déclencheurs. C'est pour ce genre de choses que je n'utilise jamais le mode blocs mais toujours du code luaEnvoyé de mon SM-G901F en utilisant Tapatalk
Did Posté(e) le 22 février 2017 Signaler Posté(e) le 22 février 2017 Ah merci @Steven, j'essaierais ça ce week-end.
megabubu Posté(e) le 22 février 2017 Signaler Posté(e) le 22 février 2017 Ok mais en mode Lua, ca donnerait quoi alors, si j ai un exemple, je pourrais le décliner sur mes autres scènes. Merci :-)
pepite Posté(e) le 22 février 2017 Signaler Posté(e) le 22 février 2017 Transfert ta scene Bloc en LUA et poste le code ici Je n'ai pas tout suivi, mais redis nous ce que tu veux faire ;-) 1
megabubu Posté(e) le 23 février 2017 Signaler Posté(e) le 23 février 2017 Ce que je voudrais, c'est au bout de 90 min (soit 5400s), si les spots salle à manger allumés, alors envoyer push pour interactive scène. Cependant j'ai tout le temps des alertes pour me dire que trop d'instance pour cette scène, que dois je faire, sachant que je suis preneur de LUA également --[[ %% properties 184 value %% weather %% events %% globals --]] local startSource = fibaro:getSourceTrigger(); if(startSource["type"] == "other") then api.post('/mobile/push', {["mobileDevices"]={268}, ["message"]='Éteindre les spots de la salle à manger allumés depuis 1h30?', ["title"]='Question:', ["category"]='YES_NO', ["data"]={["sceneId"]=330}}); else if (( tonumber(fibaro:getValue(184, "value")) > 0 )) then setTimeout(function() local delayedCheck0 = false; local tempDeviceState0, deviceLastModification0 = fibaro:get(184, "value"); if (( tonumber(fibaro:getValue(184, "value")) > 0 ) and (os.time() - deviceLastModification0) >= 5400) then delayedCheck0 = true; end local startSource = fibaro:getSourceTrigger(); if ( ( delayedCheck0 == true ) or startSource["type"] == "other" ) then api.post('/mobile/push', {["mobileDevices"]={268}, ["message"]='Éteindre les spots de la salle à manger allumés depuis 1h30?', ["title"]='Question:', ["category"]='YES_NO', ["data"]={["sceneId"]=330}}); end end, 5400000) end end
Steven Posté(e) le 23 février 2017 Signaler Posté(e) le 23 février 2017 A tester si tu veux bien --[[ %% properties 184 value %% weather %% events %% globals --]] local delai = 54000 local id_spots = 184 local smartphones = {268} local scenes = {["sceneId"]=330} local id_de_cette_scene = XXX -- !!!! ATTENTION ICI !!!! local allume = fibaro:getValue(id_spots, "value") > 0 if (not allume) then -- si le spot est éteint, on arrête TOUTES les scènes précédément démarrées fibaro:killScene(id_de_cette_scene) fibaro:abort() end setTimeout(function() api.post('/mobile/push', { ["mobileDevices"]=smartphones, ["message"]='Éteindre les spots de la salle à manger allumés depuis 1h30?', ["title"]='Question:', ["category"]='YES_NO', ["data"]=scenes } ) end, delai )
megabubu Posté(e) le 23 février 2017 Signaler Posté(e) le 23 février 2017 Salut et merci cependant ça ne fonctionne pas, dès que j'allume les spots, ca fait trigered, puis 0 instances, et voila ce qu'il y a écrit dans le debug: attempt to compara number with string c'est écrit pour la ligne 16 ci-dessous: local allume = fibaro:getValue(id_spots, "value") > 0
pepite Posté(e) le 23 février 2017 Signaler Posté(e) le 23 février 2017 Mets cela: local allume = tonumber(fibaro:getValue(id_spots, "value")) > 0 3
Steven Posté(e) le 23 février 2017 Signaler Posté(e) le 23 février 2017 En effet, désolé pour cet oubli. 1
megabubu Posté(e) le 23 février 2017 Signaler Posté(e) le 23 février 2017 salut, ca ne fonctionne pas correctement, maintenant, je reçois la notif dès que j'allume les spots
Steven Posté(e) le 23 février 2017 Signaler Posté(e) le 23 février 2017 Dès que tu allumes les spots ou après 54 secondes (parce que je sais pas ce que j'ai fumé aujourd'hui mais j'ai mis 54000 au lieu de 5400000) ?
megabubu Posté(e) le 23 février 2017 Signaler Posté(e) le 23 février 2017 ok je viens de comprendre, pour faire les tests, j ai modifié le délai à 20, ca veut dire 2 centième de seconde alors, lol 1
megabubu Posté(e) le 23 février 2017 Signaler Posté(e) le 23 février 2017 Ca marche nikel, merciiiiiii 1
megabubu Posté(e) le 23 février 2017 Signaler Posté(e) le 23 février 2017 encore une question, pour les rubans led, c'est power à la place de value ?
Steven Posté(e) le 23 février 2017 Signaler Posté(e) le 23 février 2017 Alors ... Oui et Non Non, car "power" = "consommation électrique" donc si tu mets power dans l'entête, le script va se déclenché à chaque variation électrique. Par contre, si tu mets "value" ... bien cela ne fonctionne pas quand tu lances un "programme" mais uniquement quand tu allumes ton RGB .. pas cooollll. Je te dirais donc d'utiliser le "power" bien que cela ne soit pas optimal, mais bon, on fait avec ce qu'on nous donne. Oublie pas de changer "value" par "power" dans l'entête ET à la ligne "local allume = ..." 1
Domodial Posté(e) le 23 février 2017 Signaler Posté(e) le 23 février 2017 Pas mal du tout ce nouveau Push D'ailleurs je me demande encore ce qu'il y a de nouveau depuis que je suis passé à 4.110 (je ne vois rien de changé lol) non non, il ne faut pas que je touche ! >>> je sort 1
megabubu Posté(e) le 23 février 2017 Signaler Posté(e) le 23 février 2017 pour le ruban, ca ne fonctionne pas, j'ai une erreur "attenpt to call killScene (a nil value) --[[ %% properties 373 power %% weather %% events %% globals --]] local delai = 20000 local id_ruban = 373 local smartphones = {268} local scenes = {["sceneId"]= 336} local id_de_cette_scene = 341 -- !!!! ATTENTION ICI !!!! local allume = tonumber(fibaro:getValue(id_ruban, "power")) > 0 if (not allume) then -- si le spot est éteint, on arrête TOUTES les scènes précédément démarrées fibaro:killScene(id_de_cette_scene) fibaro:abort() end setTimeout(function() api.post('/mobile/push', { ["mobileDevices"]=smartphones, ["message"]='Éteindre ruban led de la salle cinéma?', ["title"]='Question:', ["category"]='YES_NO', ["data"]=scenes } ) end, delai )
Steven Posté(e) le 23 février 2017 Signaler Posté(e) le 23 février 2017 Je suppose que tu as bien vérifié et que l'ID 341 est bien l'ID de cette nouvelle scène ? A part cela, je ne vois pas pourquoi cela ne fonctionnerais pas.
megabubu Posté(e) le 23 février 2017 Signaler Posté(e) le 23 février 2017 oui c'est bien l'ID de la nouvelle scene
Steven Posté(e) le 23 février 2017 Signaler Posté(e) le 23 février 2017 Tente avec "value" à la place de "power" et allume et éteint juste ton ruban pour tester.
megabubu Posté(e) le 23 février 2017 Signaler Posté(e) le 23 février 2017 alors, cette fois ci, tjs le même message sauf que j'ai le message quand je réponds à "yes" à la scène interactive sachant que cette scène me lance 2 instances directement, donc j'ai 2 fois la question pour éteindre.
megabubu Posté(e) le 23 février 2017 Signaler Posté(e) le 23 février 2017 pour le ruban et les spots de la 1ere scene, ca ne fonctionne pas, j'ai une erreur "attenpt to call killScene (a nil value). je n'avais pas remarqué de suite. Sacahnt que mon probleme de plusieurs instances persiste pour les 2 scenes, ruban et spots
Steven Posté(e) le 24 février 2017 Signaler Posté(e) le 24 février 2017 Faudra que je fasse des tests ce soir, j'y arrive pas avant.
Messages recommandés