Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ReferenceGuide
Contents
Contents
Introduction
ModelScripts
Generaldescription
Limitationsofmodelscripts
Anatomyofmodelscript
Locationofmodelscripts
Lifetimeofmodelscript
Scriptinterfacedefinition
Scriptinitialization
Scriptexecution
OneTimeScripts
Generaldescription
Anatomyofonetimescript
Locationofonetimescripts
Lifetimeofaonetimescript
Scriptinterfacedefinition
Scriptinitialization
Scriptexecution
FunctionScripts
TelemetryScripts
Generaldescription
Anatomyoftelemetryscript
Locationoftelemetryscripts
Lifetimeoftelemetryscript
Scriptinterfacedefinition
Scriptinitialization
Scriptexecution
LuaScriptReference
GeneralSyntax
Localvs.Global
LocalVariables
LocalFunctions
InputsSyntax
NumberFormat
TypesofInputs
OutputsSyntax
NumberFormat
LuaGeneralFunctions
getTime()
getVersion()
getValue(source)
playFile(path)
popupInput(title,event,input,min,max)
getGeneralSettings()
LuaScriptinginOpenTX
playNumber(number,unit,att)
defaultStick(channel)
defaultChannel(stick)
killEvents(keyevent)
getFieldInfo(fieldname)
playDuration(duration,playtime)
playTone(frequency,length,pause,attr,frequnecyInc)
LuaModelFunctions
model.getTimer(timer)
model.setTimer(timer,data)
model.getInputsCount(input)
model.getInput(input,line)
model.insertInput(input,line,value)
model.deleteInput(input,line)
model.deleteInputs()
model.defaultInputs()
model.getMixesCount(channel)
model.getMix(channel,line)
model.insertMix(channel,mix,value)
model.deleteMix(channel,mix)
model.deleteMixes()
model.getLogicalSwitch(switch)
model.setLogicalSwitch(switch,value)
model.getCustomFunction(function)
model.setCustomFunction()
model.getOutput(index)
model.setOutput(index,value)
model.getInfo()
model.setInfo
model.getGlobalVariable(gvar,flightmode)
model.setGlobalVariable(gvar,flightmode,value)
model.getTelemetryChannel(idx)
model.setTelemetryChannel(idx,value)
LuaDisplayFunctions
lcd.lock()
lcd.clear()
lcd.drawPoint(x,y)
lcd.drawLine(x1,y1,x2,y2)
lcd.drawRectangle(x,y,width,height)
lcd.drawText(x,y,text,att)
lcd.drawSwitch(x,y,switch,att)
lcd.drawPixmap(x,y,path)
lcd.drawScreenTitle(title,idx,cnt)
lcd.drawGauge(x1,y1,w,h,fill,maxfill)
lcd.drawChannel(x,y,source,att)
lcd.drawNumber(x,y,number,att)
lcd.drawTimer(x,y,value,att)
lcd.getLastPos()
lcd.drawFilledRectangle(x,y,w,h,att)
lcd.drawSource(x,y,source,att)
lcd.drawCombobox(x,y,w,list,idx,flag)
LuaScriptinginOpenTX
ScriptExamples
OneTimeScriptExample:HelloWorld
OneTimeScriptExample:GenericTemplate
ModelScriptExample:DeltaMixer
TelemetryScriptExample:Screen#1
TelemetryScriptExample:Screen#2
ModelScriptExample:AutomaticBatteryCellDetection
Appendix
LUASourceList
CharacterMaps
SMLSIZE
default
MIDSIZE
DBLSIZE
XXLSIZE
Linkstoexternaldocumentation:
DocumentStyle
Acknowledgments
LuaScriptinginOpenTX
Introduction
OpenTX2.0addedsupportforLua(currentversion5.2.2)userscripts.
Luaisalightweightmultiparadigmprogramminglanguagedesignedasascriptinglanguage.Moreat
Wikipedia
ThereareseveraltypesofLuascriptsusedinopenTX.MoregeneralinformationaboutLuascriptscan
befoundonpagehttp://www.opentx.org/luainstructions.html
LuascriptsmustbeplacedonSDcardincorrectfoldersandhaveanextension.lua.MaximumLuascript
filenamelengthisTODOcharacters.ThescriptfoldershavebeenreorganizedinOpenTX2.0.3.The
folderstructurelookslikethis:
/SCRIPTS/WIZARD/FortheWizardscript
/SCRIPTS/MIXES/Formodelscripts
/SCRIPTS/FUNCTIONS/Forfunctionscripts
/SCRIPTS/modelname/telemXX.luaFortelemetryscripts
/SCRIPTS/TEMPLATES/Fortemplatescripts
LusStandardLibraries
Included
package
no
coroutine
no
table
no
io
no
os
no
string
no
bit
Future2.1.0?
math
Availablefrom2.0.0
debug
no
LuaScriptinginOpenTX
Model Scripts
WARNING
DonotuseLuamodelscriptsforcontrollinganyaspectofyourmodelthatcouldcauseacrashifscript
stopsexecuting.
General description
Eachmodelcanhaveseveralmodelscriptsassociatedwithit.Thesescriptsarerunperiodicallyfor
entiretimethatmodelisselected/active.ThesescriptsbehavesimilartostandardOpenTXmixersbutat
thesametimeprovidemuchmoreflexibleandpowerfultool.
Typicallymodelscriptstakeseveralvaluesasinputs,dosomecalculationorlogicprocessingbasedon
themandoutputoneormorevalues.Eachrunofscriptsshouldbeasshortaspossible.Exceeding
certainscriptexecutionruntimewillresultinscriptbeingforcefullystoppedanddisabled.
Seealso:
LuaOnetimeScriptsdescribesonetimerunninggeneralscripts
LuaFunctionScripts
LuaTelemetryScripts
LuaScriptReferencedetailedreferenceofOpenTXLuaimplementationandinterface
LuaScriptExamplessomeexamplescriptswithcomments
Examplesoftypicaluseofmodelscripts
replacementforcomplexmixesthatarenotcriticaltomodelfunction
complexprocessingofinputsandreactiontotheircurrentstateand/ortheirhistory
filteringoftelemetryvalues
automaticdetectionofnumberofbatterycellsandsettingoflowbatterythreshold
automaticannouncingofmaximumaltitudeforeachDLGthrow
seealsoLuaScriptExamples
ShouldnotdisplayanythingonLCDscreen.
Can'twaitforuserinputviadialog.
Shouldnotexceedmaximumallowedruntime/numberofinstructions.
StandardOpenTXmixesareruneveryXXmillisecondsinaverydeterministicway(guaranteed
execution)whilemodelscriptsarerunfromanotherthreadwithlesspriority.Theirexecution
periodisaround30msandisnotguaranteed!
Ascriptcouldbedisabled/killedanytimeduetoseveralcauseslike(errorinscript,notenough
freememory,etc...)
LuaScriptinginOpenTX
scriptisloadedfromSDcardwhenmodelisselected
scriptinitfunctioniscalled
scriptrunfunctionisperiodicallycalled(insideGUIthread,periodcca30ms)
scriptisstoppedanddisabledifitmisbehaves(toolongruntime,errorincode,lowmemory)
allmodelscriptsarestoppedwhileonetimescriptisrunning(seeLuaOnetimescripts)
scriptinputs(optional)
scriptoutputs(optional)
scriptinitfunction(optional)
scriptrunfunction
Forexample:
Thisexampledefines:
inputstable(array)asinputvaluestomodelscript
outputstableasoutputofmodelscript
run_func()functionasperiodicexecutionfunctionthattakesinputsasparametersandreturns
outputstable
init_func()functionasfunctionthatiscalledonetimewhenscriptisloadedandbegins
execution.
Parametersinit,inputandoutputareoptional.Ifmodelscriptdoesn'tusethem,theycanbeomitted
fromreturnstatement.Examplewithoutinitandoutput:
LuaScriptinginOpenTX
Script initialization
Ifdefined,initfunctioniscalledrightafterthescriptisloadedfromSDcardandbeginsexecution.Initis
calledonlyoncebeforetherunfunctioniscalledforthefirsttime.
local<init_function_name>()
calledoncebeforefirstcalltorunfunction
Parameters: none
Returns:
none
Script execution
Therunfunctionisthefunctionthatisperiodicallycalledfortheentirelifetimeofscript.Syntaxofrun
functionisdifferentbetweenmodelscriptsandonetimescripts.
local<run_function_name>([firstinput,[secondinput],])
Parameters: <>
zeroormoreinputvalues,theirnamesarearbitrary,their
meaningandorderisdefinedbytheinputtable
Returns:
none
ifoutputtableisempty(i.e.scripthasnooutput)
values (commaseparatedlistofvalues)listofoutputvalues,
theirorderandmeaningisdefinedbytheoutputtable
LuaScriptinginOpenTX
One-Time Scripts
General description
Thesescriptsstartwhencalleduponbyaspecificradiofunctionorwhentheuserselectsthemfroma
contextualmenu.Theydotheirtaskandarethenterminatedandunloaded.Pleasenotethatall
persistentscriptsarehaltedduringtheexecutionofonetimescripts.Theyareautomaticallyrestarted
oncetheonetimescriptisfinished.Thisisdonetoprovideenoughsystemresourcestoexecutetheone
timescript.
Seealso:
LuaModelScriptsdescribescontinuouslyrunningmodelscripts
LuaScriptReferencedetailedreferenceofOpenTXLuaimplementationandinterface
LuaScriptExamplessomeexamplescriptswithcomments
Examplesoftypicaluseofonetimescripts
Allkindofwizardstosetup/editmodelsettings.Theofficialmodelwizardisoneexampleofsuch
script
Replacementfortemplates
Games
Limitationsofonetimescripts
WhenrunningallotherLuascriptsarehalted.
Shouldnotexceedmaximumallowedruntime/numberofinstructions.
LuaScriptinginOpenTX
Thisexampledefines:
run_func()functionasperiodicexecutionfunctionthattakesakeypresseventasparameterand
returnssomevalue
init_func()functionasfunctionthatiscalledonetimewhenscriptisloadedandbeginsexecution.
Parameterinitisoptional.
Script initialization
seescriptinitialization
Script execution
Therunfunctionisthefunctionthatisperiodicallycalledfortheentirelifetimeofscript.Syntaxofrun
functionisdifferentbetweenmodelscriptsandonetimescripts.
local<run_function_name>(event)
Parameters: event
numberthatcontainscurrentlyactivekeypress
code.
Ifnokeyispressedthevalueis0.
eventcontainstwodistinctfields:
*whathappened(keyup,keydown,longkey
press,etc)
*whichkeyis/waspressed
Theactualvaluesofeventareusuallynotimportant
insideLuascript,theeventismainlyusedasone
ofparametersforthepopupInput()function.
Returns:
scriptwillcontinueexecution(runfunctionwillbe
calledagain
!=0
scriptisterminated(endsexecution)
LuaScriptinginOpenTX
ExampleScript
Function Scripts
TODO(blankinWiki)
LuaScriptinginOpenTX
Telemetry Scripts
General description
Thesescriptsareusedforbuildingcustomizedtelemetryscreens.Theoreticallyitispossibletohaveup
to7customtelemetryscreens,allwritteninLua.Itispossibletousedifferentscriptsonapermodel
basis.
scriptisloadedfromSDcardandexecutedwhenthemodelisloaded.
scriptinitfunctioniscalled
scriptbackgroundfunctionisperiodicallycalledwhencustomtelemetryscreenisnotvisible
scriptrunfunctionisperiodicallycalledwhencustomtelemetryscreenisvisible
scriptisstoppedanddisabledifitmisbehaves(toolongruntime,errorincode,lowmemory)
alltelemetryscriptsarestoppedwhileonetimescriptisrunning(seeLuaOnetimescripts)
scriptbodywouldbehere
return{run=run_func,init=init_func,background=bckgrnd_func}
Thisexampledefines:
bckgrnd_func()functionasperiodicexecutionfunctionthatisperiodicallycalledwhencustom
telemetryscreenisnotvisible
run_func()functionasperiodicexecutionfunctionthatisperiodicallycalledwhencustom
telemetryscreenisvisible
LuaScriptinginOpenTX
init_func()functionasfunctionthatiscalledonetimewhenscriptisloadedandbegins
execution.
Parameterinitisoptional.
Script initialization
seescriptinitialization
Script execution
Therunorbackgroundfunctionisthefunctionthatisperiodicallycalledfortheentirelifetimeofscript.
Whichoneiscalleddependsonthevisibilityofcustomtelemetryscreen:
notvisiblethebackgroundfunctioniscalled.Scriptshouldnotdrawtoscreen.Usuallyusedto
store/processtelemetrydata.
visiblerunfunctioniscalled.Scriptshoulddrawitsscreen.
local<background_function_name>()
Parameters: none
Returns:
none
local<run_function_name>(event)
Parameters: event
numberthatcontainscurrentlyactivekeypresscode.Ifno
keyispressed,thevalueis0
Eventcontainstwodistinctfields:
*whathappened(keyup,keydown,longkeypress,etc).
*whichkeyis/waspressed.
Returns:
none
Examples
TelemetryScreen#1
TelemetryScreen#2
LuaScriptinginOpenTX
TODO:howtosharedatabetweenscripts
Warning
Evenvariablesdefinedinsidelocalfunctionswithoutlocalkeywordareglobal.Forexampleifwehave
twoscripts,script1:
andscript2:
Ifweexecutebothscripts,wewouldhear"Whoopsie.wav"(ifitispresentonSDcard).Thismeansthat
variableglobal_varisactuallyglobalevenifitisfirstdefinedinsomelocalfunctioninotherscript.
Local Variables
Scriptcanhaveanynumber(limitedbymemoryusage)oflocalvariables,theirvalueispreserved
betweeneachcalltorunfunction.Theyaredefinedas:
local simple_number = 4
local some_table = {1, 2, 120}
Localvariablesareonlyvisibletothescriptthatdefinedthem.Twoscriptscandefinealocalvariablewith
thesamename.Thesetwovariablesdon'tshareanything,eachscripthashisowninstanceofvariable.
Local Functions
Scriptcanhaveanynumber(limitedbymemoryusage)oflocalfunctions:
LuaScriptinginOpenTX
end
return value1
Localfunctionsareonlyvisibletothescriptthatdefinedthem.Twoscriptscandefinealocalfunctionwith
thesamename.Thesetwofunctionsdon'tshareanything,eachscripthashisowninstanceoffunction.
Inputs Syntax
Inputareonlyusedinmodelscripts.Howeverthesamenumberformatisreturnedbyfunction
getValue().
Number Format
InputsareanaloguevaluesfromopentTXthatareconvertedto16bitsignedintegersbeforetheyreach
Luascripts.
Analoguevaluessuchassticksandslidershavevalueinpercentmultipliedby10.24:
AileronStickValue
InputValuetoScript
0%
60.6%
620
100.0%
1024
100.0%
1024
Switches(realandlogical)arerepresentedas:
SwitchPosition
InputValuetoScript
down(100%)
1024
middle
up(100%)
1024
Telemetryvaluesarereturnedaspropervalues:
TelemetryValue
InputValuetoScript
altitude120.5m
120.5
A1voltage5.47V
5.47
Consumption1260mAh
1260
Types of Inputs
Source
LuaScriptinginOpenTX
SourcetypeprovidescurrentvalueofselectedOpenTXvariable(stickposition,slider,channel).
UserassignsassignsactualsourceforthisinputinCustomscriptmenu.Sourcecanbeanyvalue
OpenTXknowsabout(inputs,channels,telemetryvalues,switches,customfunctions,...).
Syntax:{name,SOURCE}
Example:{"Aileron",SOURCE}
DefinesSOURCEtypeinputwithnameAileron.NamelengthislimitedtoTODO.
Value
ValuetypeprovidesconstantvaluethatusersetsinCustomscriptmenu
Syntax:{name,VALUE,min,max,default}
Example:{"Ratio",VALUE,100,100,0}
DefinesVALUEinputwithnameRatiothathaslimits100and100anddefaultvalueof0.Name
lengthislimitedtoTODO.
Outputs Syntax
Outputsareonlyusedinmodelscripts.
Syntax:{name1,name2}
Example:{"Calc","Out"}
Outputnameislimitedtofourcharacters.
Number Format
Outputsare16bitsignedintegerswhentheyleaveLuascriptandarethendividedby10.24toproduce
outputvalueinpercent:
OutputfromScript
Outputasseenfrom
OpenTX
0%
996
97.2%
1024
100%
1024
100%
LuaScriptinginOpenTX
Parameters: none
Returns:
number Numberof10mstickssincetheradiowasstarted
Status:
current Introducedin2.0.0
LuaScriptinginOpenTX
getVersion()
ReturnsOpenTXversion
Parameters: none
Returns:
value
(string)Version(i.e.2.0.0)
Status:
current Introducedin2.0.0
Example:DisplayVersionNumber
return { run=run_func }
LuaScriptinginOpenTX
getValue(source)
Returnsthevalueofasource
number valueofsourceornilifvalueisnotavailable.
Status:
current Introducedin2.0.0
supportedsourceconstants
name
MIXSRC_FIRST_INPUT
MIXSRC_Rud
MIXSRC_Ele
MIXSRC_Thr
MIXSRC_Ail
MIXSRC_SA
MIXSRC_SB
MIXSRC_SC
MIXSRC_SD
MIXSRC_SE
MIXSRC_SF
MIXSRC_CH1
Thismaybeabeterreferencepointuntil2.0.6
http://www.rcgroups.com/forums/showpost.php?p=28897780&postcount=298
Supportedsourcenamesare:
name
value
example
"altitude"
barometricaltitudeinmeters
120.56
"altitudemax"
maxbarometricaltitudeinmeters
120.56
"vario"
variospeedinm/s
120.56
"txvoltage"
TxvoltageinV
120.56
LuaScriptinginOpenTX
"rpm"
RPMs
120.56
"latitude"
GPSlatitudeindegrees,Northispositive
45.5667
"longitude"
GPSlongitudeindegrees,Eastispositive
120.5677
"pilotlatitude"
firstGPSvalue(usuallypilotposition)formatsame
as"latitude"
12.567
"pilotlongitude"
firstGPSvalue(usuallypilotposition)formatsame
as"longitude"
0.567
NamesarecasesensitiveeggetValue("altitude")
LuaScriptinginOpenTX
playFile(path)
PlaysafilefromtheSDcard
Parameters: path
fullpathtowavfile(i.e./SOUNDS/en/system/tada.wav)
Returns:
none
valueofsourceornilifvalueisnotavailable.
Status:
current introducedin2.0.0
Introducedin2.1.0
Ifyouusearelativepath,willappendcurrentlanguagetothepath.
LuaScriptinginOpenTX
Parameters: title
(string)Texttodisplay
event
(number)theeventvariablethatispassedinfromthe
RunFunction(keypressed)
input
(number)valuethatcanbeadjustedbythe+/keys
min
(number)minvaluethatinputcanbedecrementedbythe
key
max
(number)maxvaluethatinputcanbedecrementedbythe
key
Returns:
result
(string)OKENTpressed
(string)CANCELEXITpressed
(number)theresultoftheinputadjustment
Status:
current
introducedin2.0.0
Example:Pressing+/willincrement/decrementnumber.
local result = 0
local swtch = 0
local function run_func(event)
lcd.lock()
lcd.clear()
lcd.drawScreenTitle("popupInput",1,1)
result = popupInput("Input", event, swtch, -10, 10)
lcd.drawNumber(62,24,swtch,0)
if result == "OK" then
return 0 -- ignore
elseif result == "CANCEL" then
return 1 -- exit program
else
swtch = result -- it is number
return 0
end
end
return { run=run_func }
LuaScriptinginOpenTX
getGeneralSettings()
ReturnsatablecontainingbattMinandbattMax
Parameters: none
Returns:
value
(generaltable)MinandMaxbatteryvalue
Status:
Current Introduced2.0.6
GeneralTableFormat
battMin
(number)MinimumBattery
battMax
(number)MaximumBattery
Example:DisplayMinandMaxBatteryvolatge
local settings=getGeneralSettings()
lcd.drawNumber(10,20,settings.battMin,LEFT+MIDSIZE)
lcd.drawNumber(100,20,settings.battMax,LEFT+MIDSIZE)
LuaScriptinginOpenTX
unit
(integer)
att
(integer)
Returns:
Status:
Current Introduced2.0.0
Unittable
Unit
Sound
Description
Volts
0115.wav
Amperes
0118.wav
MetersperSecond
0120.wav
Speed
KMHorKnotsdependingonradiosetting(imperial/metric)
Height
Numberismeters.ConvertedtofeetforImperial.
Temperature
Numberiscelcius.convertedtoFifradioisinImperial.
Percent
Millions
10
MH
11
Watts
12
DB
13
Feet
14
Speed
KMHorKnotsdependingonradiosetting(imperial/metric)
15
Hours
16
Minutes
17
Seconds
18
RPM
LuaScriptinginOpenTX
19
Gee
20
Degrees
21
22
23
PointZero
24
Pointtwo
25
Pointfour
26
Pointsix
27
Pointeight
Attr
ATTR
PREC1
Adddecimalplacetonumber.ieifnumberis58,willannounce5.8
LuaScriptinginOpenTX
defaultStick(channel)
Getstickthatisassignedtoachannel.SeeDefaultChannelOrderinGeneralSettings
value
(number)Stickassignedtothischannel
Status:
Current Introduced2.0.0
LuaScriptinginOpenTX
defaultChannel(stick)
Getchannelassignedtostick.SeeDefaultChannelOrderinGeneralSettings
Parameters: stick
(number)StickNumber
Returns:
nil
value
(number)ChannelNumber
Status:
Current Introduced2.0.0
LuaScriptinginOpenTX
killEvents(key-event)
Removeskeyeventfromevent
Parameters: keyevent
(number)Keyeventstoremove(mask)
Returns:
nil
Status:
Current
introducedin2.0.0
KeyEvents
comments
EVT_MENU_BREAK
EVT_PAGE_BREAK
EVT_PAGE_LONG
EVT_ENTER_BREAK
EVT_ENTER_LONG
EVT_EXIT_BREAK
EVT_PLUS_BREAK
EVT_MINUS_BREAK
EVT_PLUS_FIRST
EVT_MINUS_FIRST
EVT_PLUS_RPT
EVT_MINUS_RPT
LuaScriptinginOpenTX
getFieldInfo(fieldname)
Getsdetailedinformationaboutfield.
Parameters: fieldname
(string)shortfieldname.seeLUASourceList
Returns:
value
(fieldtable)detailsoffield
Status:
Current
2.0.8
FieldTableFormat
id
(number)Fieldindex
name
(string)ShortName
desc
(string)Longdescriptionforfield
LuaScriptinginOpenTX
playDuration(duration,playtime)
Parameters: duration
(integer)
playtime
(boolean)
Returns:
none
Status:
Planned
2.1.0
LuaScriptinginOpenTX
Parameters: frequency
(integer)Frequencyoftone,inHertz
length
(integer)Lengthoftoneinms
pause
(integer)
attr
(integer)Seetablebelow
frequencyInc (integer)
Returns:
none
Status:
Planned
2.1.0
Attr
Description
PLAY_NOW
Playimmediately
PLAY_BACKGROUND
Placeinbackgroundqueue
LuaScriptinginOpenTX
model.getTimer(timer)
Returnsmodeltimer
Parameters: timer
(number)timernumber
Returns:
nil
unknowntimernumber.
value
(timertable)timerdata
Status:
current introducedin2.0.0
TimerTableFormat
mode
(number)timertriggersource:off,abs,stk,stk%,
sw/!sw,!m_sw/!m_sw
start
(number)startvalue[seconds],0foruptimer,0>down
timer
value
(number)currentvalue[seconds]
countdownBeep
(number)countdownbeep
(0silent,1beeps,2voice)
minuteBeep
(boolean)minutebeep
persistent
(number)persistenttimer
Example:
--get timer data into tim1
tim1 = model.getTimer(1)
--access returned values as tim1.<value>
if tim1.value > 0 then
--do something
end
LuaScriptinginOpenTX
model.setTimer(timer, data)
Setsmodeltimer
Parameters: timer
(number)timernumber
data
(timertable)newtimerdata.See
Returns:
none
Status:
current introducedin2.0.0
seemodel.getTimer(timer)fortimertableformat
LuaScriptinginOpenTX
model.getInputsCount(input)
Returnsnumberoflinesforgiveninput
Parameters: input
(unsignednumber)inputnumber(0>maxinputs1)
Returns:
value
(unsignednumber)numberofconfiguredlinesforgiven
input.
Status:
current introducedin2.0.0
LuaScriptinginOpenTX
model.getInput(input, line)
Returnsinputdataforgiveninputandlinenumber
Parameters: input
(unsignednumber)inputnumber(0>maxinputs1)
line
(unsignednumber)inputline(0>maxlines1)
Returns:
value
(inputtable)inputdata
Status:
current introducedin2.0.0
InputTableFormat
name
(string)inputlinename
source
(number)inputsourceindex
weight
(number)inputweight
offset
(number)inputoffset
LuaScriptinginOpenTX
Parameters: input
(unsignednumber)inputnumber(0>maxinputs1)
line
(unsignednumber)inputline(0>maxlines1)
value
(inputtable)seemodel.getInput(input,line)
Returns:
none
Status:
current introducedin2.0.0
LuaScriptinginOpenTX
model.deleteInput(input, line)
Deletelinefromspecifiedinput
Parameters: input
(unsignednumber)inputnumber(0>maxinputs1)
line
(unsignednumber)inputline(0>maxlines1)
Returns:
none
Status:
current introducedin2.0.0
LuaScriptinginOpenTX
model.deleteInputs()
DeleteallInputs
Parameters: none
Returns:
none
Status:
current introducedin2.0.0
LuaScriptinginOpenTX
model.defaultInputs()
SetallinputstoDefaults.
Parameters: none
Returns:
none
Status:
current introducedin2.0.0
Example:
Radiobeforescriptisrun
Radioafterscriptisrun
LuaScriptinginOpenTX
model.getMixesCount(channel)
GetthenumberofMixerlinesthatthespecifiedChannelhas
value
(number)numberofline
Status:
current introducedin2.0.0
Example
mix = model.getMixesCount(0)
lcd.drawNumber(10,20,mix,LEFT+MIDSIZE)
RadioConfiguration
Result
LuaScriptinginOpenTX
model.getMix(channel, line)
GetconfigurationforspecifiedMix
line
(number)linenumberofMix.Zeronumbered.
Returns:
value
(mixtable)linedetails
nil
invalidparameters
Status:
current introducedin2.0.0
MixTableFormat
name
(string)
source
(number)
weight
(number)WeightvalueorgVar1..9=4096..4114,gVar1..9
=4095..4087
offset
(number)OffsetvalueorgVar1..9=4096..4114,gVar1..9
=4095..4087
switch
(number)SwitchNumber
multiplex
(number)0=ADD,1=MULTIPLY,2=REPLACE
LuaScriptinginOpenTX
line
(number)linenumbertoinsert.Existinglinewillbemoved
downoneline
value
(mixtable)seemodel.getMix(channel,line)
Returns:
nil
Status:
current introducedin2.0.0
LuaScriptinginOpenTX
model.deleteMix(channel, mix)
DeletemixerlinefromspecifiedChannel
line
(number)linenumbertodelete.Existinglineswillbe
moveduponeline
Returns:
nil
Status:
current introducedin2.0.0
LuaScriptinginOpenTX
model.deleteMixes()
RemovesALLlinesfromALLchannels
Parameters: none
Returns:
none
Status:
current introducedin2.0.0
LuaScriptinginOpenTX
model.getLogicalSwitch(switch)
GetLogicalSwitchparameters
value
(switchtable)
Status:
current introducedin2.0.0
SwitchTableFormat
func
(number)
v1
(number)
v2
(number)
v3
(number)
and
(number)
delay
(number)
duration
(number)
LuaScriptinginOpenTX
model.setLogicalSwitch(switch, value)
SetLogicalSwitchparameters
value
(switchtable)Seemodel.getLogicalSwitch(switch).
Returns:
none
Status:
current introducedin2.0.0
LuaScriptinginOpenTX
model.getCustomFunction(function)
GetSpecialFunctions
value
(functiontable)
Status:
current
introducedin2.0.0
FunctionTableFormat
switch
(number)SwitchNumber
func
(number)ActionNumber
name
(string)Nameoftracktoplay,onlyreturnedifActionis
playtrackorsound.
value
(number)
mode
(number)
param
(number)
active
(number)0=!Enabled,1=Enabled
LuaScriptinginOpenTX
FunctionTable.Caution,tablebehaviorchangesdependingonthefunction.Needtodetermineagood
waytoshowthisinformation.Thesoundorientatedfunctionsinparticularaffecttheusagesoffields.
Unusedvariableswillcontainvaluesfromapreviousfunctioni.e.ifyouchangeafunctionandvalueisno
longerused,itwillstillcontainthevaluefromtheoldfunction.
Action
Parameter
func
value
mode
param
SafetyCHx
125..125
ParameterValue
Channel021
Trainer
TrainerRUD
TrainerELE
TrainerTHR
TrainerAIL
InstantTrim
PlaySound
10
Reset
Timer1
Reset
Timer2
Reset
All
Reset
Telemetry
SetTimer1
0..n
ParameterValue
SetTimer2
0..n
Vario
18
PlayValue
12
StartLogs
0.0..25.5
20
Parametervalue*10
Volume
source
Seesourcetable
Backlight
21
Background
Music
Background
MusicPause
17
AdjustGV1..9
Value
ParameterValue
GV0..8
AdjustGV1..9
Source
Seesourcetable
GV0..8
AdjustGV1..9
GVAR
GV0.8
GV0..8
AdjustGV1..9
Increment
0=1,1=+1
GV0..8
LuaScriptinginOpenTX
LuaScriptinginOpenTX
model.setCustomFunction()
value
(functiontable)Seemodel.getCustomFunction(function)
Returns:
none
Status:
current
introducedin2.0.0
LuaScriptinginOpenTX
model.getOutput(index)
Getservodetails
Parameters: index
(number)ChannelNumber(ZeroNumbered)
Returns:
value
(outputtable)
nil
Status:
current
2.0.0
OutputTableFormat
name
(string)ChannelName
min
(number)Minimum%*10
max
(number)Maximum%*10
offset
(number)Subtrim*10
ppmCenter
(number)OffsetfromPPMCenter.0=1500
symetrical
(number)LinearSubtrim0=Off,1=On
revert
(number)Direction0=,1=INV
curve
(number)Curvenumber0..31=curve(1)..(32),2..33=
!curve(1)..(32)
Nilifnocurveset
LuaScriptinginOpenTX
model.setOutput(index, value)
Setservoproperties
Parameters: index
(number)ChannelNumber(ZeroNumbered)
value
(outputtable)seemodel.getOutput(index)
Returns:
nil
Status:
current
introducedin2.0.0
LuaScriptinginOpenTX
model.getInfo()
GetcurrentModelinformation
Parameters: none
Returns:
value
(modeltable)CurrentModelinformation
Status:
current introducedin2.0.6
ModelTableFormat
name
(string)modelname
id
(number)receivernumber
Example:
GettheModelnameandNumberofcurrentModel
modelinfo = model.getInfo()
lcd.drawText(10,20,modelinfo.name,MIDSIZE)
lcd.drawNumber(10,30,modelinfo.id,MIDSIZE)
CurrentModelsinRadio
ScriptOutput
LuaScriptinginOpenTX
model.setInfo
SetthecurrentModelNameandNumber
Parameters: value
(modeltable)CurrentModelinformation
Returns:
none
Status:
current introducedin2.0.6
Example:
LuaScriptinginOpenTX
model.getGlobalVariable(gvar, flightmode)
GetvalueofGvarforspecifiedFlightMode
Parameters: gvar
(number)gVarnumber
flightmode
(number)flightmode
Returns:
value
(number)gVarvalue.Ifvalueis>1024thengVaris
gettingitsvaluefromanotherflightmode.Subtract
1025togettheactualflightmodenumber.
Status:
current
introducedin2.0.0
LuaScriptinginOpenTX
Parameters: gvar
(number)gVarnumber
flightmode
(number)flightmode
value
(number)valueofGVAR
Returns:
none
Status:
current
introducedin2.0.0
LuaScriptinginOpenTX
model.getTelemetryChannel(idx)
Parameters: idx
(integer)Channelnumber.A1..A4(zeronumbered)
Returns:
value
(telemetrytable)
nil
Status:
current
introducedin2.0.8
TelemetryTableFormat
range
(number)Range
offset
(number)Offset
alarm1
(number)LowAlarm
alarm2
(number)CriticalAlarm
unit
(integer)seeUnittable
UnitTable
Unit
index
Volts(V)
Amps(A)
Speed(m/sorft/s)
Raw()
Speed(km/hormiles/h)
Meters(morft)
Temp()
Fule(%)
mAmps(mA)
LuaScriptinginOpenTX
model.setTelemetryChannel(idx, value)
Parameters: idx
(integer)Channelnumber
value
(telemetrytable)seemodel.getTelemetryChannel(idx)
Returns:
none
Status:
current
introducedin2.0.8
LuaScriptinginOpenTX
Parameters: none
Returns:
none
Status:
current introducedin2.0.0
lcd.clear()
ClearstheLCDscreen
Parameters: none
Returns:
none
Status:
current introducedin2.0.0
lcd.drawPoint(x, y)
Drawsasinglepixelat(x,y)position
Parameters: x
(integer)xpositioninpixels
(integer)ypositioninpixels
Returns:
none
Status
current introducedin2.0.0
Note:TaranishasanLCDdisplaywidthof212pixelsandheightof64pixels.Position(0,0)isattopleft.
Yaxisisnegative,toplineis0,bottomlineis63.
LuaScriptinginOpenTX
<x2,y2> (integer)endposition.Seelcd.drawPoint()
Returns:
none
Status:
current introducedin2.0.0
LuaScriptinginOpenTX
Parameters: <x,y>
(integer)toplefttextposition.Seelcd.drawPoint()
width
(integer)widthinpixels
height (integer)heightinpixels
Returns:
none
Status:
current introducedin2.0.0
LuaScriptinginOpenTX
Parameters: <x,y>
(integer)toplefttextposition.Seelcd.drawPoint()
text
(string)texttodisplay.
att
textattributes
Returns:
none
Status:
current introducedin2.0.0
TextAttributes:
Allattvaluescanbecombinedtogetherusingthe+character.ieBLINK+DBLSIZE.SeetheAppendix
foravailablecharactersineachfontset.
value
font
companionversion
normalfont
DBLSIZE
doublesizefont
MIDSIZE
midsizedfont
SMLSIZE
smallfont
INVERS
inverteddisplay
BLINK
blinkingtext
XXLSIZE
jumbofont
2.0.6
LEFT
2.0.6
SpecialCharacters
Hex
Decimal
Function
Example
0x1D
29
Tab
localstring='hello\31\110world'
tabinsertedbtweenhelloandworld
0x1E
30
Newline
localstring='hello\30world'
worldwillprintonnextline
0x1F
31
xcoordprefix.
localstring='hello\31\110world'
worldwillprintfromx=110
<0x20
allothercodeswillinsertanextendedspace
LuaScriptinginOpenTX
Parameters: <x,y>
(integer)toplefttextposition.Seelcd.drawPoint()
switch (integer)numberofswitchtodisplay,negativenumber
displaysnegatedswitch
att
(integer)textattributeSeelcd.drawText(x,y,text,att)
Returns:
none
Status:
current introducedin2.0.0
Note:Testingshowsthatasof2.0.8,onlytheSMLSIZEBLINK&INVERSattributeworkscorrectly.
LuaScriptinginOpenTX
lcd.drawPixmap(x, y, path)
Drawsabitmapat(x,y)
Parameters: <x,y>
(integer)toplefttextposition.Seelcd.drawPoint()
path
(string)fullpathtothebitmaponSDcard(i.e.
/BMP/test.bmp)
Returns:
none
Status:
current introducedin2.0.0
LuaScriptinginOpenTX
Parameters: title
(string)textforthetitle
idx
(integer)pagenumber
cnt
(integer)totalnumberofpages.Onlyusedasindicatoron
therightsideoftitlebar.(i.e.idx=2,cnt=5,display
2/5)
Returns:
none
Status:
current introducedin2.0.0
Example:lcd.drawScreenTitle("DEMONSTRATION",1,3)
LuaScriptinginOpenTX
(integer)widthinpixels
(integer)heightinpixels
fill
(integer)amountoffilltoapply
maxfill (integer)totalvalueoffill
Returns:
none
Status:
current introduced2.0.6
Example:lcd.drawGauge(50,42,100,18,25,100)
LuaScriptinginOpenTX
Parameters: <x,y>
(number)toplefttextposition.Seelcd.drawPoint()
source canbeaconstant(i.eSTICK_RUDDER)
orastringname(i.e.altitude).SeegetValue(source)
att
textattributes.Seelcd.drawText(x,y,text,att)
Returns:
none
Status:
current Introduced2.0.6
LuaScriptinginOpenTX
Parameters: <x,y>
(integer)toplefttextposition.Seelcd.drawPoint()
number (integer)valuetodisplay
att
textattributes.Seelcd.drawText(x,y,text,att)
Returns:
none
Status:
current introduced2.0.0
Todisplayafloatingpointnumber,usethePREC1orPREC2attributes.
lcd.drawNumber(62,15,312,DBLSIZE+PREC2+LEFT)
LuaScriptinginOpenTX
Parameters: <x,y>
(integer)toplefttextposition.Seelcd.drawPoint()
value
(timer)Atimervalue
att
textattributes.Seelcd.drawText(x,y,text,att)
Returns:
none
Status:
current Introduced2.0.6
LuaScriptinginOpenTX
lcd.getLastPos()
ReturnsthelastXpositionfrompreviousoutput
Parameters: none
Returns:
number (integer)Xposition
Status:
current Introduced2.0.6
LuaScriptinginOpenTX
lcd.drawFilledRectangle(x, y, w, h, att)
Drawarectangleonthescreenasasolidblock
Parameters: <x,y>
(number)toplefttextposition.Seelcd.drawPoint()
width
(number)widthinpixels
height (numberheightinpixels
att
textattributes.Seelcd.drawText(x,y,text,att)
Returns:
none
Status:
current Introduced2.0.0
Example:lcd.drawFilledRectangle(50,42,100,18,0)
LuaScriptinginOpenTX
Parameters: <x,y>
(number)toplefttextposition.Seelcd.drawPoint()
source (number)Inputindexnumber
att
textattributes.Seelcd.drawText(x,y,text,att)
Returns:
none
Status:
current Introduced2.0.0
Example:lcd.drawSource(10,20,2,LEFT+MIDSIZE)
RadioconfigurationScreen,showingthatInput02isAIL
LuaScriptinginOpenTX
Parameters: <x,y>
(integer)toplefttextposition.Seelcd.drawPoint()
(integer)widthofcomboBox
value
(combolist)Aarrayofitemstodisplayinthecombobox
idx
(integer)Indexofentrytohighlight
flag
(integer)0Collapsed,1=Expanded
Returns:
none
Status:
current Introduced2.0.0
Example:
table[1]="mustang"
table[2]="corsair"
table[3]=spitfire
lcd.drawCombobox(10,20,100,table,2,1)
LuaScriptinginOpenTX
Script Examples
One-Time Script Example: Hello World
AsimpledemonstrationscripttodisplayHelloWorldonthescreen.Scriptcloseswhenyouusethe
momentaryswitchSH.
Toinstall,copythecodebelowtoafilecalledHelloWorld.lua
PlacethefileintheSCRIPTSfolderoftheSDcard
BrowsetheSDcardcontentstotheSCRIPTSfolderandpressenterontheHelloWorld.luaentry
Executescript
UsetheMomentarySwitchSHtoclosethescript
LuaScriptinginOpenTX
local swtch = 0
local function init()
for channel = 0, 32, 1 do
for idx = 0, model.getMixesCount(channel), 1 do
mix = model.getMix(channel, idx)
if mix ~= nil and mix.name == "A-CAL" then
swtch = mix.switch
end
end
end
end
local function removeTemplate()
for channel = 0, 32, 1 do
for idx = 0, model.getMixesCount(channel), 1 do
mix = model.getMix(channel, idx)
if mix ~= nil and mix.name == "A-CAL" then
model.deleteMix(channel, idx)
end
end
end
end
local function applyTemplate()
for channel = 0, 32, 1 do
count = model.getMixesCount(channel)
if count > 0 then
first_mix = model.getMix(channel, 0)
mix_source = first_mix["source"]
if mix_source >= 1 and mix_source <= 32 then
LuaScriptinginOpenTX
input = model.getInput(mix_source-1, 0)
mix = { name="A-CAL", source=input["source"], weight=100, switch=swtch, multiplex=REPLACE }
model.insertMix(channel, count, mix)
else
mix = { name="A-CAL", source=mix_source, weight=100, switch=swtch, multiplex=REPLACE }
model.insertMix(channel, count, mix)
end
end
end
end
local function run(event)
lcd.lock()
result = popupInput("Switch", event, swtch, -SWSRC_LAST, SWSRC_LAST)
lcd.drawSwitch(62, 24, swtch, 0);
if result == "OK" then
removeTemplate()
if swtch ~= 0 then
applyTemplate()
end
return 1
elseif result == "CANCEL" then
return 1
else
swtch = result
return 0
end
end
return { init=init, run=run }
LuaScriptinginOpenTX
Seealso:
Inputssyntax
Outputssyntax
LuaScriptinginOpenTX
LuaScriptinginOpenTX
ToInstallScript:
Downloadthetelemetryscreenscriptfromhere:DownloadLink
CreateafolderontheradiomicroSDcardcalledSCRIPTS(ifitdoesnotalreadyexist)
CreateanewsubfolderintheSCRIPTSfolder.Givethesubfolderthesamenameasthemodel
thatwillusethescript.
Placethescriptfileinthefolder.Thepathshouldread:/SCRIPTS/modelname/telem1.lua
CreateasubfolderinthemodelnamefoldercalledBMP.ThePathwillbecome
/SCRIPTS/modelname/BMP
PlacethethetwobitmapfilesintheBMPfolder(altitude0.bmpandaltitude1.bmp)
Thatisit.Thenewtelemetryscreenshouldnowautomaticallyappearforthemodel.
LuaScriptinginOpenTX
ToInstallScript:
Downloadthetelemetryscreenscriptfromhere:DownloadLink
CreateafolderontheradiomicroSDcardcalledSCRIPTS(ifitdoesnotalreadyexist)
CreateanewsubfolderintheSCRIPTSfolder.Givethesubfolderthesamenameasthemodel
thatwillusethescript.
Placethescriptfileinthefolder.Thepathshouldread:/SCRIPTS/modelname/telem2.lua
Thatisit.Thenewtelemetryscreenshouldnowautomaticallyappearforthemodel.
LuaScriptinginOpenTX
Setupscreens:
ThisscriptmustbeplacedontoSDcardintofolder/SCRIPTS/MIXES/.Scriptmustbeactivatedandits
inputsandoutputssetinModelsettingsCustomscriptspage.
Thisexampleshowsbatteryvoltage(A2)is11.2Volts,detectedcellcountwas3andcalculatedvoltage
foronecellis3.73Volts.ScriptoutputVcelismultipliedby10,so3.73Visoutputtedas37.3.
VceloutputisthenusedinLogicalswitchL1,whichbecomestruewhencellvoltagedropsbelow3.3V
(remembervalueismultipliedby10).
SpecialfunctionisaddedtoplaybatterylowwarningwhenL1istrue.
Scriptcellv.lua:
LuaScriptinginOpenTX
function calc(play)
-- calculate cell count
cell_count = math.ceil(filtered_voltage / 4.25) --this works up to 12 cells
print("filtered_voltage: " .. filtered_voltage)
print("cell count: " .. cell_count)
-- play detected cell count
if play > 0 then
playNumber(cell_count, 0, 0)
playFile("/SOUNDS/en/celdet.wav") -- wav says: "cell battery detected"
end
state = done
--print("done")
end
function done()
if filtered_voltage < 2 then
state = no_battery
--print("no_battery")
end
LuaScriptinginOpenTX
end
--state initialization
LuaScriptinginOpenTX
Appendix
LUA Source List
ThisisalistofallindexnumbersthatcanbeusedasaSOURCEforgetValue.Asof2.0.6thenamesare
notvalid,onlythenumber.Thisiscurrentlyunderdevelopmentsousewithcaution.Plannedtobe
releasedin2.0.8
number
name
description
input1
Input[I1]
input2
Input[I2]
input3
Input[I3]
input4
Input[I4]
input5
Input[I5]
input6
Input[I6]
input7
Input[I7]
input8
Input[I8]
input9
Input[I9]
10
input10
Input[I10]
11
input11
Input[I11]
12
input12
Input[I12]
13
input13
Input[I13]
14
input14
Input[I14]
15
input15
Input[I15]
16
input16
Input[I16]
17
input17
Input[I17]
18
input18
Input[I18]
19
input19
Input[I19]
20
input20
Input[I20]
21
input21
Input[I21]
22
input22
Input[I22]
23
input23
Input[I23]
24
input24
Input[I24]
25
input25
Input[I25]
LuaScriptinginOpenTX
26
input26
Input[I26]
27
input27
Input[I27]
28
input28
Input[I28]
29
input29
Input[I29]
30
input30
Input[I30]
31
input31
Input[I31]
32
input32
Input[I32]
75
rud
Rudder
76
ele
Elevator
77
thr
Throttle
78
ail
Aileron
79
s1
Potentiometer1
80
s2
Potentiometer2
81
s3
Potentiometer3
82
ls
Leftslider
83
rs
Rightslider
85
cyc1
Cyclic1
86
cyc2
Cyclic2
87
cyc3
Cyclic3
88
trimrud
Ruddertrim
89
trimele
Elevatortrim
90
trimthr
Throttletrim
91
trimail
Ailerontrim
92
sa
SwitchA
93
sb
SwitchB
94
sc
SwitchC
95
sd
SwitchD
96
se
SwitchE
97
sf
SwitchF
98
sg
SwitchG
99
sh
SwitchH
LuaScriptinginOpenTX
100
ls1
LogicalswitchL1
101
ls2
LogicalswitchL2
102
ls3
LogicalswitchL3
103
ls4
LogicalswitchL4
104
ls5
LogicalswitchL5
105
ls6
LogicalswitchL6
106
ls7
LogicalswitchL7
107
ls8
LogicalswitchL8
108
ls9
LogicalswitchL9
109
ls10
LogicalswitchL10
110
ls11
LogicalswitchL11
111
ls12
LogicalswitchL12
112
ls13
LogicalswitchL13
113
ls14
LogicalswitchL14
114
ls15
LogicalswitchL15
115
ls16
LogicalswitchL16
116
ls17
LogicalswitchL17
117
ls18
LogicalswitchL18
118
ls19
LogicalswitchL19
119
ls20
LogicalswitchL20
120
ls21
LogicalswitchL21
121
ls22
LogicalswitchL22
122
ls23
LogicalswitchL23
123
ls24
LogicalswitchL24
124
ls25
LogicalswitchL25
125
ls26
LogicalswitchL26
126
ls27
LogicalswitchL27
127
ls28
LogicalswitchL28
128
ls29
LogicalswitchL29
129
ls30
LogicalswitchL30
130
ls31
LogicalswitchL31
LuaScriptinginOpenTX
131
ls32
LogicalswitchL32
132
trn1
Trainerinput1
133
trn2
Trainerinput2
134
trn3
Trainerinput3
135
trn4
Trainerinput4
136
trn5
Trainerinput5
137
trn6
Trainerinput6
138
trn7
Trainerinput7
139
trn8
Trainerinput8
140
trn9
Trainerinput9
141
trn10
Trainerinput10
142
trn11
Trainerinput11
143
trn12
Trainerinput12
144
trn13
Trainerinput13
145
trn14
Trainerinput14
146
trn15
Trainerinput15
147
trn16
Trainerinput16
148
ch1
ChannelCH1
149
ch2
ChannelCH2
150
ch3
ChannelCH3
151
ch4
ChannelCH4
152
ch5
ChannelCH5
153
ch6
ChannelCH6
154
ch7
ChannelCH7
155
ch8
ChannelCH8
156
ch9
ChannelCH9
157
ch10
ChannelCH10
158
ch11
ChannelCH11
159
ch12
ChannelCH12
160
ch13
ChannelCH13
161
ch14
ChannelCH14
LuaScriptinginOpenTX
162
ch15
ChannelCH15
163
ch16
ChannelCH16
164
ch17
ChannelCH17
165
ch18
ChannelCH18
166
ch19
ChannelCH19
167
ch20
ChannelCH20
168
ch21
ChannelCH21
169
ch22
ChannelCH22
170
ch23
ChannelCH23
171
ch24
ChannelCH24
172
ch25
ChannelCH25
173
ch26
ChannelCH26
174
ch27
ChannelCH27
175
ch28
ChannelCH28
176
ch29
ChannelCH29
177
ch30
ChannelCH30
178
ch31
ChannelCH31
179
ch32
ChannelCH32
180
gvar1
Globalvariable1
181
gvar2
Globalvariable2
182
gvar3
Globalvariable3
183
gvar4
Globalvariable4
184
gvar5
Globalvariable5
185
gvar6
Globalvariable6
186
gvar7
Globalvariable7
187
gvar8
Globalvariable8
188
gvar9
Globalvariable9
189
txvoltage
Transmitterbatteryvoltage[volts]
190
clock
RTCclock[minutesfrommidnight]
196
timer1
Timer1value[seconds]
197
timer2
Timer2value[seconds]
LuaScriptinginOpenTX
198
swr
Transmitterantennaquality[lessisbetter]
200
rssi
RSSI[moreisbetter]
202
a1
A1analoguevalue[unitsasconfigured]
203
a2
A2analoguevalue[unitsasconfigured]
204
a3
A3analoguevalue[unitsasconfigured]
205
a4
A4analoguevalue[unitsasconfigured]
206
altitude
Variometeraltitude[meters]
207
rpm
Rotationalspeed[revolutionsperminute]
208
fuel
Fuellevel[???]
209
temp1
Temperature1[degreescelsius]
210
temp2
Temperature2[degreescelsius]
211
gpsspeed
GPSspeed[???]
212
distance
GPSdistance[meters]
213
gpsaltitude
GPSaltitude[meters]
214
cellmin
LiPosensorlowestcurrentcellvoltage[volts]
215
cellsum
LiPosensorcurrentsummofallcellvoltages[volts]
216
vfas
Currentsensorvoltage[volts]
217
current
Currentsensorcurrent[ampers]
218
consumption
Currentsensorconsumption[miliamperhours]
219
power
Currentsensorpower[wats]
220
accx
GsensoraccelerationinXaxis[g]
221
accy
GsensoraccelerationinYaxis[g]
222
accz
GsensoraccelerationinZaxis[g]
223
heading
GPSheading[degrees]
224
verticalspeed
Variometerverticalspeed[m/s]
225
airspeed
Airspeed[knots]
226
dte
Totalenergy[???]
232
a1min
A1analoguevalueminimum[unitsasconfigured]
233
a2min
A2analoguevalueminimum[unitsasconfigured]
234
a3min
A3analoguevalueminimum[unitsasconfigured]
235
a4min
A4analoguevalueminimum[unitsasconfigured]
LuaScriptinginOpenTX
236
altitudemin
Lowestaltitude[meters]
237
altitudemax
Highestaltitude[meters]
238
rpmmax
Highestrotationalspeed[revolutionsperminute][meters]
239
temp1max
Highesttemperature1[degreescelsius]
240
temp2max
Highesttemperature2[degreescelsius]
241
gpsspeedmax
HighestGPSspeed[???]
242
distancemax
BiggestGPSdistance[meters]
243
airspeedmax
Highestairspeed[knots]
244
cellminmin
LiPosensoralltimelowestcellvoltage[volts]
245
cellsummin
LiPosensoralltimelowestsummofallcellvoltages[volts]
246
vfasmin
Currentsensorlowestvoltage[volts]
247
currentmax
Currentsensorhighestcurrent[ampers]
248
powermax
Currentsensorhighestpower[wats]
LuaScriptinginOpenTX
Character Maps
SMLSIZE
Fontfile:font_04x06.pngforcharactersbelow0xC0
:font_04x06_extra.pngforcharactersabove0xc0
Hex
Char
Hex
Char
Hex
Char
Hex
Char
Hex
Char
20
3A
54
6E
21
3B
55
6F
22
3C
<
56
70
23
3D
57
71
24
3E
>
58
72
25
3F
59
73
26
&
40
5A
74
27
41
5B
75
28
42
5C
76
29
43
5D
77
2A
44
5E
78
2B
45
5F
79
2C
46
60
7A
2D
47
61
7B
2E
48
62
7C
2F
49
63
7D
30
4A
64
7E
31
4B
65
7F
32
4C
66
22
4D
67
34
4E
68
C0
35
4F
69
C1
36
50
6A
C2
37
51
6B
C3
37
52
6C
C4
39
53
6D
C5
LuaScriptinginOpenTX
default
defaultcharacterset(noconstantsouseatt=0)
Fontfile:font_05x07.png&font_05x07_extra.png
Hex
Char
Hex
Char
Hex
Char
Hex
Char
Hex
Char
20
3A
54
6E
21
3B
55
6F
22
3C
<
56
70
23
3D
57
71
24
3E
>
58
72
25
3F
59
73
26
&
40
5A
74
27
41
5B
75
28
42
5C
76
29
43
5D
77
2A
44
5E
78
2B
45
5F
79
2C
46
60
7A
2D
47
61
7B
2E
48
62
7C
2F
49
63
7D
30
4A
64
7E
31
4B
65
7F
32
4C
66
22
4D
67
C0
34
4E
68
C1
35
4F
69
C2
36
50
6A
C3
37
51
6B
C4
37
52
6C
C5
39
53
6D
C6
LuaScriptinginOpenTX
MIDSIZE
Fontfile:font_08x10.png
Hex
Char
Hex
Char
Hex
Char
Hex
Char
Hex
Char
20
3A
54
6E
21
3B
55
6F
22
3C
<
56
70
23
3D
57
71
24
3E
>
58
72
25
3F
59
73
26
&
40
5A
74
27
41
5B
75
28
42
5C
76
29
43
5D
77
2A
44
5E
78
2B
45
5F
79
2C
46
60
7A
2D
47
61
7B
2E
48
62
7C
2F
49
63
7D
30
4A
64
7E
31
4B
65
7F
32
4C
66
22
4D
67
34
4E
68
35
4F
69
36
50
6A
37
51
6B
37
52
6C
39
53
6D
LuaScriptinginOpenTX
DBLSIZE
Fontfile:font_10x14.png
LuaScriptinginOpenTX
XXLSIZE
Usesfontfilefont_22x38.png
Hex
Character
2C
2D
2E
2F
30
31
32
33
34
35
36
37
38
39
3A
LuaScriptinginOpenTX
OpenTXWebSite
OpenTXDevelopmentWiki
ProgramminginLua
Lua5.2ReferenceManual
OpenTXUniversity
LuaScriptinginOpenTX
Document Style
CodeexamplesareformattedusingtheCodePrettyAddonforGoogleDocs.
Wherepossible,eachfunctionshouldhaveexampleswithascreenshot.
FunctionsandConstantsshouldreferencetheversionithasbeenaddedandifapplicable,the
versionitwasdepreciated.
LuaScriptinginOpenTX
Acknowledgments
LuaScriptinginOpenTX