소스 검색

on page refresh, load current led status

tuanchris 3 달 전
부모
커밋
29d546f6e3
5개의 변경된 파일30개의 추가작업 그리고 6개의 파일을 삭제
  1. 3 3
      main.py
  2. 13 0
      modules/led/dw_led_controller.py
  3. 12 1
      static/js/led-control.js
  4. 2 2
      templates/base.html
  5. 0 0
      templates/led.html

+ 3 - 3
main.py

@@ -1421,9 +1421,9 @@ async def playlists(request: Request):
 async def image2sand(request: Request):
     return templates.TemplateResponse("image2sand.html", {"request": request, "app_name": state.app_name})
 
-@app.get("/wled")
-async def wled(request: Request):
-    return templates.TemplateResponse("wled.html", {"request": request, "app_name": state.app_name})
+@app.get("/led")
+async def led_control_page(request: Request):
+    return templates.TemplateResponse("led.html", {"request": request, "app_name": state.app_name})
 
 # DW LED control endpoints
 @app.get("/api/dw_leds/status")

+ 13 - 0
modules/led/dw_led_controller.py

@@ -459,6 +459,18 @@ class DWLEDController:
         if not self._initialized:
             self._initialize_hardware()
 
+        # Get color slots from segment if available
+        colors = []
+        if self._segment and hasattr(self._segment, 'colors'):
+            for color_int in self._segment.colors[:3]:  # Get up to 3 colors
+                # Convert integer color to hex string
+                r = (color_int >> 16) & 0xFF
+                g = (color_int >> 8) & 0xFF
+                b = color_int & 0xFF
+                colors.append(f"#{r:02x}{g:02x}{b:02x}")
+        else:
+            colors = ["#ff0000", "#000000", "#0000ff"]  # Defaults
+
         status = {
             "connected": self._initialized,
             "power_on": self._powered_on,
@@ -469,6 +481,7 @@ class DWLEDController:
             "current_palette": self._current_palette_id,
             "speed": self._speed,
             "intensity": self._intensity,
+            "colors": colors,
             "effect_running": self._effect_thread is not None and self._effect_thread.is_alive()
         }
 

+ 12 - 1
static/js/led-control.js

@@ -341,7 +341,7 @@ async function saveCurrentEffectSettings(type) {
 
         if (!response.ok) throw new Error(`HTTP ${response.status}`);
 
-        const data = await response.json();
+        await response.json();
         showStatus(`${type.charAt(0).toUpperCase() + type.slice(1)} effect settings saved successfully`, 'success');
 
         // Refresh display
@@ -648,6 +648,17 @@ async function checkDWLedsStatus() {
             if (paletteSelect && data.current_palette !== undefined) {
                 paletteSelect.value = data.current_palette;
             }
+
+            // Update color pickers if colors are provided
+            if (data.colors && Array.isArray(data.colors)) {
+                const color1 = document.getElementById('dw-leds-color1');
+                const color2 = document.getElementById('dw-leds-color2');
+                const color3 = document.getElementById('dw-leds-color3');
+
+                if (color1 && data.colors[0]) color1.value = data.colors[0];
+                if (color2 && data.colors[1]) color2.value = data.colors[1];
+                if (color3 && data.colors[2]) color3.value = data.colors[2];
+            }
         } else {
             // Show error message from controller
             const errorMsg = data.error || 'Connection failed';

+ 2 - 2
templates/base.html

@@ -325,8 +325,8 @@
               <span class="material-icons">table_chart</span> Table Control
             </a>
             <a
-            class="{% if request.url.path == '/wled' %}active-tab{% else %}inactive-tab{% endif %} flex flex-1 flex-col items-center justify-center gap-1 border-b-[3px] py-3 text-xs font-medium sm:text-sm"
-            href="/wled"
+            class="{% if request.url.path == '/led' %}active-tab{% else %}inactive-tab{% endif %} flex flex-1 flex-col items-center justify-center gap-1 border-b-[3px] py-3 text-xs font-medium sm:text-sm"
+            href="/led"
           >
             <span class="material-icons">lightbulb</span> <span id="led-nav-label">LED</span>
           </a>

+ 0 - 0
templates/wled.html → templates/led.html