Hallo zusammen,
sorry das ich den alten thread noch mal auspacke. Ich habe allerdings das problem das meine Homematic Ip Komponenten nicht erkannt werden.
Ich habe das Script folgendermaßen geändert:
createState('zählenLowbat.möglicheLOWBAT', 0); // wenn benötigt: Anzahl der Geräte mit Batterie
createState('zählenLowbat.anzahlLOWBAT', 0); // wenn benötigt: Anzahl der vorhandenen LOWBAT
createState('zählenLowbat.textLOWBAT', " "); // Namen LOWBAT, die an sind als Variable unter Javascript.0 anlegen
var cacheSelectorLOWBAT = $('channel[state.id=*0.LOWBAT]'); // für Homematic
var cacheSelectorLOW_BAT = $('channel[state.id=*0.LOW_BAT]'); // für Homematic IP
function countLowbat(obj) {
// Setzt die Zähler vor dem Durchlauf aller Elemente *.LOWBAT auf 0
var moeglicheLOWBAT = 0;
var textLOWBAT = [];
if (obj) {
log('Auslösender Aktor: ' + obj.id + ': ' + obj.newState.val); // Info im Log, welcher Zustand sich geändert hat
} else {
log('Ausgelöst bei Timer');
}
cacheSelectorLOWBAT.each(function (id, i) { // Schleife für jedes gefundenen Element *0.LOWBAT
var status = false;
if(getState(id)) {
status = getState(id).val; // Zustand *0.LOWBAT abfragen (jedes Element)
}
var obj = getObject(id);
if (status === true) { // wenn Zustand = true, wird das Array erweitert
textLOWBAT.push(obj.common.name); // Zu Array hinzufügen
}
log("Geräte Nr. " + i + ": " + getObject(id).common.name + ": " + status);
++moeglicheLOWBAT; // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status
});
// Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon LOWBAT zutreffend) ausgegeben
log("Text: " + textLOWBAT);
log("Anzahl Geräte: " + moeglicheLOWBAT + " # davon LOWBAT erkannt: " + textLOWBAT.length);
// die ermittelten Werte werden als javascript.0. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
setState("zählenLowbat.textLOWBAT", textLOWBAT.join(',<br>')); // Schreibt die Namen der Geräte mit LOWBAT Meldung
setState("zählenLowbat.anzahlLOWBAT", textLOWBAT.length); // Schreibt die aktuelle Anzahl der LOWBAT-Meldungen
setState("zählenLowbat.möglicheLOWBAT", moeglicheLOWBAT); // Schreibt die Anzahl der vorhandenen Batterie-Geräte
}
cacheSelectorLOWBAT.on(function(obj) { // bei Zustandänderung . LOWBAT in allen Gewerken
countLowbat(obj);
});
schedule("/60 * * * *", function () { //oder!! soll entweder ausgelöst werden alle 10 Minuten
log("===>Will be triggered every 60 minutes!");
countLowbat();
});
muss ich sonst noch was ändern?