Le forum français des radios FrSKY

LUA, c'est quoi ???

Voir le sujet précédent Voir le sujet suivant Aller en bas

LUA, c'est quoi ???

Message par Bud.fr le Ven 25 Juil 2014 - 19:52

Salut à Tous.

Bon, je me lance, je mets les pieds dans le plat.

Avec la version OpenTX 2.0 et suivant, on a vu arrivé ce nouveau truc, LUA . Mais c'est quoi ce truc, ça sert à quoi ??? Ça intervient à quel niveau dans l'utilisation de la radio, pour le modèles ?? Pour la radio en général ?? Pour l'affichage ??? Pour la télémétrie ???
C'est vraiment utile ou c'est une prise de tête supplémentaire ???

Parce que, comme tout le monde, je suis les nouveaux messages, certains se sont engouffré dans ce nouveau .... système ..., ils ont commencé à proposé des trucs mais on sait même pas à quoi ça sert, ni comment ça marche ...  scratch  😢 

Si qql'un pouvait nous faire une présentation de la chose, genre tuto pour les Nuls, on pourrait essayer de prendre le train en marche.

Merci d'avance
avatar
Bud.fr

Messages : 490
Date d'inscription : 16/11/2013
Localisation : Six Fours les Plages (83)

http://lao83.forumactif.org/

Revenir en haut Aller en bas

Re: LUA, c'est quoi ???

Message par Sacre100 le Ven 25 Juil 2014 - 20:56

Hello,

LUA est un langage de programmation, un peu comme Javascript pour les page web ou Visual Basic pour les macro Excel.

Ca permet d'ajouter des fonctionnalités dans ton émetteur sans avoir à attendre que l'équipe de développement du software le fasse dans une nouvelle version.

Tu as quatre type de script :
- les "wizard script" qui permettent de créer des aides pour la programmation des modèles
- les "model script" qui permettent d'ajouter des opérations (mixages ou autre) que l'on n'arrive pas à faire normalement
- les "telemetry script" qui permettent d'ajouter des écrans de télémétrie avec des fonctions pas encore prévues dans le software
- les "function script" mais ça, je ne sais encore ce que c'est (pas décrit)

La documentation est ici : [Vous devez être inscrit et connecté pour voir ce lien]

Pour reprendre les mots que tu utilisais, ça intervient au niveau :
- de la radio : oui avec les wizard script
- des modèles : oui avec les model script
- de l'affichage : oui (wizard + telemetry)
- de la télémétrie : oui avec les telemetry script

En ce qui me concerne, je vais commencer par faire des "telemetry script" et j'ai déjà commencé avec le script qui alerte le pilote s'il s'approche trop d'un point GPS. J'ai d'autres idées comme un script pour des entrainement F3F, un script aidant à rentrer à la maison (home arrow + annonce vocale) et d'autres encore.

N'hésite pas à poser d'autres questions !
avatar
Sacre100

Messages : 1888
Date d'inscription : 30/11/2013
Age : 60
Localisation : Blonay - Suisse

Revenir en haut Aller en bas

Re: LUA, c'est quoi ???

Message par Bud.fr le Ven 25 Juil 2014 - 21:22

Bonsoir Sacre; merci de ta réponse

Sacre100 a écrit:
La documentation est ici : [Vous devez être inscrit et connecté pour voir ce lien]
Là, c'est mort pour moi, en Anglais je comprend rien  Embarassed 

Sacre100 a écrit:
Pour reprendre les mots que tu utilisais, ça intervient au niveau :
- de la radio : oui avec les wizard script
- des modèles : oui avec les model script
- de l'affichage : oui (wizard + telemetry)
- de la télémétrie : oui avec les telemetry script

Avec un petit exemple dans chaque catégorie, ce serait parfait - merci

A suivre
avatar
Bud.fr

Messages : 490
Date d'inscription : 16/11/2013
Localisation : Six Fours les Plages (83)

http://lao83.forumactif.org/

Revenir en haut Aller en bas

Re: LUA, c'est quoi ???

Message par Franck76 le Ven 25 Juil 2014 - 22:46

Un exemple de script de télémesure ici : [Vous devez être inscrit et connecté pour voir ce lien]



Ce script permet d'associer à un modèle existant un écran de télémesure supplémentaire. Il est nécessaire d'être sous OpenTX 2.0.4 ou plus.
Le script affiche 2 chronos, la tension de l'accu (valeur absolue et pourcentage de la capacité totale), l'altitude instantanée ainsi que l'altitude maxi.

Mode d'emploi
- Télécharger le script en cliquant sur le lien "download link"  (fichier telem2.zip) et le décompresser (fichier telem2.lua)
- Créer sur la carte microSD un répertoire nommé SCRIPTS (s'il n'existe pas déjà)
- Créer un sous-répertoire dans le répertoire SCRIPTS. Lui donner le même  nom que celui du modèle qui va utiliser le script de télémesure.
- Placer le script telem2.lua dans ce sous-répertoire.
Le chemin d'accès est donc : /SCRIPTS/nom_du_modele/telem2.lua
Au démarrage de la radio, sélectionner le modèle qui va utiliser le script.
Faire une pression longue sur la touche PAGE : ce qui appelle les écrans de télémesure
Faire défiler les écrans de télémesure avec les touches + ou -

Pour chaque modèle, on peut créer jusqu'à 7 scripts de télémesure nommés telemx.lua où X va de 0 à 6
Ca marche aussi sous companionTX avec le simulateur de la radio  :cheers: 
avatar
Franck76

Messages : 181
Date d'inscription : 25/07/2013
Age : 46
Localisation : Rouen

Revenir en haut Aller en bas

Re: LUA, c'est quoi ???

Message par Murphy le Sam 26 Juil 2014 - 2:38

Le plus important de tous c'est l'ensemble SCRIP/WIZARD/ à installer pour l'aide à la création des nouveaux modèles. Cet ensemble remplace le menu Gabarits de la version V1. En ce moment nous sommes deux ou trois à l'améliorer. D'abord passé en français et ensuite ajout de fonctions absentes.

Les autres programmes LUA ne sont sommes toute pas vraiment nécessaire et personnellement après test j'ai décidé de ne pas trop les utiliser. En effet avoir des affichages spécifiques à l'écran me gêne car en pilotage je préfère de beaucoup la synthèse vocale pour m'annoncer mon altitude ou la tension de mes accus.

Voici par exemple la dernière version du dossier Wizard à décompresser en SCRIPT/WIZARD.
Fichiers joints
wizard-fr.zip Vous n'avez pas la permission de télécharger les fichiers joints.(25 Ko) Téléchargé 37 fois

_________________
Encore là...
X9D+ EU-LBT 2.1.9,
Horus EU-LBT 2.2.0

Forum du club ACPM
avatar
Murphy
Modérateur

Messages : 6123
Date d'inscription : 27/08/2013
Age : 72
Localisation : Montbéliard, près de la Suisse

http://bethoncourt-indoor.forumgratuit.org/

Revenir en haut Aller en bas

Re: LUA, c'est quoi ???

Message par Bud.fr le Sam 26 Juil 2014 - 9:52

Bon ..... Je commence à cerner le truc.

Donc, depuis la version OpenTX 2.0, les développeurs ont introduit, ont intégré un language de programmation (genre Basic) pour modifier nous même le FW.

On peut modifier beaucoup de domaine mais le plus simple pour commencer, c'est de modifier les affichages, surtout coté écran télémétrie.

Je comprend aussi que cela modifie QUE les écrans associés à 1 seul modèle (avion), celui pour lequel on a créé un dossier dans le  /SCRIPTS/ de la carte SD. Et qu'on peut en créer jusqu'à 7 écrans supplémentaires.

Question: Est ce qu'on peut virer les écrans d'origines ???

Je comprend aussi que la manip de Murphy est de modifier l'aide à la création de nouveaux modèles, en Francisant les icônes.
Mais comment tu vas toucher à tel ou tel domaine, ici les gabarits, plus haut les écrans ???
==> Oui, je réfléchis et cherche en tapant ce msg, ok, les gabarits, c'est dans Wizard  :cheers: 

