Aller au contenu

éditer une scène en blocs graphiques


p.pont1

Messages recommandés

Bonjour à tous,

J'aurais besoin d'un petit coup de main, s'il vous plait.

Voilà je souhaite éditer une scène en blocs graphique car je n'y connais rien en LUA.

Le but de ma scène : j'ai un escalier qui comporte dix marches et je souhaite que lorsque le détecteur de mouvement situé en haut de l'escalier est en alerte les marches s'éclairent de haut en bas (j'ai placé un module par marche, pour être exact un module pour deux marches puisqu'il s'agit de FGS222) et que lorsque le détecteur de mouvement situé en bas est en alerte les marches s'éclairent de bas en haut.

Pas de difficulté majeure pour créer la scène à part le fait qu'en blocs graphiques je ne peut entrer comme valeur que des secondes.

Je souhaiterai pouvoir entrer des dixièmes de secondes, en effet, sinon l'escalier s'éclairerait en dix secondes, c'est trop long.

Auriez vous une solution à me proposer?

J'ai pensé créer ma scène en blocs graphiques et passer en LUA, est ce que ça transforme les données entrées en mode blocs en LUA ou est ce que ça ouvre une page vierge?

De plus, lorsque je sélectionne passage en mode LUA, une fenêtre m'indique que le passage en mode blocs graphiques ne sera plus possible, est ce uniquement pour cette scène ou est ce définitif, je n'aurai plus jamais accès au mode blocs graphiques?

 

Par avance, merci à tous pour vos retours

 

Pascal

Lien vers le commentaire
Partager sur d’autres sites

il y a 8 minutes, p.pont1 a dit :

J'ai pensé créer ma scène en blocs graphiques et passer en LUA, est ce que ça transforme les données entrées en mode blocs en LUA ou est ce que ça ouvre une page vierge?

Oui cela transforme en code LUA que tu peux modifier ensuite.

Les Sleeps étant en millisecondes, tu pourras faire un timing très précis !

 

il y a 8 minutes, p.pont1 a dit :

De plus, lorsque je sélectionne passage en mode LUA, une fenêtre m'indique que le passage en mode blocs graphiques ne sera plus possible, est ce uniquement pour cette scène ou est ce définitif, je n'aurai plus jamais accès au mode blocs graphiques?

Ce n'est que pour la scène en cours.

Les autres scènes (existantes ou futures) pourront toujours faire du mode bloc graphique.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

me voilà de nouveau avec mon problème d'escalier.

Merci encore pour les explications et voilà le résultat.

Je viens d'uploader les vidéos, j'espère qu'elles ne sont pas trop lourdes et qu'elles vont apparaitre sur le site.

Une vidéo pour une détection de présence en haut des escaliers (les marches s'éclairent de haut en bas)

Une vidéo pour une détection en bas des escaliers (les marches s'éclairent de bas en haut)

Alors ça, c'est ce qui se passe lorsque je lance la scène depuis l'interface fibaro et c'est ce que je voudrais qu'il se passe.

mais en pratique c'est différent:

En effet, j'ai suivi tes conseils Lazer et j'ai transformé ma scène blocs graphiques en LUA : super, cela m'a permis de transformer les secondes en millième de secondes.

Maintenant c'est un autre problème qui se pose.

En lisant la scène en LUA ci-dessous, vous pouvez constater que pour que la scène se déclenche il faut que :

La lumière des détecteurs soit inférieure à 5 lumens, que la marche 1 soit éteinte, que le détecteur de mouvement haut soit en alerte et alors les marches s'allument avec un intervalle d'un centième de seconde puis s'éteignent après dix secondes dans un intervalle d'un centième de secondes également

La condition que la marche 1 soit éteinte était selon moi la solution pour que lorsque je passerai dans l'escalier l'autre scène (celle qui détecte le mouvement en bas de l'escalier) ne se déclenche pas.

Et bien cela ne fonctionne pas car lorsque je passe dans l'escalier et bien forcément je passe devant les deux détecteurs (haut et bas) et cela provoque ce qu'on peut constater dans la dernière vidéo, c'est à dire que les deux scènes se déclenchent et provoque une extinction des marches anarchique.

Voilà, j'espère avoir été clair dans mes explications.

Par avance, merci pour vos conseils.

 

 

--[[
%% properties
275 value
280 value
352 value
344 value
%% weather
%% events
%% globals
--]]

local startSource = fibaro:getSourceTrigger();
if (
 ( tonumber(fibaro:getValue(275, "value")) < 5  or  tonumber(fibaro:getValue(280, "value")) < 5 )
and
 ( tonumber(fibaro:getValue(352, "value")) > 0 )
and
 ( tonumber(fibaro:getValue(344, "value")) == 0 )
or
startSource["type"] == "other"
)
then
    fibaro:call(338, "turnOn");
    setTimeout(function()
        fibaro:call(336, "turnOn");
    end, 100)
    setTimeout(function()
        fibaro:call(334, "turnOn");
    end, 200)
    setTimeout(function()
        fibaro:call(332, "turnOn");
    end, 300)
    setTimeout(function()
        fibaro:call(342, "turnOn");
    end, 400)
    setTimeout(function()
        fibaro:call(340, "turnOn");
    end, 500)
    setTimeout(function()
        fibaro:call(350, "turnOn");
    end, 600)
    setTimeout(function()
        fibaro:call(348, "turnOn");
    end, 700)
    setTimeout(function()
        fibaro:call(346, "turnOn");
    end, 800)
    setTimeout(function()
        fibaro:call(344, "turnOn");
    end, 900)
    setTimeout(function()
        fibaro:call(338, "turnOff");
    end, 10000)
    setTimeout(function()
        fibaro:call(336, "turnOff");
    end, 10100)
    setTimeout(function()
        fibaro:call(334, "turnOff");
    end, 10200)
    setTimeout(function()
        fibaro:call(332, "turnOff");
    end, 10300)
    setTimeout(function()
        fibaro:call(342, "turnOff");
    end, 10400)
    setTimeout(function()
        fibaro:call(340, "turnOff");
    end, 10500)
    setTimeout(function()
        fibaro:call(350, "turnOff");
    end, 10600)
    setTimeout(function()
        fibaro:call(348, "turnOff");
    end, 10700)
    setTimeout(function()
        fibaro:call(346, "turnOff");
    end, 10800)
    setTimeout(function()
        fibaro:call(344, "turnOff");
    end, 10900)
end
 

VID_20180528_121010.mp4

VID_20180528_120949.mp4

VID_20180528_123512.mp4

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

Je n'ai pas le temps de t'écrire du code LUA (je n'ai déjà pas le temps pour moi...) mais juste des remarques de fond sur la forme pour aider les forumeurs à t'aider :

- met ton code LUA dans les balises de code, ça le rendra lisible

- partage les liens des vidéos sur Youtube en privé.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Une bonne idée oui que ton code soit dans les balises adéquates sinon ce n'est pas très agréable à lire.

 

Je rajouterais une condition, par exemple :

  - de haut en bas :

   --> détection de mouvement du détecteur "Haut"

   --> passage d'une variable "DTHAUT" à 1

   --> Séquence d'allumage

  --> Extinction

  --> passage de la variable à 0

 

Donc les conditions seraient :

  - variable à 0 + toutes les précédentes, e cette facon lors du passage devant le detecteur du bas, pas de reaction, toutes les conditions ne seraient pas remplies ;-)

 

 

Lien vers le commentaire
Partager sur d’autres sites

mais comme j'imagine que tu veux éviter que la scène du bas démare si celle du haut est en route, ET inversément, tu créet Simplement un variable "ESCALIER" qui se met à 1 au début de la scène du haut (ou du bas) et à zéro à la fin de la scène du haut (ou du bas)

et au début de chacune des scènes, tu teste si la variable est à 0, Si oui, elle but continuer, sinon fibaro:abort()

Lien vers le commentaire
Partager sur d’autres sites

Merci à tous pour ces réponses, c'est gentil de votre part.

Lazer, je ne sais pas ce que sont les balises de code dont tu parles mais je vais chercher sur le forum et je te promets de le faire à l'avenir.

Sinon, je vais essayer les variables dont vous m'avez parlé, en effet, cela me parait une bonne idée.

Je n'en ai jamais créer mais je vais chercher tout seul et voir si j'y arrive avant de vous appeler à l'aide.

Je vous tiens informé de la suite dès que j'ai essayé.

Encore merci à tous

Lien vers le commentaire
Partager sur d’autres sites

Pour les variables, il faut juste aller sur le tab variables de l'interface.

Si pas nécessaire, ne PAS appuyer sur la disquette pour sauver les variables (bug uniquement dans cet onglet)

Lien vers le commentaire
Partager sur d’autres sites

Merci Bloug, j'ai vu ça un jour sur le net et je me suis dit : je veux la même chose.

Merci également à jojo et lazer.

Mais bon, je galère un peu.

J'essaye avec une variable et je vous tiens au courant.

 

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...