BaroneRosso.it - Forum Modellismo

BaroneRosso.it - Forum Modellismo (https://www.baronerosso.it/forum/)
-   Radiocomandi (https://www.baronerosso.it/forum/radiocomandi/)
-   -   FrSky Taranis - Lua scripts per tutti (https://www.baronerosso.it/forum/radiocomandi/353596-frsky-taranis-lua-scripts-per-tutti.html)

TermicOne 17 gennaio 16 18:27

FrSky Taranis - Lua scripts per tutti
 
1 Allegato/i
Una tra le caratteristiche più interessanti di Open TX è la possibilità di estendere le funzioni disponibili della nostra Taranis (che sono già tantissime) con scripts in linguaggio Lua.

Ma questa funzionalità è davvero per tutti o è riservata solo ai guru dell'informatica?

Non mi sono mai avvicinato a questa funzionalità perchè intimorito dal fatto di mettersi ad imparare a 65 anni suonati il linguaggio Lua solo per aggiungere qualche funzionalità ad una radio ....che ne ha già fin troppe!

La possibilità però di disegnare a piacimento delle schermate popolate solo delle informazioni che servono, con caratteri belli grandi e leggibili senza occhiali intanto che si vola e facendo magari anche qualche piccolo calcolo, mi ha stimolato e ho provato ad avventurarmi.

Ho così scoperto che nonostante il linguaggio preveda numerosissimi comandi e funzioni (tanti da perdersi) in fondo si riescono a fare molte cose dal risultato (per me) sorprendente usando solo pochissimi statements dalla sintassi assai semplice.

Lasciando le funzioni più complesse agli esperti penso che la maggior parte di noi si possa avventurare a scrivere poche righe di codice per costruire semplicissimi scripts per generare variabili calcolate (model scripts) e soprattutto disegnare pagine con solo le informazioni che servono durante il volo (telemetry scripts) visualizzate nel modo che ci è più utile.

Penso che possa essere utile mettere in comune questo percorso sia per condividere con altri questo "approccio semplice" ai Lua scripts (non ho trovato un "Taranis Lua scripts for dummies"), sia perchè magari qualche esperto potrà darci commenti e suggerimenti... ...mantenendosi però rigorosamente sulla strada della assoluta semplicità.

Naturalmente possiamo usare questo thread anche per condividere i nostri semplici scripts che magari faranno sorridere i più esperti ma potranno essere di ispirazione anche per altri.

Al momento sto usando la versione 2.0.19 di OpenTx e di Companion.

Luciano

TermicOne 17 gennaio 16 18:34

Risorse
 
Non ho trovato dei tutorial sufficientemente "for dummies" e quindi ho usato questi reference guide:

https://docs.google.com/document/d/1...h.d47rzdjza6kz

https://opentx.gitbooks.io/opentx-lu...guide/content/

Particolarmente utili come guida introduttiva sono le due simpatiche paginette linkate qui:

Grad School | OpenTX University


Una delle cose più interessanti di questi Lua Scripts è che si possono testare interamente usando il simulatore nel Companion per poi passarli sulla radio solo quando funzionano. Per fare questo è comodo avere sul PC una cartella con la copia delle directories della SD della radio e fare in modo che Companion nel "Setting" utilizzi quella cartella.

Per creare i nostri script, visto che saranno semplici, si puo' usare anche il "blocco note".

Una delle cose invece più antipatiche è che non è comodo trovare gli errori perchè non ho trovato come fare un debugging decente. Se manca una virgola lo script non gira dicendo <error> e sono cavoli amari trovare l'errore, spesso per esclusione.

Un'altra cosa antipatica è che mi sono imbattuto in comandi che funzionano perfettamente su Companion ma che non sono riuscito a far girare sulla Taranis. Negli esempi che seguiranno ho messo solo i comandi che girano in entrambi gli ambienti.

TermicOne 17 gennaio 16 18:38

Including Lua in OpenTX Download
 
Per iniziare potete usare anche solo Companion e provare i vostri primi scripts.

Se invece volete provarli anche sulla radio occorre configurare la vostra Taranis in modo che supporti Lua. Il supporto Lua è infatti una delle opzioni che generano un firmware da caricare sulla radio.

E' tutto molto semplice. Occorre solo seguire il capitoletto "Including Lua in OpenTX Download" nella guida introduttiva linkata sopra.

TermicOne 17 gennaio 16 19:18

Telemetry scripts
 
1 Allegato/i
Mi è sembrato che gli script più semplici e più utili siano quelli che configurano nuove pagine di telemetria.

Per creare nuove pagine di telemetria è sufficiente creare nella directory SCRIPTS della SD una subdirectory con il medesimo nome del modello in uso. In questa subdirectory verranno messi gli script lua che creano le nuove pagine di telemetria per quel modello.

Ad esempio il mio modello si chiama INSIDE-F5J quindi ho messo il mio primo script telem1.lua nella SD (e nel PC) nella directory \SCRIPTS\INSIDE-F5J\telem1.lua

TermicOne 17 gennaio 16 19:25

Primo script per creare una pagina telemetry di esempio
 
1 Allegato/i
Provate a creare il file telem1.lua nella subdirectory con il nome del vostro modello usando un editor di testo qualsiasi, anche blocco note va bene:

Codice:

local function run()
 
  tempoVolo = model.getTimer(0)

  lcd.drawTimer(100, 1, tempoVolo.value, XXLSIZE)
       
end

return { run=run }

Se tutto è configurato bene e avete salvato telem1.lua nella subdirectory con il nome del vostro modello allora potrete vedere che nel simulatore Taranis di Companion c'è una nuova pagina di telemetria con il timer1 scritto bello grosso in posizione 100 sulla riga 1 (vedi immagine allegata).

Ora possiamo creare le nostre pagine personalizzate mettendo quello che vogliamo visualizzare tra

Codice:

local function run()
e

Codice:

end

return { run=run }


TermicOne 17 gennaio 16 19:36

I comandi da mettere nello script come sopra che ho trovato particolarmente utili e che ho provato sono:

Per leggere i timer
model.getTimer(0)
model.getTimer(1)

esempio:
Codice:

tempoVolo = model.getTimer(0)
Per visualizzare un timer
lcd.drawTimer(x, y, value, flags)
esempio:
Codice:

lcd.drawTimer(100, 1, tempoVolo.value, XXLSIZE)
Per visualizzare un canale qualsiasi (vedi lista)
lcd.drawChannel(x, y, value, flags)
esempio:
Codice:

lcd.drawChannel(26, 48, "tx-voltage", DBLSIZE)
Per visualizzare un testo
lcd.drawText(x, y, text, flags)
esempio:
Codice:

lcd.drawText(100, 45, "tempo volo", 0)
Per disegnare righe di separazione
lcd.drawLine(x1, y1, x2, y2, pattern, flags)
esempio:
Codice:

lcd.drawLine(0, 39, 89, 39, SOLID, 0)
Per maggiori dettagli potete consultare i reference guide linkati nei primi post, ma anche solo con questi 5 tipi di comandi si possono creare telemetry pages che mi sembrano particolarmente interessanti.

TermicOne 17 gennaio 16 19:45

1 Allegato/i
A titolo di esempio ecco un semplice script che usa unicamente i comandi sopra riportati con i quali si possono fare molto semplicemente pagine anche ricche e complesse.

Le righe che iniziano con "--" sono commenti e possono essere omesse


Codice:

local function run()
 
          -- leggi tempo volo corrente da timer1
        tempoVolo = model.getTimer(0)
       
        -- leggi tempo motore totale da timer2
        tempoMotore = model.getTimer(1)
       
        -- display tempo motore totale
        lcd.drawText(1, 1, "tempo motore", 0) 
        lcd.drawTimer(1, 12, tempoMotore.value, DBLSIZE)

        -- display tensione batterie TX e RSSI
        lcd.drawText(5, 41, "batt", SMLSIZE)
        lcd.drawText(68, 41, "rssi", SMLSIZE) 
        lcd.drawChannel(26, 48, "tx-voltage", DBLSIZE)
        lcd.drawChannel(87, 48, "rssi", DBLSIZE)       

        -- display tempo volo in grande
        lcd.drawTimer(100, 1, tempoVolo.value, XXLSIZE)
        lcd.drawText(100, 45, "tempo volo", 0)
       
        -- righe divisorie
        lcd.drawLine(90, 0, 90, 70, SOLID, 0)
        lcd.drawLine(0, 39, 89, 39, SOLID, 0)

end

return { run=run }


lambdafly 17 gennaio 16 19:46

Complimenti per l'ottima iniziativa, sicuramente darà la spinta che manca a molti per iniziare a sviluppare script LUA.

TermicOne 17 gennaio 16 19:51

Citazione:

Originalmente inviato da lambdafly (Messaggio 4824792)
...sicuramente darà la spinta che manca a molti per iniziare a sviluppare script LUA.

...grazie lamdafly...mi auguro che altri amici si avventurino in questo ambiente che all'inizio sembra un pochino ostico ma che apre un sacco di possibilità...

..e che in fondo non è poi tanto difficile se un pensionato di 65 anni è riuscito a farci qualcosa....:old:

Luciano

alevilla 17 gennaio 16 21:45

1 Allegato/i
Citazione:

Originalmente inviato da TermicOne (Messaggio 4824735)
Una delle cose invece più antipatiche è che non è comodo trovare gli errori perchè non ho trovato come fare un debugging decente. Se manca una virgola lo script non gira dicendo <error> e sono cavoli amari trovare l'errore, spesso per esclusione.

Seguo la discussione con interesse.
Per lavoro, quando devo scrivere del codice, uso Notepad++ che ho scoperto avere la possibilità di settare come linguaggio proprio LUA.
Non è un debugger, ma aiuta visivamente a vedere se tutto è stato scritto nella maniera corretta, soprattutto quando hai diversi processi annidati.
Inoltre non costa nulla e volendo non necessita neanche di installazione. Io stesso uso la versione portable.
Allego schermata.

In attesa di altri post, ti faccio i complimenti per l'iniziativa.

Saluti
Alevilla


Tutti gli orari sono GMT +2. Adesso sono le 02:04.

Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002