Ce qui serait sympa, ce serait de modifier ou créer une option pour tous les modèles d'un seul coup, par exemple dans les "fonctions spéciales", je mets pour tous mes modèles le réglage du volume en FS1, ce serait pas ça qu'on pourrait faire avec :
- les "function script" mais ça, je ne sais encore ce que c'est (pas décrit)

J'ai bon jusqu'ici ???

A suivre
avatar
Bud.fr

Messages : 490
Date d'inscription : 16/11/2013
Localisation : Six Fours les Plages (83)

http://lao83.forumactif.org/

Revenir en haut Aller en bas

Re: LUA, c'est quoi ???

Message par .AleX. le Sam 26 Juil 2014 - 10:59


Globalement, c'est ça.

il y a un facteur important à prendre ne compte quand même : les scripts en LUA ne sont pas prioritaires, si le CPU ou la mếmoire vive arrive près des limites, les scripts seront tués, donc attention à ne pas inclure de fonction "sensibles" dans un script !

_________________
Tout vole, ce n'est qu'une question de vitesse initiale...
avatar
.AleX.
Modérateur

Messages : 1199
Date d'inscription : 24/11/2013
Localisation : Clermont-Fd(63) ou parfois Annecy(74)

Revenir en haut Aller en bas

Re: LUA, c'est quoi ???

Message par Sacre100 le Sam 26 Juil 2014 - 11:07

Bud.fr a écrit:... Ce qui serait sympa, ce serait de modifier ou créer une option pour tous les modèles d'un seul coup, par exemple dans les "fonctions spéciales", je mets pour tous mes modèles le réglage du volume en FS1 ...

Ca c'est une excellente idée car autant on peut copier un mixage d'un modèle à l'autre, autant je n'ai pas trouvé comment copier la définition d'une courbe, d'un interrupteur logique, etc... d'un modèle à l'autre.
avatar
Sacre100

Messages : 1888
Date d'inscription : 30/11/2013
Age : 60
Localisation : Blonay - Suisse

Revenir en haut Aller en bas

Re: LUA, c'est quoi ???

Message par Belov le Sam 2 Aoû 2014 - 14:36

Hello
Pas simple la mise en oeuvre de ces scripts.

Qui pourrait faire un tuto pas à pas ?

Problème  1 :

je souhaite faire tourner un script en continu (là pas de souci) et terminer le script sur une condition mais le comportement n'est pas conforme à la doc.

Le script (simple !)
<<
local cnt = 0

local function init()
 local switch_value = 0
end

local function run(event)

cnt = cnt +1
-- lcd.lock()
-- lcd.clear()
 
 lcd.drawText(10,10,"Hello World",MIDSIZE)
 switch_value = getValue(94)
 lcd.drawNumber(80,20, switch_value, MIDSIZE)

 if switch_value > 100 then
    lcd.drawText(180,10,"BYE",MIDSIZE)
    cnt = 0
  lcd.drawNumber(180,20, cnt, MIDSIZE)
    return 1  -- Exit
 else
    lcd.drawText(180,10,"RUN",MIDSIZE)
  lcd.drawNumber(180,20, cnt, MIDSIZE)
return 0
 end

end

return { run=run, init=init }
>>

En positionnant SC à 100%, la valeur est bien 1024 mais le script ne s'arrête pas ! (virez le cnt=0 de cette branche pour voir que le programme fait toujours appel à la fonction run) alors qu'il le devrait.

Problème 2 :
Comment retrouver un écran standard Taranis propre !
lcd.DrawXXX incruste au dessus

Problème 3 :
Comment utiliser Companion OpenTX pour executer les script en simulation ?
C'est galère de débrancher / rebrancher la taranis à chaque petite modif.

Problème 4 :
Comment écrire une valeur vers une voie ? (ch1 à ch32)


Merci de votre aide, ça m'aidera énormément pour l'asservissement nacelle (le programme avance mais il me faut le tester par bloc)
avatar
Belov

