An FPP (Falcon Player) plugin that monitors the live raw values being sent to up to 128 output channels, showing the current value and a scrolling 30 second line graph for each. Channels are grouped into tabs of 16, the same grouping FPP's own Display Testing > Channel Fader tab uses.
A small C++ plugin (src/FPPChannelEKG.cpp) hooks FPP's
ChannelDataPlugin::modifyChannelData(), which runs every output frame with
the actual post-overlay data about to be sent out. It samples the configured
channels each frame into an in-memory 30 second ring buffer per channel, and
exposes that data over HTTP:
GET /api/plugin-apis/ChannelEKG/config- current monitored channel listPOST /api/plugin-apis/ChannelEKG/config- set the monitored channel list (max 128,[{ "channel": 123, "label": "..." }])GET /api/plugin-apis/ChannelEKG/data?since=<ms>- current value per channel, plus samples newer thansince(delta polling, not the full history each time)
The web UI (status.php, under the Status menu as "Channel EKG") lets you
pick channels either by choosing a configured model (adds its first real
output channels, reusing FPP's own /api/models endpoint) or by entering a
raw channel number, then polls the data endpoint every 250ms and draws a
live chart per channel with a small hand-rolled SVG renderer (no external JS
dependency). Once more than 16 channels are picked, they're split across tabs
of 16; only the active tab's charts are kept on screen, so switching tabs
tears down the previous tab's charts and builds the new tab's from scratch
rather than keeping every channel rendered at once.
Clone this repo into FPP's plugins directory and run the install script (or install it through FPP's Plugin Manager once published):
cd <fpp media dir>/plugins
git clone https://github.com/kylegrymonprez/fpp-ChannelEKG.git
cd fpp-ChannelEKG
scripts/fpp_install.sh
This branch (main) targets FPP 10.0-beta5+'s plugin HTTP API (Plugin API 6):
no-arg registerApis()/unregisterApis(), routed through
FPPPlugins::registerPluginApi()/unregisterPluginApi() in fpphttp.h, with
a shutdown()/FPP_PLUGIN_SUPPORTS_UNLOAD() hot-unload contract - so install,
uninstall, and upgrade all take effect live with no fppd restart. For FPP
8.x/9.x, use the fpp9 branch instead, which targets the older
libhttpserver-based API and does need a restart after install/uninstall/upgrade.
- Channel numbers are 1-based absolute output channels, matching what FPP's Testing page shows for a model.