Ich steuere mit einem Script ein Homematic-LED-Display an. Jede der 16 LEDs hat 3 Werte für die drei Farben, die angezeigt werden können. IPS ändert nach dem verlassen des Display-Programms die Zeilen und trägt, die Kommentare in mit den eckigen Klammern ein. Warum?
Das Programm läuft übrigens…
// Bitwert der einzelenen LEDs
$LED7_rot = 4096;
$LED7_gruen = 8192;
$LED7_orange = 12288 /*[Objekt #12288 existiert nicht]*/;
$LED8_aus = 0;
$LED8_rot = 16384 /*[Objekt #16384 existiert nicht]*/;
$LED8_gruen = 32768 /*[Objekt #32768 existiert nicht]*/;
$LED8_orange = 49152 /*[Objekt #49152 existiert nicht]*/;
$LED9_aus = 0;
$LED9_rot = 65536 /*[Kein(e)]*/;
$LED9_gruen = 131072;
Hier das Display, um das es geht:
Die linken LEDs zeigen Füllstandswerte in % an. Je nach dem, ob die LED Heizungspuffer leuchtet oder die Zisterne.
Bei Interesse, hier das komplette Programm, das zyklisch aufgerufen wird.
// Bitwert der einzelenen LEDs
$LED1_aus = 0;
$LED1_rot = 1;
$LED1_gruen = 2;
$LED1_orange = 3;
$LED2_aus = 0;
$LED2_rot = 4;
$LED2_gruen = 8;
$LED2_orange = 12;
$LED3_aus = 0;
$LED3_rot = 16;
$LED3_gruen = 32;
$LED3_orange = 48;
$LED4_aus = 0;
$LED4_rot = 64;
$LED4_gruen = 128;
$LED4_orange = 192;
$LED5_aus = 0;
$LED5_rot = 256;
$LED5_gruen = 512;
$LED5_orange = 768;
$LED6_aus = 0;
$LED6_rot = 1024;
$LED6_gruen = 2048;
$LED6_orange = 3072;
$LED7_aus = 0;
$LED7_rot = 4096;
$LED7_gruen = 8192;
$LED7_orange = 12288 /*[Objekt #12288 existiert nicht]*/;
$LED8_aus = 0;
$LED8_rot = 16384 /*[Objekt #16384 existiert nicht]*/;
$LED8_gruen = 32768 /*[Objekt #32768 existiert nicht]*/;
$LED8_orange = 49152 /*[Objekt #49152 existiert nicht]*/;
$LED9_aus = 0;
$LED9_rot = 65536 /*[Kein(e)]*/;
$LED9_gruen = 131072;
$LED9_orange = 196608;
$LED10_aus = 0;
$LED10_rot = 262144;
$LED10_gruen = 524288;
$LED10_orange = 786432;
$LED11_aus = 0;
$LED11_rot = 1048576;
$LED11_gruen = 2097152;
$LED11_orange = 3145728;
$LED12_aus = 0;
$LED12_rot = 4194304;
$LED12_gruen = 8388608;
$LED12_orange = 12582912;
$LED13_aus = 0;
$LED13_rot = 16777216;
$LED13_gruen = 33554432;
$LED13_orange = 50331648;
$LED14_aus = 0;
$LED14_rot = 67108864;
$LED14_gruen = 134217728;
$LED14_orange = 201326592;
$LED15_aus = 0;
$LED15_rot = 268435456;
$LED15_gruen = 536870912;
$LED15_orange = 805306368;
$LED16_aus = 0;
$LED16_rot = 1073741824;
$LED16_gruen = 2147483648;
$LED16_orange = 3221225472;
$Matrix = 0;
//Berechnung des LED-Werts ($Matrix). Dieser representiert die eingeschalteten LEDs mit ihrer Farbe
//*
//Prüfen ob Solaranalage aktiv LED11_gruen
$Solar_in_Betrieb=GetValue(45679 /*[ETA-SH20\Solar Status]*/);
$Vergleichswert = "Kollektortemperatur niedrig";
//if (strcmp($Solar_in_Betrieb, $Vergleichswert)==0)
if ($Solar_in_Betrieb == $Vergleichswert)
{($Matrix = $LED11_rot);
}
else {($Matrix = $LED11_gruen);
}
//Anzeigen des Zisternenfüllstands
////Zisternen Status-LED16 einschalten (orange)
$Matrix = $Matrix+$LED16_orange;
////Ermitteln des Zisternenfüllstands in %
$Zisterne=GetValue(19527 /*[MC-Hx Modul - MC-Hx08000029\Zisterne Füllstand]*/);
////90%
if ($Zisterne >= 90 AND $Zisterne <= 100)
$Matrix = $Matrix+$LED1_gruen+$LED2_gruen+$LED3_gruen+$LED4_gruen+$LED5_gruen+$LED6_gruen+$LED7_gruen+$LED8_gruen;
else
echo ".";
////80%
if ($Zisterne >= 80 AND $Zisterne <= 89.9)
$Matrix = $Matrix+$LED1_rot+$LED2_gruen+$LED3_gruen+$LED4_gruen+$LED5_gruen+$LED6_gruen+$LED7_gruen+$LED8_gruen;
else
echo ".";
////60%
if ($Zisterne>=60 AND $Zisterne<= 79.9)
$Matrix = $Matrix+$LED1_rot+$LED2_rot+$LED3_gruen+$LED4_gruen+$LED5_gruen+$LED6_gruen+$LED7_gruen+$LED8_gruen;
else
echo ".";
////50%
if ($Zisterne>=50 AND $Zisterne<= 59.9)
$Matrix = $Matrix+$LED1_rot+$LED2_rot+$LED3_rot+$LED4_gruen+$LED5_gruen+$LED6_gruen+$LED7_gruen+$LED8_gruen;
else
echo ".";
////40%
if ($Zisterne>=40 AND $Zisterne<= 49.9)
$Matrix = $Matrix+$LED1_rot+$LED2_rot+$LED3_rot+$LED4_rot+$LED5_gruen+$LED6_gruen+$LED7_gruen+$LED8_gruen;
else
echo ".";
////30%
if ($Zisterne>=30 AND $Zisterne<= 39.9)
$Matrix = $Matrix+$LED1_rot+$LED2_rot+$LED3_rot+$LED4_rot+$LED5_rot+$LED6_gruen+$LED7_gruen+$LED8_gruen;
else
echo "eee.";
////20%
if ($Zisterne>=20 AND $Zisterne<= 29.9)
$Matrix = $Matrix+$LED1_rot+$LED2_rot+$LED3_rot+$LED4_rot+$LED5_rot+$LED6_rot+$LED7_gruen+$LED8_gruen;
else
echo ".";
////10%
if ($Zisterne>=10 AND $Zisterne<= 19.9)
$Matrix = $Matrix+$LED1_rot+$LED2_rot+$LED3_rot+$LED4_rot+$LED5_rot+$LED6_rot+$LED7_rot+$LED8_gruen;
else
echo ".";
////>10%
if ($Zisterne>=0 AND $Zisterne<= 9.9)
$Matrix = $Matrix+$LED1_aus+$LED2_aus+$LED3_aus+$LED4_aus+$LED5_aus+$LED6_aus+$LED7_aus+$LED8_rot;
else
echo ".";
//Ausgabe des LED-Werts ($Matrix)
HM_WriteValueString(12887 /*[Homematic-Komponenten\Displays\Display1\KEY]*/,"ALL_LEDS",$Matrix);
///////////////////////////////////////////////////
sleep(10);
//////////////////////////////////////////////////
//Starten Pufferspeicher-Anzeige
$Matrix = 0;
//Berechnung des LED-Werts ($Matrix). Dieser representiert die eingeschalteten LEDs mit ihrer Farbe
//*
//Prüfen ob Solaranalage aktiv LED11_gruen
$Solar_in_Betrieb=GetValue(45679 /*[ETA-SH20\Solar Status]*/);
$Vergleichswert = "Kollektortemperatur niedrig";
//if (strcmp($Solar_in_Betrieb, $Vergleichswert)==0)
if ($Solar_in_Betrieb == $Vergleichswert)
{($Matrix = $LED11_rot);
}
else {($Matrix = $LED11_gruen);
}
//Anzeigen des Pufferspeichers
////Pufferspeicher-Status-LED14 (orange) einschalten
$Matrix = $Matrix+$LED14_orange;
////Ermitteln des Pufferspeichers in %
$Puffer=GetValue(14107 /*[ETA-SH20\Pufferladung]*/);
////90%
if ($Puffer >= 90 AND $Puffer <= 100)
$Matrix = $Matrix+$LED1_gruen+$LED2_gruen+$LED3_gruen+$LED4_gruen+$LED5_gruen+$LED6_gruen+$LED7_gruen+$LED8_gruen;
else
echo ".";
////80%
if ($Puffer >= 80 AND $Puffer <= 89.9)
$Matrix = $Matrix+$LED1_rot+$LED2_gruen+$LED3_gruen+$LED4_gruen+$LED5_gruen+$LED6_gruen+$LED7_gruen+$LED8_gruen;
else
echo ".";
////60%
if ($Puffer>=60 AND $Puffer<= 79.9)
$Matrix = $Matrix+$LED1_rot+$LED2_rot+$LED3_gruen+$LED4_gruen+$LED5_gruen+$LED6_gruen+$LED7_gruen+$LED8_gruen;
else
echo ".";
////50%
if ($Puffer>=50 AND $Puffer<= 59.9)
$Matrix = $Matrix+$LED1_rot+$LED2_rot+$LED3_rot+$LED4_gruen+$LED5_gruen+$LED6_gruen+$LED7_gruen+$LED8_gruen;
else
echo ".";
////40%
if ($Puffer>=40 AND $Puffer<= 49.9)
$Matrix = $Matrix+$LED1_rot+$LED2_rot+$LED3_rot+$LED4_rot+$LED5_gruen+$LED6_gruen+$LED7_gruen+$LED8_gruen;
else
echo ".";
////30%
if ($Puffer>=30 AND $Puffer<= 39.9)
$Matrix = $Matrix+$LED1_rot+$LED2_rot+$LED3_rot+$LED4_rot+$LED5_rot+$LED6_gruen+$LED7_gruen+$LED8_gruen;
else
echo "eee.";
////20%
if ($Puffer>=20 AND $Puffer<= 29.9)
$Matrix = $Matrix+$LED1_rot+$LED2_rot+$LED3_rot+$LED4_rot+$LED5_rot+$LED6_rot+$LED7_gruen+$LED8_gruen;
else
echo ".";
////10%
if ($Puffer>=10 AND $Puffer<= 19.9)
$Matrix = $Matrix+$LED1_rot+$LED2_rot+$LED3_rot+$LED4_rot+$LED5_rot+$LED6_rot+$LED7_rot+$LED8_gruen;
else
echo ".";
////>10%
if ($Puffer>=0 AND $Puffer<= 9.9)
$Matrix = $Matrix+$LED1_aus+$LED2_aus+$LED3_aus+$LED4_aus+$LED5_aus+$LED6_aus+$LED7_aus+$LED8_rot;
else
echo ".";
//Ausgabe des LED-Werts ($Matrix)
HM_WriteValueString(12887 /*[Homematic-Komponenten\Displays\Display1\KEY]*/,"ALL_LEDS",$Matrix);