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...
++
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
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 ?
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 ?
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 ;-)
And the winner is : Captainigloo
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à...
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...
[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 ???
Encore un grand merci à toi et Raoulh pour votre aide !!!
Allez hop je vais rajouter le script dans le wiki !
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")
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_sat...mi%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.
Autre petite question concernant la programmation :
Comment déclencher une action dans un temps défini après une autre action...
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.