Jump to content

DCS-WEB-BIOS A Web Server to access DCS with any Touch Screen (iPad, Tablet, RPi, etc.)


Recommended Posts

Hello friends!

I wanted to share this project I have been working on.

DCS WEB BIOS

This project consists of a Web and Socket Servers to provide a Web Interface to communicate with the fantastic DCS World Combat Simulator via the DCS-BIOS package (the DCSFlightpanels fork).

174889729-0fecc6e4-7dd1-45dc-8538-fff84a

 

Update 2022-06-30

Added:

  • AH-64D Keyboard unit for both Pilot and CPG
  • AH-64D MPDs unit for both Pilot and CPG
  • FC3 F-15 and SU-25 Modes (beta requiring an extra UDP listener installed in DCS, look for instructions in the thread)

Update 2022-06-23

Current screens:

  • F-14A and B Displays & Auto Pilot
  • F-16c ICP (with DED)
  • F-16c MFDs
  • F/A-18c UFC (with display feedback)
  • F/A-18c Left and Right DDIs
  • F/A-18c AMPCD


Motivation

I don't have all the gadgets to have the MFDs or control panels as physical buttons, but I have access to some touch screens (RPi3 with official 7" screen, an iPad, etc.) which I can use to control DCS and avoid having weird interactions with the H.O.T.A.S while reaching for the mouse.

I have uploaded a couple of videos showing the system in action:


 


The project is an open source project which can be downloaded and discussed in the Github repo at:

https://github.com/RafaPolit/dcs-web-bios

 

Hope there is some interest in the project, looking forward to your suggestions and comments.

Best regards,

Rafa.

 


Edited by RafaPolit
Added F/A-18c DDIs
  • Like 5

I'm Dragon in the Multiplayer servers.

Link to comment
Share on other sites

Thanks Toby.  Well, at this point I depend on DCS-BIOS completely to get data out from DCS.  I have not read any information regarding DCS-BIOS exporting any map data.  Still, even if it did, my guess is that it would depend on two things: "transform data", that is data saying: "display a plane icon on coordinates XY", "display a dashed line between XY and WZ", and, at the bottom layer, the actual map info already accessible to the DCS software: tiles, svgs, whatever is used to draw the maps.

It is this second part that wouldn't make any sense to try to extract, because it would mean to have gigabytes of map data extracted from DCS.   

It is the same here with the cockpit buttons: the data for the status is there, I have to recreate the images from scratch (in this case with screen captures of the plane and each switch for each position).  Doing this for every zoom level and position in the map is, quite frankly, not feasible.

For that, I would actually use a second monitor and then use something like screen casting or some other technology to get that into the iOS device.  That, I am afraid, is a completely different project.  Very interesting though, for sure! 🙂


Edited by RafaPolit

I'm Dragon in the Multiplayer servers.

Link to comment
Share on other sites

Thanks to those following the thread.  I hope that, in time, you can provide feedback as to the installation procedure and the overall experience.  Instructions may not be all that clear, there may be errors, so I look forward to feedback.

As a small update, I have added the F/A-18C Hornet UFC to the modules now.  Here's a screenshot :

fa18c-UFC-screenshot.png


Edited by RafaPolit

I'm Dragon in the Multiplayer servers.

Link to comment
Share on other sites

On 6/24/2022 at 3:46 AM, RafaPolit said:

Added F/A-18C Hornet Left and Right DDIs.  Not sure if it's worth it to include the bottom AMPCD?  Let me know if you think it's something you use "in the heat of the battle".

fa18c-DDIs-screenshot.png

Hi, I will try your app with the ipad.

I think it is worth to add also ampcd, maybe you could have a page with amcpcd and ufc together.

Is there also away to export screens to your app?

🖥️ R7-5800X3D 64GB RTX-4090 LG-38GN950  🥽 Meta Quest 3  🕹️ VPForce Rhino FFB, Virpil F-14 (VFX) Grip, F-15EX Throttle, MFG Crosswinds v3, Razer Tartarus V2 💺SpeedMaster Flight Seat, JetSeat

CVW-17_Profile_Background_VF-103.png

Link to comment
Share on other sites

Well, I have been learning quite a few things.  I haven't heard of the Helios program up until yesterday.  Looks like this approach I am taking is following a bit in their steps, but several miles lagging! 😞

A few things:
 

2 hours ago, VirusAM said:

Hi, I will try your app with the ipad.

That is how I am using it, but it cannot run "natively" on the ipad, I'm not sure if I was clear enough (and I apologize for that) this requires a machine to be the Socket server and the Web server.  That can be the same machine running DCS, but I have not yet tried that approach.  After running that on a machine, you can, very nicely, navigate in your iPad's web browser to the servers address and it will show the web page.

2 hours ago, VirusAM said:

Is there also away to export screens to your app?

I have not yet embarked into this yet, but in honesty, I tried to search for such scenarios before starting this project and found nothing... only to find yesterday that Helios already does almost everything (except perhaps running as a remote web server).  So, I'll keep on evolving and maybe I get into screen export, but my "search foo" was really bad or utils are a bit "hidden" from searches, because I think that most of the work I'm doing has been already done.

2 hours ago, VirusAM said:

I think it is worth to add also ampcd, maybe you could have a page with amcpcd and ufc together.

I'll add the AMPCD, but given the very small screen real state of the 800x480 RPi screen I was targeting this for, perhaps it's not going to fit with the UFC.  I'll put some screen captures of the AH-64D MPDs which also didn't fit for a "comfortable" click, and I had to result to switching MPD side.

 

Thanks for the feedback and for looking into the app. 

Best regards,

Rafa.

I'm Dragon in the Multiplayer servers.

Link to comment
Share on other sites

In the recent update, I have added the AH-64D Keyboard unit and the AH-64D MPDs.  Both screens are available for both Pilot and CPG.

ah64d-Keyboard-screenshot.png

 

image.png

 

With this screens, there is the introduction of the "full twist knob"... I have previously removed the Knobs.  But having them perfectly aligned with the view allows me to rotate them via CSS in the web browser, so they look very fluid and I don't need to create intermediate pictures for each position, which alleviates a lot loading times.  The buttons on them actually do small step increments, which I believe is a good compromise to keep them in the touch display realm.

Let me know what you guys think,

Best regards,

Rafa.


Edited by RafaPolit
  • Like 1

I'm Dragon in the Multiplayer servers.

Link to comment
Share on other sites

I recently bought the FC3 planes during the Summer sale.  I think they are really fun to fly, and I was able to mostly put all the common features into the H.O.T.A.S, but the Modes for each airplane is something that I don't really like: I have to remember if this plane has modes 1,2,3, or maybe 6 and 7? So, I decided to add that to this project.

That proved a little more complex than originally expected, because, as far as I can tell (and please correct me if I am wrong!), DCS-BIOS only accepts "cockpit" commands.  So, with some reverse engineering of the DCS-BIOS code, I created a "side-project" called DCS-UDP-SET which opens in DCS an identical UDP listener as DCS-BIOS does, but that, instead of interacting with the cockpit, emits a:

LoSetCommand

This allows an external device to appear to have "clicked" keys 1 through 8 (or anything really!) in the keyboard by using the internal IDs that DCS assigns to those commands.

For the time being, I have added the F-15C and SU-25 Modes.  I do have all the FC3 planes, so this I can do very quickly, just let me know which planes you are interested in, and I can set them up.

You will NEED to install the DCS-UDP-SET package in order for this to work, and keep the default port at 7779 for now until I make it configurable in the DCS-WEB-BIOS project as well (it is already configurable in the DCS-UDP-SET package).

Here's what those screens look like (obviously, much less "nice" design, they are simple buttons with as-close-as-possible icons as I could find):
fc3-modes-screenshot.png

 

Hope someone else finds these useful.

Best regards,

Rafa.


Edited by RafaPolit
  • Like 1

I'm Dragon in the Multiplayer servers.

Link to comment
Share on other sites

On 6/27/2022 at 1:02 PM, VirusAM said:

I think it is worth to add also ampcd, maybe you could have a page with amcpcd and ufc together.

I have been flying a bit more with the F/A-18 and have a new understanding of why the AMPCD is so useful.  I was misusing it as, coming from the F-16, I was used to only two MFDs.

I have added the AMPCD, but, as expected, the target screen of 800px makes it impossible to combine with the UFC.  So, it is a standalone screen:

fa18c-AMPCD-screenshot.png

 

The HDG and CRS switches are not yet functional, as the most common interaction with them is to move-and-hold to reach a value, and that interaction is not possible on a touchscreen where that triggers a "right click".  So not sure if buttons that do "click, click, click" to move the HDG and CRS would be useful.

 

The rest (including the BRT knob) is functional.


Edited by RafaPolit

I'm Dragon in the Multiplayer servers.

Link to comment
Share on other sites

  • 2 weeks later...
On 6/30/2022 at 8:29 PM, RafaPolit said:

I recently bought the FC3 planes during the Summer sale.  I think they are really fun to fly, and I was able to mostly put all the common features into the H.O.T.A.S, but the Modes for each airplane is something that I don't really like: I have to remember if this plane has modes 1,2,3, or maybe 6 and 7? So, I decided to add that to this project.

That proved a little more complex than originally expected, because, as far as I can tell (and please correct me if I am wrong!), DCS-BIOS only accepts "cockpit" commands.  So, with some reverse engineering of the DCS-BIOS code, I created a "side-project" called DCS-UDP-SET which opens in DCS an identical UDP listener as DCS-BIOS does, but that, instead of interacting with the cockpit, emits a:

LoSetCommand

This allows an external device to appear to have "clicked" keys 1 through 8 (or anything really!) in the keyboard by using the internal IDs that DCS assigns to those commands.

For the time being, I have added the F-15C and SU-25 Modes.  I do have all the FC3 planes, so this I can do very quickly, just let me know which planes you are interested in, and I can set them up.

You will NEED to install the DCS-UDP-SET package in order for this to work, and keep the default port at 7779 for now until I make it configurable in the DCS-WEB-BIOS project as well (it is already configurable in the DCS-UDP-SET package).

Here's what those screens look like (obviously, much less "nice" design, they are simple buttons with as-close-as-possible icons as I could find):
fc3-modes-screenshot.png

 

Hope someone else finds these useful.

Best regards,

Rafa.

 

Can you show what these options provide ?

Link to comment
Share on other sites

On 8/4/2022 at 6:20 PM, USA_Recon said:

Can you show what these options provide ?

These are the "modes" for the FC3 planes.  FC3 planes are not clickable (without a mod anyways), and you have to remember most of the bindings.  Some are "relatable", like F for flaps.  But key-bindings: 1, 2, 3, 4, 5, 6, 7, 8 are "modes" and are as abstract as they come.  For me, remembering that 3 is "Close Air Combat V-Scan" is near impossible (especially if you, like me, fly other planes as well).  But not only that you would need to remember that plane X has 1,2,5... plane Y has 1,5,7,8, and that plane Z has 1,2,4 available to them.

So, these provide several things (IMHO):
- A visual feedback of what modes are available to each plane
- A visual and named feedback as to what modes are
- A large illuminated button to click instead of a random key in the keyboard 🙂

Was that more or less your question?


Edited by RafaPolit

I'm Dragon in the Multiplayer servers.

Link to comment
Share on other sites

  • 7 months later...
On 6/22/2022 at 10:25 AM, RafaPolit said:

Thanks Toby.  Well, at this point I depend on DCS-BIOS completely to get data out from DCS.  I have not read any information regarding DCS-BIOS exporting any map data.  Still, even if it did, my guess is that it would depend on two things: "transform data", that is data saying: "display a plane icon on coordinates XY", "display a dashed line between XY and WZ", and, at the bottom layer, the actual map info already accessible to the DCS software: tiles, svgs, whatever is used to draw the maps.

It is this second part that wouldn't make any sense to try to extract, because it would mean to have gigabytes of map data extracted from DCS.   

It is the same here with the cockpit buttons: the data for the status is there, I have to recreate the images from scratch (in this case with screen captures of the plane and each switch for each position).  Doing this for every zoom level and position in the map is, quite frankly, not feasible.

For that, I would actually use a second monitor and then use something like screen casting or some other technology to get that into the iOS device.  That, I am afraid, is a completely different project.  Very interesting though, for sure! 🙂

 

I think what the question was regarding is not all the map itself, but use DCS-Bios to collect all objects on the map, export relevant data to be parsed (aircraft, vehicle, ship, missile etc) altitude, heading, speed and then have that parsed data besaved as a JSON.  Use that JSON data in conjunction with a Google Map as a JSON overlay with custom markers.  I am new at the DCS-BIOS, but I am taking a shot at doing just that.  Pull relevant data from the server I fly on, parse the data and store it at a JSON for my HTML site to pull from with a built in trigger to refresh every so often.  This will just be a standalone for me when I fly, but my goal is to have it maybe running on Google cloud in the free tier while collecting constant data and posting to a map for a virtual air wing that I fly with.

Link to comment
Share on other sites

3 hours ago, timothyboss said:

I think what the question was regarding is not all the map itself, but use DCS-Bios to collect all objects on the map, export relevant data to be parsed (aircraft, vehicle, ship, missile etc) altitude, heading, speed and then have that parsed data besaved as a JSON.  Use that JSON data in conjunction with a Google Map as a JSON overlay with custom markers.  I am new at the DCS-BIOS, but I am taking a shot at doing just that.  Pull relevant data from the server I fly on, parse the data and store it at a JSON for my HTML site to pull from with a built in trigger to refresh every so often.  This will just be a standalone for me when I fly, but my goal is to have it maybe running on Google cloud in the free tier while collecting constant data and posting to a map for a virtual air wing that I fly with.

I think this is completely beyond the objective of my small contribution.  Mine is meant to be used like a "generic" external touch screen to interact with specific cockpit elements.  

Since there is already Helios which does most of what I have done and is a more mature thing, plus things like the tablet apps (albeit these are paid), this project of mine is probably a little "less" useful than originally expected.

Still, for a single RPi touchscreen, it's really great and I use it every day.  F-16s ICP, and F-18 UFC are the most useful of the pages for me.  The MCDs and DDIs are a little less useful now that I have included the cougar MFDs to my setup.

I'm not really planning on delving into anything map related for the time being.  If anyone wants to contribute, this is an free open source software, so all contributions are welcome!

 

Edit: oh, the Apache Pilot and Copilot Keyboard Units are also extremely useful!


Edited by RafaPolit
  • Like 1

I'm Dragon in the Multiplayer servers.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...