Skip to main content

Configuration Keys Quick Reference

🚀 Quick Reference Table​

For developers who need to quickly find the right key name for a specific layer:

Configuration FieldHTML IDJS/JSON KeyNVS KeyC++ Member
Location
City Namecity-displaycitycitycityName
Latitudecity-latcityLatlatlatitude
Longitudecity-loncityLonlonlongitude
Weather
Update Intervalweather-intervalweatherIntervalweatherIntweatherInterval
Transport
Stop IDstop-selectstopIdstopIdselectedStopId
Stop Namestop-inputstopNamestopNameselectedStopName
Update Intervaltransport-intervaltransportIntervaltransportInttransportInterval
Active Starttransport-active-starttransportActiveStarttransStarttransportActiveStart
Active Endtransport-active-endtransportActiveEndtransEndtransportActiveEnd
Walking Timewalking-timewalkingTimewalkTimewalkingTime
Sleep
Sleep Startsleep-startsleepStartsleepStartsleepStart
Sleep Endsleep-endsleepEndsleepEndsleepEnd
Weekend Mode
Weekend Enabledweekend-modeweekendModeweekendModeweekendMode
Weekend Transport Startweekend-transport-startweekendTransportStartwTransStartweekendTransportStart
Weekend Transport Endweekend-transport-endweekendTransportEndwTransEndweekendTransportEnd
Weekend Sleep Startweekend-sleep-startweekendSleepStartwSleepStartweekendSleepStart
Weekend Sleep Endweekend-sleep-endweekendSleepEndwSleepEndweekendSleepEnd

🔧 Common Operations​

Adding a New Configuration Field​

  1. Add to C++ Struct (config_struct.h):

    int myNewField = 10;  // with default value
  2. Add NVS Save/Load (config_manager.cpp):

    // In loadConfig():
    config.myNewField = preferences.getInt("myNewFld", 10);

    // In saveConfig():
    preferences.putInt("myNewFld", config.myNewField);
  3. Add HTML Form (config_my_station.html):

    <input type="number" id="my-new-field" value="{{MY_NEW_FIELD}}">
  4. Add Template Replacement (config_page.cpp):

    // In handleConfigPage():
    page.replace("{{MY_NEW_FIELD}}", String(g_stationConfig.myNewField));

    // In handleSaveConfig():
    if (doc.containsKey("myNewField")) {
    g_stationConfig.myNewField = doc["myNewField"].as<int>();
    }
  5. Add JavaScript Handling (config_my_station.html script section):

    var myNewField = document.getElementById('my-new-field').value;

    var config = {
    // ... other fields ...
    myNewField: parseInt(myNewField)
    };

Key Naming Guidelines​

LayerConventionExampleMax Length
HTML IDkebab-casemy-new-fieldNo limit
JavaScriptcamelCasemyNewFieldNo limit
JSON KeycamelCasemyNewFieldNo limit
NVS KeyabbreviatedmyNewFld15 chars
C++ MembercamelCasemyNewFieldNo limit

Filter Array Handling​

Filters are stored as individual NVS entries:

  • filterCount → number of filters
  • filter0, filter1, filter2, ... → individual filter values

RTC Memory (Critical Data Only)​

Only add to RTC memory if the data is:

  • Critical for device operation after deep sleep
  • Frequently accessed during wake cycles
  • Small in size (RTC memory is limited)

📋 Validation Checklist​

When adding/modifying configuration fields:

  • NVS key is ≤15 characters
  • Default value is set in C++ struct
  • Load/save implemented in ConfigManager
  • HTML form element added with proper ID
  • Template variable added to config_page.cpp
  • JavaScript variable added to save handler
  • JSON key matches between JS and C++
  • Input validation added if needed
  • Documentation updated

This quick reference should help maintain consistency across all configuration layers while following the established patterns.