HM-OU-LED16 (Statusanzeige mit 16 LED)

Hallo allerseits,

da ich schon lange diese HomeMatic Statusanzeige HM-OU-LED16 herumliegen habe, aber mich geweigert habe, die LED über Programme in der CCU2 zu steuern, wurde es Zeit selbst eine Lösung zu finden. Und wie ihr gleich sehen werdet, ist das gar nicht so schwer :smiley:

Es gibt sicher noch andere Wege, aber wenn man meinen Aufbau nachstellt, dann braucht man in seinen Skripten nur die „LED“-Variable zu setzen/verändern um das Statusdisplay richtig mit IPS verwenden zu können.

Wenn ihr das nachbaut, könnt ihr mit nur einem Skript jede LED vom Display einzeln durch ein IPS-Skript steuern. Jede LED kennt 4 Zustände (aus, rot, grün, orange).

Hier ein Foto, wie es dann aussehen könnte (die LED kommen, dank Handy-Cam, nicht so gut rüber, ist live besser erkennbar mit den Farben):

Über das HomeMatic WebInterface kann man unter „Einstellungen > Geräte > HM-OU-LED16“ auch noch einstellen, wie lange das Display eingeschaltet bleiben soll, nachdem ein LED-Status verändert wurde (0 = immer an). Zusätzlich kann die Helligkeit der LED von 0-15 eingestellt werden.
led16_einstellungen.png

Die HomeMatic Instanzen für jede LED müssen angelegt sein (Name ist unwichtig), dann muss pro Instanz eine Integer Variable „LED“ angelegt werden, damit es wie folgt aussieht:

Dann legt ihr ein Variablenprofil „HM.OU.LED16“ an, welches ihr den 16 selbst angelegten „LED“ Variablen zuweist, welches wie folgt aussieht:
Variablenprofil.jpg

Dann benötigt ihr dieses Skript, welches ihr irgendwo hinlegen könnt (ich habe es zu meinen selbst geschriebenen Funktionen gelegt):

<?
$Parent = IPS_GetParent($_IPS['VARIABLE']);
@HM_WriteValueString($Parent ,"LED_STATUS", $_IPS['VALUE']);
?>

In diesem Skript legt ihr 16 ausgelöste Ereignisse an, welche die 16 selbst angelegten „LED“ Variablen auf Veränderung überwachen. Das sieht dann so auszugsweise so aus:
Baum_Skript.mit.Ereignissen.jpg

Hier ein Beispiel wie man die 16 einzelnen LED jetzt ansteuern kann (Beispiel an LED01):

<?
$LED01id = 54988 /*[Hardware\HomeMatic\Wand-Display\DISPLAY01 (Flur unten)\LED01\LED]*/;

// SetValue($LED01id, 0);  // LED Status = AUS
SetValue($LED01id, 1);  // LED Status = rot
// SetValue($LED01id, 2);  // LED Status = grün
// SetValue($LED01id, 3);  // LED Status = orange
?>

FERTIG :cool:

Im Anhang findet ihr auch noch eine Beschriftungsvorlage für WORD.

Viel Spaß damit :slight_smile:

Grüße,
Chris

HM-DISPLAY_Beschriftungsvorlage.doc (29 KB)

Für alle die mit Variablen sparen wollen/müssen, habe ich noch eine 2. Variante geschrieben. Bei dieser Variante braucht ihr nur diese beiden Skripte, keine zusätzlichen Ereignisse oder Variablen!

Dieses Skript beinhaltet die Funktion (dieses Skript muss mit include in andere Skripte, zum LED ansteuern, eingebunden werden):

<?
// dieses Skript umbenennen in "HMOULED16.ips.php"
// alle Instanz-IDs anpassen auf die eigenen HomeMatic-Instanz-ID der jeweiligen LED (16 HM-Instanzen)

