Hallo zusammen,
inspiriert von dem Light Weather Script und der daraus entstanden Aufnahme in den Adapter Adapter awtrix-light habe ich folgende Erweiterung erstellt:
Dieses Skript verarbeitet Unwetterwarnungen des DWD und stellt sie auf AWTRIX Light dar. Es setzt Warnstufen um, zeigt passende Icons und Farben an und steuert die Sichtbarkeit der Warnmeldungen.
 Funktionen des Skripts:
 Funktionen des Skripts:
 Automatische Aktivierung der Unwetter-Apps, je nach Anzahl der Warnungen
 Automatische Aktivierung der Unwetter-Apps, je nach Anzahl der Warnungen
 Dynamische Anpassung des Icons, passend zur Warnart (z. B. Gewitter, Sturm, Schnee)
 Dynamische Anpassung des Icons, passend zur Warnart (z. B. Gewitter, Sturm, Schnee)
 Änderung der Text- und Hintergrundfarbe, basierend auf der Warnstufe
 Änderung der Text- und Hintergrundfarbe, basierend auf der Warnstufe
 Verarbeitung von mehreren Warnmeldungen (bis zu drei gleichzeitig)
 Verarbeitung von mehreren Warnmeldungen (bis zu drei gleichzeitig)
Beispiel 1:

Beispiel 2:

 Der Code im Überblick:
 Der Code im Überblick:
// Hilfsfunktion für Sichtbarkeit
function setWarningVisibility(value) {
    setState('awtrix-light.0.apps.unwettera.visible', value >= 1);
    setState('awtrix-light.0.apps.unwetterb.visible', value >= 2);
    setState('awtrix-light.0.apps.unwetterc.visible', value >= 3);
}
/// Hilfsfunktion für Icons
function setWarningIcon(app, type) {
    const icons = {
        0: '49299', // Thunderstorm
        1: '3363',  // Wind/Storm
        2: '49300', // Rain
        3: '2289',  // Snow
        4: '17055', // Fog
        5: '55543', // Frost
        6: '24231', // Ice
        7: '22866', // Thawing
        8: '55544', // Heat
        default: '16754'
    };
    setState(`awtrix-light.0.apps.${app}.icon`, icons[type] || icons.default);
}
// Hilfsfunktion für Farben
function setWarningColor(app, level) {
    const colors = {
        0: { text: '#ffff00', bg: '#000000' },
        1: { text: '#ffff00', bg: '#000000' },
        2: { text: '#ffff00', bg: '#000000' },
        3: { text: '#ff0000', bg: '#000000' },
        4: { text: '#ffffff', bg: '#ff0000' },
        default: { text: '#ffffff', bg: '#000000' }
    };
    const color = colors[level] || colors.default;
    setState(`awtrix-light.0.apps.${app}.textColor`, color.text);
    setState(`awtrix-light.0.apps.${app}.backgroundColor`, color.bg);
}
// Sichtbarkeit aktualisieren
on({ id: 'dwd.0.numberOfWarnings', change: 'ne' }, (obj) => {
    setWarningVisibility(obj.state?.val ?? 0);
});
// Warnungsdetails für alle drei Apps setzen
['unwettera', 'unwetterb', 'unwetterc'].forEach((app, index) => {
    on({ id: `dwd.0.warning${index}.type`, change: 'any' }, (obj) => {
        setWarningIcon(app, obj.state?.val ?? 0);
    });
    on({ id: `dwd.0.warning${index}.text`, change: 'any' }, (obj) => {
        setState(`awtrix-light.0.apps.${app}.text`, obj.state?.val || '');
    });
    on({ id: `dwd.0.warning${index}.level`, change: 'any' }, (obj) => {
        setWarningColor(app, obj.state?.val ?? 0);
    });
});
 Voraussetzungen:
 Voraussetzungen:
 Awtrix Light Adapter
Awtrix Light Adapter
 DWD Adapter
DWD Adapter
 Folgende Icons auf dem Gerät installiert:
Folgende Icons auf dem Gerät installiert: 
 Es müssen 3 Experten-Apps angelegt sein:
Es müssen 3 Experten-Apps angelegt sein:unwettera
unwetterb
unwetterc
Da ich weder Progammierer noch Softwareentwickler bin, geht bei der Kritik milde mit mir um.
Um Verbesserungsvorschläge oder Ideen bin ich dankbar.
 
		
	 
		
	
