Aller au contenu

Notifications Interactive pour lancer une scéne


Messages recommandés

Posté(e)

Je pense avoir trouvé ... fibaro:killScene() n'existe pas c'est fibaro:killScenes() avec un "s" a la fin ... c'est logique vu qu'on kill qu'une seule scène .... m'ennnnfffffffiiinnnnnn.

  • Upvote 1
Posté(e)

Voici la version définitif avec la suppression des messages multiple :

 

--[[
%% properties
108 value
--]]

local delai = 60000
local id_spots = 108
local smartphones = {84}
local scenes = {["sceneId"]=330}

local id_de_cette_scene = 18   -- !!!! ATTENTION ICI !!!!

local allume = tonumber(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:killScenes(id_de_cette_scene)
  
elseif (fibaro:countScenes() <= 1) then
  
  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
  )
  
end

Chez moi cela ne fonctionne pas avec mon RGB pour la raison suivante : étrangement, lorsque je l'allume, il me déclenche systématiquement 2 instance du scénario en même temps. J'espère que tu n'auras pas ce problème.

  • Upvote 1
Posté(e) (modifié)

alors la, ça marche nikel pour les 2 scènes, spots + ruban! sachant que hier, j'avais 2 instances pour le ruban, et la comme par magie, plus qu'une instance et tout fonctionne :)

Par contre, pourrais-je aller plus loin :D

 

Peut-on faire redémarrer la scène si on appuis sur "non" dans la réponse interactive, car sinon la question n'est plus jamais posé, alors que sur le moment c'est non, mais plus tard ca aurait était "oui" :13:.

 

Merci pour tout, je suis trop content :74:

Modifié par megabubu
  • Upvote 1
Posté(e)

Donc si tu appuie sur OUI, on éteint et donc cela arrête tout ... ça c'est fait.

 

Mais si tu appuies sur NON, tu aimerais donc ... simplement relancer ce même scénario ?

 

Il me semble qui suffirait de faire ainsi :

 

local id_de_cette_scene = 18   -- !!!! ATTENTION ICI !!!! <-- on y met tout en haut

local delai = 60000
local id_spots = 108
local smartphones = {84}
local scenes = {["sceneId"]=330, ["sceneId"]=id_de_cette_scene}  -- <--- on change ici

 

  • Upvote 1
Posté(e)
--[[
%% properties
108 value
--]]

local id_de_cette_scene = 18   -- !!!! ATTENTION ICI !!!!
local delai = 60000
local id_spots = 108
local smartphones = {84}
local scenes = {["sceneId"]=330, ["sceneId"]=id_de_cette_scene}

local allume = tonumber(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:killScenes(id_de_cette_scene)
  
elseif (fibaro:countScenes() <= 1) then
  
  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
  )
  
end

en fait ca donnerait bien cela? si je comprends bien, au lieu de seulement lancer la scène interactive, il lance la scène interactive et redémarre la scène si je n'appui pas sur oui ! je commence à comprendre quand même :) lol.

Mais la faille, c'est que si je n'appui pas, ni sur oui, ni sur non, alors la scène redémarre quand même, et je pourrais alors avoir 2 questions identique au bout de 01h30 pour les spots, la ca va encore, mais pour le ruban c'est au bout de 5 min, la je peux avoir alors beaucoup plus, non? :huh:

 

 

Posté(e)

Non, la scène ne se relance pas automatiquement, en fait, tu as une instance qui tourne pendant 1h30 ou 5mn et qui au bout de ce laps de temps, te demande quoi faire :

 

1. OUI = Eteindre la lumière (sceneID = 330)

2. NON = Relancer ce même scénario (sceneID = xxxx)

 

Si tu ne fait rien, le scénario ne va pas continuer. Tu n'auras donc pas 2 fois le même scénario qui tourne.

  • Upvote 1
Posté(e)

Alors, avec la scène ci-dessous, ça ne marche plus, au bout de 20 sec (pour le test), j'ai bien le message "yes" ou no", cependant, quand je réponds "no", rien ne se passe, et quand je réponds "yes", les spots ne s'éteignent pas et la scène se relance.

 

--[[
%% properties
184 value
--]]