function LEDdisplay($led, $farbe) {
	switch ($led) {
			 case "LED01":
          $led = 26268 /*[Hardware\HomeMatic\Wand-Display\DISPLAY01 (Flur unten)\LED01]*/;
          break;

			 case "LED02":
          $led = 27605 /*[Hardware\HomeMatic\Wand-Display\DISPLAY01 (Flur unten)\LED02]*/;
          break;

			 case "LED03":
          $led = 18376 /*[Hardware\HomeMatic\Wand-Display\DISPLAY01 (Flur unten)\LED03]*/;
          break;

			 case "LED04":
          $led = 24475 /*[Hardware\HomeMatic\Wand-Display\DISPLAY01 (Flur unten)\LED04]*/;
          break;

			 case "LED05":
          $led = 37064 /*[Hardware\HomeMatic\Wand-Display\DISPLAY01 (Flur unten)\LED05]*/;
          break;

			 case "LED06":
          $led = 43012 /*[Hardware\HomeMatic\Wand-Display\DISPLAY01 (Flur unten)\LED06]*/;
          break;

			 case "LED07":
          $led = 31389 /*[Hardware\HomeMatic\Wand-Display\DISPLAY01 (Flur unten)\LED07]*/;
          break;

			 case "LED08":
          $led = 54945 /*[Hardware\HomeMatic\Wand-Display\DISPLAY01 (Flur unten)\LED08]*/;
          break;

			 case "LED09":
          $led = 37135 /*[Hardware\HomeMatic\Wand-Display\DISPLAY01 (Flur unten)\LED09]*/;
          break;

			 case "LED10":
          $led = 18252 /*[Hardware\HomeMatic\Wand-Display\DISPLAY01 (Flur unten)\LED10]*/;
          break;

			 case "LED11":
          $led = 22760 /*[Hardware\HomeMatic\Wand-Display\DISPLAY01 (Flur unten)\LED11]*/;
          break;

			 case "LED12":
          $led = 18033 /*[Hardware\HomeMatic\Wand-Display\DISPLAY01 (Flur unten)\LED12]*/;
          break;

			 case "LED13":
          $led = 49409 /*[Hardware\HomeMatic\Wand-Display\DISPLAY01 (Flur unten)\LED13]*/;
          break;

			 case "LED14":
          $led = 46433 /*[Hardware\HomeMatic\Wand-Display\DISPLAY01 (Flur unten)\LED14]*/;
          break;

			 case "LED15":
          $led = 59861 /*[Hardware\HomeMatic\Wand-Display\DISPLAY01 (Flur unten)\LED15]*/;
          break;

			 case "LED16":
          $led = 49816 /*[Hardware\HomeMatic\Wand-Display\DISPLAY01 (Flur unten)\LED16]*/;
          break;
	}
	
	switch ($farbe) {
			 case "aus":
          $farbe = "'0'";
          break;

			 case "rot":
          $farbe = "1";
          break;
          
          case "gruen":
          $farbe = "2";
          break;
          
          case "orange":
          $farbe = "3";
          break;
	}
	//echo "HM Instanz ID = ".$led."
";
	//echo "Farbe = ".$farbe."
";

	@HM_WriteValueString($led ,"LED_STATUS", $farbe);
}
?>

So könnte dann ein Beispiel-Skript aussehen:

<?
include 'HMOULED16.ips.php';

//LEDdisplay('LED01', 'aus');
LEDdisplay('LED01', 'rot');
//LEDdisplay('LED01', 'gruen');
//LEDdisplay('LED01', 'orange');
?>

Man könnte auch die ganzen Instanz-IDs automatisch auslesen lassen, aber dann muss der Baum mit den Instanzen korrekt aufgebaut sein. Ich denke die 16 IDs in der function auf seine eigenen IDs anpassen ist ein vertretbarer Aufwand :wink: :smiley:

Also je nachdem wie ihr was steuern/bedienen möchtet, könnt ihr die 1. oder die 2. Variante verwenden :slight_smile:

Grüße,
Chris

Beispiel für Variante 2, wie man verschiedene Aktoren/Dinge überwachen und die Status LED entsprechend setzen kann:

<?
include 'HMOULED16.ips.php';
// LED01-LED16 // aus, rot, gruen, orange

IPS_Sleep(2000);  // abwarten bis die HomeMatic Variablen den korrekten Status haben (z.B. Dimmer)

// LED01 - Fenster Schlafzimmer
if (GetValue(48838 /*[Hardware\HomeMatic\Tür-Fenster-Kontakt\KONTAKT02 (Fenster - Schlafzimmer)\Kontakt\STATE]*/) == true) {
	LEDdisplay('LED01', 'orange');  
}
else {
   LEDdisplay('LED01', 'aus');
}

// LED02 - Fenster Flur unten
if (GetValue(49002 /*[Hardware\HomeMatic\Tür-Fenster-Kontakt\KONTAKT03 (Fenster - Flur unten)\Kontakt\STATE]*/) == true) {
	LEDdisplay('LED02', 'orange');
}
else {
   LEDdisplay('LED02', 'aus');
}

// LED03 - Fenster Gästezimmer
if (GetValue(30290 /*[Hardware\HomeMatic\Tür-Fenster-Kontakt\KONTAKT07 (Fenster - Gästezimmer)\Kontakt\STATE]*/) == true) {
	LEDdisplay('LED03', 'orange');
}
else {
   LEDdisplay('LED03', 'aus');
}

// LED04 - Fenster Bad oben
if (GetValue(37164 /*[Hardware\HomeMatic\Tür-Fenster-Kontakt\KONTAKT05 (Fenster - Bad oben)\Kontakt\STATE]*/) == true) {
	LEDdisplay('LED04', 'orange');
}
else {
   LEDdisplay('LED04', 'aus');
}

// LED05 - Waschmaschine
if (GetValue(32439 /*[Hardware\HomeMatic\Zwischenstecker\L01 (Waschmaschine)\Messwerte\Aktiv_Inaktiv]*/) == true) {
	LEDdisplay('LED05', 'orange');
}
else {
   LEDdisplay('LED05', 'aus');
}

// LED06 - Wäschetrockner
if (GetValue(29270 /*[Hardware\HomeMatic\Zwischenstecker\L02 (Wäschetrockner)\Messwerte\Aktiv_Inaktiv]*/) == true) {
	LEDdisplay('LED06', 'orange');
}
else {
   LEDdisplay('LED06', 'aus');
}

// LED07 - Briefkasten
if (GetValue(12785 /*[Skripte & Variablen\Status\Post.im.Briefkasten]*/) == true) {
	LEDdisplay('LED07', 'orange');
}
else {
   LEDdisplay('LED07', 'aus');
}

// LED08 - Müllabfuhr kommt am nächsten Tag
$schwarz = GetValue(45120 /*[Skripte & Variablen\Müllabfuhr\Termine Offline\Abholung\MORGEN (schwarze Tonne)]*/);
$braun = GetValue(40895 /*[Skripte & Variablen\Müllabfuhr\Termine Offline\Abholung\MORGEN (braune Tonne)]*/);
$gruen = GetValue(55806 /*[Skripte & Variablen\Müllabfuhr\Termine Offline\Abholung\MORGEN (grüne Tonne)]*/);
$gelb = GetValue(40138 /*[Skripte & Variablen\Müllabfuhr\Termine Offline\Abholung\MORGEN (gelber Sack)]*/);
if ($schwarz OR $braun OR $gruen OR $gelb) {
	LEDdisplay('LED08', 'orange');
}
else {
   LEDdisplay('LED08', 'aus');
}

// LED09 - Deckenlampe Wohnzimmer
if (GetValue(35879 /*[Hardware\HomeMatic\Dimmer\DIM02 (Wohnzimmer hinten - Deckenlampe)\Dimmer\LEVEL]*/) > 0) {
	LEDdisplay('LED09', 'orange');
}
else {
   LEDdisplay('LED09', 'aus');
}

// LED10 - Stehlampe 1 Wohnzimmer
if (GetValue(45070 /*[Hardware\HomeMatic\Dimmer\DIM01 (Wohnzimmer Stehlampe 1)\Dimmer\LEVEL]*/) > 0) {
	LEDdisplay('LED10', 'orange');
}
else {
   LEDdisplay('LED10', 'aus');
}

// LED11 - Stehlampe 2 Wohnzimmer
if (GetValue(30385 /*[Hardware\HomeMatic\Dimmer\DIM04 (Wohnzimmer Stehlampe 2)\Dimmer\LEVEL]*/) > 0) {
	LEDdisplay('LED11', 'orange');
}
else {
   LEDdisplay('LED11', 'aus');
}

// LED12 - Stehlampe 3 Wohnzimmer
if (GetValue(50716 /*[Hardware\HomeMatic\Zwischenstecker\L07 (Stehlampe 3 - Wohnzimmer vorne)\Schalter\STATE]*/) == true) {
	LEDdisplay('LED12', 'orange');
}
else {
   LEDdisplay('LED12', 'aus');
}

// LED13 - Stehlampe 4 Gästezimmer
if (GetValue(48463 /*[Hardware\HomeMatic\Zwischenstecker\L09 (Stehlampe 4 - Gästezimmer)\Schalter\STATE]*/) == true) {
	LEDdisplay('LED13', 'orange');
}
else {
   LEDdisplay('LED13', 'aus');
}

