• Which the release of FS2020 we see an explosition of activity on the forun and of course we are very happy to see this. But having all questions about FS2020 in one forum becomes a bit messy. So therefore we would like to ask you all to use the following guidelines when posting your questions:

    • Tag FS2020 specific questions with the MSFS2020 tag.
    • Questions about making 3D assets can be posted in the 3D asset design forum. Either post them in the subforum of the modelling tool you use or in the general forum if they are general.
    • Questions about aircraft design can be posted in the Aircraft design forum
    • Questions about airport design can be posted in the FS2020 airport design forum. Once airport development tools have been updated for FS2020 you can post tool speciifc questions in the subforums of those tools as well of course.
    • Questions about terrain design can be posted in the FS2020 terrain design forum.
    • Questions about SimConnect can be posted in the SimConnect forum.

    Any other question that is not specific to an aspect of development or tool can be posted in the General chat forum.

    By following these guidelines we make sure that the forums remain easy to read for everybody and also that the right people can find your post to answer it.

SimConnect network protocol

Messages
3
Country
germany
Hello,
I'm new to the MSFS dev community (coming from X-Plane ;) ) and have a question about getting/settings the SimConnect values via a network. I see it's possible to make SimConnect to work over the network as described in this thread. How ever if I understand correctly, this requires the SimConnect library to be present on both the client and the server.

Is that correct?
Is the network protocol documented somewhere?

My use case is that I'm working on a iOS EFB app (https://aeronavmap.com/) where I need to get and set some data refs values from the simulator. For obvious reasons I cannot use the SimConnect library on iOS. X-Plane has an open UDP protocol that allows 3rd party network clients to accomplish what I need.

I'm thinking about writing my own C# app that would expose the data refs from SimConnect to the local network as follows:

Code:
My iOS app <-> network protocol <-> My C# app using SimConnect <->  MSFS

However, before starting this, I'd like to make sure that something similar does not already exist.


Thanks in advance for your help
 
I've been curious about this too. I can't find anything on the protocol, though I did find an old-ish java project jsimconnect where someone (from this forum in fact: lc0277) had built a SimConnect client from scratch instead of using the DLLs. I fired it up the other day and it does still work, though a few of the examples crashed FS2020. Not sure if this is 'cos the protocol version is different or if FS2020 maybe doesn't support some of the functionality yet. lc0277 also published some details on the protocol, though the page is down. I managed to find a copy of it on waybackmachine. It's quite interesting - I wonder if he had to reverse engineer the protocol, perhaps using packet sniffers or looking at the DLL? Either way - very impressive effort!

So yes, it's definitely possible to make SimConnect work over the network without the SimConnect library - but I haven't found anything apart from jsimconnect that will help you do that. All the other projects I've come across so far do what you're suggesting and have their own server on the MSFS machine. Though you might not need to build your own, perhaps take a look at Python-SimConnect or node-simconnect which both need to be on a windows machine with SimConnect installed, but you could use them as an API. In particular the python one already exposes a HTTP API (I think). I had a try of Python-Simconnect and it seemed to work great.
 
I am wondering if there is a decent need here for an app to provide network access to the SimConnect API that lots of different projects could use instead of everyone having to roll their own. Wouldn't need to be super complex - perhaps just an app (with as few dependencies / easy install as possible) that exposes a gRPC API that pretty much anything else could consume over the network and can bridge the SimConnect API.
 
Replying late to this.

I have built something designed just for this called Find My Plane.

There is a small client which runs on a local machine and uses SimConnect to get sim data from the sim. This is coded in Python and is very simple, utilising the Python-SimConnect library.

It then sends this data over http to a server in the cloud which stores it in association with a unique ident ID and returns it upon request. All of this works over RESTful JSON and should be callable with any programming language. My use case for this is to display a moving map, written in html and javascript, of the current plane location.

There are two ways that other developers can use this technology.

The first is to modify my findmyplane-client to instead send data to your own server. This requires you to have some python knowledge and the ability to set up a server in the cloud which can accept this data. It is all open source.

The second, and much easier, way is to just rely on my server infrastructure. Your users can run the standard findmyplane client (which is provided in an .EXE format and is very lightweight) on their machines and you can then pull the data you need from my server using REST http requests. All of this is free and open source. Full api docs: https://findmyplane.live/api

At the moment the only information gathered from the sim is location (lat/lon/heading/altitude/plane type/atc name) but there's no reason it couldn't collect and store more. If you have a specific use case let me know and we can discuss whether it can be added.
 
Back
Top