Queue für Notification LED (RGB)

Moin…
ich bin mir unsicher in welches Unterforum dies gehört… gerne passend verschieben, danke.


Ich nutze seit längerem eine RGB LED um den Status bestimmter Geräte zu signalisieren. Dabei steht jede Farbe für einen bestimmten Status. z.B.:

  • Weiß → “Waschmaschine fertig und noch nicht entleert”
  • Orange → “Trockner fertig und noch nicht entleert”
  • Rot → “Partikelsensor-Wert >X”

Nun habe ich aber das ganze so gebastelt, dass beim Eintritt des Status dann entsprechend die Farbe gesetzt wird (Genauer gesagt ein Pulse-Effekt in der Farbe).

Das Problem: Ein Status/eine Farbe überschreibt dadurch eine andere, die möglichweise noch aktiv war.

Wenn ich also z.B. die fertige Waschmaschine noch nicht entleert habe, aber dann der Partikelsensor über Wert X steigt, ist die LED Rot und ich erkenne nichts mehr zur Waschmaschine (weiß)

Idee: Statt die LED direkt anzusteuern, soll eine Information in eine queue aufgenommen werden, die dann geloopt wird.

Meine Idee wäre in etwa so:
(ist halt kein echter code… sondern nur eine grobe Skizzierung der Idee)

if "waschmashine done and still not emptied"
    set notification.washing-machine color white
    set notification.washing-machine status on
endif
if "Particelsensor >X"
    set notification.particle-sensor color red
    set notification.particle-sensor status on
endif

Funktion zum ansteuern der LED:

function pulse-light() {
    set RGB
    turn light on
    pause 1s
    turn light off
}

Loop welcher ständig läuft

loop
    get list of notification.* = status-on with value of color (aka generate queue)
    if no status-on
        do pause 1s
    else
        for each status-on
            do pulse-light()
        done
    endif
loop off

Habt ihr eine Idee, wie das am besten mit Automationen/Scripts/etc… oder gar als Addon umgesetzt werden könnte?

danke und vg