GithubHelp home page GithubHelp logo

mhwlng / fip-elite Goto Github PK

View Code? Open in Web Editor NEW
41.0 5.0 3.0 9.91 MB

Information Display for Logitech Flight Instrument Panel and for VR for Elite Dangerous

Home Page: https://forums.frontier.co.uk/threads/information-display-for-logitech-flight-instrument-panel.535231/

License: MIT License

C# 84.57% HTML 15.24% CSS 0.19%
elite-dangerous fip flight-instrument-panel logitech saitek vr

fip-elite's Introduction

fip-elite

Information Display for Logitech Flight Instrument Panel and for VR for Elite Dangerous

You don't need a Flight Instrument Panel, if you only want to use this for VR.

Logitech Flight Instrument Panel with Elgato Stream Deck

VR

The menu area and each screen can be configured via razor (.cshtml) web page templates.

Use the right rotary encoder to scroll vertically on all tabs.

Use the left rotary encoder to show another card on various tabs or zoom into the galaxy map. Also, the S5 button shows the next card and the S6 button shows the previous card.

Press the S1 button to display the menu.

You can also control ONE Flight Instrument Panel with a (virtual) Joystick 4-way hat switch with pushbutton.

The 4-way hat switch up-, down-, left-, right- buttons are 4 normal joystick buttons. An 8-way hat switch (POV) is not supported.

You can also designate separate (virtual) joystick buttons as shortcuts to specific screens.

The (virtual) joystick is configured via joysticksettings.config The button id's must be numeric.

<?xml version="1.0" encoding="utf-8" ?>
<joystickSettings>
  <add key="PID" value="0127" />
  <add key="VID" value="231D" />
  <add key="UpButton" value="21" />
  <add key="DownButton" value="23" />
  <add key="LeftButton" value="24" />
  <add key="RightButton" value="22" />
  <add key="PushButton" value="25" />
  <add key="NavigationButton" value="0" />
  <add key="TargetButton" value="0" />
  <add key="CommanderButton" value="0" />
  <add key="GalnetButton" value="0" />
  <add key="MissionsButton" value="0" />
  <add key="ChatButton" value="0" />
  <add key="HWInfoButton" value="0" />
  <add key="ShipButton" value="0" />
  <add key="MaterialsButton" value="0" />
  <add key="CargoButton" value="0" />
  <add key="EngineerButton" value="0" />
  <add key="ShipLockerButton" value="0" />
  <add key="BackPackButton" value="0" />
  <add key="POIButton" value="0" />
  <add key="GalaxyButton" value="0" />
  <add key="EngineersButton" value="0" />
  <add key="PowersButton" value="0" />
  <add key="MiningButton" value="0" />
  <add key="FipSerialNumber" value="MZAAFAA883" />
  <add key="WindowWidth" value="320" />
  <add key="WindowHeight" value="240" />
</joystickSettings>

This is a useful tool, to find out the joystick or throttle VID, PID and 4 way hat switch button numbers (this tool is not limited to VKB joysticks):

https://vkbcontrollers.com/wp-content/uploads/2019/02/VKB_JoyTester.zip

This is what a 4 way hat switch looks like in the tool.

Just 5 normal buttons, with low id's :

vkb 1

This is what an 8 way hat switch looks like, with high numbers representing the angle of the mini-stick.

This is not supported by the software :

vkb 2

There is a Toggle Window menu option in the tray icon context menu. This option mirrors the FIP display, that is being controlled by the HOTAS hat switch, to a window for use in VR.

If FipSerialNumber in joysticksettings.config has the special value "window", then a separate window is created, that is NOT a mirror of a FIP display. This window can be resized.

This window will also work WITHOUT any connected FIP display.

WindowWidth/WindowHeight in joysticksettings.config can only be adjusted if the window is NOT a mirror of a FIP display. Otherwise these values are ignored.

You can then use a tool like OVR Toolkit to display this window in VR.

The 'Engineer' tab is integrated with the material shopping list of the EDEngineer application.

The local api must be active in EDEngineer and listening on port 44405

This is optional, EDEngineer doesn't have to be installed or running.

Any data from HWInfo can be displayed. This also works when Elite Dangerous is not running.

When HWInfo64 is detected, all the available sensors will be written at startup to the data\hwinfo.json file.

The HWINFO.inc file must be modified, to configure what will be displayed on the screen. The HWINFO.inc file has the same format as used by various rainmeter skins.

Note that you don't need to install rainmeter or any rainmeter plugin.

A configuration tool, to link sensor ids to variables in the HWINFO.inc file, can be downloaded from the hwinfo website here :

hwinfo tool

The UTF-8 checkbox must be enabled for non-unicode programs in the latest unicode-enabled version of HWINFO :

unicode hwinfo

The HWINFO sensor data can optionally be sent to an MQTT server, by creating a file called mqtt.config (this file doesn't exist by default)

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <mqtt>
    <add key="mqttURI" value="192.168.2.34" />
    <add key="mqttUser" value="mqttusername" />
    <add key="mqttPassword" value="secretpassword" />
    <add key="mqttPort" value="1883" />
    <add key="mqttSecure" value="False" />
  </mqtt>
</configuration>

MQTT

You can automatically open the 'Target' tab on ONE Flight Instrument Panel, when a ship is targeted. (ShipTargeted event).

You can automatically open the 'Navigation' tab on ONE Flight Instrument Panel, when a ship enters a system, approaches a station or a planet. (ApproachBody, ApproachSettlement, DockingRequested, DockingGranted, Docked, CarrierJump, FSDJump, SupercruiseExit events)

Configure the serial number of the Flight Instrument Panel, that needs these features enabled, via panelsettings.config.

(The special value "window" will also work.)

You can also adjust the scroll speed and acceleration.

In below example, the screen will scroll 50 pixels per encoder 'click'.

If there are more than 4 clicks, with no more than 250ms between clicks, then the screen will start scrolling 200 pixels per encoder 'click'.

<?xml version="1.0" encoding="utf-8" ?>
<panelSettings>
  <add key="AutoActivateTarget" value="MZE09FE2BC" />
  <add key="AutoActivateNavigation" value="MZAAFAA883" />

  <add key="FastScrollClickDelay" value="250" />
  <add key="FastScrollClickCount" value="4" />
  <add key="ScrollIncrement" value="50" />
  <add key="FastScrollIncrement" value="200" />

</panelSettings>

A sound is played when menu options are selected. This sound can be changed or disabled by editing the 'clickSound' key in appsettings.config

Screenshot 1 Screenshot 2 Screenshot 3 Screenshot 4 Screenshot 5 Screenshot 6 Screenshot 7 Screenshot 8 Screenshot 9 Screenshot 10 Screenshot 11 Screenshot 12 Screenshot 13 Screenshot 14 Screenshot 15 Screenshot 16 Screenshot 17 Screenshot 18 Screenshot 19 Screenshot 20 Screenshot 21 Screenshot 22 Screenshot 23 Screenshot 24 Screenshot 25 Screenshot 26 Screenshot 27 Screenshot 28 Screenshot 29 Screenshot 30 Screenshot 31 Screenshot 32 Screenshot 33 Screenshot 34 Screenshot 35

Works with these 64 bit Logitech Flight Instrument Panel Drivers (currently not with older saitek drivers) :

https://support.logi.com/hc/en-us/articles/360024848713--Downloads-Flight-Instrument-Panel

Software Version: 8.0.134.0 Last Update: 2018-01-05 64-bit

https://download01.logi.com/web/ftp/pub/techsupport/simulation/Flight_Instrument_Panel_x64_Drivers_8.0.134.0.exe

Also see companion plugin for Elgato stream deck :

https://github.com/mhwlng/streamdeck-elite

Thanks to :

https://github.com/EDCD/EDDI

https://github.com/MagicMau/EliteJournalReader

https://github.com/msarilar/EDEngineer

https://www.hwinfo.com/

DaftMav for POI list see here

https://eddb.io/ and https://www.edsm.net/ for station, system and body data

https://inara.cz/ for pricing data

https://www.edsm.net/ for the galaxy image

https://edassets.org/ CMDR Qohen Leth and CMDR Nuse for the ship images

http://edtools.ddns.net/

https://edastro.com/poi/

fip-elite's People

Contributors

mhwlng avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

fip-elite's Issues

Setup of fip screens

Hey I’m brand new and I’m ordering 2 fip and a elgato I’m having hard time understanding how I can setup the saitek fip screens to what you have I’m looking to setup the same way do you have discord or is there way you can help me when my screens come in? Looking to setup elite dangerous the same way you have on the 2 screens

cargo randomly disables

I first started using fip-elite with version 1.3.1, in that version and 1.3.2 I have been experiencing the cargo page randomly disables itself. If the page is displayed it will jump to another page. Sometimes I can go right back to it, but other times it's grey'd out for a little while.

Let me know if there's anything I can do help troubleshoot the issue.

I really like having the cargo page up while mining, and I plan to add more screens to maximize my information while playing thanks to your efforts. This is awesome work.

(Also, there's no binary zip attached to 1.3.3)

Nothing but Elite Logo in Window

Hi!

I'm trying to get this to work with ED:Odyssey and my Thrustmaster T.16000M HOTAS. I don't have a Logitech Flight Instrument Panel, but am trying to use the window on a second monitor and/or in VR. I installed the 64 bit Logitech Flight Instrument Panel Drivers you mentioned in the README and changed the PID and VID in the joysticksetting.config to get my Thrustmaster recognized. But unfortunately the Toggle Window shows nothing but the Elite Dangerous Logo. Am I missing something?

Log.txt is showing this:


INFO  2021-06-12 20:40:02,700 <OnStartup>b__0 - Sending joystick button presses to FIP panel with serial number : window

INFO  2021-06-12 20:40:02,716 AddWindow - Adding new Window device 0 of type: 00000000-0000-0000-0000-000000000000

INFO  2021-06-12 20:40:02,718 InitFipPanelSerialNumber - FipPanel Serial Number : window

INFO  2021-06-12 20:40:02,943 <OnStartup>b__0 - Looking for directinput devices with PID=B10A and VID=044F

INFO  2021-06-12 20:40:02,943 <OnStartup>b__0 - Button numbers : Up=21 Down=23 Left=24 Right=22 Push=25

INFO  2021-06-12 20:40:03,021 <OnStartup>b__0 - PID:b10a - VID:044f - Joystick    - b10a044f-0000-0000-0000-504944564944 - 34dae2f0-b35e-11eb-8001-444553540000 - T.16000M Joystick

INFO  2021-06-12 20:40:03,021 <OnStartup>b__0 - Using Joystick T.16000M Joystick with Instance Guid 34dae2f0-b35e-11eb-8001-444553540000

INFO  2021-06-12 20:40:03,028 <OnStartup>b__0 - PID:b687 - VID:044f - Flight      - b687044f-0000-0000-0000-504944564944 - 34dd53f0-b35e-11eb-8002-444553540000 - TWCS Throttle

INFO  2021-06-12 20:40:03,029 MoveNext - joystick task started

INFO  2021-06-12 20:40:03,828 <OnStartup>b__0 - Fip-Elite started

INFO  2021-06-12 20:40:03,837 MoveNext - json task started

INFO  2021-06-12 20:40:03,839 MoveNext - HWInfo task started

Any idea?

Cheers,
Fenrir

Font Size

Hi, Love the extension, however the font seems to be bigger than the photo on here, is there anyway to change the size?

Error loading app on windows 10

Hi

My friend Kerwin has a logitech flight instrumental panel but this week is experimenting an error when app is loading... Pasting image and log with the problem. ¿Can you help us?...

Imagen de WhatsApp 2023-05-08 a las 19 43 24

ERROR 2023-05-08 19:26:29,183 Invoke - AppDispatcherUnhandledException: System.NullReferenceException: Referencia a objeto no establecida como instancia de un objeto.
en Elite.App.OnExit(ExitEventArgs e)
en System.Windows.Application.DoShutdown()
en System.Windows.Application.ShutdownImpl()
en System.Windows.Application.ShutdownCallback(Object arg)
en System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
en System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
ERROR 2023-05-08 19:26:29,226 Invoke - AppDispatcherUnhandledException: System.NullReferenceException: Referencia a objeto no establecida como instancia de un objeto.
en Elite.App.OnExit(ExitEventArgs e)
en System.Windows.Application.DoShutdown()
en System.Windows.Application.ShutdownImpl()
en System.Windows.Application.ShutdownCallback(Object arg)
en System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
en System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
ERROR 2023-05-08 19:26:29,227 TryCatchWhen - AppDomainUnhandledExceptionHandler: System.NullReferenceException: Referencia a objeto no establecida como instancia de un objeto.
en Elite.App.OnExit(ExitEventArgs e)
en System.Windows.Application.DoShutdown()
en System.Windows.Application.ShutdownImpl()
en System.Windows.Application.ShutdownCallback(Object arg)
en System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
en System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
en System.Windows.Threading.DispatcherOperation.InvokeImpl()
en MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
en System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
en System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
en System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
en MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
en System.Windows.Threading.DispatcherOperation.Invoke()
en System.Windows.Threading.Dispatcher.ProcessQueue()
en System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
en MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
en MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
en System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
en System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
en System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
en MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
en MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
en System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
en System.Windows.Application.RunDispatcher(Object ignore)
en System.Windows.Application.RunInternal(Window window)
en Elite.App.Main()

Application doesn't load because of the dependency on EDDB

Fails on Version: 1.9.6
Works on Version: 1.9.5

Due to the recent shutdown of EDDB the application is stuck in the loading screen while Loading Populated Systems

image

The log shows an Exception when exited from the tray icon:

ERROR 2023-04-10 01:04:33,061 Invoke - AppDispatcherUnhandledException: System.NullReferenceException: Referencia a objeto no establecida como instancia de un objeto.
   en Elite.App.OnExit(ExitEventArgs e)
   en System.Windows.Application.DoShutdown()
   en System.Windows.Application.ShutdownImpl()
   en System.Windows.Application.ShutdownCallback(Object arg)
   en System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   en System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
ERROR 2023-04-10 01:04:33,075 Invoke - AppDispatcherUnhandledException: System.NullReferenceException: Referencia a objeto no establecida como instancia de un objeto.
   en Elite.App.OnExit(ExitEventArgs e)
   en System.Windows.Application.DoShutdown()
   en System.Windows.Application.ShutdownImpl()
   en System.Windows.Application.ShutdownCallback(Object arg)
   en System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   en System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
ERROR 2023-04-10 01:04:33,076 TryCatchWhen - AppDomainUnhandledExceptionHandler: System.NullReferenceException: Referencia a objeto no establecida como instancia de un objeto.
   en Elite.App.OnExit(ExitEventArgs e)
   en System.Windows.Application.DoShutdown()
   en System.Windows.Application.ShutdownImpl()
   en System.Windows.Application.ShutdownCallback(Object arg)
   en System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   en System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   en System.Windows.Threading.DispatcherOperation.InvokeImpl()
   en MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
   en System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   en System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   en System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   en MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
   en System.Windows.Threading.DispatcherOperation.Invoke()
   en System.Windows.Threading.Dispatcher.ProcessQueue()
   en System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   en MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   en MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   en System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   en System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   en System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
   en MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   en MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
   en System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
   en System.Windows.Application.RunDispatcher(Object ignore)
   en System.Windows.Application.RunInternal(Window window)
   en Elite.App.Main()

Downgrading the installation to v1.9.5 solves the issue and the application starts without problem.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.