// LED14 - LED Streifen im Wohnzimmer (vorne und hinten)
$led1c = GetValue(33787 /*[Hardware\RGBW\RGBW-868 (Wohnzimmer Durchgang)\Color]*/);
$led1w = GetValue(35445 /*[Hardware\RGBW\RGBW-868 (Wohnzimmer Durchgang)\White]*/);
$led2c = GetValue(43321 /*[Hardware\RGBW\RGBW-868 (Wohnzimmer hinten / Aquarium-Seite)\Color]*/);
$led2w = GetValue(35007 /*[Hardware\RGBW\RGBW-868 (Wohnzimmer hinten / Aquarium-Seite)\White]*/);
if (($led1c > 0) OR ($led1w > 0) OR ($led2c > 0) OR ($led2w > 0)) {
	LEDdisplay('LED14', 'orange');
}
else {
   LEDdisplay('LED14', 'aus');
}

// LED15 - Fernseher im Wohnzimmer (Denon und TV)
$tv = GetValue(51342 /*[Skripte & Variablen\Szenen\Anzeigegerät\TV]*/);
$denon = GetValue(11856 /*[DENON\Main Zone\Power]*/);
if ($tv OR $denon) {
	LEDdisplay('LED15', 'orange');
}
else {
   LEDdisplay('LED15', 'aus');
}

// LED16 - Alarmanlage
if (GetValue(20415 /*[Skripte & Variablen\Alarmanlage\Alarmanlage-Status]*/) == true) {
	LEDdisplay('LED16', 'orange');
}
else {
   LEDdisplay('LED16', 'aus');
}
?>

Dieses Skript wird getriggert durch die Variablenänderung der im Skript abgefragten Variablen:

-Chris-

Hallo Chris,
nur mal schnell ein Vielen Dank für die prima Anleitung - hat mir sehr geholfen, ich habe mich für Variante 2 entschieden :slight_smile:

Viele Grüße
Peter

Zunächst allen IPS-Kranken alles Gute für 2016 und keine Genesung von dieser Krankheit, damit diese Infektion erhalten bleibt.:smiley:

Ich hatte das mit div.Programmen auf der CCU realisiert.
Ist für mich ziemlich unübersichtlich.

Jetzt werde ich mal deinen Vorschlag versuchen. Danke dafür

Heute kam bei mir auch die HM-OU-LED16 an … freu …

Ans Netz gehangen, angelernt, alles easy. Aber ich habe nur einen LAN-Adapter und im Homematic Konfigurator kann man NICHTS einstellen, also auch nicht die Anzeigedauer und Helligkeit wie hier im Forum schon gesehen.
Hat das Problem noch jemand? Habe am letzten WE auf 1.520 upgedated!?!

Ciao

Geht bei mir über die CCU2! Firmware 1.1

Aber nur für alle Kanäle gemeinsam

Danke, aber ich habe keine CCU, nur den LAN Adapter :frowning:

Sorry, da kann ich leider nicht helfen.:mad:

Ich habe es geschafft :slight_smile: :slight_smile: :slight_smile:

Nach unzähligen Aufrufen des Konfigurators ohne Erfolg habe ich in IPS ein Instance mit Kanal 0 angelegt. IPS hat dann einige Maintenance Variablen angelegt. War aber nix sinnvolles dabei, Danach wieder den Konfigurator aufgerufen und siehe da … jetzt waren die Einstellungen da … freu!

Vielleicht hilft es jemanden in Zukunft!

Danke & CIao

Vielen Dank für das Skript.
Gibt es auch die Möglichkeit die Helligkeit zu steuern?
ZB. sollte das Display Nachts dunkler als Tags leuchten.

Gruß
Thomas

Bin mir nicht ganz sicher, aber wenn man ein CCU hat sollte es möglich sein. Wenn man nur einen LAN-Adapter hat geht es nicht. Sonst nur über den HM-Konfigurator.

Auf der CCU ist es mir schon klar, wie man es einstellt.
Eigentlich wollte ich von IPS aus die Helligkeiten schalten - Tags heller als Nachts

Schau einfach mal in die Datenpunkte PDF von eq3…wenn da nichts passendes steht, dann geht es nicht über IPS. Wenn da was steht, dann weißte wie es geht :wink: Aber ich würde mal behaupten > geht nicht über IPS.

Grüße,
Chris