Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Javascript batterie Status per mail

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Javascript batterie Status per mail

    This topic has been deleted. Only users with topic management privileges can see it.
    • C
      Carmen last edited by

      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);
      
      1 Reply Last reply Reply Quote 0
      • First post
        Last post

      Support us

      ioBroker
      Community Adapters
      Donate

      652
      Online

      31.8k
      Users

      79.9k
      Topics

      1.3m
      Posts

      javascript monitoring
      1
      1
      244
      Loading More Posts
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes
      Reply
      • Reply as topic
      Log in to reply
      Community
      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
      The ioBroker Community 2014-2023
      logo