Aller au contenu

Notifications Interactive pour lancer une scéne


Messages recommandés

Posté(e)

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



Posté(e)

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

 

Posté(e)

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
)

 

Posté(e)

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
Posté(e)

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

Posté(e)

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
Posté(e)

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
Posté(e)

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
)

 

Posté(e)

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.

 

Posté(e)

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.

Posté(e)


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

 
×
×
  • Créer...