{"id":49574687,"url":"https://github.com/wirenux/skybridge","last_synced_at":"2026-05-03T16:05:57.643Z","repository":{"id":355041823,"uuid":"1226533858","full_name":"wirenux/SkyBridge","owner":"wirenux","description":"A real-time Microsoft Flight Simulator mod that bridges in-game telemetry with external applications via UDP networking. Capture flight data, screenshots.","archived":false,"fork":false,"pushed_at":"2026-05-01T15:48:33.000Z","size":8,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-01T16:25:56.285Z","etag":null,"topics":["csharp","flask","html","msfs","msfs-dev","msfs2020","pwa","python"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wirenux.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-01T14:21:59.000Z","updated_at":"2026-05-01T15:48:37.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/wirenux/SkyBridge","commit_stats":null,"previous_names":["wirenux/skybridge"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/wirenux/SkyBridge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wirenux%2FSkyBridge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wirenux%2FSkyBridge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wirenux%2FSkyBridge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wirenux%2FSkyBridge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wirenux","download_url":"https://codeload.github.com/wirenux/SkyBridge/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wirenux%2FSkyBridge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32575173,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","flask","html","msfs","msfs-dev","msfs2020","pwa","python"],"created_at":"2026-05-03T16:05:56.413Z","updated_at":"2026-05-03T16:05:57.638Z","avatar_url":"https://github.com/wirenux.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SkyBridge\n\n\u003e Real-time flight dashboard for MSFS 2020 — stream telemetry from your simulator to any device on your local network.\n\n---\n\n## Overview\n\nSkyBridge connects Microsoft Flight Simulator 2020 to a mobile-friendly web dashboard via a local network. A C# mod reads live flight data through SimConnect and streams it over UDP to a Python server, which pushes it to any browser on your LAN in real time via WebSocket.\n\n### 📸 Screenshots\n\n#### Mod running in the background, sending data to the server\n\u003cimg src=\"images/Mod.png\" width=\"400\" alt=\"Mod running in the background, sending data to the server\"\u003e\n\n#### Server terminal showing active connections and decoded access codes\n\u003cimg src=\"images/Server.png\" width=\"400\" alt=\"Server terminal showing active connections\"\u003e\n\n#### Dashboard on a phone, showing live telemetry data\n\u003cimg src=\"images/Dashboard.png\" width=\"400\" alt=\"Dashboard showing live telemetry data on a phone\"\u003e\n\n---\n\n## Features\n\n- **Live telemetry** — Altitude (MSL/AGL), heading, IAS/TAS/GS/Mach, vertical speed, position, fuel, AOA, G-force, OAT, trim, spoilers\n- **Engine data** — RPM or N1% per engine (up to 8), auto-detects piston / jet / turboprop / helicopter\n- **Autopilot status** — AP on/off, target ALT / IAS / HDG\n- **Instruments** — Attitude indicator (ADI) and heading tape with smooth animation\n- **Live map** — OpenStreetMap with plane marker, follow mode, and airport overlays\n- **Gear \u0026 flaps** — position and state\n- **9-character access code** — encode your local IP + port into a short alphanumeric code to share with any device on the network\n- **WebSocket push** — no polling, data arrives as soon as the sim sends it\n- **Collapsible cards** — clean mobile UI, hide what you don't need\n\n---\n\n## Architecture\n\n```\nMSFS 2020\n  └── SimConnect SDK\n        └── SkyBridge.exe  (C# mod)\n              └── UDP:5005 ──▶ SkyBridgeServer.exe  (Python + Flask)\n                                    └── WebSocket ──▶ Browser (mobile / desktop)\n```\n\n---\n\n## Stack\n\n| Layer | Technology |\n|-------|------------|\n| Mod | C# (.NET 10) + SimConnect SDK |\n| Transport | UDP (sim -\u003e server) + WebSocket (server -\u003e browser) |\n| Server | Python 3 - Flask - Flask-SocketIO |\n| Frontend | HTML - CSS - Vanilla JS - Leaflet.js |\n| Encoding | Custom base62 (9 chars = IP + port) |\n| Installer | Inno Setup |\n\n---\n\n## Getting Started\n\n### Installation (recommended)\n\nDownload `SkyBridge_Setup.exe` from the [releases page](https://github.com/wirenux/SkyBridge/releases) and run it. The installer includes both the mod and the server.\n\n---\n\n## Manual Setup\n\n### Prerequisites (If you want to build from source)\n\n**On the Windows PC running MSFS 2020:**\n- MSFS 2020 with Developer Mode enabled (Options → General → Developers)\n- MSFS SDK installed (Dev Mode menu → SDK Download)\n- .NET 10 Runtime\n\n**On any machine for the server (can be the same PC or a Mac/Linux on the same network):**\n- Python 3.9+\n\n### 1. Install server dependencies\n\n```bash\ncd server\npip install -r requirements.txt\n```\n\n### (Optional) 2. Configure the UDP target\n\n#### If the server runs on the same PC as MSFS, keep `127.0.0.1` and don't modify anything !.\n\nIn `mod/src/Program.cs`, set the IP of the machine running the server:\n\n```csharp\nvar udpEndpoint = new IPEndPoint(IPAddress.Parse(\"127.0.0.1\"), 5005);\n```\n\n\n### 3. Build mod + server\n\n```powershell\n.\\build.ps1\n```\n\n---\n\n### Running\n\n**Start the server** (on the host machine):\n\n```bash\ncd server\npython main.py\n```\n\nThe terminal will display the ASCII logo, your local IP, and the 9-character access code.\n\n**Start the mod** (on the Windows PC with MSFS):\n\n```\nSkyBridge.exe\n```\n\nLaunch MSFS 2020, load a flight — data will start streaming immediately.\n\n**Access the dashboard** from any device on the same network:\n\nUse the portal to enter the 9-character code:\n\n```\nhttp://\u003cserver-ip\u003e:5000/\n```\n\n---\n\n### Testing without MSFS\n\n```bash\npython tools/mock_sim.py\n```\n\nSends simulated flight data to the server so you can develop and test the dashboard without launching the simulator.\n\n---\n\n## Access Code System\n\nSkyBridge encodes your server's local IP and port into a 9-character alphanumeric code using base62.\n\n```\n192.168.1.42:5000  →  HddRxl9Y0\n```\n\nShare this code with anyone on your local network. They enter it at `/` (the portal page) and get redirected straight to your dashboard — no need to know your IP.\n\n**Alphabet:** `0-9 a-z A-Z` (62 symbols)  \n**Capacity:** 62⁹ ≈ 13.8 trillion combinations\n\n---\n\n## API Endpoints\n\n| Method | Route | Description |\n|--------|-------|-------------|\n| `GET` | `/` | Portal — enter access code |\n| `GET` | `/host` | Generate your access code |\n| `GET` | `/dashboard` | Live flight dashboard |\n| `GET` | `/api/data` | Latest telemetry as JSON |\n| `GET` | `/api/local-ip?port=5000` | Get local IP + encoded code |\n| `GET` | `/api/decode/\u003ccode\u003e` | Decode a 9-char code → IP:port |\n\n---\n\n## Telemetry Payload\n\n```json\n{\n  \"alt\": 8500,\n  \"alt_msl\": 8500,\n  \"alt_agl\": 6200,\n  \"hdg\": 270.0,\n  \"pitch\": -2.1,\n  \"bank\": 0.0,\n  \"ias\": 245.0,\n  \"tas\": 268.0,\n  \"gs\": 251.0,\n  \"mach\": 0.412,\n  \"vs\": -200.0,\n  \"lat\": 48.850000,\n  \"lon\": 2.350000,\n  \"fuel_gal\": 320.5,\n  \"aoa\": 3.2,\n  \"g\": 1.01,\n  \"oat\": -32.5,\n  \"trim_pct\": 2.1,\n  \"spoiler_pct\": 0.0, \"spoiler_armed\": false,\n  \"gear\": 0.0,\n  \"flaps_index\": 0,\n  \"flaps_deg\": 0.0,\n  \"motors\": [\n    { \"id\": 1, \"rpm\": 0, \"n1\": 84.2, \"is_jet\": true },\n    { \"id\": 2, \"rpm\": 0, \"n1\": 83.9, \"is_jet\": true }\n  ],\n  \"ap\": {\n    \"on\": true,\n    \"alt_on\": true,  \"alt_val\": 9000,\n    \"ias_on\": true,  \"ias_val\": 245,\n    \"hdg_on\": false, \"hdg_val\": 0\n  },\n  \"ts\": 1714500000\n}\n```\n\n---\n\n## License\n\nMIT - see [LICENSE](./LICENSE).\n\n---\n\n*Built by [WireNux](https://github.com/wirenux)*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwirenux%2Fskybridge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwirenux%2Fskybridge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwirenux%2Fskybridge/lists"}