diff --git a/gaugemqttcontinuous.py b/gaugemqttcontinuous.py index 71851e0..29ccbb8 100644 --- a/gaugemqttcontinuous.py +++ b/gaugemqttcontinuous.py @@ -327,7 +327,11 @@ for g in gauges: leds_green.append(Pin(g["green_pin"], Pin.OUT, value=0)) total_backlight_leds = num_gauges * (BACKLIGHT_LEDS_PER_GAUGE + STATUS_LEDS_PER_GAUGE) -leds_bl = NeoPixel(Pin(BACKLIGHT_PIN), total_backlight_leds) +leds_bl = ( + NeoPixel(Pin(BACKLIGHT_PIN), total_backlight_leds) + if total_backlight_leds > 0 + else None +) backlight_color = [(0, 0, 0) for _ in range(num_gauges)] backlight_brightness = [100 for _ in range(num_gauges)] @@ -339,10 +343,6 @@ status_led_green = [False for _ in range(num_gauges)] _bl_dirty_since = None _BL_SAVE_DELAY_MS = 5000 -backlight_color = [(0, 0, 0) for _ in range(num_gauges)] -backlight_brightness = [100 for _ in range(num_gauges)] -backlight_on = [False for _ in range(num_gauges)] - def _flush_backlight(client): for i in range(num_gauges): @@ -391,9 +391,11 @@ def set_backlight_color(gauge_idx, r, g, b, brightness=None): leds_per_gauge = BACKLIGHT_LEDS_PER_GAUGE + STATUS_LEDS_PER_GAUGE base_idx = gauge_idx * leds_per_gauge for j in range(BACKLIGHT_LEDS_PER_GAUGE): - leds_bl[base_idx + j] = (int(g * scale), int(r * scale), int(b * scale)) + if leds_bl: + leds_bl[base_idx + j] = (int(g * scale), int(r * scale), int(b * scale)) _update_status_leds(gauge_idx) - leds_bl.write() + if leds_bl: + leds_bl.write() _mark_bl_dirty() @@ -411,13 +413,17 @@ def set_backlight_brightness(gauge_idx, brightness): leds_per_gauge = BACKLIGHT_LEDS_PER_GAUGE + STATUS_LEDS_PER_GAUGE base_idx = gauge_idx * leds_per_gauge for j in range(BACKLIGHT_LEDS_PER_GAUGE): - leds_bl[base_idx + j] = (int(g * scale), int(r * scale), int(b * scale)) + if leds_bl: + leds_bl[base_idx + j] = (int(g * scale), int(r * scale), int(b * scale)) _update_status_leds(gauge_idx) - leds_bl.write() + if leds_bl: + leds_bl.write() _mark_bl_dirty() def _update_status_leds(gauge_idx): + if not leds_bl: + return leds_per_gauge = BACKLIGHT_LEDS_PER_GAUGE + STATUS_LEDS_PER_GAUGE base_idx = gauge_idx * leds_per_gauge + BACKLIGHT_LEDS_PER_GAUGE @@ -443,7 +449,8 @@ def set_status_led(gauge_idx, led_type, state): elif led_type == "green": status_led_green[gauge_idx] = state _update_status_leds(gauge_idx) - leds_bl.write() + if leds_bl: + leds_bl.write() # ---------------------------------------------------------------------------