Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Est-il possible de lister les évènements ?
#11
J'ai commencé à réaliser le projet script LUA, pour le moment sur du word....

@Raoulh : peux tu me donner les droits sur le wiki stp pour que je puisses mettre tout ca en ligne ?

@Captainigloo : J'ai étudié ton script de changement de couleur en fct de la température. J'ai quelques questions :
str : j'ai compris que ca permet de mettre en mémoire une valeur, mais quel est son doux nom technique ? Variable ? autre ?
local temp = calaos:getInputValue("input_4") : tu mets la valeur de ton entrée N°4 dans la variable "temp", c'est bien ca !?
str = "set 0xFF3D00" : j'imagine que "set 0xFF3D00" c'est "l'adresse" de la couleur choisi !?
CALAOS V3 | WAGO 750-849 | NUC NUC5PPYH | Ecran tactile ELO 1537L avec Ampli VGA et adaptateur USB/RS232 Grillé Angry  |
Sondes PT1000 | DMX RGBW pour Rubans Leds 24v | Caméras POE Weisky
Reply
#12
Salut,

'str' est une variable locale au script. En lua , il n'y a pas de type de variable. Donc c'est juste une variable.
Dans la suite du script on y met une variable de type chaine de caractères.

temp est également une variable a laquelle on affecte une valeur réelle, en l'occurence dans ce cas la valeur de la variable "input_4" qui est chez moi la température. Donc oui c'est bien ca, après l'appel de fonction temp contiendra la valeur de la température courante.

str = "set 0xFF3D00"
Ici je rempli str avec une chaine de caractère.
C'est effectivement ici un peu la partie complexe de calaos. Il faut qu'on fasse un effort dans la v3 pour expliquer quoi mettre en fonction du type des Entrées/Sorties.
Pour chaque sortie calaos modifie la valeur de sortie lorqu'on change la valeur. La valeur que l'on doit mettre dans 'calaosConfusedetOutputValue' est fonction du type.
Dans le cas d'une lumière RGB, on doit mettre "set" puis la valeur en hexadécimal de la couleur.
Tu peux regarder ici pour connaitre la couleur : http://www.code-couleur.com
Ca te donne le code hexadecimal, qui noté comme ceci :

RED, GREEN, BLUE (RGB ) ou Rouge Vert Bleu (RVB) en fr.

chaque composante est codée sur un octet et prends donc une valeur entre 0 et 255.
Par exemple le code 255, 0, 0 correspond a la composante rouge a son maximum (100%) et les composantes vertes et bleue a leur minimum. La couleur de sortie sera donc ROUGE
Si on met 255, 255, 0 on aura la Rouge a 100% et le vert a 100% , tu auras donc la couleur jaune en sortie.

0, 0, 0 c'est du noir et 255, 255, 255 c'est du blanc

Ensuite tu converti les valeur 0 a 255 décimale en notation hexadécimale. Cela donne donc des nombres entre 0 et FF
et tu assembles les 3 composantes RGB. Cela donne pour le rouge par exemple 0xFF0000 et pour le jaune 0xFFFF00

Dans mon cas la valeur 0xFF3F00 correspond a un rouge un peu orangé qui a un bel éclat sur la lapin les jours de canicules Smile

En ce qui concerne le Wiki, tu peux faire une demande d'accès en ligne tu as un bouton Register en haut a droite.
Calaos v2 sur Rpi et MeleA1000 | Eco Device | IPX800 | Karotz | 1Wire | Relais GPIO | Squeezebox
Reply
#13
Merci Captainigloo pour ces explications très claires !
Ca m'a rappelé des souvenirs... y a bien longtemps je n'avais pas utilisé l'hexadécimal !!!! Tongue
Du coup j'ai appris plein de trucs qui vont me servir puisque je suis en train de voir pour acheter tout le matos pour gérer des rubans led RGBW.

Et donc ma nouvelle question : pour du RGBW, par exemple pour du blanc 100%, je code comme ca : 0x000000FF
J'ai bon ?


Je regarde également ton 2ème script pour envoyer des SMS via Free suivant un évènement. J'ai un peu de mal à tout comprendre, voir mes questions en gras sur les lignes (dsl ca fait bcp de questions... Confused ):

function urlencode(str)   *** fonction permettant d'encoder une chaine de caractère pour l'intégrer dans une URL ? On demande au système de conserver la valeur dans la variable str ? ***
   if (str) then   *** Pourquoi str est entre () ? ***
      str = string.gsub (str, "\n", "\r\n")  *** string.gsub permet de modifier les caractères, mais à quoi correspond "\n", "\r\n" ? ***
      str = string.gsub (str, "([^%w ])", *** idem pour ([^%w ]) ? ***
         function © return string.format ("%%%02X", string.byte©) end) *** a priori tu modifies le format, mais pas compris pourquoi c entre () et les arguments "%%%02X", string.byte©) end) ***
      str = string.gsub (str, " ", "%%20")
   end
   return str    *** ca fait quoi exactement ? ***
end
 
local user = "username"
local pass = "password"
local msg = "le message à envoyer en fonction de la règle"
 
calaos:requestUrl("https://smsapi.free-mobile.fr/sendmsg?user="..user.."&pass="..pass.."&msg="..urlencode(msg)) *** pourquoi ne retrouve t'on pas str ici ? C'est urlencode qui a conservé les mises en forme définies en début de script ? ***
 
return true  ***la c'est pareil, comprends pas trop l'utilité de cette ligne ? ***



J'ai commencer à compléter le wiki.... c'est une ébauche, mais n'hésitez pas à faire vos commentaires pour que j'améliore !

Comment peut-on mettre du texte en couleur ?
Est-il possible de faire un lien qui se trouve dans la même page ? (par exemple : mettre en début de page la liste des scripts et en cliquant sur celui qui nous intéresse on arrive direct au script concerné)
CALAOS V3 | WAGO 750-849 | NUC NUC5PPYH | Ecran tactile ELO 1537L avec Ampli VGA et adaptateur USB/RS232 Grillé Angry  |
Sondes PT1000 | DMX RGBW pour Rubans Leds 24v | Caméras POE Weisky
Reply
#14
bon j'avais répondu direct, mais un crash de firefox a eu raison de moi. Donc je reviens avec du retard Smile

La premiére chose qu'il faut savoir, c'est que lorsque tu utilises une API web, comme c'est le cas ici pour envoyer un sms, la machine fait une requête web pour toi. De la même maniére que si tu tappais dans la barre d'adresse d'un navigateur toi meme. A une seule différence, c'est que toi quand tu tappes, tu écris et le navigateur transforme l'url que tu tappes, il l'encode. Pour que par exemple les espaces soient tous remplacés par des charactéres que le serveur distant pourra interpreter correctement.

C'est ainsi que si tu tappes dans google une recherche comme celle la :
calaos c'est bien ?
l'url utilisée est : https://www.google.fr/?gws_rd=ssl#q=cala...t+bien+%3F
le ? est remplacé par un %3F le ' est remplacé par un %27
ce sont leur valeurs dans la table ascii : http://www.asciitable.com/

Ainsi si tu veux envoyer un message bien particulier par sms via l'api de free, il faudra également l'encoder.
Si tu veux regarder ce que ca donne en ligne tu peux regarder ceci : http://www.url-encode-decode.com/
et essayer avec diffférents messages.
C'est exactement ce que fait la fonction urlencode

Elle prends en entrée de la fonction une chaîne de caractére non encodé, et elle retourne en sortie une chaîne encodée.
Ainsi a chaque fois que tu apelles la fonction chaine_encode = urlencode(chaine_non_encode) le résultat encode sera stocké dans la variable chaine_encode.

Je ne rentrerai pas forcément dans le détail de la fonction en elle meme, tu peux regarder ici http://lua-users.org/wiki/StringLibraryTutorial pour un tutorial sur l'utilisation des chaines de charactéres dans lua. il y a par exemple l'utilisation de gsub

Ce n'est pas moi qui ait écris ce script, et j'avoue que je ne comprends pas toutes les subtilités de la fonction urlencode.

Une chose a savoir quand meme sur les string en lua, c'est que pour concatener des chaines, tu peux utiliser l'opérateur ..

ainsi si tu fait str = "Hello" .. "World"
le contenu de str sera HelloWorld

Dans notre cas, on va donc avoir la chaîne passée a calaos:requestUrl qui sera la concaténation des différentes strings et contiendra au final quelque chose comme ceci :
<code>
https://smsapi.free-mobile.fr/sendmsg?us...2C5%C2%B0C
</code>

le dernier return, permet de savoir a calaos si le script a rencontré une erreur (si on retourne false) ou non (si on retourne true). Je ne sais plus ce que ca veux dire, je retourne toujours true Smile
Calaos v2 sur Rpi et MeleA1000 | Eco Device | IPX800 | Karotz | 1Wire | Relais GPIO | Squeezebox
Reply
#15
Merci Captain igloo pour ces précisions... du coup c'est moi qui te réponds très en retard, suite à 3 semaine sans internet à la maison... Angry

Bon je vois que ce sont des fonctions assez complexes... je vais pas essayer de les décripter ca serait trop compliqué et trop long !!! Confused
CALAOS V3 | WAGO 750-849 | NUC NUC5PPYH | Ecran tactile ELO 1537L avec Ampli VGA et adaptateur USB/RS232 Grillé Angry  |
Sondes PT1000 | DMX RGBW pour Rubans Leds 24v | Caméras POE Weisky
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)