www.kappmeier.net
Modellbau - Lua Script für ETHOS
16. Juli 2024
Lua Script für ETHOS
ETHOS ist das Betriebssystem auf einigen Sender der Firma
FrSky. In vielen Punkten ähnelt das ETHOS dem openTX
resp. edgeTX, insbesondere die Erweiterbarkeit mit eigenen
Scripten, welche in Lua verfasst werden.
Damit lassen sich viele Funktionen der Sender nutzen oder auch
erweitern. Es gibt einige Scripte, sogenannte Widgets, welche
überwiegend den fliegerischen Bereich abdecken.
Was ich vermisst habe ist eine Art Tastenfeld als Widget mit
denen sich die Servokanäle steuern lassen. Es gibt zwar auf
der mir zur Verfügung stehenden X20 einige
(Hardware-)Tasten/Schalter, jedoch sind es derer nicht allzu
viele. Hinzu kommt das diese Schalter natürlich auch für
viele andere Funktionen genutzt werden können.
Es gibt auch Sender mit deutlich weniger Schaltern, z.b. die
X-Lite. Häufig haben diese Sender einen Farbbildschirm mit
Fingerbedienung. Warum sollte diese Fläche ungenutzt bleiben?
Für edgeTX gibt es derartiges schon, nur leider nicht für
ETHOS...
Da es nun nichts fertiges gab muss selber Abhilfe geschaffen
werden. Dies sollte jedoch nicht einfach werden. Ich hatte
bislang keine Berührung mit Lua, gerade mal davon gehört.
Weiterhin galt es die Struktur der Widgets unter ETHOS erst
einmal zu verstehen. So ging es daran Informationen zu suchen.
Es gibt sogar eine "Dokumentation" von FrSky, diese ist
jedoch mehr oder weniger nur eine Auflistung der angebotenen
Funktionen. Es fehlen konkrete Beispiele wie die jeweiligen
Funktionen angewendet werden. Nicht mal der korrekte Aufbau
einer Funktion wird gezeigt, jedes Fitzelchen muss selbst
heraus gefunden werden.
Wie eine solche Dokumentation m.M.n. auszusehen hat zeigt die
Windows Script Sprache Autoit [1] bzw. das Wiki [2] .
Hier wird jede, ich betone JEDE, Funktion bzw. jeder
Befehl mit einem fertigen Beispiel gezeigt. Einfach aus der
Hilfe das Beispiel kopieren, starten und sehen wie es
arbeitet. So kann sich jeder herantasten....
Bei den Widgets für ETHOS muss man sich an bereits
existierenden Scripten entlang hangeln, hoffen das
der/diejenige das Gemachte auch vernünftig umgesetzt hat,
sonst eignet man sich falsche Dinge an.
Leider habe ich lange Zeit nichts zum Thema "Touch" gefunden.
Erst jetzt fiel mir ein Beispiel in die Hände, welches nichts
anderes gemacht hat als ein Fadenkreuz auf dem Bildschirm an
der berührten Stelle darzustellen. Das war der erste
Durchbruch. Ein paar Quadrate auf den Bildschirm gemalt, Text
darüber - fertig. Wenn die "Buttons" ihre Informationen in
einem Array halten, lassen sich so einfach der Text, die
Koordinaten, Farbe und anderes nutzen.
Was nun noch fehlte war die Möglichkeit einen Kanal zu
steuern. Auch hier fand ich nichts gescheites, nicht mal in
der Lua-Doku [3]
war irgendetwas relevantes. Die einzige Möglichkeit vom Widget
etwas verwertbares zu bekommen ist ein änderbarer Wert in
verschiedensten Formatierungen. Dieser Wert wird als "Source"
bereit gestellt. Es muss nun noch ein Mischer angelegt werden,
der als Quelle nicht einen Schalter oder die Knüppel
verwendet, sondern eine sogenannte "Lua Source". In
einem meiner gefunden Scripte wurde dies schon gezeigt, ich
hatte es nur nicht war genommen.
Erst als ich beim Durchwühlen eines Threads auf RCgroups.com
[4] auf Seite 32768 oder so in einen Discordchannel abgebogen
bin fand ich jemanden der an der gleichen Sache dran war, aber
auch noch Fragen offen hatte. Ich schaute mir sein Script an
und stolperte über diese Source Geschichte.
Interessant war auch das der Script Aufbau dem meinen ähnelte,
lediglich die Art der Button-Verwaltung wich ab. Ich hatte ein
1-dimensionales Array Button [1] für jeden
einzelnen Button. Er (sie?) hatte ein mehrdimensionales Array,
also nur ein einzelnes Array in Form von Button [1] [2]
. Ebenso fand die eben erwähnte Source-Verarbeitung hier
Anwendung, in genau der gleichen Schreibweise wie aus dem mir
vorliegenden Beispielscript. Hat da eventuell jemand kopiert
;-)
Am Ende habe ich beides miteinander vermengt und somit eine
erste Version. Nun hieß es noch ein wenig Feinarbeit und alles
hübsch machen...
Das (derzeitige) Produkt sieht erst einmal so aus:

Über die Bildschirmkonfiguration ( [+] ) geht es in die
Widgetkonfiguration die dann so aussieht :
Es lassen sich die Farbe der Button, deren Text und der
gesendete Wert einstellen. Für die Arbeit mit dem
Memory-Switch sind das die notwendigen Infos.
Von meinem Ansinnen das als allgemeines, von jedem
verwendbares Widget hinzubekommen bin ich erst einmal
abgerückt. Aber vielleicht findet sich die dazu notwendige
Information noch irgendwo, ich habe sie nur noch nicht
gefunden...
Aktuell gibt es noch zwei größere Baustellen :
Die Konfiguration wird nicht Widget bezogen gespeichert,
sondern gilt für alle und Sender-weit. Dies hat auch zur Folge
das nur eine Variante des Multi-Switch Moduls verwendet werden
kann, entweder das mit den Negativ-Werten oder das mit den
Positiv-Werten.
Ebenso ist der Bildschirmaufbau statisch an die Auflösung der
X20 gebunden und nicht dynamisch für kleinere Auflösungen. Da
ist noch Luft nach oben. Zumindest rechts es erst einmal um
den Memory-Switch damit zu nutzen...
Für die Zukunft denkbar wäre auch die Button Farbe aus dem
System zu verwenden oder auch die Sprache anpassbar zu machen.
Wer es ausprobieren möchte, hier mal eine Version zum testen
(vorerst nur als luac) : Multi Switch
Einrichtung des Widgets
Zunächst auf der SD-Card des Senders im Ordner scripts
einen Ordner mswitch anlegen, dann das Script als
main.luac dort ablegen. Den Sender nun in Betrieb nehmen
Zuerst muss das Widget als Lua-Source bereitgestellt werden,
wobei es je nach ETHOS Version zwei Varianten gibt.
Für ETHOS bis Version 1.4.x in den
Modelleinstellungen unter 'Lua Sources' :

Ab Version 1.5 in Lua unter dem Haupt-Menü :

Nun über das Bildschirm Menü [+] einen neuen Bildschirm mit
"Fullscreen-Widget" anlegen :

Mit "Konfigurieren" wird das Widget "Multi Switch" ausgewählt
und auch gleich eingerichtet :

Danach wird ein Mischer angelegt und wie folgt eingestellt:



Hier nochmal das Ganze in Kurzform :
- Script auf den Sender
kopieren
- Lua Source aktivieren
- Widget -Bildschirm
anlegen
- Mischer anlegen
Wird nun ein Servo an dem konfigurierten Kanal angeschlossen
sollte er sich mit Betätigung der jeweiligen Touch-Buttons
entsprechend bewegen. Das Multi-Switch Modul reagiert dann
entsprechend den Werten mit ein/ausschalten der Ausgänge.
Referenzen :
[1] Autoit
Homepoage
[2] Autoit
Wiki
[3] FrSky
Lua Doku
[3] Forenbeitrag
RCgroups
Download :
[A] Lua-Widget
Testversion
Stand 15.06.2024, Fortsetzung folgt...
zurück
-
Startseite -
Impressum