Le forum français des radios OpenTX ou FrOS
Le forum français des radios OpenTX ou FrOS
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

LUA Scripting sur V2.1.x

+4
JimboFarrar
Eric84AMC
Kilrah
Heisenberg
8 participants

Page 1 sur 7 1, 2, 3, 4, 5, 6, 7  Suivant

Aller en bas

LUA Scripting sur V2.1.x Empty LUA Scripting sur V2.1.x

Message par Heisenberg Ven 18 Sep 2015 - 14:13

Hello tous.
Depuis la V2.1.x, pas mal de Lua sont à revoir.
J'ai potassé le "OpenTX - LUA Reference Guide" mais j'ai un doute sur sa mise à jour depuis ce firmware qui reprend la télémétrie différemment.

Basiquement, j'essaie de récupérer des valeurs pour pouvoir me construire un écran personnalisé.

J'arrive à récupèrer les valeurs des inters physiques, inters logiques, heure...
Mais pas moyen de chopper les valeurs des capteurs.

L'exemple ci-dessous me renvoie bien la valeur SH et heure, mais ne me renvoie pas mon SWR ni ma tension de batterie renvoyée par le LVSS (Ce capteur est déclaré).

Et je constate que la valeur SWR de 75 est indiquée dans mon écran de valeurs chiffres mais pas dans mon écran script Lua  silent

LUA Scripting sur V2.1.x Screen12

LUA Scripting sur V2.1.x Screen11

Quelqu'un peut me dire où me goure-je svp ?


local function run(event)

lcd.lock()
lcd.clear()

--- TEST INTER SH (OK) :
lcd.drawText(88, 08, "SH :", SMLSIZE,0)
lcd.drawNumber(130, 08, getValue(99), LEFT+SMLSIZE)

--- TEST HEURE (OK) :
 lcd.drawText(88,18, "Heure :",SMLSIZE,0)
 lcd.drawTimer(130, 18, getValue(190), LEFT+SMLSIZE)

--- TEST HEURE Méthode 2 (OK) :
 lcd.drawText(88,28, "Heure2 :",SMLSIZE,0)
 lcd.drawTimer(130, 28, getValue("clock"), LEFT+SMLSIZE)

--- TEST SWR :
 lcd.drawText(88,38, "SWR :",SMLSIZE,0)
 lcd.drawNumber(130, 38, getValue("swr"), LEFT+SMLSIZE)
 
--- TEST Cels :
 lcd.drawText(88,48, "Li-Po :",SMLSIZE,0)
 lcd.drawNumber(130, 48, getValue(215), LEFT+SMLSIZE)  

end
return { run=run }
Heisenberg
Heisenberg

Masculin Messages : 1462
Date d'inscription : 30/07/2015
Age : 49
Localisation : A l'étranger

http://tinyurl.com/TARANIS-HEISENBERG

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x Empty Re: LUA Scripting sur V2.1.x

Message par dev.fred Ven 18 Sep 2015 - 14:20

[EDIT] a écrit:Mauvaise piste, Heisenberg utilise un script de télémétrie sous SCRIPTS\TELEMETRY avec affichage et moi je l'ai aiguillé sur un script dit de model ou de mixeur sous SCRIPTS\MIXES qui s'utilise depuis l'écran SCRIPT PERSO et qui retourne une valeur qui est affichable dans un écran de télémétrie de type VALEURS directement (sous la rubrique Scripts Lua du menu déroulant étendu).
Les entrées (local inputs) prennent toutes sortes de sources y compris les manches.
Pourquoi faire simple quand on peut faire compliqué en fait dans l'exemple du post de présentation de la télémétrie, il s'agit de faire un calcul de conversion en % de charge restante et l'avantage du script modèle ou mixeur c'est que la valeur retournée peut être directement utilisé pour gérer une alarme en plus d'être affichable directement dans l'écran de télémétrie ou même d'être lu à haute voie.
Il faut définir une ou plusieurs SOURCE au début de ton script:
exemple avec 2 paramétres de type SOURCE et VALUE
Que tu renseigneras avec le capteur de ton choix quand tu activeras le script LUA dans l'écran SCRIPTS PERSOS:

