Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Müllabfuhr Skript funktioniert nicht mit allen Terminen

    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

    Müllabfuhr Skript funktioniert nicht mit allen Terminen

    This topic has been deleted. Only users with topic management privileges can see it.
    • crunchip
      crunchip Forum Testing Most Active @M-A-X last edited by

      @M-A-X im Forum(leider grad nicht den link zur Hand) hatte ich die Tage was gelesen, das es Probleme mit Serien-Termine im ical gibt, bei manueller Änderung, vllt hängt es damit zusammen.

      M 1 Reply Last reply Reply Quote 0
      • M
        M-A-X @crunchip last edited by M-A-X

        @crunchip mist. Das scheint (seit kurzem) mein Problem zu sein. Ich finde den Post aber auch nicht 🙂
        Edit: meinst du den Beitrag?
        Seit ical 1.7.5 funktioniert Kalender nicht mehr

        M crunchip 2 Replies Last reply Reply Quote 0
        • M
          M-A-X @M-A-X last edited by

          @crunchip Danke für den Tipp.
          Und an alle mit dem selben Problem:

          Im anderen Beitrag (Link im Post hierdrüber) wird darauf hingewiesen, dass man beim Ical Adapter (soweit ich es verstehe) "TEST" durch 'TEST' ersetzen muss. Dies brachte auch bei mir den Erfolg.
          Mein Skript ist jetzt folgendes und funktioniert soweit:

          createState('javascript.0.vis.muellkalender.html', 0, {
              name: 'Termine als String'
          });
          
          createState('javascript.0.vis.muellkalender.gelbe_tonne', 0, {
              name: 'Abfuhrtermin Gelb'
          });
          createState('javascript.0.vis.muellkalender.schwarze_tonne', 0, {
              name: 'Abfuhrtermin schwarz'
          });
          createState('javascript.0.vis.muellkalender.papier_tonne', 0, {
              name: 'Abfuhrtermin Papier'
          });
          createState('javascript.0.vis.muellkalender.bio_tonne', 0, {
              name: 'Abfuhrtermin Bio'
          });
          
          
          
          on({ id: "ical.0.data.table", change: "ne" }, function (obj) { updateMuellTermine(); });
          
          function updateMuellTermine() {
              console.log('Start update');
              var terminPapier = '';
              var terminGelb = '';
              var terminBio = '';
              var terminRest = '';
          
              var termine = getState('ical.0.data.table').val;
          
              for (var i in termine) {
               //   Bio
               //   Restmüll
               //   Papier
               //   Gelbe
                  
                  var termin = termine[i];
          
          
                  // suchen nach dem nächsten Termin der "Restmüll" enthält.
                  console.log('###');
                  // console.log(termin.event); // Debugging für Inhalt im Event Text
                  // console.log(termin.date); // Debugging Inhalt Date
          
                  if (termin.event.includes('Rest') && terminRest == '') {
                      terminRest = convertToEngDate(termin.date);
                      console.log('Rest: '+ terminRest);
                  }
          
                  if (termin.event.includes('Bio') && terminBio == '') {
                      terminBio = convertToEngDate(termin.date);
                      console.log(termin.date);
                      console.log('Bio: '+terminBio);
                  }
          
                  if (termin.event.includes('Altpapier') && terminPapier == '') {
                      terminPapier = convertToEngDate(termin.date);
                      console.log('Papier: '+ terminPapier);
                  }
          
                  if (termin.event.includes('Gelbe') && terminGelb == '') {
                      terminGelb = convertToEngDate(termin.date);
                      console.log('Gelb: '+ terminGelb);
                  }
              }
          
          
          var visstring = '<div class="muell schwarz"><span>Grau</span><h1>'+ dateDiff(terminRest) + '</h1><i>'+convertToGermanDate(terminRest)+'</i></div>'+ 
              '<div class="muell papier"><span>Papier</span><h1>'+ dateDiff(terminPapier) + '</h1><i>'+convertToGermanDate(terminPapier)+'</i></div>'+ 
              '<div class="muell gelb"><span>Gelb</span><h1>'+ dateDiff(terminGelb) + '</h1><i>'+convertToGermanDate(terminGelb)+'</i></div>'
              //+ 
              //'<div class="muell bio"><span>Bio</span><h1>'+ dateDiff(terminBio) + '</h1><i>'+convertToGermanDate(terminBio)+'</i></div>'
              ;
              
              // einzelne States setzen
              setState('javascript.0.vis.muellkalender.html', visstring);
              setState('javascript.0.vis.muellkalender.gelbe_tonne', terminGelb);
              setState('javascript.0.vis.muellkalender.bio_tonne', terminBio);
              setState('javascript.0.vis.muellkalender.schwarze_tonne', terminRest);
              setState('javascript.0.vis.muellkalender.papier_tonne', terminPapier);
              
          }
          
          // Datum aus dem Kalender zu einem englischen Date formatieren
          function convertToEngDate(str) {
             str = str.replace("→", "");
             var tempdate = str.trim().split(" ");
             var date = tempdate[0].split(".");
             return date[2]+"-"+date[1]+"-"+date[0];
          }
          // Deutsches Datum ausgeben. 
          function convertToGermanDate(str) {
             var date = str.split("-");
             return date[2]+"."+date[1]+".";
          }
          
          // Differenz in Tagen zwischen heute und dem Abfuhrtag berechnen
          function dateDiff(datestring) {
              var today = new Date();
              var date = new Date(datestring);
              date.setHours(0,0,0,0);
              today.setHours(0,0,0,0);
          
              var seconds = (date.getTime() / 1000) - (today.getTime() / 
                             1000) ;
              var days =  seconds / 86400 | 0;
          
              return days;
          }
          
          updateMuellTermine();
          
          1 Reply Last reply Reply Quote 0
          • crunchip
            crunchip Forum Testing Most Active @M-A-X last edited by

            @M-A-X nein, meinte einen anderen, aber passt ja, wenn es nun wieder funktioniert

            Homoran 1 Reply Last reply Reply Quote 0
            • Homoran
              Homoran Global Moderator Administrators @crunchip last edited by

              @crunchip in dem anderen Thread ging es um manuell geänderte Serien.
              Das klappt mit ical nicht

              crunchip M 2 Replies Last reply Reply Quote 0
              • crunchip
                crunchip Forum Testing Most Active @Homoran last edited by crunchip

                @Homoran ja genau das/den Thread meinte ich.
                ich bezog mich ja auf die Aussage

                @M-A-X sagte in Müllabfuhr Skript funktioniert nicht mit allen Terminen:

                Die Termine von Restmüll (und Biotonne) kommen von einem 2 wöchentlichen manuellen Termin. Diese Termine haben zum Jahreswechsel aufgehört zu funktionieren. Ich bekomme einen leeren Wert bei den Objekten angezeigt.
                Was mich wundert, ist, dass die 2 wöchentlichen Termine sich ja nie geändert haben. Ich habe diese Termine vor über einem Jahr erstellt. Selbst ein Löschen dieses Termins mit anschließendem neuen Anlegen bringt nichts

                1 Reply Last reply Reply Quote 0
                • M
                  M-A-X @Homoran last edited by

                  @Homoran hmm. Aber genau das hab ich doch gemacht? Manuell einen Serientermin im Google Kalender angelegt. Und das scheint (jetzt) zu klappen. Zumindest zeigt er mir den richtigen Termin an.

                  crunchip Homoran 2 Replies Last reply Reply Quote 0
                  • crunchip
                    crunchip Forum Testing Most Active @M-A-X last edited by

                    @M-A-X geht darum, einen bereits hinterlegten Serientermin "nachträglich" zu ändern, geht nicht, wenn ich mich recht erinnere, hatte das aber auch nur überflogen

                    1 Reply Last reply Reply Quote 1
                    • Homoran
                      Homoran Global Moderator Administrators @M-A-X last edited by

                      @M-A-X sagte in Müllabfuhr Skript funktioniert nicht mit allen Terminen:

                      Manuell einen Serientermin im Google Kalender angelegt

                      das klappt ja auch.
                      Wie soll der denn sonst angelegt werden.

                      Aber du kannst bei google auch einzelne Termine in der Serie löschen!
                      Das bekommt dann ical nicht mit

                      M 1 Reply Last reply Reply Quote 1
                      • M
                        M-A-X @Homoran last edited by M-A-X

                        Hey,
                        es hat leider immer noch nicht richtig funktioniert.
                        Nachdem ich versucht habe, das skript selber zu verstehen (ich habe es ja aus dem Netz kopiert), habe ich den "Fehler" gefunden. Weiß allerdings nicht, warum das nicht so klappt.
                        Folgender Absatz im Skript wandelt scheinbar das Datum aus ical in ein Datum a la
                        "JAHR-MONAT-TAG" um. hierbei hat mein skript Probleme, wenn ich in Google einen Termin als "ganztägig" hinterlege.

                        // Datum aus dem Kalender zu einem englischen Date formatieren
                        function convertToEngDate(str) {
                           str = str.replace('→', '');
                           var tempdate = str.trim().split(' ');
                           var date = tempdate[0].split('.');
                           return date[2]+'-'+date[1]+'-'+date[0];
                        }
                        // Deutsches Datum ausgeben. 
                        function convertToGermanDate(str) {
                           var date = str.split('-');
                           return date[2]+'.'+date[1]+'.';
                        }
                        

                        Ich habe im Googlekalender den Termin Restmüll jetzt einfach statt ganztags auf 8:00 Uhr morgens gelegt und es klappt. Vorher hat mir dieser Teil des Skripts statt "JAHR-MONAT-TAG" folgendes ausgegeben "undefined-undefined-→"
                        hierbei steht das letzte für einen Pfeil nach rechts (Unicode), der aber eigentlich durch Zeile 3 verschwinden sollte?
                        Jemand eine Idee, wie ich den Absatz oben ändern kann, damit es auch mit ganztägigen Terminen klappt :)?

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        894
                        Online

                        31.8k
                        Users

                        80.0k
                        Topics

                        1.3m
                        Posts

                        3
                        11
                        494
                        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