Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
This functions allows for sending SPORT / ACCESS telemetry data toward the receiver, and more generally, to anything connected SPORT bus on the receiver or transmitter.
When called without parameters, it will only return the status of the output buffer without sending anything.
@status current Introduced in 2.3
module
module index (0 = internal, 1 = external)
rxUid
receiver index
sensorId
physical sensor ID
frameId
frame ID
dataId
data ID
value
value
boolean
data queued in output buffer or not.
Return current system date and time that is kept by the RTC unit
none
table
current date and time, table elements:
year
(number) year
mon
(number) month
day
(number) day of month
hour
(number) hours
hour12
(number) hours in US format
min
(number) minutes
sec
(number) seconds
suffix
(text) am or pm
This functions allows for sending telemetry data toward the TBS Crossfire link.
When called without parameters, it will only return the status of the output buffer without sending anything.
@status current Introduced in 2.2.0, retval nil added in 2.3.4
command
command
data
table of data bytes
boolean
data queued in output buffer or not.
nil
incorrect telemetry protocol.
Flushes audio queue
@status experimental, Introduced in 2.8.0
Parameters
none
Return value
none
Return flight mode data.
@status current Introduced in 2.1.7
mode
(number) flight mode number to return (0 - 8). If mode parameter
is not specified (or contains invalid value), then the current flight mode data is returned.
multiple
returns 2 values:
(number) (current) flight mode number (0 - 8)
(string) (current) flight mode name
Return the RAS value or nil if no valid hardware found
@status current Introduced in 2.2.0
none
number
representing RAS value. Value bellow 0x33 (51 decimal) are all ok, value above 0x33 indicate a hardware antenna issue.
This is just a hardware pass/fail measure and does not represent the quality of the radio link
RAS was called SWR in the past
@status current Introduced in 2.8.0
Parameters
outputIndex:
integer identifying the output channel number 0 for CH1, up to MAX_OUTPUT_CHANNELS - 1.
Return value
value
current output value (number). Zero is returned for:
non-existing outputs
Return detailed information about field (source)
The list of valid sources is available:
OpenTX Version | Radio |
---|---|
@status current Introduced in 2.0.8, 'unit' field added in 2.2.0
source
can be an identifier (number) or a name (string) of the source.
table
information about requested field, table elements:
id
(number) field identifier
name
(string) field name
desc
(string) field description
'unit' (number) unit identifier Full list
nil
the requested field was not found
2.0
2.1
2.2
2.3
X9D and X9D+, X9E, X7, Horus
sourceName
: string naming a value source as it is shown on radio menus where you can select it. Notice that many names have in them.
Return value
sourceIndex
: integer. The source index, which can be used as input for getSourceName(sourceIndex)
, getValue(sourceIndex)
, and getFieldInfo(sourceIndex)
.
The source names shown on the screen are not the same as the names used by getFieldInfo
and getValue
. But the indices are the same, so e.g. getValue(index)
will work with the indices obtained here.
This function is rather time consuming, and should not be used repeatedly in a script, if it can be avoided.
Current Introduced in 2.6
Return rotary encoder mode
@status current Introduced in 2.8.0
Parameters
none
Return value
number
in list: Normal = 0, Both V and H inverted = 1, V-N = 2, V-A = 3
return 0
on radio without rotary encoder
Gets the value of a shared memory variable that can be used for passing data between Lua widgets and other Lua scripts.
@status current Introduced in 2.6
Parameters
id:
integer between 1 and 16 identifying the shared memory variable.
Return value
value:
integer. The value of the shared memory variable.
Notice
Only available on radios with color display
Returns (some of) the general radio settings
@status current Introduced in 2.0.6, imperial
added in TODO, language
and voice
added in 2.2.0, gtimer added in 2.2.2.
none
table
with elements:
battWarn
(number) radio battery range - warning value
battMin
(number) radio battery range - minimum value
battMax
(number) radio battery range - maximum value
imperial
(number) set to a value different from 0 if the radio is set to the
IMPERIAL units
language
(string) radio language (used for menus)
voice
(string) voice language (used for speech)
gtimer
(number) radio global timer in seconds (does not include current session)
@status current Introduced in 2.6
positionName
: string naming a switch position as it is shown on radio menus where you can select a switch. Notice that many names have special characters in them like arrow up/down etc. (see Special Character Constants).
value: integer. The switchIndex, which can be used as input for `getSwitchName(switchIndex)` and `getSwitchValue(switchIndex)`. Also corresponds to the fields in the table returned by `model.getLogicalSwitch(switch)` identifying switches.
sourceIndex
: integer identifying a value source as returned by getSourceIndex(sourceName)
or the id
field in the table returned by getFieldInfo
.
sourceName
: string naming the value source as it is shown on radio menus where a source can be chosen.
The source names shown on the screen are not the same as the names used by getFieldInfo
and getValue
. But the indices are the same, so e.g. getValue(index)
will work with the indices used here.
Current Introduced in 2.6
Returns the value of a source.
The list of fixed sources:
OpenTX Version | Radio |
---|---|
In OpenTX 2.1.x the telemetry sources no longer have a predefined name. To get a telemetry value simply use it's sensor name. For example:
Altitude sensor has a name "Alt"
to get the current altitude use the source "Alt"
to get the minimum altitude use the source "Alt-", to get the maximum use "Alt+"
@status current Introduced in 2.0.0, changed in 2.1.0, Cels+
and Cels-
added in 2.1.9
source
can be an identifier (number) (which was obtained by the getFieldInfo())
or a name (string) of the source.
value
current source value (number). Zero is returned for:
non-existing sources
for all telemetry source when the telemetry stream is not received
far all non allowed sensors while FAI MODE is active
table
GPS position is returned in a table:
lat
(number) latitude, positive is North
lon
(number) longitude, positive is East
pilot-lat
(number) pilot latitude, positive is North
pilot-lon
(number) pilot longitude, positive is East
table
GPS date/time, see getDateTime()
table
Cells are returned in a table (except where no cells were detected in which case the returned value is 0):
table has one item for each detected cell:
key (number) cell number (1 to number of cells)
value (number) current cell voltage
Getting a value by its numerical identifier is faster then by its name. While Cels
sensor returns current values of all cells in a table, a Cels+
or Cels-
will return a single value - the maximum or minimum Cels value.
Returns the value of a source. Supersedes getValue
.
The list of fixed sources:
OpenTX Version | Radio |
---|
In OpenTX 2.1.x the telemetry sources no longer have a predefined name. To get a telemetry value simply use it's sensor name. For example:
Altitude sensor has a name "Alt"
to get the current altitude use the source "Alt"
to get the minimum altitude use the source "Alt-", to get the maximum use "Alt+"
value is nil for non-existing sources. all non-allowed sensors while FAI MODE is active, or if a telemetry item value has never been received
value is a table for GPS position:
lat
(number) latitude, positive is North
lon
(number) longitude, positive is East
pilot-lat
(number) pilot latitude, positive is North
pilot-lon
(number) pilot longitude, positive is East
value is a table for date/time, see getDateTime()
value is a table for battery cells(except where no cells were detected in which case the returned value is 0):
table has one item for each detected cell:
key (number) cell number (1 to number of cells)
value (number) current cell voltage
@status current Introduced in 2.8.0
source
can be an index (number) (which was obtained by getFieldInfo
or getSourceIndex
) or a name (string) of the source.
value
current source value (number), or last known telemetry item value.
isCurrent
is true for telemetry sources that are within the "Sensor Lost" duration and telemetry is streaming . Always true for non-telemetry items.
isFresh
is true for telemetry sources which have been recently updated and telemetry is streaming. Always true for non-telemetry items.
Getting a value by its numerical identifier is much faster than by its name. While Cels
sensor returns current values of all cells in a table, a Cels+
or Cels-
will return a single value - the maximum or minimum Cels value.
2.0
2.1
2.2
2.3
X9D and X9D+, X9E, X7, Horus
Return the internal GPS position or nil if no valid hardware found
@status current Introduced in 2.2.2
none
table
representing the current radio position
lat
(number) internal GPS latitude, positive is North
lon
(number) internal GPS longitude, positive is East
'numsat' (number) current number of sats locked in by the GPS sensor
'fix' (boolean) fix status
'alt' (number) internal GPS altitude in 0.1m
'speed' (number) internal GPSspeed in 0.1m/s
'heading' (number) internal GPS ground course estimation in degrees * 10
'hdop' (number) internal GPS horizontal dilution of precision
2.0 |
2.1 |
2.2 |
2.3 |
,
, ,
, , ,
Pops a received Ghost Telemetry packet from the queue.
@status current Introduced in 2.7.0
Parameters
none
Return value
nil
queue does not contain any (or enough) bytes to form a whole packet
multiple
returns 2 values:
type (number)
packet (table) data bytes
Stops key state machine. See Key Events for the detailed description.
@status current Introduced in 2.0.0
key
(number) key to be killed, can also include event type (only the key part is used)
none
This functions allows for sending telemetry data toward the Ghost link.
When called without parameters, it will only return the status of the output buffer without sending anything.
@status current Introduced in 2.7.0
Parameters
command
command
data
table of data bytes
Return value
boolean
data queued in output buffer or not.
nil
incorrect telemetry protocol.
Generate haptic feedback
@status current Introduced in 2.2.0
duration
(number) length of the haptic feedback in milliseconds
pause
(number) length of the silence after haptic feedback in milliseconds
flags
(number):
0 or not present
play with normal priority
PLAY_NOW
play immediately
none
Return OpenTX version
@status current Introduced in 2.0.0, expanded in 2.1.7, radio type strings changed in 2.2.0, os name added in EdgeTX 2.4.0
This example also runs in OpenTX versions where the function returned only one value:
Output of the above script in simulator:
none
string
OpenTX version (ie "2.1.5")
multiple
values (available since 2.1.7):
(string) OpenTX version (ie "2.1.5")
(string) radio type: x12s
, x10
, x9e
, x9d+
, x9d
or x7
.
If running in simulator the "-simu" is added
(number) major version (ie 2 if version 2.1.5)
(number) minor version (ie 1 if version 2.1.5)
(number) revision number (ie 5 if version 2.1.5)
Since EdgeTX 2.4.0, sixth value added
(string) OS name (i.e. EdgeTX or nil if OpenTX)
@status current Introduced in 2.6
switchIndex
: integer identifying a switch as returned by getSwitchIndex(positionName)
or fields in the table returned by model.getLogicalSwitch(switch)
identifying switches.
value: string naming the switch position as it is shown on radio menus where a switch can be chosen.
Play a numerical value (text to speech)
@status current Introduced in 2.0.0
value
(number) number to play. Value is interpreted as integer.
unit
(number) unit identifier [Full list]((../appendix/units.html))
attributes
(unsigned number) possible values:
0 or not present
plays integral part of the number (for a number 123 it plays 123)
PREC1
plays a number with one decimal place (for a number 123 it plays 12.3)
PREC2
plays a number with two decimal places (for a number 123 it plays 1.23)
none
Return the time since the radio was started in multiple of 10ms
The timer internally uses a 32-bit counter which is enough for 497 days so overflows will not happen.
@status current Introduced in 2.0.0
none
number
Number of 10ms ticks since the radio was started Example:
run time: 12.54 seconds, return value: 1254
Raises a pop-up on screen that allows uses input
@status current Introduced in 2.0.0
title
(string) text to display
event
(number) the event variable that is passed in from the Run function (key pressed)
input
(number) value that can be adjusted by the +/- keys
min
(number) min value that input can reach (by pressing the - key)
max
(number) max value that input can reach
number
result of the input adjustment
"OK"
user pushed ENT key
"CANCEL"
user pushed EXIT key
Use only from stand-alone and telemetry scripts.
Load a Lua script file. This is similar to Lua's own API method, but it uses OpenTx's optional pre-compilation feature to save memory and time during load.
Return values are same as from Lua API loadfile() method: If the script was loaded w/out errors then the loaded script (or "chunk") is returned as a function. Otherwise, returns nil plus the error message.
@status current Introduced in 2.2.0
file
(string) Full path and file name of script. The file extension is optional and ignored (see mode
param to control which extension will be used). However, if an extension is specified, it should be ".lua" (or ".luac"), otherwise it is treated as part of the file name and the .lua/.luac will be appended to that.
mode
(string) (optional) Controls whether to force loading the text (.lua) or pre-compiled binary (.luac) version of the script. By default OTx will load the newest version and compile a new binary if necessary (overwriting any existing .luac version of the same script, and stripping some debug info like line numbers). You can use mode
to control the loading behavior more specifically. Possible values are:
b
only binary.
t
only text.
T
(default on simulator) prefer text but load binary if that is the only version available.
bt
(default on radio) either binary or text, whichever is newer (binary preferred when timestamps are equal).
Add x
to avoid automatic compilation of source file to .luac version.
Eg: "tx", "bx", or "btx".
Add c
to force compilation of source file to .luac version (even if existing version is newer than source file).
Eg: "tc" or "btc" (forces "t", overrides "x").
Add d
to keep extra debug info in the compiled binary.
Eg: "td", "btd", or "tcd" (no effect with just "b" or with "x").
env
(integer) See documentation for Lua function loadfile().
function
The loaded script, or nil
if there was an error (e.g. file not found or syntax error).
string
Error message(s), if any. Blank if no error occurred.
Note that you will get an error if you specify mode
as "b" or "t" and that specific version of the file does not exist (eg. no .luac file when "b" is used). Also note that mode
is NOT passed on to Lua's loader function, so unlike with loadfile() the actual file content is not checked (as if no mode or "bt" were passed to loadfile()).
Play a file from the SD card
@status current Introduced in 2.0.0, changed in 2.1.0
path
(string) full path to wav file (i.e. “/SOUNDS/en/system/tada.wav”)
Introduced in 2.1.0: If you use a relative path, the current language is appended
to the path (example: for English language: /SOUNDS/en
is appended)
none
Raises a pop-up on screen that shows a warning
@status current Introduced in 2.2.0
title
(string) text to display
event
(number) the event variable that is passed in from the Run function (key pressed)
"CANCEL"
user pushed EXIT key
Use only from stand-alone and telemetry scripts.
Play a tone
@status current Introduced in 2.1.0
frequency
(number) tone frequency in Hz (from 150 to 15000)
duration
(number) length of the tone in milliseconds
pause
(number) length of the silence after the tone in milliseconds
flags
(number):
0 or not present
play with normal priority.
PLAY_BACKGROUND
play in background (built in vario function uses this context)
PLAY_NOW
play immediately
freqIncr
(number) positive number increases the tone pitch (frequency with time), negative number decreases it. The frequency changes every 10 milliseconds, the change is freqIncr * 10Hz
. The valid range is from -127 to 127.
none
Sets the value of a shared memory variable that can be used for passing data between Lua widgets and other Lua scripts.
@status current Introduced in 2.6
Parameters
id:
integer between 1 and 16 identifying the shared memory variable.
value:
integer. The value of the shared memory variable.
Return value
none
Notice
Only available on radios with color display
Raises a pop-up on screen that asks for confirmation
@status current Introduced in 2.2.0, changed from (title, event) to (title, message, event) in 2.3.8
title
(string) title to display
message
(string) text to display
event
(number) the event variable that is passed in from the Run function (key pressed)
"CANCEL"
user pushed EXIT key
Use only from stand-alone and telemetry scripts.
This is an iterator function over value sources.
for sourceIndex, sourceName in sources() do ...
will iterate over all available value sources.
first
: the first source index. If nil
or omitted, the first available source is used.
last
: the last soure index. If nil
or omitted, the last available source is used.
current Introduced in 2.6
@status current Introduced in 2.2.0
id
Id of the sensor, valid range is from 0 to 0xFFFF
subID
subID of the sensor, usually 0, valid range is from 0 to 7
instance
instance of the sensor (SensorID), valid range is from 0 to 0xFF
value
fed to the sensor
unit
unit of the sensor Full list
precision
the precision of the sensor
0 or not present
no decimal precision.
!= 0
value is divided by 10^precision, e.g. value=1000, prec=2 => 10.00.
name
(string) Name of the sensor if it does not yet exist (4 chars).
not present
Name defaults to the Id.
present
Sensor takes name of the argument. Argument must have name surrounded by quotes: e.g., "Name"
true,
if the sensor was just added. In this case the value is ignored (subsequent call will set the value)
All three parameters id
, subID
and instance
can't be zero at the same time. At least one of them must be different from zero.
@param num (optional): maximum number of bytes to read. If non-zero, serialRead will read up to num characters from the buffer. If 0 or left out, serialRead will read up to and including the first newline character or the end of the buffer. Note that the returned string may not end in a newline if this character is not present in the buffer.
Reads characters from the serial port. The string is allowed to contain any character, including 0.
@status current Introduced in 2.3.8
none
str
string. Empty if no new characters were available.
@status current Introduced in 2.9.0
port_nr:
valid values are only 0 and 1 on radios that have SWSERIALPOWER defined
0 - first serial port, e.g. on TX16S AUX1
1 - second serial port, e.g. on TX16S AUX2
value:
true for power enabled, false for power disabled.
nil
serial port power control not available
Sets the value of a sticky logical switch.
@status current Introduced in 2.6
id: integer identifying the sticky logical switch (zero for LS1 etc.).
value: true/false. The new value of the sticky logical switch.
bufferFull: true/false. This function sends a message from Lua to the logical switch processor via a buffer with eight slots that are read 10 times per second. If the buffer is full, then a true value is returned, and no message was sent (i.e. the switch was not changed).
This functions allows for sending SPORT telemetry data toward the receiver, and more generally, to anything connected SPORT bus on the receiver or transmitter.
When called without parameters, it will only return the status of the output buffer without sending anything.
@status current Introduced in 2.2.0, retval nil added in 2.3.4
sensorId
physical sensor ID
frameId
frame ID
dataId
data ID
value
value
boolean
data queued in output buffer or not.
nil
incorrect telemetry protocol.
Pops a received SPORT packet from the queue. Please note that only packets using a data ID within 0x5000 to 0x50FF (frame ID == 0x10), as well as packets with a frame ID equal 0x32 (regardless of the data ID) will be passed to the LUA telemetry receive queue.
@status current Introduced in 2.2.0
none
nil
queue does not contain any (or enough) bytes to form a whole packet
multiple
returns 4 values:
sensor ID (number)
frame ID (number)
data ID (number)
value (number)
This is an iterator function over switch positions.
for switchIndex, switchName in switches() do ...
will iterate over all available switch positions.
first
: the first switch index. If nil
or omitted, the first available switch is used.
last
: the last switch index. If nil
or omitted, the last available switch is used.
Current Introduced in 2.6