Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Servicemeldungen per Mail?

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Servicemeldungen per Mail?

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

      Hallo zusammen,

      hat zufällig jemand von euch ein Script mit dem ich die Servicemeldungen der CCU auslesen und z.B. per Mail verschicken kann?

      Ich finde es immer recht mühsam mich extra auf der CUU einzuloggen um zu schauen ob welche da sind.

      Einen Ansatz zum Auslesen nehme ich auch gern entgegen 🙂

      LG Micha

      1 Reply Last reply Reply Quote 0
      • paul53
        paul53 last edited by

        Ich logge die Servicemeldungen in einer Datei und versende anschließend die Log-Datei als Mail-Anhang.

        // Servicemeldungen in Datei loggen, Anzahl in einem Datenpunkt erfassen
        // und zu quittierenden Alarmzustand erzeugen
        
        var cntid = getIdByName("Service.Fehleranzahl");
        var alarmid = getIdByName("Service.Sammelalarm");
        var quitid = getIdByName("Service.Quittierung");
        
        // Script start
        var count = getState(cntid).val;
        if(count) setState(alarmid, true, true);
        else setState(alarmid, false, true);
        var timer = null;
        
        on(/\.UNREACH|LOWBAT|CONFIG_PENDING|FAULT_REPORTING$/, function(dp) {
           var val = dp.state.val;
           var old = dp.oldState.val;
           if (val != old) {
               if(dp.common.name) flog(dp.common.name + ": " + val);
               else flog(dp.id + ": " + val);
           }
           if(val && !old) count++;
           else if (!val && old) count--;
           setState(cntid, count, true);
           if(count) setState(alarmid, true);
           if(timer) clearTimeout(timer);
           timer = setTimeout(logMail, 300000);  // nach 5 Minuten senden
        });
        
        on({id: quitid, val: true}, function() {
        	if(!count) setState(alarmid, false, true);
        	setState(quitid, false, true);
        });
        
        

        Die Funktionen flog() und logMail() befinden sich in einem globalen Skript

        // Logging in Datei /opt/iobroker/iobroker-data/scripts.log
        
        var fs = require('fs');                     // enable write fuer externes log
        var fn = "/opt/iobroker/iobroker-data/scripts.log";
        
        function timestamp() {
            var ts = new Date();
            return formatDate(ts, "YYYY-MM-DD hh:mm:ss.sss") + " \t";
        }
        
        function flog(txt) {
            var ts = timestamp();
            fs.appendFileSync(fn, ts + txt + "\n");
        }
        
        function logMail() {
            sendTo("email", {
                attachments: [
                // use file on disk as attachment
                {path: fn}
                ]
            });
        }
        
        
        1 Reply Last reply Reply Quote 0
        • C
          CyberMicha last edited by

          Hi,

          ich muss das hier nochmal hoch holen.

          Wann verschickst du die Mail und wie? Ich brauche die Log ja an sich nur wenn Servicemeldungen da sind.

          Oder gibt es mittlerweile eine bessere Lösung?

          LG Michael

          1 Reply Last reply Reply Quote 0
          • paul53
            paul53 last edited by

            @CyberMicha:

            Wann verschickst du die Mail und wie? `
            Ich logge jede Veränderung der Servicemeldungen in eine Datei (wird drangehängt) und verschicke 5 Minuten später die Datei als Anhang per Mail.

            1 Reply Last reply Reply Quote 0
            • C
              CyberMicha last edited by

              Magst du das auch noch mal posten? so in etwa hatte ich mir das gedacht.

              Also wenn Änderungen -> Mail

              LG Michael

              1 Reply Last reply Reply Quote 0
              • paul53
                paul53 last edited by

                @CyberMicha:

                Magst du das auch noch mal posten? `
                Weshalb? An den Skripten (eins unter common, eins unter global) ändert sich nichts.

                1 Reply Last reply Reply Quote 0
                • C
                  CyberMicha last edited by

                  Ich meine wegen dem Versand bei Änderung. Das muss ich doch auch irgendwie prüfen oder nicht?

                  LG Michael

                  1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 last edited by

                    Der Mailversand wird innerhalb der Callback-Funktion von

                    on(/\.UNREACH|LOWBAT|CONFIG_PENDING|FAULT_REPORTING$/, function(dp) {
                    

                    aufgerufen. Der Trigger reagiert auf jede Änderung einer Service-Meldung.

                    1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 last edited by

                      Wenn Du ausschließlich eine Mail versenden willst, kann das Script stark vereinfacht werden,

                      function sendMail(txt) {
                          sendTo("email", {
                             subject: "Servicemeldung",
                             text: formatDate(new Date(), "YYYY-MM-DD hh:mm:ss.sss ") + txt + "\n"
                          });
                      }
                      
                      on(/\.UNREACH|LOWBAT|CONFIG_PENDING|FAULT_REPORTING$/, function(dp) {
                         var val = dp.state.val;
                         var old = dp.oldState.val;
                         if (val != old) {
                             if(dp.common.name) sendMail(dp.common.name + ": " + val);
                             else sendMail(dp.id + ": " + val);
                         }
                      });
                      
                      
                      1 Reply Last reply Reply Quote 0
                      • First post
                        Last post

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      875
                      Online

                      31.7k
                      Users

                      79.8k
                      Topics

                      1.3m
                      Posts

                      2
                      9
                      1210
                      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