pepite Posté(e) le 26 octobre 2015 Signaler Posté(e) le 26 octobre 2015 Bonjour à tous, J'ai créé un sujet ici : http://www.domotique-fibaro.fr/index.php/topic/6155-lua-startscenekillscene/?p=93294 J'ai essayé plusieurs fois, mais toujours le même résultat, si je ne passe pas par l'enregistrement de la scene, aucun traitement. J'ai atteint "les bornes de mes limites" ;) Comment faire le même "save" qu'avec l'interface en LUA ? Merciiii
Indyana Posté(e) le 26 octobre 2015 Signaler Posté(e) le 26 octobre 2015 Tu as le code de ta scène STP?
Berale64 Posté(e) le 26 octobre 2015 Signaler Posté(e) le 26 octobre 2015 Je sais que les hippos ont des gros doigts, mais il suffit de cliquer sur le lien de pepite.
Indyana Posté(e) le 26 octobre 2015 Signaler Posté(e) le 26 octobre 2015 alors d'abord je suis plutôt vache que hypo! Limité véxé là !... Ensuite, je voulais le script appelé, pas le script appelant. En effet si dans son script appelé il y a un truc du genre if (sourceTrigger["type"] == "autostart") then autostart(); end hé ben le startscene() ne fonctionnera tout simplement pas. et je pense que c'est ce qu'il fait parce que sa scène fonctionne à l'enregistrement. Il faudrait donc qu'il remplace sont test par un truc du genre if (sourceTrigger["type"] == "autostart" or sourceTrigger["type"] == "other") then autostart(); end Na! P'y chuis pas une grosse empotée d'abord!
Berale64 Posté(e) le 26 octobre 2015 Signaler Posté(e) le 26 octobre 2015 Bon, alors c'est une vache qui du fauter Sinon, ta remarque est très pertinente. C'est GEA qu'il restait. Il faut se plonger dans le code.
pepite Posté(e) le 26 octobre 2015 Auteur Signaler Posté(e) le 26 octobre 2015 J'aurais dit Vache aussi, mais hippo c'est cool aussi ;-) C'est GEA que je voudrais redemarrer :-) Vais aller jeter un oeil, c'est une bonne info, merci ;-)
pepite Posté(e) le 26 octobre 2015 Auteur Signaler Posté(e) le 26 octobre 2015 Messieurs, vous etes au TOP, ca a l'air de fonctionner Je suis donc allé modifier le code GEA : PArtout où j'ai trouvé cela : GEA.source["type"] == "autostart" (il n'y en a que 5 ou 6) Je l'ai remplacé par ceci, (parfois faut faire attention aux parentheses) : GEA.source["type"] == "autostart" or GEA.source["type"] == "other" Je teste encore sur plusieurs jours mais cela a l'air vraiment OK MErci l'hippo vache ;-) et merci aussi à Berale24
Indyana Posté(e) le 27 octobre 2015 Signaler Posté(e) le 27 octobre 2015 Dé nada!.... et confondre une vache normande avec un Hyppo africain.... pfuuuu, j'vous jure!....
Berale64 Posté(e) le 27 octobre 2015 Signaler Posté(e) le 27 octobre 2015 Non, c'est vrai. Il parle comme une vache espagnole !!!
Indyana Posté(e) le 27 octobre 2015 Signaler Posté(e) le 27 octobre 2015 Je viens de jeter un oeil sur GEA. Le plus simple serait peut être de remplacer ceci: GEA.source = fibaro:getSourceTrigger() Par cela: GEA.source = fibaro:getSourceTrigger() If (GEA.source["type"]=="other" and fibaro:countScenes(IdScene)==1) then GEA.source["type"]='autostart'; end IdScene est évidemment l'id de ta scène. Pourquoi faire ça? Parce que comme ça, si ta scène est arrêtée, tu peux la relancer via une autre scène (de surveillance par exemple) ou via le bouton d'exécution de ta scène. Si tu exécutes une seconde fois via le bouton et que ta scène est déjà démarrée (ce que vérifie le countScenes), il ne passe plus en mode autostart mais en mode exécution classique. Voilà voilou... Ps : Code non testé....
pepite Posté(e) le 27 octobre 2015 Auteur Signaler Posté(e) le 27 octobre 2015 Ah oui, tres bonne idee, j'ai modifie le code mais comme ceci, afin de pouvoir demander aux experts GEA de le mettre dans les versions du git et ne plus avoir à penser à modifier le code ;-) GEA.source = fibaro:getSourceTrigger() if (GEA.source["type"]=="other") then GEA.source["type"]=="autostart" end en cours de tests, je ne l'ai fait qu1 fois mais ca a l'air de fonctionner aussi ;-) Merci beaucoup Wait and see
Indyana Posté(e) le 27 octobre 2015 Signaler Posté(e) le 27 octobre 2015 Non, il ne faut pas faire ça, sinon àchaque fois que tu lanceras la scène via le bouton ou une autre scène, tu vas avoir une scène qui tourne en permanence en tache de fond. Donc par exemple 10 appuis=10 scènes qui tournent en parallèles...bonne chance pour gérer le boxon..... Tu n'auras plus qu'àredémarrer ta box pour t'en sortir.
pepite Posté(e) le 28 octobre 2015 Auteur Signaler Posté(e) le 28 octobre 2015 Salut, Ah oui bien vu, merci ;-)
vjoubin Posté(e) le 19 novembre 2015 Signaler Posté(e) le 19 novembre 2015 bonsoir comment appliquer ceci à la scene " Scene Lua - Notification Si Porte Ouverte Ou Fermer du forum? l'idée c est de pouvoir declencher et arreter cette scene que lorsque on arme le module concerné?
vjoubin Posté(e) le 19 novembre 2015 Signaler Posté(e) le 19 novembre 2015 scene ci jointe --[[ %% autostart %% properties 69 value 53 value 73 value --]] -- ================================================ -- PREPARATION DU CODE, ON CREER LES FONCTIONS QUE -- NOUS ALLONS DEVOIR APPELER PAR LA SUITE -- Dans notre cas, il y a au moins 2 fonctions : -- une pour l'envoi du message -- une pour obtenir les informations du module et son état -- -- Une fonction est un morceau de code que nous pouvons appeler -- plusieurs fois. Elle peux recevoir des paramètres. -- Une fonction peux exister sans pour autant être utilisée -- ================================================ -- ================================================ -- Envoi un message sur un ou plusieurs portables -- ---------------------------------------------------------------------------------- -- Parmètre : -- idPortables : numéro d'un portable ou tableau de plusieurs portable -- message : message à envoyer -- Exemple : -- sendPush(23, "Envoi d'un message simple") -- sendPush({23,25,27}, "Envoi a plusieurs destinataires") -- ================================================ function sendPush(idPortables, message) if (type(idPortables) == "table") then -- Si nous avons plusieurs numéros dans un tableau {} for i = 1, #idPortables do -- On envoi le message sur tout les portables fibaro:call(idPortables[i], "sendPush", message) end fibaro:debug(string.format("Pushs envoyés : %s", message)) elseif (type(idPortables) == "number") then -- Si nous avons un seul numéro de portable fibaro:call(idPortables, "sendPush", message) fibaro:debug(string.format("Push envoyé : %s", message)) else fibaro:debug(string.format("Erreur : le numéro %s n'est pas valable", idPortables)) end end -- ================================================ -- Retourne les information sur un device -- ---------------------------------------------------------------------------------- -- Parmètre : -- deviceId : l'dientifiant du device -- Exemple : -- local message = getDeviceInfo(69) -- ================================================ function getDeviceInfo(deviceId) local etat = "ouverte" if (fibaro:getValue(deviceId, 'value' ) == "0") then etat = "ferme" end return string.format("La %s est %s.", fibaro:getName(deviceId), etat) end -- ================================================ -- FIN DE LA PREPARATION DU CODE -- ================================================ -- ================================================ -- DEBUT DU CODE PRINCIPAL -- ================================================ -- Déclaration du/des numéros de portables local idportables = 181 -- local idportables = {23, 24, 25} -- Le déclencheur de cette scène, va nous permettre de savoir qui et -- comment cette scène a été démarrée local SourceTrigger = fibaro:getSourceTrigger() if (SourceTrigger['type'] == 'property') then -- si la scène a été démarrée par un "device", on va récupérer -- les informations du device local message = getDeviceInfo(SourceTrigger['deviceID']) -- puis l'envoyer sur les portables sendPush(idportables, message) elseif (SourceTrigger['type'] == 'other') then -- Si la scène a été démarrée manuellement sendPush(idportables, string.format("La scène a été lancée le %s a %s", os.date("%d/%m/%Y"), os.date("%R"))) elseif (SourceTrigger['type'] == 'autostart') then -- Si la scène a été démarrée par une sauvegarde de cette scène -- ou le redémarrage de la box sendPush(portables, string.format("La box a démarré le %s a %s", os.date("%d/%m/%Y"), os.date("%R"))) end
Messages recommandés