NEWS
Wertberechnung für 16-fach-LED-Statusanzeige in Javascript?
-
Hey All,
ich habe mir jetzt (neben den Planungen mit VIS) noch eine LED-Statusanzige zugelegt und will die programmieren.
ich habe schon Infos gefunden im HM-Forum, aber wollte fragen ob jemand das ganze schon in JavaScript gebaut hat …
Die Annahme was zu bauen basiert auf den Infos unter https://www.homematic-inside.de/tecbase ... -ansteuern das man immer alle LEDs setzen muss ... Inzwischen sagen aber einige Artikel das es auch einzeln geht ... ich teste heute Abend mal
Ingo F
-
pix hat das schon mal für Javascript gebaut und im http://homematic-forum.de/forum/viewtopic.php?f=48&t=17179&p=173126#p173126 veröffentlicht.
-
Jau,
Es nutzt die Möglichkeit, alle LED Soll-Zustände gleichzeitig mit einem Befehl zu senden. Das reduziert enorm den Funkverkehr.
Ich habe das Skript schon einige Zeit im Einsatz und nur Kleinigkeiten geändert. Ist keine Schönheit, aber Funktioniert bei mir 100%.
Ich kann keinen Support für das Skript geben.
kanal 1 ist bei mir Anwesenheit und deshalb besonders: Die LED-Anzeige wird bei Abwesenheit ausgeschaltet und bis zur Anwesenheit nicht wieder eingeschaltet. Auch nicht bei Änderungen. Gleiches gilt für Nachtruhe.
Unter // Definition der Bedigungen für das Setzen der LED für jeden Kanal 1-16
kann man festlegen, welche Werte und Bedingungen für die Farbwahl entscheidend sind.
Die Arrays sind nicht mehr so mein Stil, Objekte wären besser. But never change a running system. Es läuft und das zählt.
Mit der Taste von Kanal 1 lässt sich die Anzeige des gesamten gerätes ein/auschalten.
Ebenso gibt es dafür eine Variable für VIS.
Skript:
! ````
/* Flur LED 16 AnzeigeAnsteuerung, sowie An- und Abschaltung der Homematic HM-OU-LED16 im Flur
Dieses Script prüft den Status von Aktoren und Variablen und übersetzt ihn in
die 4 Datenpunkte (aus, rot, gelb, grün) der zugeordneten 16 Kanäle
Flur Statusanzeige, id 27626, IEQ0548963,
DP 'LED_STATUS' 0 = OFF; 1 = RED; 2 = GREEN; 3 = ORANGE
Besonderheit: prüfen ob der zu sendende Status schon gesetzt ist (Funk-Vermeidung), Zyklische Abfrage
Besonderheit 2: alle LED bei Nachtruhe / Abwesenheit mit einem Befehl aus (Status bleibt erhalten)
Besonderheit 3: alle LED bei kurzem Tastendruck auf dem Gerät (LED1) wieder ein! ToDo: Manche LED im Standard-Zustand auf AUS stellen, zB nach 1min grün
ToDo: Wenn Nachtruhe oder Abwesenheit Zusatnd dennoch aktualisieren
! Todo: Unterarray von hmouled[0-15] nicht mit new Array sondern mit var hmouled[x][]; hmouled[x][y] = .... anlegen
! erstellt: 01.05.2015 von Pix (ursprünglich am 27.1.2014 für CCU.IO)
02.05.2015 angepasst für ioBroker (Festlegung der Quellen nicht mehr in Variablen (früher idStatus)
03.05.2015 Anpassung für ioBroker nahezu abgeschlossen
04.05.2015 längere Kommentare vor Steuerungen der Kanäle korrigiert
06.05.2015 LED1 - Zeitsteuerung umgebaut
17.05.2015 Taste LED1 eingebaut
Abwesenheitsumschaltung wird auch bei Abwesenheit angezeigt (Ausnahmeregelung)
18.05.2015 Struktur geändert (Definitionen, Funktionen, Bedingungen)
01.06.2015 ToDo eingefügt
03.07.2015 Wassermelder Stati korrigiert
12.07.2015 Status Spülmaschine und Waschmaschine mit neuem Leistungsmesser eingepflegt (nur an/aus)
13.07.2015 Status Spülmaschine bekommt dritten Status 'fertig' = gelb
30.07.2015 neue Variablen Struktur Status.Raum...
25.09.2015 Kanal 13 Waschmaschine Status gelb für fertig zugefügt
30.10.2015 setStateDelayed an passenden Stellen eingebaut und [change: "ne", val: "true"] durch [change: "eq", val: "true"] ersetzt
28.10.2015 Hunde Allein wieder zugefügt auf Kanal 2
13.12.2015 Briefkasten Status Variable geändert und hier im Skript angepasst
06.01.2016 Klingel Status Variable jetzt boolean und hier angepasst
18.01.2016 alle_led_ein und alle_led_aus werden nun besser aufgerufen (Grund wird als Text übergeben)
25.01.2016 Array optimiert (kein new Array() mehr)
17.03.2016 Code optimiert
12.04.2016 weitere Code Optimierungen
*/
! //setState("hm-rpc.0.IEQ0548963.9.LED_STATUS", 2);
! // Datenpunkte, die für das AN/AUS der ganzen Anzeige relevant sind
var idNachtruhe = "javascript.0.Nachtruhe"/Status Nachtruhe/, // ValueList 'wach am Tag;Nachtruhe' (false/true)
idAlarmanlage = "javascript.0.Alarmanlage"/Status Alarmanlage (r)/, // 100003 ValueList: 'unscharf;scharf'
idAnwesenheit = "javascript.0.Anwesenheit"/Status Anwesenheit/, // CCU.IO Variable Anwesenheit (abwesend; anwesend)
idNeustartCCU = "hm-rega.0.950"/CCU_bootet/; // Homematic Variable Neustart (nach Reboot immer auf true)
! // BEGINN GERÄTE EINSTELLUNGEN ###########################################################
// Kanäle der HM-OU-LED16 Datenpunkt LED-STATUS IST
var idLED01 = "hm-rpc.0.IEQ0548963.1.LED_STATUS"/Statusanzeige:1 Anwesenheit.LED_STATUS/, // Statusanzeige:01 Anwesenheit
idLED02 = "hm-rpc.0.IEQ0548963.2.LED_STATUS"/Statusanzeige:2 TEST/, // Statusanzeige:02 Hunde allein
idLED03 = "hm-rpc.0.IEQ0548963.3.LED_STATUS"/Statusanzeige:3 DVB-T.LED_STATUS/, // Statusanzeige:03 Bluetooth Küche
idLED04 = "hm-rpc.0.IEQ0548963.4.LED_STATUS"/Statusanzeige:4 WC Fenster.LED_STATUS/, // Statusanzeige:04 WC Fenster
idLED05 = "hm-rpc.0.IEQ0548963.5.LED_STATUS"/Statusanzeige:5 Balkontür.LED_STATUS/, // Statusanzeige:05 Balkontür
idLED06 = "hm-rpc.0.IEQ0548963.6.LED_STATUS"/Statusanzeige:6 SZ Fenster.LED_STATUS/, // Statusanzeige:06 SZ Fenster
idLED07 = "hm-rpc.0.IEQ0548963.7.LED_STATUS"/Statusanzeige:7 WZ Fenster.LED_STATUS/, // Statusanzeige:07 WZ Fenster
idLED08 = "hm-rpc.0.IEQ0548963.8.LED_STATUS"/Statusanzeige:8 Klingel Wohnungstür.LED_STATUS/, // Statusanzeige:08 Klingel Wohnungstür
idLED09 = "hm-rpc.0.IEQ0548963.9.LED_STATUS"/Statusanzeige:9 Briefkasten.LED_STATUS/, // Statusanzeige:09 Briefkasten
idLED10 = "hm-rpc.0.IEQ0548963.10.LED_STATUS"/Statusanzeige:10 Aussentemperatur.LED_STATUS/, // Statusanzeige:10 Aussentemperatur
idLED11 = "hm-rpc.0.IEQ0548963.11.LED_STATUS"/Statusanzeige:11 WC kalt.LED_STATUS/, // Statusanzeige:11 WC kalt
idLED12 = "hm-rpc.0.IEQ0548963.12.LED_STATUS"/Statusanzeige:12 Luftfeuchte SZ.LED_STATUS/, // Statusanzeige:12 Luftfeuchte SZ
idLED13 = "hm-rpc.0.IEQ0548963.13.LED_STATUS"/Statusanzeige:13 Waschmaschine.LED_STATUS/, // Statusanzeige:13 Waschmaschine
idLED14 = "hm-rpc.0.IEQ0548963.14.LED_STATUS"/Statusanzeige:14 Spülmaschine.LED_STATUS/, // Statusanzeige:14 Spülmaschine
idLED15 = "hm-rpc.0.IEQ0548963.15.LED_STATUS"/Statusanzeige:15 Wassermelder.LED_STATUS/, // Statusanzeige:15 Wassermelder
idLED16 = "hm-rpc.0.IEQ0548963.16.LED_STATUS"/Statusanzeige:16 Klingel Haustür.LED_STATUS/, // Statusanzeige:16 Klingel HaustüridAnzeige_alleLED = "hm-rpc.0.IEQ0548963.1.ALL_LEDS"/*Statusanzeige:1 Anwesenheit.ALL_LEDS*/; // Alle LED mit einem Befehl steuern BidCos-RF.IEQ0548963:1.ALL_LEDS // http://homematic-forum.de/forum/viewtopic.php?f=31&t=8538#p60364 // http://homematic-forum.de/forum/viewtopic.php?f=27&t=20700&start=10#p173030 // setState(idAnzeige_alleLED, "2863180458");
! // Tasten der LED16-Anzeige
var idLED16Tastendruck01 = "BidCos-RF.IEQ0548963:1.PRESS_SHORT"; // Kanal 1 Taste
! //########################################################################################
// Funktionen zum Setzen der LED
// #######################################################################################
// Array anlegen und befüllen 0 = OFF; 1 = RED; 2 = GREEN; 3 = ORANGE
var led_farbe = [];
led_farbe[0] = "aus";
led_farbe[1] = "rot";
led_farbe[2] = "grün";
led_farbe[3] = "orange";var hmouled = []; // neues Array, alle LED-Farben einlesen aus Status-Variablen
// Kanal als String, Name, IST Farbe der LED (als Zahl), Datenpunkt der LED (nicht Zustand)
hmouled[0] = ['01', 'Anwesenheit', getState(idLED01), idLED01];
hmouled[1] = ['02', 'Hunde allein', getState(idLED02), idLED02];
hmouled[2] = ['03', 'Sonos', getState(idLED03), idLED03];
hmouled[3] = ['04', 'WC Fenster', getState(idLED04), idLED04];
hmouled[4] = ['05', 'Balkontür', getState(idLED05), idLED05];
hmouled[5] = ['06', 'Schlafzimmer Fenster', getState(idLED06), idLED06];
hmouled[6] = ['07', 'Wohnzimmer Fenster', getState(idLED07), idLED07];
hmouled[7] = ['08', 'Klingel Wohnungstür', getState(idLED08), idLED08];
hmouled[8] = ['09', 'Briefkasten', getState(idLED09), idLED09];
hmouled[9] = ['10', 'Aussentemperatur', getState(idLED10), idLED10];
hmouled[10]= ['11', 'WC kalt', getState(idLED11), idLED11];
hmouled[11]= ['12', 'Luftfeuchte Schlafzimmer', getState(idLED12), idLED12];
hmouled[12]= ['13', 'Waschmaschine', getState(idLED13), idLED13];
hmouled[13]= ['14', 'Spülmaschine', getState(idLED14), idLED14];
hmouled[14]= ['15', 'Wassermelder', getState(idLED15), idLED15];
hmouled[15]= ['16', 'Klingel Haustür', getState(idLED16), idLED16];! // LED abhängig von übergebener Kanal und Farbe setzen
function led_setzen (kanal,farbe) {
hmouled[0][2] = getState(idLED01); // Array IST Wert der Anzeige aktualisieren
hmouled[1][2] = getState(idLED02);
hmouled[2][2] = getState(idLED03);
hmouled[3][2] = getState(idLED04);
hmouled[4][2] = getState(idLED05);
hmouled[5][2] = getState(idLED06);
hmouled[6][2] = getState(idLED07);
hmouled[7][2] = getState(idLED08);
hmouled[8][2] = getState(idLED09);
hmouled[9][2] = getState(idLED10);
hmouled[10][2]= getState(idLED11);
hmouled[11][2]= getState(idLED12);
hmouled[12][2]= getState(idLED13);
hmouled[13][2]= getState(idLED14);
hmouled[14][2]= getState(idLED15);
hmouled[15][2]= getState(idLED16);kanal = kanal -1; var nachricht = ''; idLED_Kanal = hmouled[kanal][3]; var nachtruhe = getState(idNachtruhe).val, anwesenheit = getState(idAnwesenheit).val;
! // neue Code vom 17.3.2016, der verhindert, dass LED-Status bei Änderung während Abwesendheit oder Nachtruhe nicht gesetzt wird
if (hmouled[kanal][2] !== farbe) { // prüfen ob bereits gesetzt
setState(idLED_Kanal, farbe);
nachricht = 'Flur HM-OU-LED16:' + hmouled[kanal][0] + ' <' + hmouled[kanal][1] + '> auf ' + led_farbe[farbe] + ' gesetzt';
} else nachricht = 'Flur HM-OU-LED16:' + hmouled[kanal][0] + ' <' + hmouled[kanal][1] + '> war bereits auf ' + led_farbe[farbe] + ' gesetzt';
log(nachricht);
if ( nachtruhe === 1 ) { // ausser bei Nachtruhe
setTimeout(function() {
alle_led_aus('Nachtruhe');
}, 3000);
} else if (anwesenheit === 0 && kanal != 1) { // oder bei (Abwesenheit (wenn es nicht um Kanal 1 - Anwesenheit geht) )
setTimeout(function() {
alle_led_aus('Abwesenheit');
}, 3000);
}
// ENDE neue Code
}// Alle LED auf einmal einschalten
function alle_led_setzen(mitteilung) {! hmouled[0][2] = getState(idLED01); // Array IST Wert der Anzeige aktualisieren
hmouled[1][2] = getState(idLED02);
hmouled[2][2] = getState(idLED03);
hmouled[3][2] = getState(idLED04);
hmouled[4][2] = getState(idLED05);
hmouled[5][2] = getState(idLED06);
hmouled[6][2] = getState(idLED07);
hmouled[7][2] = getState(idLED08);
hmouled[8][2] = getState(idLED09);
hmouled[9][2] = getState(idLED10);
hmouled[10][2]= getState(idLED11);
hmouled[11][2]= getState(idLED12);
hmouled[12][2]= getState(idLED13);
hmouled[13][2]= getState(idLED14);
hmouled[14][2]= getState(idLED15);
hmouled[15][2]= getState(idLED16);
! var led; // 0;1;2;3
var all = 0;
var faktor = 1;for (var zaehler=0, zaehler_array=hmouled.length; zaehler <zaehler_array; 1/2/3/4/5/6/7/8/9/10/zaehler++)/{/led="hmouled[zaehler][2];" all="all" +/(faktor/*/led.val);/.val/sehr/wichtig/faktor="4" faktor;/log('led/'/hmouled[zaehler][0]/('/hmouled[zaehler][1]/')/hat/den/wert/led_farbe[led.val]/);/auch/}/setstate(idanzeige_alleled,/all.tostring());/led-anzeige/wird/mit/einem/string/gesetzt/var/rueckmeldung_ein="mitteilung" |/flur/hm-ou-led16/eingeschaltet/-/dieser/wurde/gesendet:/all.tostring();/log(rueckmeldung_ein,/'info');/alle/auf/einmal/ausschalten/function/alle_led_aus(mitteilung)/'0');/alles/aus/als/übergeben!/rueckmeldung_aus="mitteilung" hm-ou-led16:/ausgeschaltet';/log(rueckmeldung_aus,/########################################################################################/definition/der/bedigungen/für/das/setzen/jeden/kanal/1-16/#######################################################################################/anwesenheit/grün/anwesend;/rot/abwesend/besonderheit:/wenn/taster/benutzt,/dann/in/anderem/skript/gelb/(anwesenheit_aus)/bei/erkennung/abwesenheit/(evtl./nur/1s/später)/dazu/funktion/led_setzen/status/abgefragt,/eigentlich/nicht/gesetzt./soll/verhidnern,/dass/oder/nachtruhe/die/wieder/angehen,/obwohl/sie/sein/sollen./aber/von/aufgerufen/wird,/jedem/fal/anweseneheit/angezeigt./alarmanlage/angezeigt/on("javascript.0.anwesenheit"/*status/anwesenheit*/,/(data)/if/(data.state.val="=" 1)/led_setzen(1,2);/anwesend/(2)/else/0)/settimeout(function/()/led_setzen(1,1);/(1)/},/1000);/});/hunde/allein/on("javascript.0.status.hunde.allein"/*sind/wohnung*/(obj)/(obj.state.val)/led_setzen(2,1);/(!obj.state.val)/led_setzen(2,2);/küche/bluetooth/ein;/aus;/abfrage/funkzwischenstecker/on("javascript.0.status_kueche_bluetooth"/bluetooth*/led_setzen(3,1);/ein/led_setzen(3,2);/wc/fenster/zu;/orange/gekippt;/offen/on("javascript.0.status.wc.allefenster"/*status_wc_allefenster*/led_setzen(4,2);/zu/led_setzen(4,3);/gekippt/(3)/2)/led_setzen(4,1);/küchen/on("javascript.0.status.kueche.allefenster"/*status_kueche_allefenster*/led_setzen(5,2);/led_setzen(5,3);/led_setzen(5,1);/schlafzimmer/on("javascript.0.status.schlafzimmer.allefenster"/*status_schlafzimmer_allefenster*/led_setzen(6,2);/led_setzen(6,3);/led_setzen(6,1);/wohnzimmer/on("javascript.0.status.wohnzimmer.allefenster"/*status_wohnzimmer_allefenster*/led_setzen(7,2);/led_setzen(7,3);/led_setzen(7,1);/08/klingel/wohnungstür/on("javascript.0.status.klingel.wohnungstuer"/*status.klingel.wohnungstuer*/led_setzen(8,2);/wartend/led_setzen(8,1);/geklingelt/09/briefkasten/false/leer;/true/voll;/rot:/unbenutzt/on(/"javascript.0.status.briefkasten"/*status.briefkasten*/led_setzen(9,3);/voll/-kanal/led_setzen(9,2);/geleert/balkon/temperatur/t/<="0°C" (rot),/0°c/(orange),/4°c/(grün),/25°c="">33°C (rot)
Angezeigte Farben werden bewusst abgekoppelt von der Variable Aussentemperaturstatus
und sind gekoppelt an die tatsächliche Temperatur */
on("hm-rpc.1.CUX9002001.1.TEMPERATURE"/CUxD Wetter Sensoren Balkon.TEMPERATURE/, function (data) {
if (data.state.val <= 0 || data.state.val > 33) led_setzen(10,1); // Frost oder Hitze - Kanal 10 auf rot (1)
else if ((data.state.val > 0 && data.state.val <= 4) || (data.state.val >= 25 && data.state.val <= 33)) led_setzen(10,3); // Frostgefahr oder sehr warm - Kanal 10 auf orange (3)
else if (data.state.val > 4 && data.state.val < 25) led_setzen(10,2); // warm - Kanal 9 auf grün (2)
});! /* Kanal 11 - WC kalt
T < 18°C (rot),
18°C <= T < 20°C (orange),
T >= 20°C (grün)
Angezeigte Farben werden bewusst abgekoppelt von der Alarm-Variable WC kalt
und sind gekoppelt an die tatsächliche Temperatur /
on("hm-rpc.0.FEQ0064905.1.TEMPERATURE"/Thermostat WC Sensoren.TEMPERATURE/, function (data) {
if (data.state.val < 18) led_setzen(11,1); // WC kalt - Kanal 11 auf rot (1)
else if (data.state.val >= 18 && data.state.val < 20) led_setzen(11,3); // WC recht kalt - Kanal 11 auf orange (3)
else if (data.state.val >= 20) led_setzen(11,2); // WC warm - Kanal 11 auf grün (2)
});
! // Kanal 12 - Schlafzimmer Feuchtesensor | Daten kommen aus der Variable | grün - >=35%; rot - <35%
on("hm-rpc.0.HEQ0130265.1.HUMIDITY"/Thermostat Schlafzimmer Sensoren.HUMIDITY/ , function (data) {
if (data.state.val >= 35) led_setzen(12,2); // feucht genug, kein Alarm - Kanal 12 auf grün (2)
else led_setzen(12,1); // Feuchte zu gering, Alarm - anal 12 auf rot (1)
});
! // Kanal 13 - Küche Waschmaschine | aus;in Betrieb;fertig
// bisher keine weiteren Stati
on("javascript.0.Status.Waschmaschine"/Status Waschmaschine/, function (data) {
if (data.state.val === 0 || data.state.val == '0') led_setzen(13,2); // AUS Kanal 13 auf grün (2)
else if (data.state.val === 1 || data.state.val == '1') led_setzen(13,1); // EIN Kanal 13 auf rot (1)
else if (data.state.val === 2 || data.state.val == '2') led_setzen(13,3); // FERTIG Kanal 13 auf gelb (3)
});
! // Kanal 14 - Küche Spülmaschine (aus;ein),
// bisher keine weiteren Stati
on("javascript.0.Status.Spuelmaschine"/Status Spülmaschine/, function (data) {
if (data.state.val === 0) led_setzen(14,2); // AUS Kanal 13 auf grün (2)
if (data.state.val === 1) led_setzen(14,1); // EIN Kanal 13 auf rot (1)
if (data.state.val === 2 ) led_setzen(14,3); // FERTIG Kanal 14 auf gelb (3)
});
! // Kanal 15 - Küche Wassermelder | grün - 0 DRY; orange - 1 WET; rot - 2 WATER (direkt vom Melder)
on("hm-rpc.0.HEQ0088317.1.STATE"/Wassermelder Küche.STATE/ , function (data) {
if (data.state.val === 0) led_setzen(15,2); // DRY Kanal 15 auf grün (2)
if (data.state.val == 1) led_setzen(15,3); // WET Kanal 15 auf orange (3)
if (data.state.val == 2) led_setzen(15,1); // WATER Kanal 15 auf rot (1)
});
! // Kanal 16 - Klingel Haustür - CCU.IO Variable wird abgefragt
on("javascript.0.Status.Klingel.Haustuer"/Status.Klingel.Haustuer/, function (obj) {
if (!obj.state.val) led_setzen(16,2); // WARTEND Kanal 16 auf grün (2)
if (obj.state.val) led_setzen(16,1); // GEKLINGELT Kanal 16 auf rot (1)
});
! / **************************************************************************************
FALLS CCU NEUSTART DANN ABFRAGE DER STATI UND SETZEN DER WERTE
*************************************************************************************** /
on(idNeustartCCU, function (data) {
if (data.state.val.toString() == 'true' || data.state.val) alle_led_setzen('Neustart der CCU'); // Im Reboot
});
! / **************************************************************************************
Intervall zum Abfragen der Stati und setzen der LED
*************************************************************************************** */
schedule("44 * * * ", function () { // jede Stunde um 44min
var nachtruhe = getState(idNachtruhe).val,
anwesenheit = getState(idAnwesenheit).val;
if (anwesenheit === 1) { // bei Anwesenheit
if (nachtruhe === 0) alle_led_setzen('Stündliche Prüfung'); // bei wach am Tag
else alle_led_aus('Nachtruhe'); // Bei Nachtruhe keine Lampen an
} else log('Abwesenheit | Flur HM-OU-LED16 bleibt bei Abwesenheit ausgeschaltet'); // bei Abwesenheit
});
! / **************************************************************************************
Anzeige ein-/ausschalten bei Abwesenheit/Alarmanlage scharf
*************************************************************************************** /
on(idAlarmanlage, function (data) {
setTimeout(function () {
if (data.state.val === 1) alle_led_aus('Alarmanlage scharf'); // ALLES AUS
if (data.state.val === 0) alle_led_setzen('Alarmanlage unscharf'); // LED werden gesetzt
}, 5 * 1000); // 5s Verzögerung, da bei Abwesenheit/Ankunft viele Lampen geschaltet werden
});
! / **************************************************************************************
Anzeige ein-/ausschalten bei Nachtruhe
*************************************************************************************** /
on(idNachtruhe, function (data) {
setTimeout(function () {
if (data.state.val == 1) alle_led_aus('Nachtruhe'); // ALLES AUS
if (data.state.val === 0) alle_led_setzen('Nachtruhe beendet'); // LED werden gesetzt
}, 15 * 1000); // 15s Verzögerung, da bei Nachtruhe viele Lampen ausgeschaltet werden
});
! / **************************************************************************************
Anzeige ein-/ausschalten bei Tastendruck Kanal 1 auf dem Gerät
*************************************************************************************** /
on( {
id: idLED16Tastendruck01,
change: 'eq', // vorher 'ne'
val: true
}, function () {
alle_led_setzen('Taster gedrückt'); // LED werden gesetzt (jeweils mit Verzögerung)
});
! / **************************************************************************************
Anzeige ein-/ausschalten durch Variable
*************************************************************************************** */
// Variable zur Steuerung erstellen (ggf. später die states mal ersetzen, Anmerkung vom 18.1.2016)
createState('HM-LED16_Anzeige_Steuerung', 2, {
name: 'Steuerung der Homematic LED16 Anzeige',
type: 'number',
states:['aus','ein','wartend']
});
! var idLED16Anzeige = "javascript.0.HM-LED16_Anzeige_Steuerung"/HM-LED16_anzeige_Steuerung/; // ValueLuest 'aus;ein;wartend'
setState(idLED16Anzeige, 2); // bei Neustart der Script-Engine auf 'wartend' stellen
! on(idLED16Anzeige, function (data) { // ValueLuest 'aus;ein;wartend'
if (data.state.val === 0) alle_led_aus('Auslösung durch Variable'); // ALLES AUS
if (data.state.val == 1) alle_led_setzen('Auslösung durch Variable'); // LED werden gesetzt
setStateDelayed(idLED16Anzeige, 2, 2 * 1000); // wird nach 2s zurück auf wartend gestellt
});</zaehler_array;>>! Meine Anzeige hat die ID IEQ0548963\. Natürlich kann man das Skript entsprechend verfeinern und eine Variable für die ID verwenden. Dann liessen sich andere LED16-Anzeigen leichter einpflegen. Ich habe aber nur eine Anzeige. Das hier ist ja keine Adapter. Ich empfehle einfach "Suchen" und "Ersetzen" im Editor zu nutzen. >! PS: Wenn ich drüber nachdenke, wäre zumindest die Ansteuerung der LED einen Adapter Wert … Wer hat Lust? :P [261_bildschirmfoto_2016-08-11_um_13.37.12.jpg](/assets/uploads/files/261_bildschirmfoto_2016-08-11_um_13.37.12.jpg)
-
Hier die oben in der Grafik sichtbaren Widgets. Leider ist der Code 240 Tausend Zeichen lang und deshalb viermal länger, als das Forum erlaubt.
Gruß
Pix