Aller au contenu
mprinfo

Notifications Interactive pour lancer une scéne

Recommended Posts

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 lua

Envoyé de mon SM-G901F en utilisant Tapatalk



Partager ce message


Lien à poster
Partager sur d’autres sites

 Ah merci @Steven, j'essaierais ça ce week-end.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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 :-) 

Partager ce message


Lien à poster
Partager sur d’autres sites

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 ;-)

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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
)

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Mets cela:
local allume = tonumber(fibaro:getValue(id_spots, "value")) > 0

  • Upvote 3

Partager ce message


Lien à poster
Partager sur d’autres sites

En effet, désolé pour cet oubli.

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

salut, 

ca ne fonctionne pas correctement, maintenant, je reçois la notif dès que j'allume les spots :(

Partager ce message


Lien à poster
Partager sur d’autres sites

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) ?

Partager ce message


Lien à poster
Partager sur d’autres sites

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

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

encore une question, pour les rubans led, c'est power à la place de value ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Alors ... Oui et Non :D

 

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 = ..."

 

 

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Pas mal du tout ce nouveau Push :D

 

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

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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
)

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Tente avec "value" à la place de "power" et allume et éteint juste ton ruban pour tester.

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites


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 :(

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Faudra que je fasse des tests ce soir, j'y arrive pas avant.

Partager ce message


Lien à poster
Partager sur d’autres sites

×