added lighting settings to UI and prefs

This commit is contained in:
2026-01-20 11:24:38 +01:00
parent 0197266418
commit 9312ceb22b
3 changed files with 85 additions and 5 deletions

View File

@@ -26,6 +26,10 @@ float calibratedPoints[NUM_CHANNELS][5] = {
{0.0f, 26.0f, 50.0f, 76.0f, 99.0f} {0.0f, 26.0f, 50.0f, 76.0f, 99.0f}
}; };
uint8_t lightingHue = 0;
uint8_t lightingSaturation = 255;
uint8_t lightingBrightness = 255;
bool overrideActive[NUM_CHANNELS] = {false}; bool overrideActive[NUM_CHANNELS] = {false};
ConnectionState connectionState = STATE_DISCONNECTED; ConnectionState connectionState = STATE_DISCONNECTED;
@@ -107,6 +111,14 @@ void coreInit() {
} }
} }
lightingHue = prefs.getUChar("light_hue", 0);
lightingSaturation = prefs.getUChar("light_sat", 255);
lightingBrightness = prefs.getUChar("light_bright",255);
Serial.printf("Lighting loaded (0255): H=%d S=%d B=%d\n",
lightingHue, lightingSaturation, lightingBrightness);
// Start UDP with runtime port // Start UDP with runtime port
udp.begin(udpPort); udp.begin(udpPort);
Serial.print("Listening on UDP port "); Serial.print("Listening on UDP port ");

View File

@@ -23,6 +23,11 @@ extern float logicalPoints[5];
extern float calibratedPoints[NUM_CHANNELS][5]; extern float calibratedPoints[NUM_CHANNELS][5];
extern bool overrideActive[NUM_CHANNELS]; extern bool overrideActive[NUM_CHANNELS];
// Lighting parameters (0255 range for now)
extern uint8_t lightingHue; // 0255
extern uint8_t lightingSaturation; // 0255
extern uint8_t lightingBrightness; // 0255
// State // State
extern ConnectionState connectionState; extern ConnectionState connectionState;

View File

@@ -96,6 +96,24 @@ void calOverrideSwitchCallback(Control *sender, int type) {
} }
} }
} }
void lightingSaveCallback(Control *sender, int type) {
if (type != B_UP) return; // avoid double-trigger
prefs.putUChar("light_hue", lightingHue);
prefs.putUChar("light_sat", lightingSaturation);
prefs.putUChar("light_bright", lightingBrightness);
Serial.printf("Lighting saved (0255): H=%d S=%d B=%d\n",
lightingHue, lightingSaturation, lightingBrightness);
}
static int toSlider(uint8_t v) {
return (int)((v / 255.0f) * 100.0f);
}
static uint8_t fromSlider(int v) {
return (uint8_t)((v / 100.0f) * 255.0f);
}
// ------------------------------- // -------------------------------
// UI init // UI init
@@ -213,13 +231,58 @@ void uiInit(uint16_t& tabSettings, uint16_t& tabLighting, uint16_t& tabCalibrati
restartCallback restartCallback
); );
// Lighting tab placeholder // -------------------------------
// Lighting Controls
// -------------------------------
// Hue slider (0360)
ESPUI.addControl( ESPUI.addControl(
ControlType::Label, ControlType::Slider,
"Lighting Placeholder", "Hue",
"Coming soon...", String(toSlider(lightingHue)),
ControlColor::Sunflower,
tabLighting,
[](Control *sender, int type) {
int sliderVal = sender->value.toInt(); // 0100
lightingHue = fromSlider(sliderVal); // convert to 0255
Serial.printf("Lighting Hue changed (RAM only): %d\n", lightingHue);
}
);
// Saturation slider (0100)
ESPUI.addControl(
ControlType::Slider,
"Saturation",
String(toSlider(lightingSaturation)),
ControlColor::Carrot,
tabLighting,
[](Control *sender, int type) {
int sliderVal = sender->value.toInt(); // 0100
lightingSaturation = fromSlider(sliderVal);
Serial.printf("Lighting Saturation updated (RAM only): %d\n", lightingSaturation);
}
);
// Brightness slider (0100)
ESPUI.addControl(
ControlType::Slider,
"Brightness",
String(toSlider(lightingBrightness)),
ControlColor::Emerald, ControlColor::Emerald,
tabLighting tabLighting,
[](Control *sender, int type) {
int sliderVal = sender->value.toInt(); // 0100
lightingBrightness = fromSlider(sliderVal);
Serial.printf("Lighting Brightness updated (RAM only): %d\n", lightingBrightness);
}
);
ESPUI.addControl(
ControlType::Button,
"Save Lighting Settings",
"Save",
ControlColor::Emerald,
tabLighting,
lightingSaveCallback
); );
// ------------------------------- // -------------------------------