Calaos, Home Automation Forum
Tuto Script LUA - Printable Version

+- Calaos, Home Automation Forum (https://calaos.fr/forum)
+-- Forum: Développement (https://calaos.fr/forum/forumdisplay.php?fid=8)
+--- Forum: Programmation (https://calaos.fr/forum/forumdisplay.php?fid=9)
+--- Thread: Tuto Script LUA (/showthread.php?tid=110)

Pages: 1 2 3


RE: Tuto Script LUA - Cyridle - 02-01-2015

Salut,
Quand je tente de récupérer la valeur d'une sonde (sonde1=calaos:getInputValue("id2masonde")) j'ai ca qui s'affiche "7.0623774870736e-304"...
Y a une conversion à faire? j'ai essayé la fonction "tonumber" mais même résultat...

++


RE: Tuto Script LUA - Eric64 - 12-22-2015

Je remonte ce post car je suis en train de faire un nouveau script et je n'y arrive pas...

J'ai un détecteur de présence dans mon entrée qui permet d'allumer certaines lumières lorsqu'on ne fait que passer. Lorsque quelqu'un sonne a la porte d'entrée on allume les lumières avec un BP... mais le détecteur lui allume et éteint suivant si on bouge ou pas.

Je souhaite donc ajouter une variable qui détermine si mon BP a été activé en la passant à 1 pour bloquer les actions du détecteur de mouvements, puis le remettre en service lorsque j'éteins les lumière du BP en repassant ma variable à 0.

Voila le script que j'ai écris, mais il y a une erreur et je ne la trouve pas...


Code:
local Variable_Activation_Inter = calaos:getInputValue("intern_7")

if Variable_Activation_Inter = "0" then
  Variable_Activation_Inter = "1"
  calaos:setOutputValue("output_78", true)
  calaos:setOutputValue("output_54", true)
  calaos:setOutputValue("output_14", true)

else if Variable_Activation_Inter = "1" then
  calaos:setOutputValue("output_78", false)
  calaos:setOutputValue("output_54", false)
  calaos:setOutputValue("output_14", false)
  Variable_Activation_Inter = "0"

end
return true



RE: Tuto Script LUA - raoulh - 12-22-2015

Comme ca:

Code:
local Variable_Activation_Inter = calaos:getInputValue("intern_7")

if Variable_Activation_Inter == "0" then
   Variable_Activation_Inter = "1"
   calaos:setOutputValue("output_78", true)
   calaos:setOutputValue("output_54", true)
   calaos:setOutputValue("output_14", true)
elseif Variable_Activation_Inter == "1" then
   calaos:setOutputValue("output_78", false)
   calaos:setOutputValue("output_54", false)
   calaos:setOutputValue("output_14", false)
   Variable_Activation_Inter = "0"
end
return true



RE: Tuto Script LUA - Eric64 - 12-22-2015

arfff j'tais pas loin... Merci Raoulh.

Je viens de tester ca marche pas je pense que j'ai mal configuré ma variable : j'ai fait une variable bool, sans mettre de valeur... maintenant je peux pas lui donner de 0 par défaut...
T'en penses quoi ?


RE: Tuto Script LUA - Eric64 - 12-22-2015

J'avance sur ce script...

J'ai coché dans ma variable :
save + rw + visible + enable

J'ai modifié le script comme ca :


Code:
local Variable_Activation_Inter = calaos:getInputValue("intern_7")

if Variable_Activation_Inter == false then
  Variable_Activation_Inter = true
  calaos:setOutputValue("output_78", true)
  calaos:setOutputValue("output_54", true)
  calaos:setOutputValue("output_14", true)

elseif Variable_Activation_Inter == true then
  calaos:setOutputValue("output_78", false)
  calaos:setOutputValue("output_54", false)
  calaos:setOutputValue("output_14", false)
  Variable_Activation_Inter = false

end
return true


J'ai ajouté ma variable dans mes condition d'allumage et d'éteinte lumière avec le Détecteur mouvement.

Lorsque j'appui sur le BP les lumières s'allument, mais si je rappui ca ne s'éteint pas. En fait en faisant des test je pense que la variable reste a False...

Comment arriver a modifier son état ?


RE: Tuto Script LUA - captainigloo - 12-23-2015

Le script me semble bon, mais tu ne modifie que la variable locale "Variable_Activation_Inter", tu ne modifies pas la valeur de "intern_7"
Je pense qu'en changeat la valeur de "intern_7" ca devrait fonctionner comme tu souhaites :
essaye avec ce script :



Code:
local Variable_Activation_Inter = calaos:getInputValue("intern_7")

if Variable_Activation_Inter == false then
  calaos:setOutputValue("output_78", true)
  calaos:setOutputValue("output_54", true)
  calaos:setOutputValue("output_14", true)
  calaos:setOutputValue("intern_7", true)
elseif Variable_Activation_Inter == true then
  calaos:setOutputValue("output_78", false)
  calaos:setOutputValue("output_54", false)
  calaos:setOutputValue("output_14", false)
  calaos:setOutputValue("intern_7", false)
end
return true

Ce script fonctionne, mais a mon sens il est plus simple de réaliser ce genre de comportement avec des regles calaos toute simple. puisque ici tu as une condition et 3 actions.
Mais c'est tout a fait possible de faire ca avec calaos et des scripts lua ;-)


RE: Tuto Script LUA - Eric64 - 12-23-2015

And the winner is : Captainigloo Wink 

Effectivement c'était bien ça, il faut changer le inter_7 pour que la variable change aussi... ton script marche nikel et je peux vérifier sur l'écran le changement d'état de la variable... c'était trop subtile pour moi là... Confused

Pour répondre à ta remarque, effectivement je pourrai faire une règle simple avec : si bp == 1 alors lumières == toggle et variable == toggle... puis récupérer l'état de la variable pour les règles du détecteur de mouvement...
En fait je le fais en LUA car 1 de ces lumières est une RGBW. Pour simplifier le script je l'ai mise en true, mais en fait je vais programmer une certaine couleur lors de l'allumage par BP et une autre par Détecteur de présence... et ça je pense que je peux le faire que par script LUA en utilisant les code hexadécimaux dont tu m'as parlé dans un autre post... Wink
[Edit 1] après vérif je vois qu'on peut paramétrer une couleur à x%... mais je peux pas faire un mix par ex : vert à 27% + bleu à 32% + rouge à 59%... euh ca donne quoi comme couleur au final ??? Huh Big Grin Big Grin Big Grin Big Grin Big Grin Cool 

Encore un grand merci à toi et Raoulh pour votre aide !!!
Allez hop je vais rajouter le script dans le wiki !


RE: Tuto Script LUA - Eric64 - 12-23-2015

Petite question :

Pour la lumière RGB faut-il écrit ça :
Code:
calaos:setOutputValue("output_78", set 0xFFFF00)

ou ça :
Code:
calaos:setOutputValue("output_78", "set 0xFFFF00")



RE: Tuto Script LUA - captainigloo - 12-23-2015

Avec les guillemets, car c'est une chaine de caractéres.

Code:
calaos:setOutputValue("output_78", "set 0xFFFF00")

Pour ce qui est des couleurs, c'est tres subtil, un élément de réponse : https://fr.wikipedia.org/wiki/Teinte_saturation_lumi%C3%A8re

C'est très intéressant, et nous n'avons pas encore trouvé une façon fiable de représenter les couleurs dans Calaos. Nous avons pour le moment la solution #RRGGBB mais nous ne pouvons pas jouer facilement sur la "luminosité" de la couleur. Pour cela il faudrait utiliser hsl ou hsv. Mais le problème c'est de convertir dans les deux sens.
Pour la v3 nous avons améliorer un peu les choses et l'on peux utiliser la notation : set hsl(0, 100, 16) ou set rgb(50, 10, 30) comme c'est le cas sur les pages WEB. Mais dans la v2, il faut utiliser la notation que tu utilises.


RE: Tuto Script LUA - Eric64 - 02-15-2016

Autre petite question concernant la programmation :
Comment déclencher une action dans un temps défini après une autre action... Confused

Par exemple : je clique sur un BP pour allumer une lumière, une fois la lumière allumée je veux allumer une autre lumière 50s plus tard.