Syris Posté(e) le 5 novembre 2015 Signaler Posté(e) le 5 novembre 2015 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
spirituAlK Posté(e) le 5 novembre 2015 Signaler Posté(e) le 5 novembre 2015 Avec une variable je pense que c'est bon !
JossAlf Posté(e) le 5 novembre 2015 Signaler Posté(e) le 5 novembre 2015 Et comme ça ? if (fibaro:countScenes(12) > 0) then fibaro:debug('Scene 12 OFF'); else fibaro:debug('Scene 12 ON'); end
Syris Posté(e) le 6 novembre 2015 Auteur Signaler Posté(e) le 6 novembre 2015 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.
JossAlf Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 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
Syris Posté(e) le 6 novembre 2015 Auteur Signaler Posté(e) le 6 novembre 2015 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.
JossAlf Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 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 ...
Syris Posté(e) le 6 novembre 2015 Auteur Signaler Posté(e) le 6 novembre 2015 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
JossAlf Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 Ha pardon ... Ton ipx te sert àrécupérer l'appui sur ton bouton poussoir. C'est ça ? 1
Syris Posté(e) le 6 novembre 2015 Auteur Signaler Posté(e) le 6 novembre 2015 Oui c'est pas simple àexpliquer ^^ Envoyé de mon D5833 en utilisant Tapatalk
JossAlf Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 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
Did Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 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
Syris Posté(e) le 6 novembre 2015 Auteur Signaler Posté(e) le 6 novembre 2015 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 Merci de m'aider en tout cas
Did Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 Tu as essayé de configurer l'entrée sur "On/Off" à la place de "Swith" dans l'IPX?
Syris Posté(e) le 6 novembre 2015 Auteur Signaler Posté(e) le 6 novembre 2015 Oui, marche pas chez moi? Du coup je me suis demandé si on pouvait le faire sans y lier àune sortie Envoyé de mon D5833 en utilisant Tapatalk
JossAlf Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 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 ?
Did Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 Par contre, c'est vrai que je n’éteins pas, le bouton du VD me lance une scène qui s'arrête toute seule.
JossAlf Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 @Syris : tu veux pas nous mettre le code de ta scene 12 ? (lumière tamisé + bandeau led sur tel programme + faire descendre le vidéoprojecteur)
Syris Posté(e) le 6 novembre 2015 Auteur Signaler Posté(e) le 6 novembre 2015 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 ^^
JossAlf Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 (modifié) 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é le 6 novembre 2015 par JossAlf
JossAlf Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 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 !!!!
Syris Posté(e) le 6 novembre 2015 Auteur Signaler Posté(e) le 6 novembre 2015 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
Syris Posté(e) le 6 novembre 2015 Auteur Signaler Posté(e) le 6 novembre 2015 Et victoire, la tienne est super simple!! En fait il fallait passer par une variable global. Le truc tout beta! Et bien merci beaucoup JossAlf
JossAlf Posté(e) le 6 novembre 2015 Signaler Posté(e) le 6 novembre 2015 Attention : C'est un bouton ! Inutile de mettre l'entête. On est d'accord ?
Messages recommandés