pepite Posté(e) le 26 octobre 2015 Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Indyana Posté(e) le 26 octobre 2015 Signaler Partager Posté(e) le 26 octobre 2015 Tu as le code de ta scène STP? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Berale64 Posté(e) le 26 octobre 2015 Signaler Partager 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Indyana Posté(e) le 26 octobre 2015 Signaler Partager 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! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Berale64 Posté(e) le 26 octobre 2015 Signaler Partager 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
pepite Posté(e) le 26 octobre 2015 Auteur Signaler Partager 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 ;-) Lien vers le commentaire Partager sur d’autres sites More sharing options...
pepite Posté(e) le 26 octobre 2015 Auteur Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Indyana Posté(e) le 27 octobre 2015 Signaler Partager Posté(e) le 27 octobre 2015 Dé nada!.... et confondre une vache normande avec un Hyppo africain.... pfuuuu, j'vous jure!.... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Berale64 Posté(e) le 27 octobre 2015 Signaler Partager Posté(e) le 27 octobre 2015 Non, c'est vrai. Il parle comme une vache espagnole !!! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Indyana Posté(e) le 27 octobre 2015 Signaler Partager 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é.... Lien vers le commentaire Partager sur d’autres sites More sharing options...
pepite Posté(e) le 27 octobre 2015 Auteur Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Indyana Posté(e) le 27 octobre 2015 Signaler Partager 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
pepite Posté(e) le 28 octobre 2015 Auteur Signaler Partager Posté(e) le 28 octobre 2015 Salut, Ah oui bien vu, merci ;-) Lien vers le commentaire Partager sur d’autres sites More sharing options...
vjoubin Posté(e) le 19 novembre 2015 Signaler Partager 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é? Lien vers le commentaire Partager sur d’autres sites More sharing options...
vjoubin Posté(e) le 19 novembre 2015 Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés