Visuelle (Alarm)Meldungen [RGBW-868]

Möchte man während bestimmte Licht-Szenarien aktiv sind diese durch
visuelle Meldungen (z.B. Blau-Blinken) unterbrechen, dient nachfolgendes Skript.
Wenn jemand an der Haustür klingelt oder eine Almmeldung aufläuft kann dies so optisch signalisiert werden.
Die aktuellen RGB-Werte vom Stripe werden ermittelt, dann wird für die optische Meldung ausgegeben und anschließend die alte Licht-Szene wieder ausgegeben.

MST

$id = 12345 /*[OG\RGBW-868 #162 Gröny]*/;
$ist_rgb = GetValue(12345); // Color Status Variable vom RGBW
// in RGB zerlegen
$bl = ($ist_rgb & 255);
$gr = (($ist_rgb >> 8) & 255);
$rot = (($ist_rgb >> 16) & 255);
//echo $rot ."
";
//echo $gr ."
";
//echo $bl ."
";
// 0: alles Aus / 1: alles An / 2: Blinken langsam / 3: schnell / 4: Blitzen langsam / 5: schnell / 6: Fade langsam
PJ_DimRGBW($id,25,0,155,0,75,0,0,0); // Farbe nach Wahl
PJ_RunProgram($id, 3);
IPS_Sleep (5000); // 5 Sekunden schnell Blinken
PJ_SetRGBW($id, $rot, $gr, $bl, 0);
PJ_RunProgram($id, 1);

Schönes Beispiel für visuelle Alarmmeldung, danke!

Ich möchte obiges Script etwas aufboren und suche noch eine Idee. Ich möchte Meldungen länger anstehen lassen und Meldungen in Meldungen anzeigen. Beispiel:

Bei normaler Beleuchtung (weiß) kommt für 10 Minuten eine Waschmaschinen fertig Meldung (blau) Innerhalb dieser Zeit klingelt es für 5 Sekunden(rot).
Nun soll es, wenn die Klingelmeldung vorbei ist und die 10 Minuten noch nicht um sind, von rot auf blau wechseln. Nach den 10 Minuten von blau wieder auf weiß.
Aber wenn es am Ende der 10 Minuten klingelt soll es gleich von rot auf weiß zurück gehen.

Irgendwie brauche ich so was wie ein Stack der sich die Farbreihenfolge merkt. Schön wäre auch wenn man Prioritäten setzen könnte. Wenn Blau und Rot gleichzeitig kommen ist das Klingelsignal wichtiger.

Hat jemand eine Idee wie man das realisiert?

Hallo Heiner!

So 100% kann ich dir nicht folgen :smiley: Aber von dem was ich verstanden habe, würde ich mir Hilfs-Variablen vom Typ „String“ anlegen, darin dann die entsprechenden Farb- und Zeitwerte mit timestamp abspeichern (getrennt durch ein Trennzeichen wie z.B. „//“. Dann ein Skript alle X Sek/Min laufen lassen und nach und nach den String auswerten und abarbeiten lassen, quasi ein „Sende-Skript“. Während das „normale“ Skript immer nur die String Variable ergänzt…

Beide Skripte durch eine Semaphore oder so schützen, damit nicht gleichzeitig auf die String-Variable zugegriffen wird.

So etwas ähnliches mache ich bei meinen HomeMatic Displays (HMOULED16). Dazu gibt es auch irgendwo einen Thread.

Theoretisch eher schwer zu beschreiben, aber ich hoffe du kannst mir folgen :slight_smile:

Grüße,
Chris

So 100% kann ich dir nicht folgen

Dito :D:D
Aber ich werde mir mal dein HMOULED16 Thread anschauen.

Ah, gefunden :smiley:
Ansteuern aller LED Status anzeigen mit einem Befehl

Ich hab das nur noch etwas „ausgebaut“ und erweitert… Der String „LEDMatrix“ wäre dann quasi dein String mit Farben/Zeiten/…
Geht auch mehr so um die Methode, das halt etwas in einen String „gepuffert“ wird und dann durch eine Funktion nach und nach bearbeitet wird. Doof zu erklären :smiley:

Grüße,
Chris

Moin,
man kann das über ein Bitweisen vergleich erledigen. Das höchstwertige Bit gibt hierbei die höchste Priorität vor. Das beste… sowas geht auch mit PHP :stuck_out_tongue:
http://php.net/manual/de/language.operators.bitwise.php
Wem das zu kompliziert ist (ist aber Ressourcenschonend) der nimmt einfach ein paar Bool Variablen…
//Sven