NEWS


  • 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);
    

Suggested Topics

  • 5
  • 3
  • 1
  • 3
  • 9
  • 16
  • 11
  • 10

1.2k
Online

38.4k
Users

43.8k
Topics

612.8k
Posts