From 638116db5f4e1f6f7d0dc06b9f7f87f1a785fb58 Mon Sep 17 00:00:00 2001 From: Marco Gulino Date: Sun, 28 Jun 2026 18:52:52 +0100 Subject: [PATCH] Allow extra menu items on website plugin. This can be quite useful for some of the current plugins exposing extra web pages, such as metrics and OTA, but it will be particular use for future plugins with more complex extra pages (working on one right now). --- README.md | 14 ++++++++++++++ website/Config.h | 7 +++++++ website/pages/Page.cpp | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+) diff --git a/README.md b/README.md index abfcf3b..c8ebab5 100644 --- a/README.md +++ b/README.md @@ -122,6 +122,13 @@ You must copy the /elegantota directory into the OnStepX/src/plugins directory a #endif ``` +To add ElegantOTA to your OnStepX website plugin menu, you can define the following in `Config.h`: +``` +#define WEBSITE_PLUGIN_PAGE1_TITLE "OTA Update" +#define WEBSITE_PLUGIN_PAGE1_URL "/update" +#define WEBSITE_PLUGIN_PAGE1_TARGET "_blank" // Optional, opens in a new tab +``` + ### Firmware upload The plugin works in two different ways, depending on whether WiFi is enabled @@ -153,6 +160,13 @@ You must copy the /metrics directory into the OnStepX/src/plugins directory and Once enabled, you can head to the path defined by `METRICS_PLUGIN_PATH` (by default `/metrics`) to see your metrics. This is also the path you'll want to use if you want to scrape these metrics using Prometheus. +You can also add the metrics to your OnStepX website menu by defining the following in `Config.h`: +``` +#define WEBSITE_PLUGIN_PAGE2_TITLE "Metrics" +#define WEBSITE_PLUGIN_PAGE2_URL "/metrics" +#define WEBSITE_PLUGIN_PAGE2_TARGET "_blank" +``` + ### Adding metrics An example implementation on how to add custom metrics is available with GPS metrics: diff --git a/website/Config.h b/website/Config.h index f2fc155..4b60dc3 100644 --- a/website/Config.h +++ b/website/Config.h @@ -55,5 +55,12 @@ #define HOME_OFFSET_RANGE_AXIS2 7200 // 7200, allow adjusting home offset up to +/- 2 degrees Infreq #endif +// Extra menu links, up to 5 +// For each link, define the title and URL. If you want the link to open in a new tab, define the target as "_blank". +// Example: +// #define WEBSITE_PLUGIN_PAGE1_TITLE "My first link" +// #define WEBSITE_PLUGIN_PAGE1_URL "/my-first-link-target" +// #define WEBSITE_PLUGIN_PAGE1_TARGET "_blank" + // THAT'S IT FOR USER CONFIGURATION! // ------------------------------------------------------------------------------- diff --git a/website/pages/Page.cpp b/website/pages/Page.cpp index 69d44dd..8e86317 100644 --- a/website/pages/Page.cpp +++ b/website/pages/Page.cpp @@ -53,6 +53,43 @@ void pageHeader(int selected) { data.concat(FPSTR(html_links_net_end)); } + #if defined(WEBSITE_PLUGIN_PAGE1_TITLE) && defined(WEBSITE_PLUGIN_PAGE1_URL) + #ifndef WEBSITE_PLUGIN_PAGE1_TARGET + #define WEBSITE_PLUGIN_PAGE1_TARGET "" + #endif + data.concat(F("" WEBSITE_PLUGIN_PAGE1_TITLE "")); + #endif + + #if defined(WEBSITE_PLUGIN_PAGE2_TITLE) && defined(WEBSITE_PLUGIN_PAGE2_URL) + #ifndef WEBSITE_PLUGIN_PAGE2_TARGET + #define WEBSITE_PLUGIN_PAGE2_TARGET "" + #endif + data.concat(F("" WEBSITE_PLUGIN_PAGE2_TITLE "")); + #endif + + #if defined(WEBSITE_PLUGIN_PAGE3_TITLE) && defined(WEBSITE_PLUGIN_PAGE3_URL) + #ifndef WEBSITE_PLUGIN_PAGE3_TARGET + #define WEBSITE_PLUGIN_PAGE3_TARGET "" + #endif + data.concat(F("" WEBSITE_PLUGIN_PAGE3_TITLE "")); + #endif + + #if defined(WEBSITE_PLUGIN_PAGE4_TITLE) && defined(WEBSITE_PLUGIN_PAGE4_URL) + #ifndef WEBSITE_PLUGIN_PAGE4_TARGET + #define WEBSITE_PLUGIN_PAGE4_TARGET "" + #endif + data.concat(F("" WEBSITE_PLUGIN_PAGE4_TITLE "")); + #endif + + #if defined(WEBSITE_PLUGIN_PAGE5_TITLE) && defined(WEBSITE_PLUGIN_PAGE5_URL) + #ifndef WEBSITE_PLUGIN_PAGE5_TARGET + #define WEBSITE_PLUGIN_PAGE5_TARGET "" + #endif + data.concat(F("" WEBSITE_PLUGIN_PAGE5_TITLE "")); + #endif + + + data.concat(FPSTR(html_onstep_header_end)); www.sendContentAndClear(data); }