-- LUA model script
local inputs = { {"Capteur", SOURCE}, {"nb-cell", VALUE}}
local outputs = { "out" }
*
*
Et ta fonction run les prendra au passage dans l'ordre de la déclaration:

local function run(parametre,nbcell)
*
*
return { run=run, input=inputs, output=outputs }

Note: Si tu ne retournes rien tu n'es pas obligé d'avoir un output.

C'est un peu bordélique, il faudra que je fasse un tuto depuis cette partie, mais lis par ici:
https://frskytaranis.forumactif.org/t2459p75-presentation-de-la-telemetrie-opentx-2-1-traduction-de-opentx-2-1-telemetry-system-preview


Dernière édition par dev.fred le Sam 19 Sep 2015 - 10:07, édité 3 fois

dev.fred

Masculin Messages : 760
Date d'inscription : 07/02/2014
Localisation : Paimpol (22)

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x Empty Re: LUA Scripting sur V2.1.x

Message par Heisenberg Ven 18 Sep 2015 - 14:49

dev.fred a écrit:Il faut définir une ou plusieurs SOURCE au début de ton script:
exemple avec 2 paramétres de type SOURCE et VALUE
Que tu renseigneras avec le capteur de ton choix quand tu activeras le script LUA dans l'écran SCRIPTS PERSOS:

-- LUA model script
local inputs = { {"Capteur", SOURCE}, {"nb-cell", VALUE}}
local outputs = { "out" }
*
*
Et ta fonction run les prendra au passage dans l'ordre de la déclaration:

local function run(parametre,nbcell)
*
*
return { run=run, input=inputs, output=outputs }
.../...

Merci Dev.Fred, j'ai relu ce topic une paire de fois mais il présente déjà la manière de faire des calculs avant de simplement expliquer comment recevoir une valeur et l'afficher sans la manipuler. J'avais vu les local inputs y compris dans le guide, mais sans comprendre comment ils fonctionnent.

Si j'essaie le script simplifié avec les local inputs ci-dessous, ça ne fonctionne pas parce que je n'ai visiblement toujours pas compris ce qu'il fallait entrer à la place des xxx dans :
local inputs = { {"xxx", SOURCE}, {"xxx", VALUE}}
et dans local outputs = { "xxx" }

Concrètement je veux récupèrer un RSSI, la valeur Cel-sum et disons la valeur Cel-min, je dois rentrer quoi comme local input ?
N'y a t'il pas un tuto qui reprenne le B.A.BA quelque part ?

Ci-dessous ce que j'ai tenté mais qui ne fonctionne pas :


local function run(event)

lcd.lock()
lcd.clear()
local inputs = { {"swr", SOURCE}, {"cell-sum", VALUE}}
local outputs = { "out" }

--- TEST SWR :
 lcd.drawText(88,38, "SWR :",SMLSIZE,0)
 lcd.drawNumber(130, 38, getValue("swr"), LEFT+SMLSIZE)
 
--- TEST Cels :
 lcd.drawText(88,48, "Li-Po :",SMLSIZE,0)
 lcd.drawNumber(130, 48, getValue(215), LEFT+SMLSIZE)  
 
end
return { run=run, input=inputs, output=outputs }
Heisenberg
Heisenberg

Masculin Messages : 1462
Date d'inscription : 30/07/2015
Age : 49
Localisation : A l'étranger

http://tinyurl.com/TARANIS-HEISENBERG

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x Empty Re: LUA Scripting sur V2.1.x

Message par Kilrah Ven 18 Sep 2015 - 14:50

Il cherche à faire un script de télémétrie, donc passer par un script de mixeur avec sources et à choisir dans les scripts persos n'a pas de sens.

