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) |
Tuto Script LUA - tom - 01-08-2014 Je sais que les dev ont deja un taf de fou pour la sortie de la V2 Mais j'aurai souhaité savoir si un petit tuto sur les scripts LUA serait envisageable histoire de comprendre comment ca fonctionne et avoir quelques petit trucs de base, peut être existe-t-il déjà ? Merci à vous RE: Tuto Script LUA - raoulh - 01-08-2014 Le langage utilisé pour les script est du LUA, plus d'info ici: http://www.lua.org/ Il faut par contre que j'ecrive la doc pour les fonctions propres à Calaos, mais en attendant on peut faire cela: Code: calaos:getInputValue("id") On peut utiliser un script LUA aussi bien dans une condition que dans une action. Dans une condition, le script doit retouner true ou false pour déterminer si la condition est valide ou non et lancer les actions. Voici un exemple complet de gestion de chauffage chez moi: Code: print("script chauffage start") L'avantage d'utiliser un script c'est qu'on gérer plus finement les element. Surtout si on a besoin de faire des test par exemple "si temperature < sonde + consigne". On ne peut pas faire ce genre de chose avec des regles simples. Il faut aussi garder a l'esprit que le script n'est pas executé en continue. Seulement lorsque qu'une IO que l'on specifie dans le regles change. Dans mon programme chauffage, j'ai donc mis les sondes de temperatures de mon chauffage et les consignes comme declencheur du script. Donc des qu'une temperature ou une consigne change, le script se lance pour voir si il faut allumer/couper la pompe, le plancher, l'appoint electrique, etc... RE: Tuto Script LUA - tom - 01-08-2014 Très intéressant ca me plait bien ça ... Je vais bûcher ca ce soir ... A quoi sert le premier code que tu as posté ? RE: Tuto Script LUA - raoulh - 01-08-2014 (01-08-2014, 02:14 PM)tom Wrote: Très intéressant ca me plait bien ça ... Je vais bûcher ca ce soir ... A rien tel quel C'est juste les appels de fonctions spécifiques a Calaos. Recupere la valeur d'une entrée: Code: calaos:getInputValue("id") Recupere la valeur d'une sortie: Code: calaos:getOutputValue("id") Change la valeur d'une sortie: Code: calaos:setOutputValue("id", "valeur") Appel d'une URL Code: calaos:requestUrl("url") Appel d'une URL avec des donnée en POST[/code] Code: calaos:requestUrl("url", "POST DATA") RE: Tuto Script LUA - captainigloo - 01-08-2014 J'ai dans l'idée d'utiliser un script LUA pour faire la régulation de mon chauffage. Aujourd'hui j'utilise des regles de base écrites avec calaos-installer, mais un des problémes que je rencontre, c'est que lorsque la température est tres proche de la température de consigne, la chaudiére s'allume et s'éteint en permannence, je pense que c'est pas forcément tres bon pour la chaudiére, et je souhaiterai donc ajouter une histeresis, qui me permettrait d'éviter ces effets d'allumage/extinction en permanence. J'essaierai de mettre en ligne un tuto pour expliquer comment faire. RE: Tuto Script LUA - tom - 01-09-2014 Raoul j'ai besoin de précision pour commencer ... Je prend le script de ton chauffage print("script chauffage start") [ca sert à donner un nom au script ??] local temp_panneaux = calaos:getInputValue("input_temp_3") [si je comprend bien tu definis un nom de variable à une entrée ??] [ca veut dire quoi "local"?)] local temp_ballonh = calaos:getInputValue("input_temp_0") [input_temp je suppose que ce doit etre le numéro de l'entrée sonde] local temp_plancher = calaos:getInputValue("input_temp_2") local consigne = calaos:getInputValue("intern_10") [ c'est quoi intern 10 ???] local consigne_ballon = calaos:getInputValue("intern_1") local consigne_plancher = calaos:getInputValue("intern_0") if temp_panneaux >= (temp_ballonh + consigne) then [tu veux dire quoi ???] -- active pompe solaire si < max if temp_ballonh < 70 then calaosetOutputValue("output_chauff_2", true) else [ca veux dire quoi ??] calaosetOutputValue("output_chauff_2", false) end -- force stop elect resistance [ce sont simplement des commentaires ??] calaosetOutputValue("output_chauff_1", false) active_elec = false end -- Arret de la pompe solaire si temperature panneau insuffisante if temp_panneaux <= temp_ballonh then -- stop pompe solaire calaosetOutputValue("output_chauff_2", false) active_elec = true end -- start/stop elec si consigne et active elec if active_elec then if temp_ballonh <= consigne_ballon then calaosetOutputValue("output_chauff_1", true) end if temp_ballonh > (consigne_ballon + 1) then calaosetOutputValue("output_chauff_1", false) end end -- start/stop plancher pompe si consigne if temp_plancher <= consigne_plancher then calaosetOutputValue("output_chauff_0", true) end if temp_plancher > (consigne_plancher + 1) then calaosetOutputValue("output_chauff_0", false) end -- pas besoin d'action, toujours retourner false return false RE: Tuto Script LUA - raoulh - 01-09-2014 Oula... On part de loin Pour commencer je crois qu'il faudrait que tu lises un tuto ou 2 sur le language LUA pour apprendre sa structure et son fonctionnement. Par exemple: http://fr.wikipedia.org/wiki/Lua http://fr.openclassrooms.com/informatique/cours/programmez-sur-votre-ds-avec-microlua/les-bases-de-la-programmation-avec-lua http://www.luteus.biz/Download/LoriotPro_Doc/LUA/LUA_Training_FR/Introduction_Programmation.html LUA est en un language de script, donc il faut connaitre sa syntaxe et avoir des notions de programations. Ca s'apprend et c'est un language assez simple. Concernant tes questions: Quote:print("script chauffage start") [ca sert à donner un nom au script ??]Non ca sert a afficher un message dans les logs, principalement pour débuguer Quote:local temp_panneaux = calaos:getInputValue("input_temp_3") [si je comprend bien tu definis un nom de variable à une entrée ??] [ca veut dire quoi "local"?)]Non, ici local déclare une variable locale, et je lui affecte la valeur de la sonde de temperature qui a l'identifiant input_temp_3. Chaque element dans calaos a un identifiant unique. Quote:local temp_ballonh = calaos:getInputValue("input_temp_0") [input_temp je suppose que ce doit etre le numéro de l'entrée sonde]Non pas le numero, c'est l'identifiant d'une sonde. L'identifiant dans calaos est unique pour chaque element. Et il peut etre de n'importe quel forme. Par defaut calaos utilise des input_XX ou output_XX Quote:local consigne = calaos:getInputValue("intern_10") [ c'est quoi intern 10 ???]C'est une variable interne. On peut les creer dans calaos installer (Variable interne de type booleen, numerique ou chaine de caractere) Quote:if temp_panneaux >= (temp_ballonh + consigne) then [tu veux dire quoi ???]C'est un test. Si la temperature de panneaux solaire est superieur ou égale a celle de mon ballon plus un delta qui est dans une variable (modifiable sur l'ecran tactile) alors je fais une action... Le "else" signifie sinon, c'est ce qui sera executé si le test "if" echou... Quote:-- force stop elect resistance [ce sont simplement des commentaires ??]Oui ce sont des commentaires, on peut en ecrire de plusieurs facon en LUA. RE: Tuto Script LUA - tom - 01-09-2014 Merci pour les info ... Et oui je pars de loin mais je ne pense pas être plus c.. qu'un autre ! Il va juste falloir que je planche ca a fond ! RE: Tuto Script LUA - raoulh - 01-09-2014 Bien sur! Tout s'apprend... Si t'as des questions hésites pas. RE: Tuto Script LUA - tom - 01-09-2014 Merci à toi |