Messages : 415
Date d'inscription : 01/01/2014
Age : 48
Localisation : Rennes

Revenir en haut Aller en bas

Re: LUA, c'est quoi ???

Message par Franck76 le Sam 2 Aoû 2014 - 19:10

Hello

pour utiliser companion opentx comme émulateur de scripts, il te suffit de créer une copie de la carte SD de ta radio sur ton ordinateur. Dans mon cas c'est le répertoire "Clone SD"

puis ouvrir companion opentx et renseigner le champ "chemin de structure de la carte SD" dans le menu Réglages/preferences,  
dans mon cas,  C:\Clone SD

Si le script fonctionne sur la radio, il doit être émulé de la même manière par le simulateur de Companion opentx

Pour le reste j'ai pas tout compris. J'ai testé ton script et dans l'ensemble il a l'air de fonctionner.
Il faudrait au moins que tu précises de quel type de script il s'agit et où tu l'as placé sur la carte SD.
En particulier, si tu l'as traité comme un script de modèle, il me semble normal que tu ne puisses pas l'interrompre.
avatar
Franck76

Messages : 181
Date d'inscription : 25/07/2013
Age : 46
Localisation : Rouen

Revenir en haut Aller en bas

Re: LUA, c'est quoi ???

Message par Belov le Sam 2 Aoû 2014 - 19:30

Problème 3 : réglé
grace à tes conseils : tout était renseigné dns companion sauf que le chemin n'était pas bon !

Problème 1 : réglé
le script est copié de l'exemple de la doc. C'est bien un Model Script dans SCRIPT/MIXES/. En relisant 25 fois la doc, je pense à présent comprendre.
Je pensais que les modèles script s'arrêtaient si une valeur de retour non nulle est envoyée. Or non il semble que cela ne concerne que les one time script executé par un switch (physique ou logique)

Problème 2 : non réglé
le screen expliquera mieux. je veux virer ce que le script a écrit pour retrouver un écran "normal"


