Aller au contenu

Comment Lancer Une Scéne Avec Un Vd Sur Un Seul Bouton


Syris

Messages recommandés

Salut,

 

 

Je cherche à  créer un virtual device me permettant de l'actionner en push via une entrée de mon ipx (relié sur un poussoir)

 

Le problème c'est que vu je suis en impulsionnel, je ne peux envoyer qu'une seul requête de l'ipx 

/api/callAction?deviceID=127&name=pressButton&arg1=7

Donc n'appuyer que sur un seul bouton.

 

 

J'aimerai donc qu'un appui sur le bouton de mon VD me lance ma scène mais qu'un autre appui l'éteigne. 

 

 

 

Je voyais la chose comme sa :

 

- 1 appui sur le bouton du VD = Activation de la scène

- 1 autre appui sur le bouton et que la scène tourne encore en vérifiant avec sa:


if (fibaro:countScenes(12) >= 1) then
  fibaro:debug('Scene 12 on');
else
  fibaro:debug('Scene 12 off');
end

Alors on l'éteint.

 

 

Mais je n'y arrive pas, qql a t'il une idée ?

 

 

Merci :)

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

Sa ne semble pas fonctionner, dans le debug je suis toujours a scène active.

 

Mais je crois qu'avant tout, j'ai un problème de compréhension sur les scènes, car impossible de les éteindre.

 

La j'ai juste mis un déclenchement d'un spot led dans ma scène, quand je fais un 

fibaro:killScenes(12);

Mon spot reste allumé, et la scène semble rester active.

Lien vers le commentaire
Partager sur d’autres sites

Que veux tu faire dans tes scènes ? Si c'est éteindre et allumer un/plusieurs modules, ne passe pas par des scènes mais uniquement par module virtuel.

La scène permet de réaliser des actions en lien avec une situation (valeur d'une variable, instant t, cycliquement ...). Elle peut-être très complexe, mais le fait de la désactiver ne fait que l'arrêter ! Ça n'éteindra jamais les différents modules qu'elle aurait allumer pendant son fonctionnement.

Le module virtuel (virtuel déviée VD) permet de créer des boutons qui contiennent une action ou une série d'actions qui se déclenchent quand on clique dessus.

En plus de cette fonction, il possède un main loop (une boucle principale) qui permet de faire tourner l'équivalant d'une petit scène àl'infini.

Dis-nous ce que tu souhaites faire dans tes scènes. On te dira si tu dois utiliser un VD ou des scènes. ;)

Envoyé de mon iPad àl'aide de Tapatalk HD

Lien vers le commentaire
Partager sur d’autres sites

Ok merci, c'est donc pour sa! 

Du coup je comprend moins l’intérêt de la commande killscene ? 

 

En gros, je veux juste déclencher une scène lumière tamisé + bandeau led sur tel programme + faire descendre le vidéoprojecteur en utilisant mon ipx800 avec un bp sur une entrée.

Je voulais, à  terme la mettre dans GEA, la sa me servait juste pour les essais. 

 

En fait mon problème de base vient du fait que j'ai un VD pour les entrées de mon ipx (qui se lance via GEA) qui me permet de récupérer mes contact sec a intervalle régulier via le json de l'ipx. 

Sauf que cette solution ne me va pas pour les Bouton poussoir que j'ai mis car forcément ce n'est pas du tout ou rien. (je vais pas tenir le bouton ^^)

 

Du coup je cherche à  envoyer un push qui me mettra une variable à  jour pour activer ma scène et qui s'éteindra lors d'un autre appui. 

Lien vers le commentaire
Partager sur d’autres sites

Je ne comprends pas bien ton problème de bouton poussoir car je pense que tu peux demander à  l'IPX d'ouvrir ou fermer un contact avec son API ?

 

Avant de continuer j'ai 2 questions :

 

Que fait Lumière tamisée ?

Si elle ne fait que réduire la luminosité de plusieurs lampes tu peux le faire dans un VD.

En revanche si elle tamise la lumière en fonction de l'heure, d'un capteur de luminosité, et d'autres variables, l'utilisation d'une scène est justifiée (quoi que on peux le faire aussi en VD).

 

Même question pour le bandeau LED.

Tu ne fais que l'allumer ou il change de couleur en fonction de plusieurs paramètres/variables ?

 

 

Je te propose de passer par un VD car c'est plus visuel et en plus tu pourras l'utiliser directement sur ton téléphone ou tablette.

 

Tu crées un VD cinéma avec plusieurs boutons :

Mode Cinéma (notre sujet)

Arrêt du mode Cinéma

Salon en mode Normal

Salon en mode Invité

Salon en mode Intime ...

 

Dans le bouton "Mode Cinéma" tu auras ton code qui va :

1/ Régler la lumière tamisée : tu peux lancer ta scène ou tamiser ta lumière directement dans mon VD sauf si tu testes la luminosité ambiante, ou l'heure, ou ...)

2/ Gérer ton bandeau LED en appellent ta scène prévue pour (ou tu le fais directement dans le bouton de ton VD)

3/ Faire descendre le vidéopro (en fermant le contact de l'IPX pendant x secondes ; puis en ouvrant le contact de l'IPX pour arrêter le moteur)

 

Le second bouton "Arrêt du mode Cinéma" remontera le videopro, remettra les valeurs des lumière à  100%, éteindra le bandeau LED ...

Lien vers le commentaire
Partager sur d’autres sites

Justement je ne veux pas passer par un vd, celui la est déjàfait.

Je veux juste utiliser un bouton physique pour enclencher ma scène via mon ipx800.

