Lua unter OpenTX 2.1

Status
Nicht offen für weitere Antworten.

Jace25

Erfahrener Benutzer
#1
Hallo Zusammen,

ich verstehe nicht die Beweggründe für OpenTx 2.1 bzw. die dort verwendeten Telemetrie Anpassungen, aber irgend einen Grund wird das schon haben.

Leider ist die Doku ja irgendwie relativ dürftig und man muss sich vieles zusammensuchen. Konkret habe ich ein im APM/Pixhawk Bereich hin und wieder genutztes Lua Script geschrieben, welches die Telemetrie-Daten der FrSky D-Empfänger ausliest und anzeigt.
https://github.com/Jace25/LUA-Taranis-Pixhawk

Soweit so gut. Hier fangen auch schon meine Fragen an, und vielleicht könnte man gleichzeitig den Thread hier als Sammelstelle nutzen, denn soweit ich das sehe gibt es noch nichts konkretes zum Umstieg von 2.0 auf 2.1.

FrSky Distance:
Es gab in 2.0 die Möglichkeit, die Entfernung zu bekommen, das Feld dafür war distance. Gibt es das in 2.1 auch wieder?

Abfragen der Sensoren:
Entweder ich spreche den Sensor über seinen ID direkt an (woher bekomme ich die verlässlich, und ändern diese sich), oder ich gebe dem Sensor in den Einstellungen einen Namen und hole mir die ID über den Namen. Wie soll so etwas portable für andere sein? Diejenigen, die so ein Script nutzen wollen, müssen dann ja vorher auch noch umständlich die Sensoren benennen. Das mag jetzt dem Lua-Erfahrenen Menschen leicht fallen, aber vermutlich stellt man 95% der FrSky nutzer damit vor eine ärgerliche Hürde. Gibt es hier eine Best-Practice? Also eher direkt über die ID und hoffen dass die sich nicht ändert (beispielsweise zwischen d4r und d8r)?

Simulation der Sensoren:
Nachdem ich herausgefunden hatte, wie man die Sensoren findet (Detect Sensors), habe ich diese Einstellungen in Companion vom Sender geladen und hatte dann zumindest theoretisch die Sensoren. Aber wie zum Henker simuliere ich die dann? RSSI hatte als SubID 25, das konnte ich im TelemetrieSimulator dann auch sehen, wenn ich 25 angegeben habe. Die anderen Sensoren hatten SubId 0, und egal was ich den Sensoren für eine SubID gegeben habe oder was ich als SubID im Simulator zum Senden eingestellt habe, ich hab keine Daten bekommen. Prima, debugging (eh schon gruselig) auf der Funke.

Wenn die Sensoren unterschiedliche SubIDs haben, wie soll man dann gleichzeitig mehrere Sensoren simulieren, die verschiedene Subids haben?

Viele Grüße und vielen Dank für die Hilfe,
Jacob
 

Jace25

Erfahrener Benutzer
#2
Update:
Die ID scheint sich (ist ja auch irgendwie logisch) bei verschiedenen Receivern zu ändern. Dh. der Endnutzer muss zwingend den Sensoren die Namen geben, die ich im Quellcode verwende. Gibt es da keine schönere Möglichkeit?
 
#3
Hallo Jacob,
ich finde das eigentlich ganz praktisch. Ich habe ein einziges Script für alle meine Modelle. Im Script habe ich z.B. "V" für Spannung. Jetzt muss ich in den Modellen die Spannungsmessung nur "V" nennen, egal ob ich mit FAS40, Unisens-E, Spannungsteiler oder bei 2 LiFe direkte Empfängerspannung messe. Wenn ich direkt die Empfängerspannung nehme, lege ich einfach einen neuen Sensor mit dem Namen "V" und der ID von RxBt an.

Viele Grüße
Horst
 

helle

Erfahrener Benutzer
#4
Hy,

ja, die Möglichkeiten erschließen sich erst auf den zweiten Blick

Name mit 4 Zeichen frei vergebbar

ID fest vorgegeben von der Sensorhardware/ Herstelllern abhängig

freie Sensorverrechnung

Sensornamen überall verwendbar


Wenn man am Anfang von fertigen LUA's einen Namens Umsetzungstabelle hängt. läuft das Grund-LUA wie vorher.
 

Jace25

Erfahrener Benutzer
#5
Moin.

Danke euch für die Antworten.

Die einfachere Verwendung unabhängig von der sendenden Hardware sehe ich auch als Pluspunkt. Vermutlich lässt sich die Einrichtung halt nicht ohne weiteres anders Umsetzen, und wer Lua nutzen will, muss sich halt an diesen Schritt gewöhnen... Kann ich mich auf lange Sicht mit anfreunden. Vor allem, nachdem mir berichtet wurde, meine erste 2.1 Testversion läuft jetzt sogar mit einem X-Receiver, den ich eigentlich so garnicht "supporte".

Bleibt vorerst eigentlich nur die Frage bezüglich Distance und Consumption neben den Simulatorproblemen. Gibt es da irgendeine Referenz, die man sich durchlesen kann? Klar, man kann beide Funktionen nachbauen (kann Lua komplizierte Mathematische Berechnungen wie Sinus, Cosinus und Tangens?), aber es war schon ein "nice to have".

Viele Grüße,
Jacob
 

helle

Erfahrener Benutzer
#6
Hy,

Distannce ist ja nur eine Berechnungsfunktioen für den GPS-Sensor

Wichtig:
Bei GPS-Sensoren Autooffset setzen, dann wird die aktuelle erste gute GPS-Position
als GPS-Startwert verwendet und man erhält die 2D-Distance,
wird auch GAlt (GPS-Höhe) per Autooffset gesetzt erhält man die 3D-Distanz
Als Sensorname verwende ich Dist

Genauso mit Consumption, das ist eine Strom/Zeitintegrations-Funktion
Als Sensorname Verb oder Cnsp


LUA hat die Math-Bibiliothek integriert. sin cos, usw. vorhanden

Dazu gibt es hier im LUA-Thread fertige Beispiele für Kreise und Ellypsen zum Zeichnen per sin und cos
 
Zuletzt bearbeitet:

helle

Erfahrener Benutzer
#8
Hy,

GPS Koordinaten in LUA auslesen

Wichtig "lat" und "lon" in Kleinbuchstben!
Beispiel:

gpsLatLon = getValue("GPS")
if (type(gpsLatLon) == "table") then
LocationLat = gpsLatLon["lat"]
LocationLon = gpsLatLon["lon"]
end
 
#9
Hallo,

ich verstehe nicht so ganz, was Du mit:

Hy,
Bei GPS-Sensoren Autooffset setzen, dann wird die aktuelle erste gute GPS-Position
als GPS-Startwert verwendet und man erhält die 2D-Distance,
wird auch GAlt (GPS-Höhe) per Autooffset gesetzt erhält man die 3D-Distanz
Als Sensorname verwende ich Dist

Genauso mit Consumption, das ist eine Strom/Zeitintegrations-Funktion
Als Sensorname Verb oder Cnsp
meinst. Wie bekomme ich jetzt die Entfernung rein? Habe wohl ein Brett vor dem Kopf.....
 

helle

Erfahrener Benutzer
#10
Hy,

ja, der erste gute GPS-Werte wird als Startwerte genommen
und damit Distanzberechnung auf Null gesetzt.
Alle weiteren GPS-Werte werden als Differenz verrechnet und damit der Abstand ermittelt.

als 2D -Distanz wenn nur Länge und Breite genommen wird
als 3D -Distanz wenn auch noch GPS-Höhe dazugenomen wird.


Um diese Berechungen zu starten:
In der Telemetrie einen neuen Sensor anlegen,
Name vergeben,
Quelle GPS,
Brechnung Distanz
Autooffset aktivieren

Der Fehler wird so ca 10-15m betragen
liegt an den GPS-Daten die vom Militär künstlich verfälscht sind
und man keine Differenzial GPS (wie im Auto) hat.
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
FPV1

Banggood

Oben Unten