Problème 4 : non réglé
Je veux envoyer sur une voie une valeur qui est calculé par le programme.
Le pendant d'un SetValue qui n'existe pas :-(
En farfouillant le web, toujours rien trouvé pour cela

avatar
Belov

Messages : 415
Date d'inscription : 01/01/2014
Age : 48
Localisation : Rennes

Revenir en haut Aller en bas

Re: LUA, c'est quoi ???

Message par Franck76 le Sam 2 Aoû 2014 - 20:11

Je vois, tu as pris un exemple de script de type one time. Ce n'est pas ca qu'il faut

Si tu veux envoyer une valeur calculée vers une voie sans écrire sur l'écran, un script de modèle sera parfait. Car les valeurs de sortie, calculées par le script, deviennent automatiquement des sources de CH1 à CH32 dans le menu MIXER d'openTX. Pas besoin de programmer quoi que ce soit de plus

Si tu veux afficher quelque chose à l'écran, tu ne dois pas gérer ton script comme un script de modèle. Les Model Scripts ne sont pas faits pour cela. Je dirais qu'il vaut alors mieux utiliser un script de télémesure (même si tu ne t'en sers pas pour afficher des valeurs de télémesure).

Je ne sais pas comment faire les deux. Il existe d'autres sortes de scripts (function scripts, template scripts, ...) lesquels n'ont pas encore été définis.

Pour un exemple de model script, regarde l'exemple du script Delta Mixer

Attention, chaque script a un rôle et une architecture particulière, ainsi que certaines limitations.
avatar
Franck76

Messages : 181
Date d'inscription : 25/07/2013
Age : 46
Localisation : Rouen

Revenir en haut Aller en bas

Re: LUA, c'est quoi ???

Message par Belov le Sam 2 Aoû 2014 - 21:07

Dans l'exemple Delta Mixer, les 2 variables de sortie sont des variables d'affichage sur l'écran LUA/script concerné.
Elles n'influent pas sur les Voies de sortie.

J'ai revu le script pour prendre en compte 1 variable de sortie.
(Les noms de sorties sont limités à 4 caractères.)
J'ai bien l'affichage de ma variable de sortie (nommé ch16) mais rien sur la voie 16.

Je ne suis pas plus avancé :-(

avatar
Belov

Messages : 415
Date d'inscription : 01/01/2014
Age : 48
Localisation : Rennes

Revenir en haut Aller en bas

Re: LUA, c'est quoi ???

Message par blonblon le Sam 2 Aoû 2014 - 22:28

Bonsoir Belov
Pour écrire une commande sur voie il faut utiliser deux fonctions, avec la premiere on crée le mixage que l'on va passer a la fonction d'écriture
addMix(gazCH1, MIXSRC_FIRST_INPUT+defaultChannel(0), "Gaz")

fonction d'écriture
model.insertMix(channel, index, mix)

ce sont de fonctions utilisées dans wizard
ici
[Vous devez être inscrit et connecté pour voir ce lien]
avatar
blonblon

Messages : 220
Date d'inscription : 25/03/2014
Age : 66
Localisation : pres d'Uzes (Gard)

Revenir en haut Aller en bas

Re: LUA, c'est quoi ???

Message par Belov le Sam 2 Aoû 2014 - 23:37

Merci de ton aide Blonblon mais j'ai l'impression de tourner en rond

La fonction que tu présentes (model.insertMix) crée seulement un mixage par programme de la même manière que par Companion ou directement sur la taranis

Rien ne relie une variable (ou output) d'un script à un mixage
ou alors il y a un truc qui m'échappe.

Si tu sais comment faire, je veux bien que tu m'expliques pas à pas la démarche
avatar
Belov

Messages : 415
Date d'inscription : 01/01/2014
Age : 48
Localisation : Rennes

Revenir en haut Aller en bas

Re: LUA, c'est quoi ???

Message par blonblon le Sam 2 Aoû 2014 - 23:55

Je suis a peut prés au meme point que toi, modifier un programme existant j'y arrive plus ou moins facilement, il y a une doc LUA dont le lien a été donné dans une des pages sur LUA mais qui est nettement insufisante, il faut chercher malheureusement sur les sites anglophones, la je viens de trouver un exemple qui je pense joue des sons en fonction de la position du manche des gazs, ils utilisent ceci model.getCustomFunction(62), il manque les sons le fichier était trop volumineux
Fichiers joints
EngSnd.zip Vous n'avez pas la permission de télécharger les fichiers joints.(1 Ko) Téléchargé 7 fois
avatar
blonblon

Messages : 220
Date d'inscription : 25/03/2014
Age : 66
Localisation : pres d'Uzes (Gard)

Revenir en haut Aller en bas

Re: LUA, c'est quoi ???

Message par blonblon le Dim 3 Aoû 2014 - 0:12

Les premiers fichiers son
Fichiers joints
EngSnd2.zip Vous n'avez pas la permission de télécharger les fichiers joints.(432 Ko) Téléchargé 3 fois
avatar
blonblon

Messages : 220
Date d'inscription : 25/03/2014
Age : 66
Localisation : pres d'Uzes (Gard)

Revenir en haut Aller en bas

Re: LUA, c'est quoi ???

Message par Belov le Dim 3 Aoû 2014 - 2:02

Les CustomFunction sont les fonctions spéciales. Comme pour les mixages, cela reproduit le comportement de Companion ou de la Taranis.
Le programme EngSnd joue un son pour les accélérations et les ralentissements.

Avec la fonction getValue on a accès à tout en lecture.
J'arrive à afficher les variables pour output, pratique pour le debug (enfin si on peut dire pratique, cela reste très sommaire)

Mon programme de gestion de tilt semble correct mais il faut le tester en réel et là je suis bloqué. Damned !


En tout cas j'arrive à la même conclusion, la doc est imparfaite et sommaire.  😢 
avatar
Belov

Messages : 415
Date d'inscription : 01/01/2014
Age : 48
Localisation : Rennes

Revenir en haut Aller en bas

Re: LUA, c'est quoi ???

Message par Belov le Dim 3 Aoû 2014 - 2:34

Je pense avoir trouve la solution ici
[Vous devez être inscrit et connecté pour voir ce lien]

Nom des variables en sortie = nom des mixages
Il manque juste les copies d'écran dans la doc  affraid 

A tester mais là dodo
avatar
Belov

Messages : 415
Date d'inscription : 01/01/2014
Age : 48
Localisation : Rennes

Revenir en haut Aller en bas

Re: LUA, c'est quoi ???

Message par blonblon le Dim 3 Aoû 2014 - 10:09

Il faut malheureusement essayer, je pense qu'on ne risque pas grand chose, j'ai regardé le post en intégralité il y a des copies d'écran, a voir?.

Quel dommage que LUA ne puisse pas programmer Compagnion avec tout le confort du PC debugger pas a pas teste des variables, la ce serait le top, plutôt que de brancher/débrancher sans arret la radio pour les essais.
avatar
blonblon

Messages : 220
Date d'inscription : 25/03/2014
Age : 66
Localisation : pres d'Uzes (Gard)

Revenir en haut Aller en bas

Re: LUA, c'est quoi ???

Message par Franck76 le Dim 3 Aoû 2014 - 10:49

Belov a écrit:Je pense avoir trouve la solution ici
[Vous devez être inscrit et connecté pour voir ce lien]

Nom des variables en sortie = nom des mixages

Ben c'est exactement ce que je t'ai dit dans mon post précédent  Laughing  : "un script de modèle sera parfait. Car les valeurs de sortie, calculées par le script, deviennent automatiquement des sources de CH1 à CH32 dans le menu MIXER d'openTX. Pas besoin de programmer quoi que ce soit de plus".
Et dans l'exemple que tu mets en lien, Elev1 et Elev2 ne sont pas les mixages mais bel et bien les sources.

Il y a pas mal de temps, j'ai testé et ca marchait très bien.
Maintenant, vu que les bibliothèques de fonctions évoluent vite (le script fourni initialement par B.SONGIS  diffère légèrement de celui de la doc) il faudrait refaire l'essai avec le nouveau script. Pas de raison que cela ne marche pas
avatar
Franck76

Messages : 181
Date d'inscription : 25/07/2013
Age : 46
Localisation : Rouen

Revenir en haut Aller en bas

Re: LUA, c'est quoi ???

Message par Franck76 le Dim 3 Aoû 2014 - 12:15

J'ai testé le script delta.lua fourni dans la doc et ca marche.

Placer le script delta.lua sur le répertoire clone de la carte SD dans SCRIPTS\MIXES, lancer le simulateur de companion OpenTX et appeler le script delta.lua dans le menu des scripts persos :


Renseigner les entrées et taux applicables, le script calcule les sorties mixées sur chaque élevon


Aller dans le menu des Mixeurs et choisir comme sources de CH1 et CH2 les sorties calculées par le script :




Et voilà :


avatar
Franck76

Messages : 181
Date d'inscription : 25/07/2013
Age : 46
Localisation : Rouen

Revenir en haut Aller en bas

Re: LUA, c'est quoi ???

Message par Belov le Dim 3 Aoû 2014 - 14:36

Au final dans Companion il faut choisir dans le mixage la sortie LUA1a qui correspond à la 1re variable de sortie du script LUA1, LUA1b à la 2e, etc.

Je me doutais bien qu'il y avait quelque chose là, puisque c'est le seul endroit où on a une référence à LUA
La doc pourrait être plus détaillée à ce niveau  Bienvenue 





Une bonne chose de faite

C'est secondaire, mais dans companion je suis toujours obligé de chercher et lancer le script de modele.
avatar
Belov

Messages : 415
Date d'inscription : 01/01/2014
Age : 48
Localisation : Rennes

Revenir en haut Aller en bas

Re: LUA, c'est quoi ???

Message par Belov le Dim 3 Aoû 2014 - 15:14

Mon premier script utile : [Vous devez être inscrit et connecté pour voir ce lien]
avatar
Belov

Messages : 415
Date d'inscription : 01/01/2014
Age : 48
Localisation : Rennes

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum