Skip to content

About

Web dashboard for monitoring a Satisfactory factory in real time, built on the Ficsit Remote Monitoring mod's web API: https://github.com/porisius/FicsitRemoteMonitoring

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

30 Commits

Folders and files

Repository files navigation

Ficsit Remote Monitoring – FICSIT Monitor

A live web dashboard for a Satisfactory world: how the factory is doing at a glance, every vehicle, every production machine, the power grid, every conveyor belt and pipe, and your progression. It reads data from the Ficsit Remote Monitoring (FRM) mod's web API.

Overview

Tabs

Overview (home)

  • Needs attention: an overloaded grid or tripped fuse, max consumption over capacity, generators out of fuel or water, starved machines, items used faster than they're made, stuck vehicles (derailed, station unreachable, …), unconnected belt/pipe ends, milestones ready to unlock, coupons to spend. Each links to the tab that explains it.
  • Summary cards: power across the top (key figures and the four-line power chart), then production (status mix, top products, shortfalls), vehicles (per type, stuck ones by name), logistics (belt and pipe totals by tier) and progression (Space Elevator and HUB parts).
  • World map of machines, generators, vehicles, players, the HUB, the Space Elevator, every belt and pipe, the power network (lines, poles, wall outlets, towers, switches, power storage), every storage container, fluid buffer and Dimensional Depot uploader, roads, rail, drone routes and truck / train stations, with a categorized Layers dropdown.

Vehicles

Vehicles

  • Table of every vehicle: factory carts, tractors, trucks, fluid trucks, explorers, Cyber Wagons, trains and drones, with status (moving, docking, stopped, driven, error), speed, next stop, route, cargo, fill level, nearest station, autopilot and driver. A filter under every column; station and cargo filters are searchable multi-selects.
  • Live map with smoothly moving markers (it only redraws while something moves). Hover a vehicle to highlight its stops; hover a station to see what's in it; click a row to follow a vehicle.

Production