local id_de_cette_scene = 339   -- !!!! ATTENTION ICI !!!!
local delai = 20000
local id_spots = 184
local smartphones = {268}
local scenes = {["sceneId"]=330, ["sceneId"]=id_de_cette_scene}

local allume = tonumber(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:killScenes(id_de_cette_scene)
  
elseif (fibaro:countScenes() <= 1) then
  
  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
  )
  
end

 

Posté(e)

En effet, cela ne fonctionne pas ... le OUI déclenche les 2 scénarios et le NON ne fait rien. Avec ce système, il n'y a pas moyen de faire ce que tu demandes.

 

La seule solution serait de faire 2 demandes :

 

1. "Les spots de la salle à manger sont allumé depuis plus d'1h30, voulez-vous faire quelque chose ?" Si tu fais NON ben plus rien ne se passe

2. "Voulez-vous les éteindre ?" OUI cela les éteints, NON cela va attendre à nouveau 1h30 et relancer le scénario 1.

Posté(e)

Un scénario :

local id_de_la_scene_qui_attend = xxxxxxx
local id_de_la_scene_qui_eteint = 330

local smartphones = {268}

api.post('/mobile/push', {
	["mobileDevices"]=smartphones, 
	["message"]="Voulez-vous les éteindre ?", 
	["title"]='Question:', 
	["category"]='YES_NO', 
	["data"]={["sceneId"]=id_de_la_scene_qui_eteint}
  }
) 
fibaro:startScene(id_de_la_scene_qui_attend)

 

Et le deuxième :

--[[
%% properties
184 value
--]]

local id_de_cette_scene = 339   -- !!!! ATTENTION ICI !!!!
local id_de_la_scene_question = XXXXXX
local delai = 20000
local id_spots = 184
local smartphones = {268}

local allume = tonumber(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:killScenes(id_de_cette_scene)
  
elseif (fibaro:countScenes() <= 1) then
  
  setTimeout(function()
    api.post('/mobile/push', {
        ["mobileDevices"]=smartphones, 
        ["message"]="Les spots de la salle à manger sont allumé depuis plus d'1h30, voulez-vous faire quelque chose ?", 
        ["title"]='Question:', 
        ["category"]='YES_NO', 
        ["data"]={["sceneId"]=id_de_la_scene_question}
      }
    ) 
    end, delai
  )
  
end

 

  • Upvote 1
Posté(e)

Fonction très pratique avec une Apple Watch !

Je n'ai pas encore trouvé de cas d'usage mais ça va venir...

Merci !

Posté(e)

@Steven 

en fait je vais rester sur la scène précédente sans les 2 scènes en série car je trouve moins "waf" à la longue.

En tous cas merci pour le temps que tu as passé pour moi :).

 

  • Upvote 1
  • 2 semaines après...
Posté(e)

Salut a vous tous

 

Je me dirige vers vous avec ce bout de code, ou je veux l'integrer dans une scene avec notification interactive , en fait si il peut y avoir une seule notification avec tout les points lumineux .

Merci pour tout ,

 

Bien a vous 

--[[
%% properties
%% globals
--]]

interrupteur = {8, 10, 12, 14, 21, 24, 26, 35, 60, 80, 167}

local startSource = fibaro:getSourceTrigger();

for i = 1, #interrupteur do
 local interrupteurname = fibaro:getName(interrupteur[i]);
 local message
 if (tonumber(fibaro:getValue(interrupteur[i], "value")) > 0) then
interrupteurname = string.gsub(interrupteurname," ","_")
  message = ' '..interrupteurname..' est allumee';
 fibaro:debug(message);
 fibaro:setGlobal('pushnotification', message);
 fibaro:call(176, "sendPush", message);              
 fibaro:sleep(2000);
 end
 end

 

Posté(e)

A ce que je comprends :

 

@Alexandru souhaiterais une seule et même scène qui soit capable de :

 

1. Vérifier quel lampe est allumée (une ou plusieurs)

2. Envoyé une notification pour dire "la/les lampe(s) .....<nom des lampes>... est/sont allumée(s) voulez vous éteindre ?"

3. Si oui lancer une scène capable de la/les éteindre

 

C'est bien cela ?

 

