Aller au contenu

Startscene/killscenes


pepite

Messages recommandés

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

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  P'y chuis pas une grosse empotée d'abord! <_<

Lien vers le commentaire
Partager sur d’autres sites

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

:lol:

 

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

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

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

  • 4 semaines après...
scene ci jointe



  1. --[[



  2. %% autostart



  3. %% properties



  4. 69 value



  5. 53 value



  6. 73 value



  7. --]]



  8.  



  9. -- ================================================



  10. -- PREPARATION DU CODE, ON CREER LES FONCTIONS QUE



  11. -- NOUS ALLONS DEVOIR APPELER PAR LA SUITE



  12. -- Dans notre cas, il y a au moins 2 fonctions :



  13. -- une pour l'envoi du message



  14. -- une pour obtenir les informations du module et son état



  15. --



  16. -- Une fonction est un morceau de code que nous pouvons appeler



  17. -- plusieurs fois. Elle peux recevoir des paramètres.



  18. -- Une fonction peux exister sans pour autant être utilisée



  19. -- ================================================



  20.  



  21. -- ================================================



  22. -- Envoi un message sur un ou plusieurs portables



  23. -- ----------------------------------------------------------------------------------



  24. -- Parmètre :



  25. -- idPortables : numéro d'un portable ou tableau de plusieurs portable



  26. -- message : message à  envoyer



  27. -- Exemple :



  28. -- sendPush(23, "Envoi d'un message simple")



  29. -- sendPush({23,25,27}, "Envoi a plusieurs destinataires")



  30. -- ================================================



  31. function sendPush(idPortables, message)



  32. if (type(idPortables) == "table") then



  33. -- Si nous avons plusieurs numéros dans un tableau {}



  34. for i = 1, #idPortables do



  35. -- On envoi le message sur tout les portables



  36. fibaro:call(idPortables[i], "sendPush", message)



  37. end



  38. fibaro:debug(string.format("Pushs envoyés : %s", message))



  39. elseif (type(idPortables) == "number") then



  40. -- Si nous avons un seul numéro de portable



  41. fibaro:call(idPortables, "sendPush", message)



  42. fibaro:debug(string.format("Push envoyé : %s", message))



  43. else



  44. fibaro:debug(string.format("Erreur : le numéro %s n'est pas valable", idPortables))



  45. end



  46. end



  47.  



  48. -- ================================================



  49. -- Retourne les information sur un device



  50. -- ----------------------------------------------------------------------------------



  51. -- Parmètre :



  52. -- deviceId : l'dientifiant du device



  53. -- Exemple :



  54. -- local message = getDeviceInfo(69)



  55. -- ================================================



  56. function getDeviceInfo(deviceId)



  57. local etat = "ouverte"



  58. if (fibaro:getValue(deviceId, 'value' ) == "0") then



  59. etat = "ferme"



  60. end



  61. return string.format("La %s est %s.", fibaro:getName(deviceId), etat)



  62. end



  63.  



  64. -- ================================================



  65. -- FIN DE LA PREPARATION DU CODE



  66. -- ================================================



  67.  



  68. -- ================================================



  69. -- DEBUT DU CODE PRINCIPAL



  70. -- ================================================



  71.  



  72. -- Déclaration du/des numéros de portables



  73. local idportables = 181



  74. -- local idportables = {23, 24, 25}



  75.  



  76. -- Le déclencheur de cette scène, va nous permettre de savoir qui et



  77. -- comment cette scène a été démarrée



  78. local SourceTrigger = fibaro:getSourceTrigger()



  79.  



  80. if (SourceTrigger['type'] == 'property') then



  81. -- si la scène a été démarrée par un "device", on va récupérer



  82. -- les informations du device



  83. local message = getDeviceInfo(SourceTrigger['deviceID'])



  84. -- puis l'envoyer sur les portables



  85. sendPush(idportables, message)



  86. elseif (SourceTrigger['type'] == 'other') then



  87. -- Si la scène a été démarrée manuellement



  88. sendPush(idportables, string.format("La scène a été lancée le %s a %s", os.date("%d/%m/%Y"), os.date("%R")))



  89. elseif (SourceTrigger['type'] == 'autostart') then



  90. -- Si la scène a été démarrée par une sauvegarde de cette scène



  91. -- ou le redémarrage de la box



  92. sendPush(portables, string.format("La box a démarré le %s a %s", os.date("%d/%m/%Y"), os.date("%R")))



  93. end


Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...