OTX LUA Scripts zum testen

MaxWin

(╯°□°)╯︵ ┻━┻
#61
Muß das nicht "drawNumber" statt "drawText" heißen wie bei diesem Beispiel:
lcd.drawNumber(210, 10, getValue("altitude"), XXLSIZE) also entsprechend lcd.drawNumber(10, 10, getValue("cell-sum"), 0)
Mit der neuen Version 2.0.8 (hab ich gerade als update bekommen) scheint es jetzt zu gehen :)

Steht ja auch mehr oder weniger so in dem Handbuch (das teilweise nicht richtig verlinkt ist überall...)

Appendix
LUA Source List
This is a list of all index numbers that can be used as a SOURCE for getValue. As of 2.0.6 the names are not valid, only the number. This is currently under development so use with caution. Planned to be released in 2.0.8
https://docs.google.com/document/d/...fNCcAPCafKZeESweE/edit#heading=h.ub3awytmrjoc
 

california

Erfahrener Benutzer
#62
Wird es denn im nächsten deutschen Handbuch mal etwas mehr zur programmierung mit Lua geben? Denn so wurde ja noch nichts weiter erklärt.
 

fletcher

Neuer Benutzer
#63
Hallo,
kann jemand von euch sagen, wie ich mit LUA die einzelnen Zellen (Liposensor) abfragen kann.
"cell-sum" und und "cell-min" habe ich in der LUA-Referenz gefunden.
Was mir fehlt, ist sowas wie "cell-1, cell-2" usw.

Gruß fletcher
 

Tempo

Erfahrener Benutzer
#64
Ja, es läuft seit heute ab OpenTX2.06 !
Und meinen Wunsch nach einer Schriftgröße, die die gesamte Höhe des Taranis-Displays überspannt habe ich an passender Stelle eingebracht: https://github.com/opentx/opentx/issues/1499
Der Autor bsongis schlägt vor, einzelne übergroße Zeichen als bitmap in einer *.BMP-Datei abzulegen und dann in LUA aufzurufen: https://github.com/opentx/opentx/issues/1499
Die Erstellung eines übergroßen Zeichensatzes über die bestehemde Schriftgröße XXLSIZE in LUA ist damit nicht geplant.
So hat es bereits "StompSC" in post #52 vorgeschlagen.
 
#65
Ich bin gerade dabei mir ein Telemetrie-Screen zu schreiben, das erweist sich allerdings als sehr mühsam.
Die Anleitung ist sehr lücken- und fehlerhaft und es ist sehr umständlich mal kurz ein paar Zeilen auszuprobieren.

Deswegen ein paar Fragen:
Wohin wandern die print-Aufrufe?
Wie kann ich eine Logdatei anlegen? Es gibt zwar einen Ordner, der ist aber Seit Kauf der Taranis leer. Da kein Linux darauf läuft kann ich das nicht mal mit LUA-Scripte bewerkstelligen. Und vor allem: wird auf der Seite von C mitgeloggt, wenn ein Fehler im Script ist? (z.B Funktion nicht gefunden)
Gibt es eine besseren Weg ein Script auszuprobieren, als Taranis mit Bootloader zu starten -> USB anstecken -> LUA kopieren/ändern -> USB abstecken -> Taranis ausschalten -> Taranis einschalten?
 

helle

Erfahrener Benutzer
#66
Hy

du kannst LUA unter Companion laufen lassen und testen

Schreiben mit z.B, Notpad ++,
dann am PC ins passended "SD-Verzeichnis" Scripts zum Modell
dann im Simulator aufrufen

Das fehlt ist eine LUA-Debugger


Logdatei, einfach unter Spezialfunktionen per Schalter Log starten

Helle
 
Zuletzt bearbeitet:
#67
Danke helle, das macht das ganze schon sehr einfacher. Debugging ist nicht notwendig.

Aber nochmal zum logging:
Wenn ich das über die Spezialfunktion aktiviere werden alle Werte (Channels, Telemetrie etc) geloggt. Wohin gehen zum Beispiel ein print("Test")?

Und kann man irgendwie helfen Referenz zu verbessern?
Solche grundlegende Funktionen wie drawLine sind falsch beschrieben und es ist auch recht viel Aufwand die möglichen Parameter rauszusuchen.