Les getValue() doivent prendre le nom du capteur, plus un chiffre.

Kilrah

Masculin Messages : 2181
Date d'inscription : 28/01/2014
Localisation : Suisse

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x Empty Re: LUA Scripting sur V2.1.x

Message par Sacre100 Ven 18 Sep 2015 - 15:45

Deux choses auxquelles je pense :
- attention aux majuscules/minuscules, sauf erreur SWR et swr ce n'est pas la même chose pour OpenTx.
- comme le souligne Kilrah, ne plus utiliser de No dans getValue car maintenant, la position d'une donnée télémétrique peut varier selonl'ordre de détection des capteurs -> Utiliser le nom de la donnée

La "bonne pratique" dans les scripts est de récupérer le No (l'Id) en début de script avec la fonction GetFieldInfo comme ça on peut ensuite utiliser l'Id récupéré qui donne une réponse plus rapide car elle éviter de faire la recherche sur le nom qui est plus lente.

Sinon, comme dit Kilrah, il ne faut pas confondre :
- one time script qui ne peuvent pas recevoir d'input ni fournir un output mais qui peuvent afficher des choses sur l'écran
- mix script déclaré dans les scripts perso et qui peuvent recevoir des input et fournir des output mais qui ne peuvent rien afficher sur l'écran
- function script déclaré dans les fonctions spéciales qui peuvent afficher des choses sur l'écran mais qui ne peuvent pas recevoir d'input ni fournir un output
- télémetry script déclaré dans la télémétrie qui peuvent afficher des choses sur l'écran mais qui ne peuvent pas recevoir d'input ni fournir un output

A noter :
- lorsqu'un one time script est exécuté, les trois autres types ne le sont pas et vis-versa.
- les mix, function et telemetry script peuvent communiquer entre eux via des variables globales car ils tournent dans le même environnement LUA

[Edit]La documentation qui est bien faite est là : http://www.open-tx.org/2014/07/19/Lua-reference-guide/
Sacre100
Sacre100

Masculin Messages : 1889
Date d'inscription : 30/11/2013
Age : 64
Localisation : Blonay - Suisse

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x Empty Re: LUA Scripting sur V2.1.x

Message par dev.fred Ven 18 Sep 2015 - 16:00

Autant pour moi Embarassed , le script que j'ai utilisé était scindé en 2 parties, une sous SCRIPTS\MIXES et l'autre sous SCRIPTS\TELEMETRY avec passage de la valeur traitée par une variable globale (si une variable n'est pas déclarée locale, elle est automatiquement globale).
Maintenant je comprends mieux pourquoi il était structuré ainsi LUA Scripting sur V2.1.x 2258904616 .

Tu ne vas peut-être pas utiliser les scripts mixes mais dans
local inputs = { {"xxx", SOURCE}, {"yyy", VALUE}}
xxx, yyy = les titres des entrées qui apparaissent à l'écran quand tu choisis de configurer le script perso:

exemple : local inputs = { {"Bat. volt", SOURCE}, {"nombre-cel", VALUE}}
ici tu aurais choisi A1 et tu aurais entrée 0 comme valeur:

LUA Scripting sur V2.1.x Screen11


Dernière édition par dev.fred le Ven 18 Sep 2015 - 21:31, édité 3 fois (Raison : Détails +)

dev.fred

Masculin Messages : 760
Date d'inscription : 07/02/2014
Localisation : Paimpol (22)

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x Empty Re: LUA Scripting sur V2.1.x

Message par Heisenberg Ven 18 Sep 2015 - 16:15

Ok, j'ai appliqué, cherché, re-testé...
Mon script est situé là : SCRIPTS/TELEMETRY/telem5.lua
Je ne déclare pas d'input ni d'output.
Je n'utilise plus de chiffre mais le nom sur les conseils de Sacre100

Mais je n'obtiens toujours pas mon RSSI avec quelques lignes de code  Sad
Pourquoi ça ?

local function run(event)

lcd.lock()
lcd.clear()
lcd.drawNumber(15, 15, getValue("rssi"), LEFT+SMLSIZE)

end
return { run=run }
Heisenberg
Heisenberg

Masculin Messages : 1462
Date d'inscription : 30/07/2015
Age : 49
Localisation : A l'étranger

http://tinyurl.com/TARANIS-HEISENBERG

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x Empty Re: LUA Scripting sur V2.1.x

Message par Sacre100 Ven 18 Sep 2015 - 16:24

Et RSSI écrit en majuscule ?
Sacre100
Sacre100

Masculin Messages : 1889
Date d'inscription : 30/11/2013
Age : 64
Localisation : Blonay - Suisse

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x Empty Re: LUA Scripting sur V2.1.x

Message par Heisenberg Ven 18 Sep 2015 - 16:30

J'ai indiqué rssi en minuscule conformément au document OpenTX - LUA Reference Guide.

En majuscule, ça fonctionne nickel Sacre100.  Very Happy Merci !!
Mais comment sais-tu ça puisque la doc indique rssi en minuscule ?
LUA Scripting sur V2.1.x 2015-013
Heisenberg
Heisenberg

Masculin Messages : 1462
Date d'inscription : 30/07/2015
Age : 49
Localisation : A l'étranger

http://tinyurl.com/TARANIS-HEISENBERG

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x Empty Re: LUA Scripting sur V2.1.x

Message par Sacre100 Ven 18 Sep 2015 - 16:47

Ca a changé entre la 2.0.17 et la 2.1.x, comment je le sais, je ne sais pas mais c'est logique. Avant les noms des valeurs étaient générés automatiquement toutes en majuscules alors que maintenant, les noms des valeurs de la télémétrie sont donnés par l'utilisateur ou par le programme de détection alors c'est normal qu'il y aie de la majuscule et de la minuscule.

Il ne faut pas oublier que la documentation n'est pas mise à jour aussi vite que les versions mais sur les forums, ont trouve toujours de l'aide, c'est ça qui compte.
Sacre100
Sacre100

Masculin Messages : 1889
Date d'inscription : 30/11/2013
Age : 64
Localisation : Blonay - Suisse

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x Empty Re: LUA Scripting sur V2.1.x

Message par Eric84AMC Ven 18 Sep 2015 - 21:13

Ce post peut bientôt être ajouté dans les Tuto du lapin !

En tout cas je garde ce lien pour le jour ou je voudrais me faire quelques écrans simples
Eric84AMC
Eric84AMC

Masculin Messages : 2056
Date d'inscription : 21/09/2013
Age : 48
Localisation : Monteux

http://www.amc-pernes-lesvalayans.com/index.php

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x Empty Re: LUA Scripting sur V2.1.x

Message par Heisenberg Sam 19 Sep 2015 - 11:43

Sacre100 a écrit:Ca a changé entre la 2.0.17 et la 2.1.x, comment je le sais, je ne sais pas mais c'est logique. Avant les noms des valeurs étaient générés automatiquement toutes en majuscules alors que maintenant, les noms des valeurs de la télémétrie sont donnés par l'utilisateur ou par le programme de détection alors c'est normal qu'il y aie de la majuscule et de la minuscule.

Il ne faut pas oublier que la documentation n'est pas mise à jour aussi vite que les versions mais sur les forums, ont trouve toujours de l'aide, c'est ça qui compte.

Mon Sacre100, c'était tout simple et tu m'a retirer une belle épine du nez (j'aime bien les expressions déformées.).
Je me doutais qu'il s'agissait d'une doc pas à jour, quand j'ai encodé mon Wizzard avec l'inter sécu préconfiguré, j'ai du y-aller à tâtons car les numéros de certaines commandes ne correspondaient pas au document officiel, désormais obsolète.

Bref, ça à l'air de fonctionner, mais ce n'est pas toujours le cas, exemple : ACCY ne fonctione pas mais AccY fonctionne.

Pour la valeur Cels, je n'arrive pas à la simuler sur Companion, j'ignore pourquoi, et je ne peux pas la tester de suite en réel, je verrais ça la semaine prochaine.

Je me demande et j'aimerais avoir ton avis là dessus, si la syntaxe des capteurs dans le Lua ne doit simplement pas être la même que celle rentrée lors de la découverte ?

Ce qui voudrait dire que si je renomme mon capteur Cels en CELL, je devrais mettre CELL dans mon script mais mon script ne fonctionnera pas chez toi si ton capteur identique au mien s'appelle Batt.
Les scripts seraient donc propres à chaque radios et ne seraient pas universellement compatibles (?)
Heisenberg
Heisenberg

Masculin Messages : 1462
Date d'inscription : 30/07/2015
Age : 49
Localisation : A l'étranger

http://tinyurl.com/TARANIS-HEISENBERG

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x Empty Re: LUA Scripting sur V2.1.x

Message par dev.fred Sam 19 Sep 2015 - 13:21

Heisenberg a écrit:Pour la valeur Cels, je n'arrive pas à la simuler sur Companion, j'ignore pourquoi, et je ne peux pas la tester de suite en réel, je verrais ça la semaine prochaine

Avec F4 + Simulation activée + Découvrir Capteurs j'ai aussi un pb avec Cels qui devrait avoir la valeur que j'ai entrée dans CELLS (le capteur Cels s'est crée quand j'ai mis une valeur dans CELLS); ça sent le bug.
LUA Scripting sur V2.1.x Captur26

Sinon c'est vrai que la règle pour le nommage des capteurs c'est d'utiliser strictement ce qui est donné par l'écran télémesure de la Taranis, du simulateur ou de Companion après la découverte.

Les scripts model ou mixeurs permettent de configurer la source donc ils sont plus génériques, car c'est à la configuration, dans SCRIPT PERSO, que tu décides si la source sera A1 ou Cels ou FAS-V etc en fonction de tes capteurs. La sortie peut être envoyée directement dans la page de télémétrie dans les cases VALEURS. J'ai merdé dans ma réponse que je t'ai faite Embarassed  mais j'ai documenté un peu plus les scripts model quelques posts en arrière.
Maintenant, c'est vrai que si tu veux faire un écran de télémétrie totalement personnalisé il n'y a que le script de télémétrie qui permet de faire cela facilement. Sinon il faut passer toutes les valeurs par des variables globales entre les 2 scripts (c'est n'est pas les VGx)


Dernière édition par dev.fred le Sam 19 Sep 2015 - 14:46, édité 1 fois (Raison : orto)

dev.fred

Masculin Messages : 760
Date d'inscription : 07/02/2014
Localisation : Paimpol (22)

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x Empty Re: LUA Scripting sur V2.1.x

Message par Sacre100 Sam 19 Sep 2015 - 13:29

Heisenberg a écrit:... Pour la valeur Cels, je n'arrive pas à la simuler sur Companion, j'ignore pourquoi, et je ne peux pas la tester de suite en réel, je verrais ça la semaine prochaine.

Je me demande et j'aimerais avoir ton avis là dessus, si la syntaxe des capteurs dans le Lua ne doit simplement pas être la même que celle rentrée lors de la découverte ?

Ce qui voudrait dire que si je renomme mon capteur Cels en CELL, je devrais mettre CELL dans mon script mais mon script ne fonctionnera pas chez toi si ton capteur identique au mien s'appelle Batt.
Les scripts seraient donc propres à chaque radios et ne seraient pas universellement compatibles (?)

Franchement, je n'ai pas d'avis.

La seule chose que je peux dire, c'est de mettre en début de script une série de GetFieldInfo, par exemple :
Code:
local RssiId = getFieldInfo("RSSI").id
local CelsId = getFieldInfo("Cels").id
local AccYId = getFieldInfo("AccY").id
et ensuite,utiliser ces Id dans les getValue. Ainsi, si le script doit être modifié pour s'adapter au nom des valeurs, il suffit de le faire à un endroit sans à avoir à parcourir le script.

Ce n'est qu'une "bonne pratique" que je suggère mais ça ne peut pas faire de mal de procéder ainsi.
Sacre100
Sacre100

Masculin Messages : 1889
Date d'inscription : 30/11/2013
Age : 64
Localisation : Blonay - Suisse

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x Empty Re: LUA Scripting sur V2.1.x

Message par Kilrah Sam 19 Sep 2015 - 13:54

Heisenberg a écrit:
Pour la valeur Cels, je n'arrive pas à la simuler sur Companion, j'ignore pourquoi, et je ne peux pas la tester de suite en réel, je verrais ça la semaine prochaine.
Pour CELLS dans le simulateur tu devrais rentrer des données "brutes", soit un nombre 32bit en hexa qui contient 2 éléments selon le protocole frsky.

Kilrah

Masculin Messages : 2181
Date d'inscription : 28/01/2014
Localisation : Suisse

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x Empty Re: LUA Scripting sur V2.1.x

Message par Sacre100 Sam 19 Sep 2015 - 14:27

dev.fred a écrit:...
Les scripts model ou mixeurs permettent de configurer la source donc ils sont plus génériques, car c'est à la configuration, dans SCRIPT PERSO, que tu décides si la source sera A1 ou Cels ou FAS-V etc en fonction de tes capteurs.

On pourrait faire la demande sur GitHub pour avoir les "input" dans les télémétry script ou les function script comme c'est le cas pour les mixer script, cela règlerait ce genre de problèmes, toutefois, je ne sais pas si c'est pertinent aujourd'hui.

En effet, il me semble que tout cela doit encore murir. LUA, c'est quelque chose qui n'avait encore jamais été fait sur une radio, c'est normal me semble-t-il que ce ne soit pas encore parfaitement stable. Quand LUA est sorti avec la 2.0.x, je me suis jeté dedans comme beaucoup d'autres et j'ai vu sortir des tas de choses très "sexy" mais qui n'apportaient fonctionnellement pas grand chose. Parmi les script qui me semblent vraiment utiles, y'a celui qui essaie de rendre les mouvements d'un caméra fluide comme avec une Zemuse Gimbal. Y'a aussi ceux pour les entrainements F3F et F3K et aussi un très joli graphe qui permet de voir l'altitude atteinte lors d'un vol. Mais à part ça, même ceux que j'ai fait, je ne suis pas sûr qu'ils soient bien utile.
Sacre100
Sacre100

Masculin Messages : 1889
Date d'inscription : 30/11/2013
Age : 64
Localisation : Blonay - Suisse

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x Empty Re: LUA Scripting sur V2.1.x

Message par dev.fred Sam 19 Sep 2015 - 14:43

Kilrah a écrit:Pour CELLS dans le simulateur tu devrais rentrer des données "brutes", soit un nombre 32bit en hexa qui contient 2 éléments selon le protocole frsky.

J'essaye mais je n'y arrive pas, maintenant je n'ai accès qu'au protocole Hub, il faut peut-être le S.port !
La doc du protocole Frsky
http://www.frsky-rc.com/download/down.php?id=126

Code:
Frame1
①Three-axis Acceleration Values, Altitude (variometer), Tempature1, Temprature2, Voltage, ②RPM
e.g:5e 24 00 04 5e 25 80 ff 5e 26 e0 fe 5e 10 3c 00 5e 02 ef ff 5e 05 e9 ff 5e 06 18 34 5e 03 63 00 5e
Note:
the first 4 bit of the voltage data refers to battery cell number, while the last 12 bit refers to the
voltage value. 0-2100 corresponding to 0-4.2V.
e.g:
......0x5E 0x06 0x18 0x34 0x5E........
0x06 refers to the voltage DataID
0x18       0x34
0001 1000  0011 0100
0001(1) means the first cell of pack, the last
 12bit 0x834 (2100) means the value is 4.2V

Donc j’essaie 0x1834 dans CELLS et Cels affiche toujours --- alors que je m'attends à voir afficher 4.2V si j'applique l'exemple.

LUA Scripting sur V2.1.x Captur27

Quelle est, par exemple, la donnée brute à rentrer dans CELLS pour voir afficher qlq chose, ça m'intrigue ?


Dernière édition par dev.fred le Sam 19 Sep 2015 - 14:50, édité 1 fois

dev.fred

Masculin Messages : 760
Date d'inscription : 07/02/2014
Localisation : Paimpol (22)

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x Empty Re: LUA Scripting sur V2.1.x

Message par Kilrah Sam 19 Sep 2015 - 14:47

Le protocole smart port, pas hub Wink

Kilrah

Masculin Messages : 2181
Date d'inscription : 28/01/2014
Localisation : Suisse

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x Empty Re: LUA Scripting sur V2.1.x

Message par dev.fred Sam 19 Sep 2015 - 14:52

C'est ce que je viens juste de réaliser, mais je crois qu'on ne le trouve pas il est en NDA !

Peux-tu juste me donner les valeurs hexa passer ?

dev.fred

Masculin Messages : 760
Date d'inscription : 07/02/2014
Localisation : Paimpol (22)

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x Empty Re: LUA Scripting sur V2.1.x

Message par Kilrah Sam 19 Sep 2015 - 15:28

J'ai pas d'exemple sous la main, désolé. Mais si tu regardes le code source d'OpenTX tu vas voir comment c'est décodé... donc comment faut l'encoder.

Kilrah

Masculin Messages : 2181
Date d'inscription : 28/01/2014
Localisation : Suisse

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x Empty Re: LUA Scripting sur V2.1.x

Message par dev.fred Sam 19 Sep 2015 - 16:34

Heinsenberg a écrit:Merci Dev.Fred, j'ai relu ce topic une paire de fois mais il présente déjà la manière de faire des calculs avant de simplement expliquer comment recevoir une valeur et l'afficher sans la manipuler. J'avais vu les local inputs y compris dans le guide, mais sans comprendre comment ils fonctionnent.
Je pense qu'un exemple utilisant ton script de télémétrie  avec simplement l'utilisation de la variable globale glipo pour afficher la valeur de Li-Po provenant d'un script model utilisant une source générique sera surement plus démonstratif:

Script telemetrie sous SCRIPTS\TELEMETRY
Code:
-- LUA telemetry script
local function run(event)
lcd.lock()
lcd.clear()
--- TEST SWR :
 lcd.drawText(88,08, "SWR :",SMLSIZE,0)
 lcd.drawNumber(130, 08, getValue("SWR"), LEFT+SMLSIZE)

--- TEST variable globale :
 lcd.drawText(88,18, "Li-Po :",SMLSIZE,0)
 lcd.drawNumber(130, 18, glipo, PREC2+LEFT+SMLSIZE)  
end
return { run=run }
Note: PREC2 permet d'afficher 2 décimales.


Avec le Script model sous SCRIPTS\MIXES
La variable globale glipo récupère, en fonction de ce que tu configures dans SCRIPT PERSO, soit A1, A2...FAS-V, CELLS etc.
Il suffit de l'utiliser sans la déclarer local pour qu'elle soit automatiquement globale.
Code:
-- LUA model script
local inputs = { {"lipo", SOURCE}}
local outputs = { "lipo" }

local function run(voltage)
  glipo=voltage
  return voltage   * 10.24
end

return { run=run, input=inputs, output=outputs }
Il est à noter que les valeurs remontées par les scripts model LUA sont divisées par 10.24.

J'ai mis un output qui est affichable directement sous le nom "lipo"mais tu peux  tout aussi bien t'en passer et avoir :
Code:
-- LUA model script
local inputs = { {"lipo", SOURCE}}

local function run(voltage)
  glipo=voltage
end

return { run=run, input=inputs }

Donc la combinaison des 2 scripts est générique sur les sources.

Pour terminer dans les cas de plusieurs sources, on écrira simplement :
Code:
-- LUA model script
local inputs = { {"S1", SOURCE},{"S2", SOURCE}}

local function run(S1,S2)
  gs1=S1
  gs2=S2
end

return { run=run, input=inputs }

La couche permettant la généricité est donc simple, il ne manque plus que de pouvoir identifier la source pour que cette méthode soit pleinement satisfaisante.

dev.fred

Masculin Messages : 760
Date d'inscription : 07/02/2014
Localisation : Paimpol (22)

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x Empty Re: LUA Scripting sur V2.1.x

Message par dev.fred Dim 20 Sep 2015 - 8:27

Kilrah a écrit:J'ai pas d'exemple sous la main, désolé. Mais si tu regardes le code source d'OpenTX tu vas voir comment c'est décodé... donc comment faut l'encoder.

radio\src\telemetry\frsky_sport.cpp
Code:
       if (unit == UNIT_CELLS) {
          uint8_t cellsCount = (data & 0xF0) >> 4;
          uint8_t cellIndex = (data & 0x0F);
          uint32_t mask = (cellsCount << 24) + (cellIndex << 16);
          setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, appId, dataId, mask + (((data & 0x000FFF00) >>  / 5), unit, precision);
          if (cellIndex+1 < cellsCount) {
            mask += (1 << 16);
            setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, appId, dataId, mask + (((data & 0xFFF00000) >> 20) / 5), unit, precision);
          }

Est-ce que je suis au moins au bon endroit ?

ou ça:
https://code.google.com/p/opentx/source/browse/trunk/src/telemetry/frsky_sport.cpp


En fait il faut entrer le nombre de cellules et la tension de chaque cellule avec un indice, tout ça en hexa 32bits, j'imagine séparé par des "," et tant que la série d'hexa n'est pas correcte on a --- sur l'écran Very Happy
D'accord, je pousse, il suffit de coder 1 cellule.


Dernière édition par dev.fred le Dim 20 Sep 2015 - 14:34, édité 2 fois (Raison : code google obsolete qui montrait un extrait du protocole de la série D)

dev.fred

Masculin Messages : 760
Date d'inscription : 07/02/2014
Localisation : Paimpol (22)

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x Empty Re: LUA Scripting sur V2.1.x

Message par dev.fred Dim 20 Sep 2015 - 12:28

Good :
cell count =1 => 0x10
cell index =0 => 0x00
data = 0x00011100
somme = 0x00011110

LUA Scripting sur V2.1.x Captur29

dev.fred

Masculin Messages : 760
Date d'inscription : 07/02/2014
Localisation : Paimpol (22)

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x Empty Re: LUA Scripting sur V2.1.x

Message par Kilrah Dim 20 Sep 2015 - 12:29

Le premier est le smart port que tu veux, le 2e est le D.

Il semble que tu regardes sur Google code, qui est déprécié. Meilleur temps de regarder la branche master sur github.

Kilrah

Masculin Messages : 2181
Date d'inscription : 28/01/2014
Localisation : Suisse

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x Empty Re: LUA Scripting sur V2.1.x

Message par dev.fred Dim 20 Sep 2015 - 12:42

Kilrah a écrit:Le premier est le smart port que tu veux, le 2e est le D.

Désolé mais je ne comprends pas ce que tu veux dire ?
D. c'est quoi ?

dev.fred

Masculin Messages : 760
Date d'inscription : 07/02/2014
Localisation : Paimpol (22)

Revenir en haut Aller en bas

LUA Scripting sur V2.1.x Empty Re: LUA Scripting sur V2.1.x

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Page 1 sur 7 1, 2, 3, 4, 5, 6, 7  Suivant

Revenir en haut


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