Am einfachsten sind die eigenen Datenpunkte unter javascript.0 weilst sie da per Skript anlegen kannst.
Wenn du die außerhalb haben willst dann musst du alle States manuell anlegen.
Wer kann weiterhelfen,
der Wunsch ist eigentlich ganz einfach formuliert,
Überwache alle geräte die eine Batterie haben auf den Batterie Status und bei unter 20% sende eine Email. Die basis ist folgendes Script hier aus dem Forum:
Original
createState('zählenLowbat.möglicheLOWBAT', 0, {type: 'number'}); // wenn benötigt: Anzahl der vorhandenen LOWBAT
createState('zählenLowbat.anzahlLOWBAT', 0, {type: 'number'}); // wenn benötigt: Anzahl der tatsächlichen LOWBAT
createState('zählenLowbat.textLOWBAT', " ", {type: 'string'}); // Anzeige der LOWBAT
//const hmLOWBAT = $('hm-rpc.*.0.LOWBAT');
const mipercent = $('mihome.*.percent');
const loggen = false; // = false, wenn kein Logging gewünscht
var arrLOWBAT;
function lowbat(id) {
var obj = getObject(id);
arrLOWBAT.push(obj.common.name); // Zu Array hinzufügen
if(loggen) log("Gerät: " + obj.common.name);
}
function lowbat(id) {
var name = getObject(id).common.name;
if(name.IndexOf(':0.LOWBAT') != -1) name = name.substring(0, name.indexOf('.0.LOWBAT'));
arrLOWBAT.push(name); // Zu Array hinzufügen
if(loggen) log("Gerät: " + name);
}
function countLowbat() {
// Setzt die Zähler vor dem Durchlauf aller Elemente *.LOWBAT auf 0
var moeglicheLOWBAT = 0;
arrLOWBAT = [];
/* hmLOWBAT.each(function (id, i) { // Schleife für jedes gefundenen Element *.LOWBAT
if(getState(id).val) lowbat(id);
++moeglicheLOWBAT; // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status
});*/
mipercent.each(function (id, i) { // Schleife für jedes gefundenen Element *.percent
if(getState(id).val < 80) lowbat(id);
++moeglicheLOWBAT; // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status
});
// Schleifen sind durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon LOWBAT zutreffend) ausgegeben
if(loggen) log("Text: " + arrLOWBAT.join(', '));
if(loggen) log("Anzahl Geräte: " + moeglicheLOWBAT + " # davon LOWBAT erkannt: " + arrLOWBAT.length);
// die ermittelten Werte werden als javascript.0\. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
setState("zählenLowbat.textLOWBAT", arrLOWBAT.join(',')); // Schreibt die Namen der Geräte mit LOWBAT Meldung
setState("zählenLowbat.anzahlLOWBAT", arrLOWBAT.length); // Schreibt die Anzahl der LOWBAT-Meldungen
setState("zählenLowbat.möglicheLOWBAT", moeglicheLOWBAT); // Schreibt die Anzahl der vorhandene Geräte
}
countLowbat{}; // Skriptstart
schedule("*/60 * * * *", countLowbat);
Jetzt wollte ich es so anpassen sieht jemand den Fehler ?
hier die erweiterung um Email, und immer kommt eine Fehlermeldung!
Und wie füge ich in die mail Object + Raum mit ein ?
createState('zählenLowbat.möglicheLOWBAT', 0, {type: 'number'}); // wenn benötigt: Anzahl der vorhandenen LOWBAT
createState('zählenLowbat.anzahlLOWBAT', 0, {type: 'number'}); // wenn benötigt: Anzahl der tatsächlichen LOWBAT
createState('zählenLowbat.textLOWBAT', " ", {type: 'string'}); // Anzeige der LOWBAT
//const hmLOWBAT = $('hm-rpc.*.0.LOWBAT');
const mipercent = $('mihome.*.percent');
const loggen = false; // = false, wenn kein Logging gewünscht
var arrLOWBAT;
function lowbat(id) {
var obj = getObject(id);
arrLOWBAT.push(obj.common.name); // Zu Array hinzufügen
if(loggen) log("Gerät: " + obj.common.name);
}
function lowbat(id) {
var name = getObject(id).common.name;
if(name.IndexOf(':0.LOWBAT') != -1) name = name.substring(0, name.indexOf('.0.LOWBAT'));
arrLOWBAT.push(name); // Zu Array hinzufügen
if(loggen) log("Gerät: " + name);
}
function countLowbat() {
// Setzt die Zähler vor dem Durchlauf aller Elemente *.LOWBAT auf 0
var moeglicheLOWBAT = 0;
arrLOWBAT = [];
/* hmLOWBAT.each(function (id, i) { // Schleife für jedes gefundenen Element *.LOWBAT
if(getState(id).val) lowbat(id);
++moeglicheLOWBAT; // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status
});*/
mipercent.each(function (id, i) { // Schleife für jedes gefundenen Element *.percent
if(getState(id).val < 80) lowbat(id);
++moeglicheLOWBAT; // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status
});
// Schleifen sind durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon LOWBAT zutreffend) ausgegeben
if(loggen) log("Text: " + arrLOWBAT.join(', '));
if(loggen) log("Anzahl Geräte: " + moeglicheLOWBAT + " # davon LOWBAT erkannt: " + arrLOWBAT.length);
// die ermittelten Werte werden als javascript.0\. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
setState("zählenLowbat.textLOWBAT", arrLOWBAT.join(',')); // Schreibt die Namen der Geräte mit LOWBAT Meldung
setState("zählenLowbat.anzahlLOWBAT", arrLOWBAT.length); // Schreibt die Anzahl der LOWBAT-Meldungen
setState("zählenLowbat.möglicheLOWBAT", moeglicheLOWBAT); // Schreibt die Anzahl der vorhandene Geräte
if(arrLOWBAT.length > 0){
sendTo("email", {
from: "xxxx@xxxx",
to: "xxx@xxxx",
subject: "Batterie Status",
text: "Guten Morgen Carmen, \n übersicht batterie stand " + arrLOWBAT.length
}
)};
}
countLowbat{}; // Skriptstart
schedule("*/60 * * * *", countLowbat);