Gruß
Andy

Nachtrag:
Wie bekomme ich den aktuellen Flugmodus raus?
Nachtrag2:
OK, habs rausgesucht: "flight-mode"
Kann ich mir auch den Namen ausgeben oder muss ich den in einer Variable speichern?
 
Zuletzt bearbeitet:
#68
Hi,

obwohl ich heute nur immer kurz an meinem Skript schreiben konnte bin ich schon mal weiter gekommen.

Es wird ja LUA 5.2.2 verwendet, also muss müssen doch bitweise Operationen funktionieren oder?
Ich möchte testen, ob ein Flag gesetzt wurde, bekomm das aber in LUA nicht hin.

Funktioniert das zB nicht?
bit32.band(136, 128)

Wäre sehr dankbar, wenn mir hier jemand helfen könnte.

Gruß
Andy
 
#69
Hallo zusammen!

Ich würde gerne in meinem LUA-Script "T1" anzeigen lassen. Auf dem normalen Telemetrie Screen bekomme ich den Wert. Kann das sein, dass das LUA-Script den Wert nicht unterstützt?
Der Wert "T1" kommt aus der Zaggometry...

Hier der Teil von meinem Script:

-- Anzeige Satelliten aus Naza/Zaggometry

lcd.drawRectangle(66, 20, 25, 25)
lcd.drawText(68, 21, "Sat", 0)
lcd.drawChannel(68, 29, "t1", LEFT+MIDSIZE)

Die Schreibweise "t1" oder "T1" bringt keinen unterschied....

Hat jemand eine Idee?
 

Kaldi

...es funktioniert!
#70
Hallo zusammen!

Ich würde gerne in meinem LUA-Script "T1" anzeigen lassen. Auf dem normalen Telemetrie Screen bekomme ich den Wert. Kann das sein, dass das LUA-Script den Wert nicht unterstützt?
Der Wert "T1" kommt aus der Zaggometry...

Hier der Teil von meinem Script:

-- Anzeige Satelliten aus Naza/Zaggometry

lcd.drawRectangle(66, 20, 25, 25)
lcd.drawText(68, 21, "Sat", 0)
lcd.drawChannel(68, 29, "t1", LEFT+MIDSIZE)

Die Schreibweise "t1" oder "T1" bringt keinen unterschied....

Hat jemand eine Idee?

nimm mal "temp1"...

um es einfacher zu handhaben, kannst Du den Wert auch in eine Variable schreiben:

Code:
local t1 = getValue("temp1")
so sieht's bei mir aus:
frsky_zaggo.jpg
 
Zuletzt bearbeitet:
#71
Super, danke für die Antwort, werde ich morgen mal ausprobieren!
 
#73
Morgen!

mit Temp 1 erscheint nun das Grad-Zeichen "°" hinter der Anzahl der Sats....muss mal aufs Feld raus gehen, und schauen ob der Wert an sich passt.

Wie hast du das mit der Balkenanzeige für die GPS-Qualität und Anzahl der Sats gemacht? Sind das einzelne Grafiken, die du je nach Bedarf anzeigen lässt?
 

Kaldi

...es funktioniert!
#74
Morgen!

mit Temp 1 erscheint nun das Grad-Zeichen "°" hinter der Anzahl der Sats....muss mal aufs Feld raus gehen, und schauen ob der Wert an sich passt.
ja, das ist dann, wenn Du "drawChannel" direkt ansprichst. Zeige den Wert über eine Nummernausgabe auf und rufe den Wert in der Nummernausgabe über "getValue" auf.

[TABLE="width: 500"]
[TR]
[TD]Code[/TD]
[TD]Ausgabebeispiel[/TD]
[/TR]
[TR]
[TD]lcd.drawChannel (100,15, "temp1",0)[/TD]
[TD="align: center"]5°[/TD]
[/TR]
[TR]
[TD]lcd.drawNumber (100,15, getValue("temp1"),0)[/TD]
[TD="align: center"]5[/TD]
[/TR]
[/TABLE]

Dein Beispiel würde also so aussehen:
Code:
lcd.drawRectangle(66, 20, 25, 25)
lcd.drawText(68, 21, "Sat", 0)
lcd.drawNumber(68, 29, getValue("temp1"), LEFT+MIDSIZE)

