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.