Oui je peux configurer l'ipx pr enclenché une sortie d'elle même, mais les miennes sont déjàtoutes utiliser.

Je veux vraiment récupérer seulement l'entrée de celle ci et gérer 1 impulsion appuie sur mon vd une autre leteint.

Envoyé de mon D5833 en utilisant Tapatalk

Lien vers le commentaire
Partager sur d’autres sites

Dans ce cas tu dois passer par une variable globale et passer par un VD dont le bouton sera du type :

Si variable = 1
    tu lances ta scène (12)
    variable = 0  
sinon
    tu arrêtes ta scène (12)
    tu lances une autre scène qui remonte ton vidéopro
    tu éteins ton bandeau LED
    tu allumes la lumière principale
    variable = 1
fin de si
Lien vers le commentaire
Partager sur d’autres sites

J'utilise une entrée de l'IPX (avec un poussoir) pour appuyer sur le bouton d'un module virtuel dans la HC2.

Je passe cette commande dans le push1 de l'entrée correspondante (sur l'IPX):

/api/callAction?deviceID=231&name=pressButton&arg1=2

Id231: module virtuel

2: n° du bouton

Lien vers le commentaire
Partager sur d’autres sites

Jossalf : Dans ce cas, quand je relache mon poussoir ma variable repasse a 0, en gros il faut que je tienne appuyé...

 

Did : Oui c'est ce que j'ai essayé, mais comment faire pour éteindre ? J'aimerai qu'en rappuyant (donc mon entrée renvoit le meme push), sa éteigne l'action de mon vd.

 

 

Je suis désolé j'ai l'impression de mal me faire comprendre  :huh:  Merci de m'aider en tout cas :)

Lien vers le commentaire
Partager sur d’autres sites

HA oui là  j'ai du mal ;) Voici ce que j'ai compris :

 

Tu as un bouton poussoir (un vrai physique collé au mur) qui est relié par un fil à  ton IPX.

Quand tu cliques (j'appuie et je relâche tout de suite) sur le bouton physique, l'IPX envoie la commande suivante vers l'HC2 :

/api/callAction?deviceID=127&name=pressButton&arg1=7

Cette commande va activer le bouton 1 de ton VD 127.

 

Et bien là  dans le code de ton bouton tu mets :

Si variable = 1
    tu lances ta scène (12)
    variable = 0  
sinon
    tu arrêtes ta scène (12)
    tu lances une autre scène qui remonte ton vidéopro
    tu éteins ton bandeau LED
    tu allumes la lumière principale
    variable = 1
fin de si

En gros un clique sur le bouton physique du mur va engendrer le clic sur le bouton 1 du VD 127.

Avec un seul bouton tu allumes ou tu éteins.

C'est pas ce que tu veux ?

Lien vers le commentaire
Partager sur d’autres sites

Je suis plus devant la mais c'est pas la scène qui me pose problème, en faisaint juste un essai VD avec un spot, le truc tout bête :

local entree6 = '1'

if (entree6 == '1') then
  fibaro:call(30, "turnOn");
  fibaro:debug("Variable on");
  fibaro:log("Variable on");
  entree6 = '0'
else
  fibaro:debug("Variable off");
  fibaro:log("Variable off")
  fibaro:call(30, "turnOff");
  entree6 = '0'
end
 

Impossible d'éteindre avec le push :/ 

Forcément ma variable ne change jamais ^^

Lien vers le commentaire
Partager sur d’autres sites

Il y a quelques erreurs (notamment sur la gestion de la valeur de la variable toujours à  1 à  caus de la ligne 2 puis toujours à  0 à  cause des lignes 8 et 13).

 

Ca donnerai ça :

--local entree6 = '1'
 
if (entree6 == 1) then
  fibaro:call(30, "turnOn");
  fibaro:debug("Variable on");
  fibaro:log("Variable on");
  entree6 = 0
else
  fibaro:debug("Variable off");
  fibaro:log("Variable off")
  fibaro:call(30, "turnOff");
  entree6 = 1
end

Mais ça ne marchera pas. La HC2 attends une valeur pour entree6. Le plus simple est alors de passer par une variable globale. Ca t'évitera de devoir l'initialiser ici.

 

Edit : Code ok dans le message suivant ...

Modifié par JossAlf
Lien vers le commentaire
Partager sur d’autres sites

Tu crées une variable globale entree6 dans le "Panneau variables" et tu laisses 0.

Tu valides sur la disquette en haut à  droite.

 

Puis tu corriges ton code de ton bouton comme suit :

if (tonumber(fibaro:getGlobalValue("entree6")) == 1) then
  fibaro:call(30, "turnOn");
  fibaro:debug("Variable on");
  --fibaro:log("Variable on");
  fibaro:setGlobal("entree6", 0);
else
  fibaro:debug("Variable off");
  --fibaro:log("Variable off")
  fibaro:call(30, "turnOff");
  fibaro:setGlobal("entree6", 1);
end

Et bing ! Ca marche !!!!

Lien vers le commentaire
Partager sur d’autres sites

Ah tu vois je venais de tomber sur cette solution moi ^^

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

local entree6 = '1'
fibaro:setGlobal('test', fibaro:getGlobalValue('test') + 1);
local compteur = fibaro:getGlobalValue("test")
  
if (compteur % 2 == 0) then
  fibaro:call(30, "turnOn");
  fibaro:debug("Variable on");
  fibaro:debug(compteur);
  fibaro:log("Variable on");
  entree6 = '0'
else
  fibaro:debug("Variable off");
  fibaro:log("Variable off")
  fibaro:call(30, "turnOff");
  fibaro:debug(compteur);
end

J'essai la tienne :)

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...