Wie hast du das mit der Balkenanzeige für die GPS-Qualität und Anzahl der Sats gemacht? Sind das einzelne Grafiken, die du je nach Bedarf anzeigen lässt?
Ja, das sind Grafiken, die den Status abfragen.
 
Zuletzt bearbeitet:

coolchaos

Erfahrener Benutzer
#75
angepasster Telemetrie-Screen

Hier mal ein Bild vom meinem angepasstem Telemetrie-Screen

Habe mal ein wenig mit Lua gespielt. :D

Habe versucht mal die Datei "telem2.lua" ein wenig abzuändern.

RSSI Blinkt wenn kleiner MIN
RXBatt = A1 Blinkt wenn A1 <= A1 MIN

Höhe Blinkt wenn > 300m (wird im Script angepasst)

Für den Anfang bin ich recht zufrieden. :eek:
 

Anhänge

coolchaos

Erfahrener Benutzer
#79
Hier mal die Quelle zu weiterfummeln

local function run(event)


lcd.drawRectangle(5, 4, 36, 24) -- GasG Rechteck
lcd.drawRectangle(42, 4, 35, 24) --Gas% Rechteck
lcd.drawRectangle(78, 4, 38, 24) --RSSI Rechteck
lcd.drawRectangle(78,30, 38, 32) --RXBatt Rechteck
lcd.drawRectangle(5, 30, 72, 32) -- TX-Batt Rechteck
lcd.drawFilledRectangle(5,19,111,20, 3) -- Namen Rechteck

lcd.drawFilledRectangle(0,0,5,64, 3) -- Rand Rechteck
lcd.drawFilledRectangle(116,0,4,64, 3) -- Rand Rechteck
lcd.drawFilledRectangle(5,0,115,4, 3) -- Rand Rechteck
lcd.drawFilledRectangle(5,62,115,2, 3) -- Rand Rechteck
lcd.drawFilledRectangle(41,4,2,15, 3) -- Rand Rechteck
lcd.drawFilledRectangle(76,4,2,58, 3) -- Rand Rechteck

lcd.drawText(10, 20, "Gas G", 2)
lcd.drawText(47,20, "Gas %", 2)
lcd.drawText(81, 20, "RSSI %", 2)
lcd.drawText(79, 31, "RXBatt",2)
lcd.drawText(7, 43, "TX-Batt:", 0)
lcd.drawText(9, 31, " FrSky ",2)

lcd.drawText(125, 4, "Hoehe in Metern",0)

lcd.drawText(205, 46, "m", 0)
lcd.drawText(165, 55, "MAX:", 0)

if getValue("altitude") >= 300 then -- Höhe max Blink
lcd.drawNumber(205, 15, getValue("altitude"), XXLSIZE+1)
else
lcd.drawNumber(205, 15, getValue("altitude"), XXLSIZE)
end

lcd.drawChannel(190, 55, "altitude-max", LEFT)

local timer = model.getTimer(0)
lcd.drawTimer(45, 6, timer.value, MIDSIZE)
timer = model.getTimer(1)
lcd.drawTimer(8, 6, timer.value, MIDSIZE)

if getValue("rssi") < 40 then -- RSSI min Blink
lcd.drawChannel(105, 6, "rssi",MIDSIZE+1)
else
lcd.drawChannel(105, 6, "rssi",MIDSIZE)
end

lcd.drawChannel(107, 40,"a1",MIDSIZE)

if "a1" < "a1-min" then -- a1 min Blink
lcd.drawChannel(103, 53, "a1-min",0)
else
lcd.drawChannel(103, 53, "a1-min",1)
end

lcd.drawChannel(55, 40, "tx-voltage", LEFT+MIDSIZE)

local settings = getGeneralSettings()
local percent = (getValue("tx-voltage")-settings.battMin) * 100 / (settings.battMax-settings.battMin)

lcd.drawGauge(7, 52, 68, 8, percent, 100)

end

return { run=run }

Lasst Ihr die Ränder weg wir es heller (
-- Rand Rechteck)
..... viel Spass beim weiterfummeln
 
Zuletzt bearbeitet:
FPV1

Banggood

Oben Unten