NEWS
[Gelöst] Skript Lichtzählen verweigert Namen Homematic-Geräte
-
Meine bisher funktionierenden Skripte zum Zählen von div. Verbrauchern (Licht, Zwischenstecker), zeigen mir die Namen meiner Homematic-Geräte nicht mehr an. Raumnamen und Anzahl werden korrekt angezeigt.
Es geht um das Skript hier aus dem Forum (Lichter zählen), dass ich meine Bedürfnissen leicht angepasst habe:
!
var logging = true; ! //Variablen deklarieren var idAnzahlEin = 'Beleuchtung.Anzahl_ein', idAnzahl = 'Beleuchtung.Anzahl', idText = 'Beleuchtung.Text', idRaum = 'Beleuchtung.Raum', idAnsage = 'Beleuchtung.Ansage'; ! // Status erstellen createState(idAnzahl, { type: 'number', name: 'Anzahl aller Lichter', min: 0, def: 0, role: 'value' }); createState(idAnzahlEin, { type: 'number', name: 'Anzahl der eingeschalteten Lichter', min: 0, def: 0, role: 'value' }); createState(idText, { type: 'string', name: 'Eingeschaltete Lichter', desc: 'Namen der eingeschalteten Lichter', def: ' ', role: 'value' }); createState(idAnsage, { type: 'string', name: 'Eingeschaltete Lichter (Ansage)', desc: 'Namen der eingeschalteten Lichter (für Ansage aufbereitet)', def: ' ', role: 'value' }); createState(idRaum, { type: 'string', name: 'Räume mit eingeschalteten Lichter', desc: 'Namen der Räume, in denen Lichter eingeschaltet sind', def: ' ', role: 'value' }); ! //Variablen der Geräte deklarieren var cacheSelectorState = $('channel[state.id=*.STATE](functions="Licht")'); var cacheSelectorLevel = $('channel[state.id=*.LEVEL](functions="Licht")'); var cacheSelectorHue = $('channel[state.id=*.ON](functions="Licht")'); var cacheSelectorSwitch1 = $('channel[state.id=*.Switch_1](functions="Licht")'); var cacheSelectorSwitch2 = $('channel[state.id=*.Switch_2](functions="Licht")'); ! function checkDevices(obj) { var anzahlLichterAn = 0; var anzahlLichter = 0; var textLichterAn = []; var textRaum = []; if (logging) { log('++++++ Lichter Anzahl ++++ '); log('#### SCHALTER ##### '); } ! cacheSelectorState.each(function(id, i) { var obj = getObject(id); var name = getObject(id).common.name; var status = getState(id).val; var devicename = name.substring(0, name.indexOf(".STATE")); var raumname = getObject(id, "rooms"); ! if (logging) { log('-------'); log('Kanal: ' + name); log('Status: ' + status); } if (status) { ++anzahlLichterAn; textLichterAn.push(devicename); textRaum.push(raumname.enumNames); } ++anzahlLichter; }); ! cacheSelectorSwitch1.each(function(id, i) { var obj = getObject(id); var name = getObject(id).common.name; var status = getState(id).val; var devicename = name; var raumname = getObject(id, "rooms"); ! if (logging) { log('-------'); log('Kanal: ' + name); log('Status: ' + status); } if (status) { ++anzahlLichterAn; textLichterAn.push(devicename); textRaum.push(raumname.enumNames); } ++anzahlLichter; }); ! cacheSelectorSwitch2.each(function(id, i) { var obj = getObject(id); var name = getObject(id).common.name; var status = getState(id).val; var devicename = name; var raumname = getObject(id, "rooms"); ! if (logging) { log('-------'); log('Kanal: ' + name); log('Status: ' + status); } if (status) { ++anzahlLichterAn; textLichterAn.push(devicename); textRaum.push(raumname.enumNames); } ++anzahlLichter; }); ! // Array mit Lichternamen sortieren textLichterAn.sort(); textRaum.sort(); if (logging) log("Text: " + textLichterAn); if (logging) log("Anzahl Lichter: " + anzahlLichter + " # davon Lichter an: " + anzahlLichterAn); setState(idText, textLichterAn.join(', ')); setState(idAnzahlEin, textLichterAn.length); setState(idAnzahl, anzahlLichter); setState(idRaum, textRaum.join(', ')); } ! // Trigger cacheSelectorState.on(function(obj) { if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); checkDevices(); }); cacheSelectorSwitch1.on(function(obj) { if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); checkDevices(); }); cacheSelectorSwitch2.on(function(obj) { if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); checkDevices(); }); ! cacheSelectorHue.on(function(obj) { if (logging) log('Auslösende HUE: ' + obj.id + ': ' + obj.state.val); checkDevices(); }); cacheSelectorLevel.on(function(obj) { if (logging) log('Auslösender Dimmer: ' + obj.id + ': ' + obj.state.val); checkDevices(); }); ! function main() { setTimeout(function() { if (logging) log('Auslöser Skriptstart'); checkDevices(); }, 2000); } ! main(); // Skriptstart-Auslöser ! // Aufbereitung für Ansage function strip_tags(data) { var rueckgabe = data.replace(/( |<([^>]+)>)/ig, " "); return (rueckgabe); } ! on(idText, function(obj) { var text = obj.state.val; text = (getState(idAnzahl).val > 0) ? 'Lichter eingeschaltet: ' + strip_tags(text) : 'Alle Lichter sind ausgeschaltet'; setState(idAnsage, text); }); !
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden