NEWS
Hilfe bei Script zur Aufzählung benötigt
-
Hallo zusammen,
ich habe versucht ein hier im Forum gefundenes Script (für die Zählung von Lichtern) anzupassen...
var logging = true; var idAnzahlEin = 'javascript.0.Status.Lichter.Anzahl_ein', idAnzahl = 'javascript.0.Status.Lichter.Anzahl', idText = 'javascript.0.Status.Lichter.Text', idRaum = 'javascript.0.Status.Lichter.Raum', // <---- NEU idAnsage = 'javascript.0.Status.Lichter.Ansage'; // Ab hier nix mehr ändern createState(idAnzahl, { // wenn benötigt: Anzahl der vorhandenen Lichter type: 'number', name: 'Anzahl aller Lichter', min: 0, def: 0, role: 'value' }); createState(idAnzahlEin, { // Anzahl der Lichter, die auf sind als Variable unter Javascript.0 anlegen type: 'number', name: 'Anzahl der eingeschalteten Lichter', min: 0, def: 0, role: 'value' }); createState(idText, { // Anzahl der brennenden Lichter und deren Namen als Variable unter Javascript.0 anlegen 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, { // Räume, in denen Lichter brennen // <---- NEU type: 'string', name: 'Räume mit eingeschalteten Lichter', desc: 'Namen der Räume, in denen Lichter eingeschaltet sind', def: ' ', role: 'value' }); //var cacheSelectorSwitch = $('switch[state.id=*.1](functions="Strom")'); // Gewerk licht var cacheSelectorSwitch = $('state[id=*.1](functions="Strom")'); //var cacheSelectorSwitch = $('device[state.id=*.1](functions="Strom")'); //var cacheSelectorSwitch = $('state[id=*.1](functions="Strom")'); //var cacheSelectorSwitch = $('state[id=*.1](functions=Strom)[role=switch]'); function checkDevices(obj) { // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk licht auf 0 var anzahlLichterAn = 0; var anzahlLichter = 0; var textLichterAn = []; var textRaum = []; if (logging) { log('++++++ Lichter Anzahl ++++ '); log('#### SCHALTER ##### '); } cacheSelectorSwitch.each(function (id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Licht var obj = getObject(id); var name = getObject(id).common.name; var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element) var devicename = name.substring(0, name.indexOf(".1")); //.state aus Text entfernen var raumname = getObject(id, "rooms"); // <---- NEU if (status) { // wenn Zustand = true, dann wird die ANzahl der Lichter hochgezählt ++anzahlLichterAn; textLichterAn.push(devicename); // Zu Array hinzufügen textRaum.push(raumname.enumNames); // <---- NEU } ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status }); log('test: ' + anzahlLichter);MOD-Edit: Code in Codetags gesetzt!
***** Leider bekomme ich die Steckdosen nicht gezählt :( Ergebins immer 0
Aufzählung Strom ist natürlich vorhanden.
Ich habe verschiedene Varianten zum auslesen versucht. Nix funktioniert und ich komme einfach nicht weiter...Hier noch das Objekt:

PS: Wie binde ich den Script-Text hier korrekt ein?
-
Hallo zusammen,
ich habe versucht ein hier im Forum gefundenes Script (für die Zählung von Lichtern) anzupassen...
var logging = true; var idAnzahlEin = 'javascript.0.Status.Lichter.Anzahl_ein', idAnzahl = 'javascript.0.Status.Lichter.Anzahl', idText = 'javascript.0.Status.Lichter.Text', idRaum = 'javascript.0.Status.Lichter.Raum', // <---- NEU idAnsage = 'javascript.0.Status.Lichter.Ansage'; // Ab hier nix mehr ändern createState(idAnzahl, { // wenn benötigt: Anzahl der vorhandenen Lichter type: 'number', name: 'Anzahl aller Lichter', min: 0, def: 0, role: 'value' }); createState(idAnzahlEin, { // Anzahl der Lichter, die auf sind als Variable unter Javascript.0 anlegen type: 'number', name: 'Anzahl der eingeschalteten Lichter', min: 0, def: 0, role: 'value' }); createState(idText, { // Anzahl der brennenden Lichter und deren Namen als Variable unter Javascript.0 anlegen 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, { // Räume, in denen Lichter brennen // <---- NEU type: 'string', name: 'Räume mit eingeschalteten Lichter', desc: 'Namen der Räume, in denen Lichter eingeschaltet sind', def: ' ', role: 'value' }); //var cacheSelectorSwitch = $('switch[state.id=*.1](functions="Strom")'); // Gewerk licht var cacheSelectorSwitch = $('state[id=*.1](functions="Strom")'); //var cacheSelectorSwitch = $('device[state.id=*.1](functions="Strom")'); //var cacheSelectorSwitch = $('state[id=*.1](functions="Strom")'); //var cacheSelectorSwitch = $('state[id=*.1](functions=Strom)[role=switch]'); function checkDevices(obj) { // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk licht auf 0 var anzahlLichterAn = 0; var anzahlLichter = 0; var textLichterAn = []; var textRaum = []; if (logging) { log('++++++ Lichter Anzahl ++++ '); log('#### SCHALTER ##### '); } cacheSelectorSwitch.each(function (id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Licht var obj = getObject(id); var name = getObject(id).common.name; var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element) var devicename = name.substring(0, name.indexOf(".1")); //.state aus Text entfernen var raumname = getObject(id, "rooms"); // <---- NEU if (status) { // wenn Zustand = true, dann wird die ANzahl der Lichter hochgezählt ++anzahlLichterAn; textLichterAn.push(devicename); // Zu Array hinzufügen textRaum.push(raumname.enumNames); // <---- NEU } ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status }); log('test: ' + anzahlLichter);MOD-Edit: Code in Codetags gesetzt!
***** Leider bekomme ich die Steckdosen nicht gezählt :( Ergebins immer 0
Aufzählung Strom ist natürlich vorhanden.
Ich habe verschiedene Varianten zum auslesen versucht. Nix funktioniert und ich komme einfach nicht weiter...Hier noch das Objekt:

PS: Wie binde ich den Script-Text hier korrekt ein?
-
Hallo zusammen,
ich habe versucht ein hier im Forum gefundenes Script (für die Zählung von Lichtern) anzupassen...
var logging = true; var idAnzahlEin = 'javascript.0.Status.Lichter.Anzahl_ein', idAnzahl = 'javascript.0.Status.Lichter.Anzahl', idText = 'javascript.0.Status.Lichter.Text', idRaum = 'javascript.0.Status.Lichter.Raum', // <---- NEU idAnsage = 'javascript.0.Status.Lichter.Ansage'; // Ab hier nix mehr ändern createState(idAnzahl, { // wenn benötigt: Anzahl der vorhandenen Lichter type: 'number', name: 'Anzahl aller Lichter', min: 0, def: 0, role: 'value' }); createState(idAnzahlEin, { // Anzahl der Lichter, die auf sind als Variable unter Javascript.0 anlegen type: 'number', name: 'Anzahl der eingeschalteten Lichter', min: 0, def: 0, role: 'value' }); createState(idText, { // Anzahl der brennenden Lichter und deren Namen als Variable unter Javascript.0 anlegen 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, { // Räume, in denen Lichter brennen // <---- NEU type: 'string', name: 'Räume mit eingeschalteten Lichter', desc: 'Namen der Räume, in denen Lichter eingeschaltet sind', def: ' ', role: 'value' }); //var cacheSelectorSwitch = $('switch[state.id=*.1](functions="Strom")'); // Gewerk licht var cacheSelectorSwitch = $('state[id=*.1](functions="Strom")'); //var cacheSelectorSwitch = $('device[state.id=*.1](functions="Strom")'); //var cacheSelectorSwitch = $('state[id=*.1](functions="Strom")'); //var cacheSelectorSwitch = $('state[id=*.1](functions=Strom)[role=switch]'); function checkDevices(obj) { // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk licht auf 0 var anzahlLichterAn = 0; var anzahlLichter = 0; var textLichterAn = []; var textRaum = []; if (logging) { log('++++++ Lichter Anzahl ++++ '); log('#### SCHALTER ##### '); } cacheSelectorSwitch.each(function (id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Licht var obj = getObject(id); var name = getObject(id).common.name; var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element) var devicename = name.substring(0, name.indexOf(".1")); //.state aus Text entfernen var raumname = getObject(id, "rooms"); // <---- NEU if (status) { // wenn Zustand = true, dann wird die ANzahl der Lichter hochgezählt ++anzahlLichterAn; textLichterAn.push(devicename); // Zu Array hinzufügen textRaum.push(raumname.enumNames); // <---- NEU } ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status }); log('test: ' + anzahlLichter);MOD-Edit: Code in Codetags gesetzt!
***** Leider bekomme ich die Steckdosen nicht gezählt :( Ergebins immer 0
Aufzählung Strom ist natürlich vorhanden.
Ich habe verschiedene Varianten zum auslesen versucht. Nix funktioniert und ich komme einfach nicht weiter...Hier noch das Objekt:

PS: Wie binde ich den Script-Text hier korrekt ein?
-
Doch noch ne Rückfrage...
Bezogen auf meine Steckdose bekomme ich natürlich bei
var name = getObject(id).common.name;
den Namen switch_1 raus.. Das natürlich nicht so der Hit..
Wie bekomme ich denn den Namen vom Device (also vom übergeordneten DP) raus (hier "Handy-Strom").Mag mir da noch jemand auf die Sprünge helfen?
-
Doch noch ne Rückfrage...
Bezogen auf meine Steckdose bekomme ich natürlich bei
var name = getObject(id).common.name;
den Namen switch_1 raus.. Das natürlich nicht so der Hit..
Wie bekomme ich denn den Namen vom Device (also vom übergeordneten DP) raus (hier "Handy-Strom").Mag mir da noch jemand auf die Sprünge helfen?
@Mrs-B sagt:
Wie bekomme ich denn den Namen vom Device (also vom übergeordneten DP) raus (hier "Handy-Strom").
var idDev = id.substring(0, id.lastIndexOf('.')); var name = getObject(idDev).common.name;Mit dieser Funktion klappt es auch, wenn noch ein Kanal dazwischen ist.
-
@Mrs-B sagt:
Wie bekomme ich denn den Namen vom Device (also vom übergeordneten DP) raus (hier "Handy-Strom").
var idDev = id.substring(0, id.lastIndexOf('.')); var name = getObject(idDev).common.name;Mit dieser Funktion klappt es auch, wenn noch ein Kanal dazwischen ist.
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