Hi fellow wiki editors!

To help newly registered users get more familiar with the wiki (and maybe older users too) there is now a {{Welcome to the wiki}} template. Have a look at it and feel free to add it to new users discussion pages (and perhaps your own).

I have tried to keep the template short, but meaningful. /Johan G

Difference between revisions of "Property Tree/Web Server"

From FlightGear wiki
Jump to: navigation, search
(servers page)
 
 
(18 intermediate revisions by 8 users not shown)
Line 1: Line 1:
 
{{PropertyTree}}
 
{{PropertyTree}}
 +
{{Note|This feature received significant updates in FlightGear 3.1+:
  
FlightGear has a few network access protocols. These are started as a [[Command Line Parameters|command line option]].
+
While working on the new radio/atis implementation, Torsten rediscovered the internal httpd (aka webserver) to browse the property tree.
 +
It's much easier to have multiple browser windows open and point to various locations in the property tree than to reopen the internal
 +
property browser and navigate to the locations after each sim restart.  
  
==Web Server==
+
After a while, Torsten got disappointed by the functionality and the look&feel  of the http property-browser, so he had a look at the code to see if it
 +
could be improved, he quickly realized, that the implementation was  simple but not scalable, so he looked for something allready available on
 +
the GPL market.
  
To view the [[PropertyTree]] with a web browser, start FlightGear with the following option:
+
And he found Mongoose as a well maintained, feature rich and yet simple  implementation of a web server and started to embedd that into FlightGear.
  
  --httpd=5480
+
What is ready so far and pushed to next is:
 +
* A single threaded httpd running in the main loop (should probably get its own thread soon)
 +
* Running as a replacement for the old httpd
 +
* Serving FGDATA/Docs as the document root
 +
* Serving the uri /props/ as a replacement for the old property browser (improved functionality, improved l&f, styling via css)
 +
* Serving the uri /run.cgi as a replacement for the old interface to run fg_commands
 +
* Serving the uri /json/ to return selected properties as JSON  (read-only so far)
 +
{{FGCquote
 +
  |If your using fgrun, under Advanced (last tab)/ Network, check httpd and enter 5500. Then in a compatible browser use <code>http://localhost:5500/gui/</code>
 +
  |{{cite web |url=http://forum.flightgear.org/viewtopic.php?p=237925#p237925
 +
    |title=<nowiki>Re: Heaven or Hell? Phi sneak preview.</nowiki>
 +
    |author=<nowiki>wlbragg</nowiki>
 +
    |date=<nowiki>Sun Apr 05</nowiki>
 +
  }}
 +
}}
 +
}}
  
where 5480 is the port number. You can pick any port number, but 5480 will probably work just fine.
+
[[FlightGear]] has a few network access protocols. These are started via a [[Command Line Parameters|command line option]].
  
On the same machine, fire up a web browser and open up the following url:
+
And, just for fun we have an embedded web server you can activate which exposes the internal property tree via a web style interface that you can browse (and edit) with any web browser. You can literally fly the airplane remotely via your web browser. It's primarily there as an interactive remote debugging tool, but it could be used for many things.
  
[http://localhost:5480/ http://localhost:5480/]
 
  
You can now browse the entire FG property tree "live" as the sim is running. You need to refresh the browser so see changes and you can even change values if you like. You could configure autopilot modes and even set control inputs so you can literally fly the airplane from your web browser, although it's maybe not the most convenient interface for doing that. ;-)
+
== Web Server ==
 +
To view the [[PropertyTree]] with a web browser, start FlightGear with the following option:
  
==Telnet Server==
+
fgfs --httpd=5480
FlightGear has a telnet server that can be used to read and set values of the [[PropertyTree]]. The telnet server is activated with the '''--telnet=port''' [[Command_Line_Parameters|command line option]], where port is the number of the listening port that will be opened.
+
  
A connection to the server can be done using a [[Telnet usage|telnet client]] or opening a simple socket from any program. Multiple connections (more below) are possible at the same time. Too start FG and open the port 5401 as available telnet server use this command:
+
where 5480 is the port number. You can pick any port number, but 5480 will probably work just fine.
fgfs --telnet=5401
+
Using this server is covered in detail on the [[Telnet usage]] page.
+
  
==Manipulate Properties==
+
On the same machine, fire up a web browser and open up the following url:
The cool thing is that you can easily write scripts to access the --telnet=<port#> interface.
+
//* psuedo code
+
conn = telnet.connect(127.0.0.1, 5480)
+
gear_down = conn.get("/gear/state")
+
if gear_down:
+
  conn.set("/gear/state", "up")
+
  
Some links to source code example in various flavours:
+
[http://localhost:5480/ http://localhost:5480/]
* Perl - [http://cvs.flightgear.org/viewvc/source/scripts/perl/examples/ /source/scripts/perl/examples].
+
* Python - [http://cvs.flightgear.org/viewvc/source/scripts/python/ /source/scripts/python/]
+
* Java - [http://cvs.flightgear.org/viewvc/source/scripts/java/ source/scripts/java/]
+
  
You could just as easily interact with a running FlightGear instance using perl, C, C++, java, python, probably even <ack> visual basic or anything else that can do tcpip network communication ... matlab? netcat? twisted?
+
You can now browse the entire FG property tree "live" as the sim is running. You need to refresh the browser to see changes and you can even change values if you like. You can configure autopilot modes and even set control inputs so you could literally fly the airplane from your web browser, although it's maybe not the most convenient interface for doing that. ;-)
  
Also note that the downside to this interface is that you can't blast a lot of data across it. It's fine if you want to monitor location and speed every second or 1/4 second and occasionally set some values (such as dump in a new weather configuration, reset the aircraft location, or read a set of values, etc.)
+
Note that you can setup as many of these as you want ... for instance, just to be obscene you could do:
  
But if you need to track 100 different variables at 60hz, this isn't the interface for you. For that you need a [[PropertyTree:Socket]].
+
* --httpd=5400
 +
* --httpd=5401
 +
* --httpd=5402
 +
* --props=5403
 +
* --props=5404
 +
* --props=5405
  
==Multi Servers==
+
Now you have 6 different network interfaces running that you can access from anywhere. [Note: security issues if not used wisely.]
Note that you can setup as many of these servers as you want, for instance, just to be obscene you could do:
+
fgfs --httpd=5400 --httpd=5401 --httpd=5402 --props=5403 --props=5404 --props=5405
+
  
Now there are six network interfaces running that you can access from anywhere ;-) >> can I borrow your ipod please. why ?
+
[[Category:Property Tree]]

Latest revision as of 14:14, 5 April 2015

Note  This feature received significant updates in FlightGear 3.1+:

While working on the new radio/atis implementation, Torsten rediscovered the internal httpd (aka webserver) to browse the property tree. It's much easier to have multiple browser windows open and point to various locations in the property tree than to reopen the internal property browser and navigate to the locations after each sim restart.

After a while, Torsten got disappointed by the functionality and the look&feel of the http property-browser, so he had a look at the code to see if it could be improved, he quickly realized, that the implementation was simple but not scalable, so he looked for something allready available on the GPL market.

And he found Mongoose as a well maintained, feature rich and yet simple implementation of a web server and started to embedd that into FlightGear.

What is ready so far and pushed to next is:

  • A single threaded httpd running in the main loop (should probably get its own thread soon)
  • Running as a replacement for the old httpd
  • Serving FGDATA/Docs as the document root
  • Serving the uri /props/ as a replacement for the old property browser (improved functionality, improved l&f, styling via css)
  • Serving the uri /run.cgi as a replacement for the old interface to run fg_commands
  • Serving the uri /json/ to return selected properties as JSON (read-only so far)
Cquote1.png If your using fgrun, under Advanced (last tab)/ Network, check httpd and enter 5500. Then in a compatible browser use http://localhost:5500/gui/
— wlbragg (Sun Apr 05). Re: Heaven or Hell? Phi sneak preview..
(powered by Instant-Cquotes)
Cquote2.png

FlightGear has a few network access protocols. These are started via a command line option.

And, just for fun we have an embedded web server you can activate which exposes the internal property tree via a web style interface that you can browse (and edit) with any web browser. You can literally fly the airplane remotely via your web browser. It's primarily there as an interactive remote debugging tool, but it could be used for many things.


Web Server

To view the PropertyTree with a web browser, start FlightGear with the following option:

fgfs --httpd=5480

where 5480 is the port number. You can pick any port number, but 5480 will probably work just fine.

On the same machine, fire up a web browser and open up the following url:

http://localhost:5480/

You can now browse the entire FG property tree "live" as the sim is running. You need to refresh the browser to see changes and you can even change values if you like. You can configure autopilot modes and even set control inputs so you could literally fly the airplane from your web browser, although it's maybe not the most convenient interface for doing that. ;-)

Note that you can setup as many of these as you want ... for instance, just to be obscene you could do:

  • --httpd=5400
  • --httpd=5401
  • --httpd=5402
  • --props=5403
  • --props=5404
  • --props=5405

Now you have 6 different network interfaces running that you can access from anywhere. [Note: security issues if not used wisely.]