Production

  • Items: producing, consuming and net per minute for every item (generators' fuel and water included), capacity and how much of it is in use. Click an item to see its history and highlight the machines that make (blue) and use (orange) it, in the table and on the map.
  • Machines: status (running, partial, starved, output full, paused, no power), productivity, input and output, clock speed, power shards, Somersloops and power draw. A filter under the columns (building, recipe, status, productivity, inputs, outputs, clock); click a row to find the machine on the map.
  • The summary tiles are shortcuts: click "5 starved" to see those five.

Power

Power

  • All grids together or one grid at a time. Grids are named after what powers them, biggest share first, with used / max: "Nuclear 200/2,000 MW", "Coal 1", "Coal 2"; grids with no generators come last.
  • The in-game power graph's numbers (capacity, production, consumption, max consumption) plus headroom, batteries and fuse state.
  • Power & batteries: the power graph with a stored-charge graph (MWh) under it on the same time axis, beside a battery readout like the in-game Power Storage panel: charge gauge and %, time until full (or empty while draining), stored charge (e.g. 3,300 / 3,300 MWh) and charge rate.
  • Generators & switches in one table, with a filter under every column: each generator's output, fuel and water; each power switch's state, priority group (Undefined turns off first, then 8 … 1), what it's fed from and what it controls. Hover a switch to see its two sides on the map (supply blue, controlled orange).
  • Grid layout: each grid's sections, following the switches out from the generators.
  • Generation by generator type and consumption by building type, beside a map of the power network: lines, poles, wall outlets, towers, switches and power storage, with the selected grid bright and the rest faded.

Logistics

Logistics

  • Every conveyor belt and pipe, grouped into networks (belts or pipes that connect to each other; conveyor lifts are belt pieces that go up or down, so a line keeps going through them), and every storage building: Storage Container, Industrial Storage Container, Personal / Medical / Hazard Storage Box (and the HUB's), Fluid Buffer, Industrial Fluid Buffer, Dimensional Depot Uploader and dismantle / death crate.
  • Totals: belts and pipes (with lifts, splitters/mergers and junctions/pumps/valves), unconnected ends, slots used across containers, m³ stored across fluid buffers, depot items at their limit, and full storage (click those to list them).
  • Networks table: what each network feeds (production, power), the buildings it connects (storage included), its length, pieces, lifts, tier mix and bottleneck (the slowest tier, lifts included), and open ends.
  • Storage table: type, contents, how full (slots used, or m³ of the tank), amount stored, each fluid buffer's fill / drain rate, and the belts and pipes into it.
  • The two are linked: click a network (in the table or on the map) and the storage it reaches is pinned to the top of the Storage table and ringed on the map; click a storage and the belts and pipes into it are pinned and drawn on the map. Every column of both tables has a filter, and the map follows them.
  • Under the map: belt, lift and pipe pieces by tier, and every Dimensional Depot item against its limit (an uploader counts as full only when the depot can't take any more of its item).
  • Hover a belt, pipe, lift or storage on any map to see it. Lifts are drawn as small squares in their belt tier's colour with a ↕, on top of the belts; the maps have one layer per kind of storage building.
  • server.py works the networks out by following what each belt, lift and pipe end is plugged into (FRM's ConnectedTo0 / ConnectedTo1), through splitters/mergers, junctions/pumps/valves and floor holes. With an FRM build that doesn't report those, it falls back to geometry (ends that meet, each lift joined to the nearest belt end at its height). A network counts as production or power if it reaches a machine or a generator. It doesn't know what's on a belt or how full it is.

Inventory

  • Player inventory: what every player is carrying, one row per player and item, with the amount, the stacks it takes, and how many of that item the Dimensional Depot holds. Players who are online come first.
  • Dimensional Depot: every item in the depot with its amount, limit, how full it is, stacks, and how many players are carrying right now. Click "At the limit" to list the items that can't take any more uploads.
  • The two are linked: click an item in either table and it is marked in both, pinned to the top of the other one. Every column has a filter under it.

Progression

Progression

  • Space Elevator phase with each part's delivered amount, how many are in storage, how fast the factory makes them and time to finish; the HUB's active milestone; milestones per tier; MAM research; alternate recipes, AWESOME Shop and coupons.
  • Collectibles found (Somersloops, Mercer Spheres, power slugs) and resource nodes tapped. Click one to find the ones still out there on the map.

Everywhere

  • Every map has a Layers dropdown, X/Y coordinates under the cursor, and shows players (online and offline) as arrows pointing the way they face. Right-click a map to open the same spot, at the same zoom, in another tab's map. The Production map shows the belts and pipes of production lines; the Overview and Logistics maps show them all.
  • Every table has its title and row count on the left, Clear filters on the right, and filters under the column headings.
  • Every panel has a full-screen button (Esc to close). Table columns can be resized (double-click an edge to fit) and sorted.
  • On a desktop browser each tab fits one screen; on phones the panels stack.
  • server.py records power (battery charge and capacity included) and production history (every 5 s / 15 s, 24 hours kept, saved to history.json), so charts have data from before the page was opened. It works out the belt and pipe networks every minute while a page shows them (every 5 minutes for a page in the background, not at all when nobody is looking).

Requirements

  • Satisfactory 1.2 with the Ficsit Remote Monitoring mod, with its web server started (/frm http start in game chat, or its autostart setting turned on).
  • Python 3.9+ (standard library only; Pillow is optional, for resizing pictures).
  • For route, next-stop, live-position and speed data, FRM needs the vehicle fixes from porisius/FicsitRemoteMonitoring#310. With an FRM build that lacks them, the dashboard still runs, but vehicles show no routes and stay frozen whenever no player is nearby. Power poles, wall outlets and power towers on the maps also need that pull request's getPowerPoles endpoint; without it, the power lines and switches still show. Fluid buffers, exact storage slot counts and Dimensional Depot limits need its getFluidBuffer endpoint and storage fields; without them, fluid buffers are missing, slots used are estimated from stack sizes and the depot shows amounts only. Exact belt / lift / pipe networks need its ConnectedTo0 / ConnectedTo1 fields; without them, networks are worked out from positions and some lines through conveyor lifts come out split.

Setup

# one time: map image (from your FRM install), vehicle pictures and item/building icons (from the Satisfactory wiki)
python tools/fetch_assets.py --game-dir "<path to Satisfactory or SatisfactoryDedicatedServer>"

# run it
python server.py

Then open http://localhost:8090.

Options:

  • --frm http://<host>:8080, or set FRM_URL, if FRM runs on another machine.
  • --host 0.0.0.0 to open the dashboard from other devices on your network.
  • --port to use a port other than 8090.
  • --no-history to not record power/production history.

items.json (every item in the game, with fuel energy values) is included. To regenerate it after a game update, run python tools/generate_items.py --game-dir "<Satisfactory install>".

Notes

  • The map image, vehicle pictures and icons aren't included because they're Coffee Stain's game art. fetch_assets.py gets them on your own machine.
  • server.py serves the page and passes API calls through to FRM, so the browser never has to deal with cross-origin (CORS) restrictions.
  • Load on the game server: FRM answers most calls on the game thread, so the dashboard tries to ask little:
    • each tab polls only what it shows, and maps fetch shared data (players, power network, storage, belts and pipes) only while a tab showing them is open;
    • a page in the background (another browser tab, a minimised window) polls at most once a minute and catches up when it's shown again;
    • server.py caches replies (1 s; 4 s for the big ones), so several open pages and the history recorder share requests, and the Overview reuses the recorder's machine snapshot. With one page open this costs FRM about 2–3 s of work a minute; the biggest single request (getBelts, a few hundred ms on a large factory) runs once a minute only while belts and pipes are on screen.
  • Code: index.html (page, Vehicles tab), js/poll.js (polling), js/charts.js (charts, tables, dropdowns), js/map.js (the shared map), and one file per other tab.

About

Web dashboard for monitoring a Satisfactory factory in real time, built on the Ficsit Remote Monitoring mod's web API: https://github.com/porisius/FicsitRemoteMonitoring

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages