Steuerung mit Python¶
FlightGear hält seinen ganzen Zustand im Property-Baum: Höhe, Schalter, Autopilot, Ansicht. Über den eingebauten Telnet-Server kann jedes Programm ihn lesen und ändern. starten.sh schaltet den Server auf Port 5411 ein.
Erstes Skript¶
Lege die Datei neben fg_steuerung.py und starte sie, während FlightGear läuft:
from fg_steuerung import Fg
fg = Fg()
print("Höhe:", fg.get("/position/altitude-ft"))
fg.set("/sim/current-view/view-number", 1)
fg.nasal('setprop("/sim/messages/copilot","Hallo");')
Was man wissen sollte¶
Nasal ohne Leerzeichen:
run nasal script=…verträgt keine Leerzeichen außerhalb von Zeichenketten. Längerer Code gehört besser in eine Funktion, die im Flugzeug oder Add-on liegt.Geduld beim Warten: FlightGear antwortet nicht, solange es stockt. Der erste Wechsel in eine Außenansicht dauert mehrere Sekunden. Bei mir beendete ein Timeout von 10 Sekunden ein Flugskript mitten im Start, darum wartet
Fgbis zu 30 Sekunden.Prüfen statt annehmen: Ein gesetzter Wert heißt noch nicht, dass die Aktion wirkt. Nach einem Triebwerksstart also den Schub auslesen, und bei null mit klarer Meldung abbrechen.
Pfade finden¶
Die Bedienoberfläche zeigt den Baum unter Debug → Browse Internal Properties. Von außen geht es mit:
telnet 127.0.0.1 5411
Dort funktionieren ls, cd, get und set, beendet wird mit quit.
Beispiel: warten bis zur Landung¶
import time
from fg_steuerung import Fg
fg = Fg()
while float(fg.get("/position/altitude-agl-ft") or 0) > 5:
time.sleep(0.5)
print("Unten, über Grund:", fg.get("/velocities/groundspeed-kt"), "kt")