Ou au contraire, c'est une notification par lampe ?

Du style :

"La lampe du salon est allumée, voulez-vous l'éteindre ?"

"Les spots sont allumés, voulez-vous les éteindre ?"

...

 

En fait, je ne sais pas non plus :2:

 

  • Upvote 1
Posté(e)

Bonjour messieurs , je m'excuse car je n'ai pas expliqué très clairement , mais @Steven a bien deviner , en fait le bout c'est quand je quitte la maison que je reçois un message " telle lampe est/sont allumée(s) ;  voulez  vous éteindre ?

 

Je vous remercié encore une fois 

 

Bien a vous , 

 

Alexandru

  • Upvote 1
Posté(e)

Alors, une première scène pour tout éteindre (noter son ID pour plus tard) :

local interrupteurs = {8, 10, 12, 14, 21, 24, 26, 35, 60, 80, 167}

for i = 1, #interrupteurs do
  fibaro:call(interrupteurs[i], "turnOff")
end

Et la scène qui contrôle et demande

 

local interrupteurs = {8, 10, 12, 14, 21, 24, 26, 35, 60, 80, 167}
local id_de_la_scene_qui_eteint = XXXXXX

local message = ""
for i = 1, #interrupteurs do
  local interrupteurname = fibaro:getName(interrupteurs[i]);
  
  if (tonumber(fibaro:getValue(interrupteurs[i], "value")) > 0) then
    interrupteurname = string.gsub(interrupteurname," ","_")
    if (message ~= "") then
      message = message .. ", "
    end
    message = message .. interrupteurname
  end
end
if (message ~= "") then
  if (message:find(","))then
    message = message .. " sont allumés, voulez-vous les éteindre ?"
  else
    message = message .. " est allumé, voulez-vous l'éteindre ?"
  end
  api.post('/mobile/push', {
    ["mobileDevices"]={176}, 
    ["message"]=message, 
    ["title"]='Question:', 
    ["category"]='YES_NO', 
    ["data"]={["sceneId"]=id_de_la_scene_qui_eteint}
    }
  ) 
 
end

A tester .. (ce que je n'ai pas pu faire )

 

Courage

  • Upvote 3
Posté(e)

@Steven , je n'ai plus mots , ....

Tout fonctionne a merveille , c'est vraiment génial , votre création est exactement comme j'ai rêvé :60::16:

IMG_5367.PNG

  • Upvote 1
Posté(e)

je sent que je vais pouvoir alimenter mon projet/Tuto de spécifications surveillance de nos habitations. Cela correspond exactement à une partie de ce que je voudrais faire dans mes spécifications lorsque l'on Active l'alarme sur une zone


Envoyé de mon iPhone en utilisant Tapatalk Pro

  • 2 semaines après...
Posté(e) (modifié)

ios 10.2.1 sur iphone 7

Je reçois bien la notification push... mais pas de Yes / No

Quand je clique, ça m'ouvre l'appli fibaro mais rien ne se passe :(

J'ai essayé le push interactif en mode bloc ou la version LUA mais je n'ai jamais rien d'interactif...

 

--[[
%% properties
%% events
%% globals
--]]

	api.post('/mobile/push', 
            {
               ["mobileDevices"]={18},                         -- ID du telephone
               ["message"]='bonjour Veux-tu ouvrir les volets', -- La question que l'on veut posser
               ["title"]='Questions',                           -- titre de la question
               ["category"]='YES_NO',                           -- 'YES_NO' ou 'RUN_CANCEL'
               ["data"]={["sceneId"]=35}                       -- ID de la scéne que l'on veut lancer
            }
    );

Edit :

Oh punaise...

 

Si l'iphone est verrouillé, alors il faut 'appuyer sur la notification push' de l'ecran verrouilé pour ouvrir la question OUI/NON

Et attention d'ouvrir le push et pas de deverouiller l'iphone, sinon ça squizz la question.

 

Par contre si le push arrive pendant qu'on joue à clash royale (et oui), alors un appui sur la notification push ouvre l'appli fibaro mais pas la scène.

 

Des utilisateurs en iphone7 ?

Modifié par nigao
Ca depend si ecran est verrouilé ou pas
×
×
  • Créer...