Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Ical Setzen eines Events

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Ical Setzen eines Events

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

      Hier wird auf true gesetzt (nehme ich an, zumindest sagt das Log, dass er die gelben Säcke findet)

      `2018-04-11 00:05:00.235  - [32minfo[39m: javascript.0 script.js.common.Ansagen.Ansage_Gelbe_Säcke_19:08Uhr: Jetztzeit: Wed Apr 11 2018 00:05:00 GMT+0200 (CEST)
      2018-04-11 00:05:00.237  - [32minfo[39m: javascript.0 script.js.common.Ansagen.Ansage_Gelbe_Säcke_19:08Uhr: Zielzeit: Thu Apr 12 2018 00:00:00 GMT+0200 (CEST)
      2018-04-11 00:05:00.237  - [32minfo[39m: javascript.0 script.js.common.Ansagen.Ansage_Gelbe_Säcke_19:08Uhr: 12.04.2018
      2018-04-11 00:05:00.237  - [32minfo[39m: javascript.0 script.js.common.Ansagen.Ansage_Gelbe_Säcke_19:08Uhr: [
      
        {
          "date": "Morgen  ",
          "event": "Abfuhrtermin: Gelbe Säcke",
          "_class": "ical_Abfallkalender ical_tomorrow",
          "_date": "2018-04-11T22:00:00.000Z",
          "_end": "2018-04-12T22:00:00.000Z",
          "_section": "Ihre Abfuhrtermine als iCal Export – Ein Service der Regio Entsorgung AöR – www.regioentsorgung.de ",
          "_IDID": "ab08323ee3d94fa2441beff82c59ef30",
          "_allDay": true,
          "_rule": " ",
          "_calName": "Abfallkalender"
        },
      
      ]
      2018-04-11 00:05:00.237  - [32minfo[39m: javascript.0 script.js.common.Ansagen.Ansage_Gelbe_Säcke_19:08Uhr: Treffer: Morgen Gelbe Säcke[/code]`
      
      Also sollte man am 11.4 um 19:08h dann auch sehen, dass die Sayit Ansage losgeht, denn am 12.4 wurde ja dann der gelbe Sack abgeholt, korrekt?
      
      Kannst du in den Logs nachsehen, ob Sayit aktiv wurde?
      
      Am 12.4 wurde dann auch nichts ausgelöst, d.h. dann hätte der Trigger auf false gesetzt werden müssen.
      
      Ich schlage vor, in dein Skript folgendes einzubauen im Bereich "function pruefeKalender()
      
      `~~[code]~~function pruefeKalender() {
          var kalender = getState(idTabelle).val;
          var tag = datum(parseInt(stichtag,10));
          if (logging) log(tag);
          try{
              var ereignisse = JSON.stringify(kalender, null, 2); // Ausgabe als String
              if (logging) log(ereignisse);
              for(var i = 0; i <kalender.length; i++)/{/alle/events/durchgehen/if/(/(kalender[i].date.indexof(tag)/!="-1)" ||/(kalender[i].date.indexof(tage[stichtag])/)/string/datum/oder/relatives/(nicht/nicht)/gefunden,/also/gefunden/var/termin="kalender[i].event;" (termin.indexof(suchstring)/log('treffer:/'/+/tage[stichtag]/suchstring);/hier/wird/später/vielleicht/stichtag_array/verwendet/setstate(ideventstate,/true);/}/else/false);/catch/(fehler_try)/log('fehler/beim/kalenderevents/einlesen/fehler_try,/'error');/log("ideventstate/für/"+suchstring/"/wurde/auf/"+getstate(ideventstate).val/gesetzt");/neu/eingefÜgt/zum/testen/<e=""></kalender.length;>`
      
      edit:
      
      um dein Log zu entlasten kannst du meines Erachtens hierauf 
      
      `~~[code]~~// bei Aktualisierung
      on ({id: idTabelle, change: 'any'}, function(data) {
          pruefeKalender();
      });[/code]`
      
      verzichten. Müll wirst du ja nicht im Minutentakt neu einpflegen und selbst wenn du jetzt einen neuen Kalender einpflegst und in wenigen Minuten wird es abgeholt (sehr spontan) wirst du es wohl auch so wissen.
      
      Ich nehme an, dein ical synchronisiert alle 30 Minuten? Daher müsste bei dann dieser Überlauf im Log kommen.[/i][/i][/i][/code]
      
      1 Reply Last reply Reply Quote 0
      • wendy2702
        wendy2702 last edited by

        Hi,

        vielen Dank für die ausführliche Untersuchung.

        Korrekt am 11.4. gab es um 19:08Uhr eine Ansage:

        `2018-04-11 19:08:00.237  - [32minfo[39m: sayit.0 saying: Gelbe Säcke Mülltonne wird morgen abgeholt. Bitte stell die Tonne an die Straße!
        2018-04-11 19:08:00.815  - [32minfo[39m: sayit.0 Set "chromecast.0.Ansage_Flur.player.announcement to {"url":"http://192.168.178.18:8082/state/sayit.0.tts.mp3","volume":"60"}
        2018-04-11 19:08:00.817  - [32minfo[39m: sayit.0 Copied file "/opt/iobroker/node_modules/iobroker.sayit/lib/../say.mp3" to "/opt/iobroker/cache/80ac330bcc8aaabfc03dc3a30e3084d9.mp3"
        2018-04-11 19:08:00.821  - [32minfo[39m: chromecast.0 Ansage Flur - Try to launch default player
        2018-04-11 19:08:00.838  - [32minfo[39m: chromecast.0 Ansage Flur - Try to join player
        2018-04-11 19:08:00.838  - [32minfo[39m: chromecast.0 Ansage Flur - Connected player
        2018-04-11 19:08:00.838  - [32minfo[39m: chromecast.0 Ansage Flur - Default player lauched
        2018-04-11 19:08:00.838  - [32minfo[39m: chromecast.0 Ansage Flur - Connected player
        2018-04-11 19:08:00.838  - [32minfo[39m: chromecast.0 Ansage Flur - Player joint
        2018-04-11 19:08:00.839  - [32minfo[39m: chromecast.0 Ansage Flur - Try to play announcement - "http://192.168.178.18:8082/state/sayit.0.tts.mp3"
        2018-04-11 19:08:00.839  - [32minfo[39m: chromecast.0 Ansage Flur - Try to play url - http://192.168.178.18:8082/state/sayit.0.tts.mp3
        2018-04-11 19:08:00.852  - [32minfo[39m: chromecast.0 Ansage Flur - Try to play playlist with 1 items
        2018-04-11 19:08:00.880  - [32minfo[39m: chromecast.0 Ansage Flur - set volume to 60
        2018-04-11 19:08:01.812  - [32minfo[39m: chromecast.0 Ansage Flur - Playing playlist with 1 items
        2018-04-11 19:08:04.864  - [32minfo[39m: chromecast.0 Ansage Flur - Playing - http://192.168.178.18:8082/state/sayit.0.tts.mp3
        2018-04-11 19:08:09.234  - [32minfo[39m: chromecast.0 Ansage Flur - Finished playing announcement[/code]`
        
        Werde das mal in das Script einbauen, die Änderung machen und beobachten.
        
        1 Reply Last reply Reply Quote 0
        • T
          tempestas last edited by

          ok, dann muss es so sein, dass der trigger nicht wieder auf false gesetzt wurde, warum auch immer. Nun ist er es ja wieder, offenbar gab es da ein Problem vom 11. auf den 12.4

          Grund bleibt unklar

          1 Reply Last reply Reply Quote 0
          • E
            eve11 last edited by

            Hallo zusammen, ich benutze dieses Script für die Anzeige des Mülls.

            `/* Kalenderevent in der Zukunft suchen
            
            sucht im iCal Adapter nach events, die noch kommen
            viewtopic.php?f=21&t=3761&sid=4319378b32a0ce096bbbbfc0ebd859ce#p34975
            
            20.09.2016 erstellt von pix
            13.11.2016 angepasst für Sven
            */
            
            // User Anpassungen
            var aSuchstringLiteral = ['Rest', 'Bio', 'Papier', 'Gelber Sack']; // Suchbegriff
            var aSuchstring = ['Rest', 'Bio', 'Papier', 'Gelber Sack'];
            var stichtag = 1; // 0 heute; 1 morgen; 2 übermorgen; 3 In 3 Tagen
            var idTabelle = 'ical.0.data.table'; // Instanz eintragen
            var logging = false; // debug Log ein/ausschalten
            // Ende User Anpassungen
            
            for (var j = 0; j < aSuchstring.length; j++) {
            
            createState('Muellwarnung.' + aSuchstring[j], false, {
            type: 'boolean',
            name: aSuchstringLiteral[j] + ' wird morgen abgeholt',
            desc: aSuchstringLiteral[j] + ' wird morgen abgeholt (Boolean)',
            def: false
            });
            var idEventState = 'Muellwarnung.' + aSuchstring[j];
            log (idEventState);
            setState(idEventState, false); 
            }
            
            var tage = ['Heute','Morgen','Übermorgen','In 3 Tagen']; // dafür relative Datumsangabe in iCal-Adapter einschalten und ggf. übersetzen
            
            function datum(x) {
            var jetzt = new Date();
            if (logging) log('Jetztzeit: ' + jetzt);
            //var zeit = new Date(jetzt.getTime() + x * 24 * 60 * 60 * 1000); // es werden genau x Tage, als x * 24 Stunden zugezählt --> nicht gut
            var zeit = new Date (jetzt.getFullYear(), jetzt.getMonth(), jetzt.getDate() + x); // in drei Tagen um Mitternacht
            if (logging) log('Zielzeit: ' + zeit);
            var jahr = zeit.getFullYear();
            var monat = (zeit.getMonth()+1 < 10) ? '0' + (zeit.getMonth()+1) : zeit.getMonth()+1;
            var tag = (zeit.getDate() < 10) ? '0' + zeit.getDate() : zeit.getDate();
            return (tag + '.' + monat + '.' + jahr);
            }
            
            function pruefeKalender() {
            var kalender = getState(idTabelle).val;
            var tag = datum(parseInt(stichtag,10));
            if (logging) log(tag);
            try{
            var ereignisse = JSON.stringify(kalender, null, 2); // Ausgabe als String
            if (logging) log(ereignisse);
            for (var j = 0; j < aSuchstring.length; j++) {
            var idEventState = 'Muellwarnung.' + aSuchstring[j];
            for(var i = 0; i <kalender.length; 19/i++)/{/alle/events/durchgehen/if/(/(kalender[i].date.indexof(tag)/!="-1)" ||/(kalender[i].date.indexof(tage[stichtag])/)/string/datum/oder/relatives/(nicht/nicht)/gefunden,/also/gefunden/var/termin="kalender[i].event;" (termin.indexof(asuchstringliteral[j])/log('treffer:/'/+/tage[stichtag]/asuchstringliteral[j]);/hier/wird/später/vielleicht/stichtag_array/verwendet/setstate(ideventstate,/true);/break;/}/else/false);/catch/(fehler_try)/log('fehler/beim/kalenderevents/einlesen/fehler_try,/'error');/schedule("00/*/*",/function(){/bei/mehreren/müllskripts/den/ersten/wert/verändern/(minuten)/for/(var/j="0;" </asuchstring.length;/j++)/ideventstate="Muellwarnung." asuchstring[j];/event="getState(idEventState).val;" (event)/ansage="aSuchstringLiteral[j]" morgen/abgeholt./bitte/stell/die/tonne/an/straße!';/kann/sayit/push/gesetzt/werden/sendto("pushover.0",/ansage);/});/aktualisierung/on/({id:/idtabelle,/change:/'any'},/function(data)/pruefekalender();/1min/nach/mitternacht/schedule("1/pruefekalender);/skriptstart/pruefekalender();<e=""></kalender.length;>`
            
            Nur der gelbe Sack wird nicht verarbeitet, da im Import in den Google Kalender "Gelber Sack" mit einem Leerzeichen angegeben ist. Ich habe einen Termin ohne angelegt und anschließend das Script dementsprechend angepaßt. Anschließend ist alles OK. Was müsste ich verändern, dass das Leerzeichen berücksichtigt wird. 
            
            Vielen Dank.
            
            eve11
              [6450_iobroker.jpg](/assets/uploads/files/6450_iobroker.jpg)  
              [6450_iobroker2.jpg](/assets/uploads/files/6450_iobroker2.jpg)  [/i][/i][/i]
            
            1 Reply Last reply Reply Quote 0
            • M
              mikiline last edited by

              einfach nach "Gelber" suchen und den Sack weglassen :lol:

              1 Reply Last reply Reply Quote 0
              • E
                eve11 last edited by

                Nu hast natürlich recht.

                Peinlich.

                Aber trotzdem Danke

                eve11

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

                  Hallo,

                  ich habe schon seit einiger Zeit das Script von Pix im Einsatz.

                  Doch nun ist mir aufgefallen dass ein paar meiner Müllscripte nicht geändert werden.

                  Also im Klartext der Ical Kaleneder wird geladen auch das Script erkennt wohl dass es dort eine Änderung gibt aber der Wert wird unter den Datenpunkten nicht geändert, es bleibt also bei "false" und wird nicht auf "true" gesetzt.

                  Die Scripte sind identisch eben nur die jeweilige Tonne wird geändert bei einigen gehts bei den anderen nicht.

                  Nun dachte ich mir ok wenn das für Müll geht warum nicht auch für den Dienstplan meiner Frau.

                  Also habe ich hier das gleiche Script genommen und dann eben nur mit den Diensten angepasst aber auch hier tut sich nichts kein Wert wird geändert.

                  `/* Kalenderevent in der Zukunft suchen
                  
                  sucht im iCal Adapter nach events, die noch kommen
                  http://forum.iobroker.net/viewtopic.php?f=21&t=3761&sid=4319378b32a0ce096bbbbfc0ebd859ce#p34975
                  
                  20.09.2016 erstellt von pix
                  13.11.2016 angepasst für Sven
                  */
                  
                  // User Anpassungen
                  var suchstring =   'Früh';              // Suchbegriff
                  var stichtag =      0;                   // 0 heute;  1 morgen; 2 übermorgen; 3 In 3 Tagen
                  var idTabelle =    'ical.1.data.table'; // Instanz eintragen
                  var logging =      true;                // debug Log ein/ausschalten
                  // Ende User Anpassungen
                  
                  createState('Dienste_Nina.' + suchstring, false, {
                       type: 'boolean',
                       name: suchstring + ' Dienst',
                       desc: suchstring + ' Dienst (Boolean)',
                       def: false
                  });
                  var idEventState = 'Dienste_Nina.' + suchstring;
                  setState(idEventState, false); 
                  
                  var tage = ['Heute','Morgen','Übermorgen','In 3 Tagen']; // dafür relative Datumsangabe in iCal-Adapter einschalten und ggf. übersetzen
                  
                  function datum(x) {
                      var jetzt = new Date();
                      if (logging) log('Jetztzeit: ' + jetzt);
                      //var zeit = new Date(jetzt.getTime() + x * 24 * 60 * 60 * 1000); // es werden genau x Tage, als x * 24 Stunden zugezählt --> nicht gut
                      var zeit = new Date (jetzt.getFullYear(), jetzt.getMonth(), jetzt.getDate() + x); // in drei Tagen um Mitternacht
                      if (logging) log('Zielzeit: ' + zeit);
                      var jahr       = zeit.getFullYear();
                      var monat      = (zeit.getMonth()+1 < 10) ? '0' + (zeit.getMonth()+1) : zeit.getMonth()+1;
                      var tag        = (zeit.getDate() < 10) ? '0' + zeit.getDate() : zeit.getDate();
                      return (tag + '.' + monat + '.' + jahr);
                  }
                  
                  function pruefeKalender() {
                      var kalender = getState(idTabelle).val;
                      var tag = datum(parseInt(stichtag,10));
                      if (logging) log(tag);
                      try{
                          var ereignisse = JSON.stringify(kalender, null, 2); // Ausgabe als String
                          if (logging) log(ereignisse);
                          for(var i = 0; i <kalender.length; i++)/{/alle/events/durchgehen/if/(/(kalender[i].date.indexof(tag)/!="-1)" ||/(kalender[i].date.indexof(tage[stichtag])/)/string/datum/oder/relatives/(nicht/nicht)/gefunden,/also/gefunden/var/termin="kalender[i].event;" (termin.indexof(suchstring)/log('treffer:/'/+/tage[stichtag]/suchstring);/hier/wird/später/vielleicht/stichtag_array/verwendet/setstate(ideventstate,/true);/}/else/false);/catch/(fehler_try)/log('fehler/beim/kalenderevents/einlesen/fehler_try,/'error');/schedule("00/01/*/*",/function(){/bei/mehreren/müllskripts/den/ersten/wert/verändern/(minuten)/event="getState(idEventState).val;" (event)/ansage="suchstring" morgen/abgeholt./bitte/rausstellen!';/kann/sayit/push/gesetzt/werden/setstate("sayit.0.tts.text"/*text/to/speech*/,/ansage);/});/aktualisierung/on/({id:/idtabelle,/change:/'any'},/function(data)/pruefekalender();/1min/nach/mitternacht/schedule("1/pruefekalender);/skriptstart/pruefekalender();<e=""></kalender.length;>`
                  
                  Hier mal das für einen Dienst. Im Anschluß habe ich dann nur mittels VIS einen Button auf dem Früh steht und der dann einen Datenpunkt liest.
                  
                  MFG Maggi[/i][/i][/i]
                  
                  1 Reply Last reply Reply Quote 0
                  • L
                    lutzer last edited by

                    Ich habe mal eine ganz doofe Frage: was mache ich nach dem iCal und die Scripte angelegt sind?

                    Was muss ich jetzt im Vis machen das ich dort eine Zahl stehen habe? Also 1 (…1 Tag bis zum Termin/Abholung)...

                    "String (unescaped) " zeigt ja nur den ganzen Kalender an...

                    Bitte nicht steinigen 😉

                    1 Reply Last reply Reply Quote 0
                    • M
                      mikiline last edited by

                      wenn die Skripte angelegt sind gibt es auch sicher neue Objekte die Du abrufen kannst…..

                      1 Reply Last reply Reply Quote 0
                      • L
                        lutzer last edited by

                        Ja unter Javascript, aber da steht dann auch nur true/false.

                        Ich dachte da kommt eine Zahl raus. "4" (in Tagen …)

                        So wie im vba oder sql wo man mit today/now - xxx eine Zahl raus hat.

                        Aslo man hat ja "heute", kann das nächste Ereigniss finden was den kleinsten Abstand zu "heute" hat und gibt den Zähler aus.

                        Der Rest ist ja dann nur Darsetllung im Vis. Also bei Zahl < 2 blinkt dann das Icon oder so.

                        Mit der Sprachausgabe hab ich es nicht so, deswegen konnte ich den anderen nicht mehr folgen.

                        1 Reply Last reply Reply Quote 0
                        • M
                          mikiline last edited by

                          welches Skript denn?

                          Falls z.B Müll gewünscht ist kannst du dieses hier nehmen (natürlich anpassen)

                          Im Skript hab ich dir markiert was du anpassen musst mit "//HIER ANPASSEN!!!!!!!!!!!!!!!!!!!!!"

                          ! ````
                          // Anlegen JS State für VIS
                          //HIER ANPASSEN!!!!!!!!!!!!!!!!!!!!!
                          createState('javascript.0.muell.restmuell', 0); //. gelb, blau usw entsprechend erstellen
                          createState('javascript.0.muell.gelbersack', 0); //. gelb, blau usw entsprechend erstellen
                          createState('javascript.0.muell.papiertonne', 0); //. gelb, blau usw entsprechend erstellen
                          createState('javascript.0.muell.papierholsammlung', 0); //. gelb, blau usw entsprechend erstellen
                          createState('javascript.0.muell.biotonne', 0); //. gelb, blau usw entsprechend erstellen
                          ! schedule("05 00 * * *", function () {
                          // TESTSKRIPT FÜR NOXX
                          ! // Annahme ist, dass jede Müllart mindestens einmal im Monat abgeholt wird. Nicht getestet und eventuell problematisch ist es, wenn Müll seltener abgeholt wird.
                          ! debug = true;
                          ! // Suchvariablen
                          //HIER ANPASSEN!!!!!!!!!!!!!!!!!!!!!
                          var restmuell= "Restm"; // weitere Varialben für die anderen Müllsorten eintragen
                          var gelbersack= "Gelber"; // weitere Varialben für die anderen Müllsorten eintragen
                          var papiertonne= "Papier"; // weitere Varialben für die anderen Müllsorten eintragen
                          var biotonne= "Bio"; // weitere Varialben für die anderen Müllsorten eintragen
                          var papierholsammlung= "Papier Hol"; // weitere Varialben für die anderen Müllsorten eintragen
                          ! // Kalender auslesen (HTML Format)
                          ! // **************************************************************************************
                          // Termine auswerten aus html. Bereinigung der HTML Tags und Konvertierung in Plain Text
                          // **************************************************************************************
                          //HIER den ical ANPASSEN!!!!!!!!!!!!!!!!!!!!!
                          var inhalt = getState("ical.2.data.html"/HTML iCal table/); // an deinen eigenen Kalender anpassen
                          var inhaltString = inhalt.val.toString();
                          var inhaltStringReplace = inhaltString;
                          var inhaltStringText;
                          var i_search;

                              // remove all inside SCRIPT and STYLE tags
                              inhaltStringReplace=inhaltStringReplace.replace(/<script.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/script>/gi, "");
                              inhaltStringReplace=inhaltStringReplace.replace(/<style.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/style>/gi, "");
                          
                              // remove BR tags
                              inhaltStringReplace=inhaltStringReplace.replace(/
                          

                          /gi, "");
                          inhaltStringReplace=inhaltStringReplace.replace(/<br\s>/gi, "");
                          inhaltStringReplace=inhaltStringReplace.replace(/<br>/gi, "");

                              // remove all else
                              inhaltStringReplace=inhaltStringReplace.replace(/<(?:.|\s)*?>/g, "");
                          
                              // get rid of html-encoded characters:
                              inhaltStringReplace=inhaltStringReplace.replace(/ /gi," ");
                              inhaltStringReplace=inhaltStringReplace.replace(/&/gi,"&");
                              inhaltStringReplace=inhaltStringReplace.replace(/"/gi,'"');
                              inhaltStringReplace=inhaltStringReplace.replace(/</gi,'<');
                              inhaltStringReplace=inhaltStringReplace.replace(/>/gi,'>');    
                          
                              if(debug) log(inhaltStringReplace);
                          
                              //HIER welche States gewünscht sind ANPASSEN!!!!!!!!!!!!!!!!!!!!!
                              setState('javascript.0.muell.restmuell', getPos(restmuell));
                              setState('javascript.0.muell.gelbersack', getPos(gelbersack));
                              setState('javascript.0.muell.papiertonne', getPos(papiertonne));
                              setState('javascript.0.muell.biotonne', getPos(biotonne));
                              setState('javascript.0.muell.papierholsammlung', getPos(papierholsammlung));
                          

                          ! // n-ten Treffer finden
                          ! function nthIndex(str, pat, n){
                          var L= str.length, i= -1;
                          while(n-- && i++ <l){ i="str.indexOf(pat," i);/if/(i/</0)/break;/}/i_search="i;" funktion/zum/tage/im/monat/zählen/function/daysinmonth(month,/year)/{/return/new/date(year,/month,/0).getdate();/position/bestimmen/getpos(pos_welche_tonne)/var/pos="inhaltStringReplace.indexOf(pos_welche_tonne," 1);/if(debug)/log("pos/ist:/"+pos);/inhaltstringtext="inhaltStringReplace.substring((pos-13),pos-1);" log("datum/"+inhaltstringtext);/nthindex(inhaltstringtext,/".",/t_m="inhaltStringText.slice(0," i_search);/pos1="i_search+1;" log("pos1:/"/+pos1/);/2);/m_m="inhaltStringText.slice(pos1," pos2="i_search+1;" log("pos2:/+pos2/j_m="inhaltStringText.slice(pos2," inhaltstringtext.len/log(t_m/+"/,/+m_m/+j_m);/datum/heute/ermitteln/today="new" date();/log(today);/tag/t="today.getDate();" m="today.getMonth()+1;" jahr/j="today.getFullYear();" "+t+m+j);/berechnung/tagesdifferenzen/diff="0;" dim="DaysInMonth(m," j);/des/aktuellen/monats/log("tage/aktueller/monat:/"+dim);/if(j_m="">j || m_m > m) { // Prüfung: Jahr_Müll größer als aktuelles Jahr? Relevant bei Jahreswechsel ODEr Monat Müll größer aktueller Monat?

                                  diff = parseInt(dim) - parseInt(t) + parseInt(t_m);          
                              }
                              else diff = parseInt(t_m) - parseInt(t);
                          
                                if(debug) log("Tage bis zum nächsten Müll: "+diff);
                          
                                return diff;
                          }
                          

                          });</l){></br></br\s></style.></script.>

                          1 Reply Last reply Reply Quote 0
                          • L
                            lutzer last edited by

                            Guten Morgen,

                            ja es geht um Müll 😄

                            Danke für das Skript und die Kommentare die sind für Einsteiger sehr wichtig.

                            Wie mache ich jetzt weiter?

                            Ich habe das Skript angepasst (Kalender und Tonnennamen) und es unter Skripte erstellt.

                            Jetzt steht unter Objekte bei dem Javaskript true. Und es wurde ein Ordner muell erstellt, wo alle Tonnen und ein json drin ist.

                            Wo stehen jetzt die Werte die erzeugt wurden und mit was stelle ich diese in Vis dar?

                            Ich hab da irgendwie ein Verständnis Problem… :?

                            So sieht es im Vis bei mir aus. (Tonnen und Termine sind noch zum testen etwas durcheinander...)

                            Links das ist das "json" und rechts die iCal Tabelle

                            Sorry das "json" kam aus einem anderen Skript - das ist der Nachteil am Testen, es bleibt immer was zurück...
                            8604_unbenannt-2.png

                            1 Reply Last reply Reply Quote 0
                            • M
                              mikiline last edited by

                              In dem neuen ordner "muell" sind doch jetzt die Objekte mit zahlen, was die Tage bis zur Abholung anzeigt.

                              Das kannst Du mit jedem Widget darstellen.

                              z.B. mit diesem hier, das kannst Dir mal importieren

                              ! ````
                              [{"tpl":"tplIconState","data":{"oid":"javascript.0.muell.biotonne","g_fixed":false,"g_visibility":true,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":true,"g_gestures":false,"g_signals":true,"visibility-cond":">","visibility-val":"0","visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":"0","signals-icon-0":"/vis.0/iPad/icons/Exclamation-mark-icon.png","signals-icon-size-0":"36","signals-blink-0":true,"signals-horz-0":"","signals-vert-0":"","signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"src":"/vis.0/iPad/icons/tonne_bio.png","imageHeight":"100","value":"14","text":"{javascript.0.muell.biotonne}","visibility-oid":"","lc-type":"timestamp","lc-is-interval":true,"lc-format":"hh:mm:ss","lc-position-vert":"top","lc-position-horz":"left","lc-offset-vert":"3","lc-offset-horz":"89","lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-is-moment":true,"lc-zindex":0,"lc-oid":"","signals-oid-0":"javascript.0.muell.biotonne","signals-text-0":"Heute"},"style":{"left":"232px","top":"431px","width":"70px","height":"70px","z-index":"3","text-align":"center","font-size":"small","border-color":"","border-width":""},"widgetSet":"jqui"}]

                              1 Reply Last reply Reply Quote 0
                              • L
                                lutzer last edited by

                                Da sind bei mir alles Nullen…

                                Irgendetwas scheint es nicht zu finden...

                                Der Kalender wird richtig abgeholt, dass sieht man ja an der normalen Übersicht.

                                Wie oft wird das aktualisiert?

                                schedule("05 00 * * *", function ()
                                

                                Beim iCal muss da der Haken bei "Ersetze Datum mit Worten" drin sein?

                                1 Reply Last reply Reply Quote 0
                                • M
                                  mikiline last edited by

                                  wird heute Nacht um 0:05 aktualisiert….. oder du kommentierst den "schedule" mal aus mit "//" (wie bei den Kommentaren)

                                  Dann läuft das Skript einmal durch und es zeigt dir Werte an. Dann die Auskommentierung wieder rausnehmen

                                  Haken brauch man nicht.

                                  1 Reply Last reply Reply Quote 0
                                  • L
                                    lutzer last edited by

                                    auskommentieren ist so ne Sache weil da eine { bis zum ende das Codes geht.

                                    Ich habe es mit ***** aushebeln können. Das sollte ja immer aktualisieren oder?

                                    Ich kann mit den Zahlen schon mal einen Erfolg melden. Jetzt werden die Tage ordentlich gezählt.

                                    Vielen Dank für die Hilfe und Geduld.

                                    Eine Frage zu dem Widget: Was macht der Wert 14? Ist das so eine Art Rückmeldung und zurrück setzen?

                                    Dann muss die Aktualisierung ja tatsächlich 5 nach 12 gemacht werden, sonst wird die 14 ja immer wieder überschrieben.

                                    1 Reply Last reply Reply Quote 0
                                    • M
                                      mikiline last edited by

                                      Ja die setzt einfach den Wert auf 14 Tage und wird in der Nacht wieder auf den nächsten richtigen Müllabholtag überschrieben. Das ist, da ich die Signalbilder verwende am Tag "0" (an dem der Müll abgeholt wird)…...Dann blinkt dies nicht den ganzen Tag 😉

                                      1 Reply Last reply Reply Quote 0
                                      • M
                                        Marc1970 last edited by

                                        @ pix

                                        Hallo, ich habe erfolgreich dein Müllscript im Einsatz:

                                        /* Kalenderevent in der Zukunft suchen

                                        sucht im iCal Adapter nach events, die noch kommen

                                        http://forum.iobroker.net/viewtopic.php … 9ce#p34975

                                        20.09.2016 erstellt von pix

                                        */

                                        tolle Arbeit.

                                        Ich habe es auch schon mehrmals für andere Abfragen (heute, morgen) genutzt,

                                        nun meine Frage:

                                        Ist es möglich auch Termine von gestern abzufragen und was müßte dafür im Script geändert werden?

                                        MfG Marc

                                        <u>Hat sich erledigt, hab es anders gelöst….</u>

                                        Gruß Marc

                                        1 Reply Last reply Reply Quote 0
                                        • W
                                          w00dy last edited by w00dy

                                          Hallo,

                                          ich versuche schon seit Tagen den Fehler zu finden, ich hoffe ihr könnt mir helfen.

                                          Ich habe das Script oben von @mikiline angepasst und den Shedule vorerst zum Testen mit "* * * * *" gespeichert.

                                          Im neuen Ordner "muell" werden mir die Tonnen auch angezeigt, aber die Werte bleiben immer auf "0", bzw. es wird nichts angezeigt.

                                          In ical ist "Ersetze Datum mit Worten" angehakt und Ereignisse sind auch genug vorhanden.

                                          Das Log vom Script:

                                          17:15:00.556	[info]	javascript.0 script.js.Müll-Kalendertermine_vorzeitig_anzeigen: pos ist: -1
                                          17:15:00.556	[info]	javascript.0 script.js.Müll-Kalendertermine_vorzeitig_anzeigen: Datum ist:
                                          17:15:00.556	[info]	javascript.0 script.js.Müll-Kalendertermine_vorzeitig_anzeigen: pos1: 0
                                          17:15:00.556	[info]	javascript.0 script.js.Müll-Kalendertermine_vorzeitig_anzeigen: pos2: 0
                                          17:15:00.556	[info]	javascript.0 script.js.Müll-Kalendertermine_vorzeitig_anzeigen: , ,
                                          17:15:00.556	[info]	javascript.0 script.js.Müll-Kalendertermine_vorzeitig_anzeigen: Mon Oct 22 2018 17:15:00 GMT+0200 (CEST)
                                          17:15:00.557	[info]	javascript.0 script.js.Müll-Kalendertermine_vorzeitig_anzeigen: Datum heute ist: 22102018
                                          17:15:00.557	[info]	javascript.0 script.js.Müll-Kalendertermine_vorzeitig_anzeigen: Tage aktueller Monat: 31
                                          17:15:00.557	[info]	javascript.0 script.js.Müll-Kalendertermine_vorzeitig_anzeigen: Tage bis zum nächsten Müll: NaN
                                          17:15:00.557	[info]	javascript.0 script.js.Müll-Kalendertermine_vorzeitig_anzeigen: pos ist: 33
                                          17:15:00.557	[info]	javascript.0 script.js.Müll-Kalendertermine_vorzeitig_anzeigen: Datum ist: Übermorgen
                                          17:15:00.557	[info]	javascript.0 script.js.Müll-Kalendertermine_vorzeitig_anzeigen: pos1: 0
                                          17:15:00.557	[info]	javascript.0 script.js.Müll-Kalendertermine_vorzeitig_anzeigen: pos2: 0
                                          17:15:00.557	[info]	javascript.0 script.js.Müll-Kalendertermine_vorzeitig_anzeigen: Übermorgen , Übermorgen , Übermorgen
                                          17:15:00.557	[info]	javascript.0 script.js.Müll-Kalendertermine_vorzeitig_anzeigen: Mon Oct 22 2018 17:15:00 GMT+0200 (CEST)
                                          17:15:00.557	[info]	javascript.0 script.js.Müll-Kalendertermine_vorzeitig_anzeigen: Datum heute ist: 22102018
                                          17:15:00.557	[info]	javascript.0 script.js.Müll-Kalendertermine_vorzeitig_anzeigen: Tage aktueller Monat: 31
                                          17:15:00.557	[info]	javascript.0 script.js.Müll-Kalendertermine_vorzeitig_anzeigen: Tage bis zum nächsten Müll: NaN
                                          17:15:00.557	[info]	javascript.0 script.js.Müll-Kalendertermine_vorzeitig_anzeigen: pos ist: -1
                                          17:15:00.557	[info]	javascript.0 script.js.Müll-Kalendertermine_vorzeitig_anzeigen: Datum ist:
                                          17:15:00.557	[info]	javascript.0 script.js.Müll-Kalendertermine_vorzeitig_anzeigen: pos1: 0
                                          17:15:00.557	[info]	javascript.0 script.js.Müll-Kalendertermine_vorzeitig_anzeigen: pos2: 0
                                          17:15:00.558	[info]	javascript.0 script.js.Müll-Kalendertermine_vorzeitig_anzeigen: , ,
                                          17:15:00.558	[info]	javascript.0 script.js.Müll-Kalendertermine_vorzeitig_anzeigen: Mon Oct 22 2018 17:15:00 GMT+0200 (CEST)
                                          17:15:00.558	[info]	javascript.0 script.js.Müll-Kalendertermine_vorzeitig_anzeigen: Datum heute ist: 22102018
                                          17:15:00.558	[info]	javascript.0 script.js.Müll-Kalendertermine_vorzeitig_anzeigen: Tage aktueller Monat: 31
                                          17:15:00.558	[info]	javascript.0 script.js.Müll-Kalendertermine_vorzeitig_anzeigen: Tage bis zum nächsten Müll: NaN
                                          

                                          Mein angepasstes Script:

                                          // Anlegen JS State für VIS
                                          //HIER ANPASSEN!!!!!!!!!!!!!!!!!!!!!
                                          createState('javascript.0.muell.restabfall', 0);   //. gelb, blau usw entsprechend erstellen
                                          createState('javascript.0.muell.gelbersack', 0);   //. gelb, blau usw entsprechend erstellen
                                          createState('javascript.0.muell.altpapier', 0);   //. gelb, blau usw entsprechend erstellen
                                          createState('javascript.0.muell.papierholsammlung', 0);   //. gelb, blau usw entsprechend erstellen
                                          createState('javascript.0.muell.bioabfall', 0);   //. gelb, blau usw entsprechend erstellen
                                          
                                          schedule("* * * * *", function () {
                                          // TESTSKRIPT FÜR NOXX
                                          
                                          // Annahme ist, dass jede Müllart mindestens einmal im Monat abgeholt wird. Nicht getestet und eventuell problematisch ist es, wenn Müll seltener abgeholt wird.
                                          
                                          debug = true;
                                          
                                          // Suchvariablen
                                          //HIER ANPASSEN!!!!!!!!!!!!!!!!!!!!!
                                          var restabfall= "Restm";     // weitere Varialben für die anderen Müllsorten eintragen
                                          var gelbersack= "Gelber";     // weitere Varialben für die anderen Müllsorten eintragen
                                          var altpapier= "Papier";     // weitere Varialben für die anderen Müllsorten eintragen
                                          var bioabfall= "Bio";     // weitere Varialben für die anderen Müllsorten eintragen
                                          var papierholsammlung= "Papier Hol";     // weitere Varialben für die anderen Müllsorten eintragen
                                          
                                          // Kalender auslesen (HTML Format)
                                          
                                              // **************************************************************************************            
                                              // Termine auswerten aus html. Bereinigung der HTML Tags und Konvertierung in Plain Text
                                              // **************************************************************************************
                                              //HIER den ical ANPASSEN!!!!!!!!!!!!!!!!!!!!!
                                                  var inhalt = getState("ical.0.data.html"/*HTML iCal table*/);           // an deinen eigenen Kalender anpassen
                                                  var inhaltString = inhalt.val.toString();
                                                  var inhaltStringReplace = inhaltString;
                                                  var inhaltStringText;
                                                  var i_search;
                                          
                                                  // remove all inside SCRIPT and STYLE tags
                                                  inhaltStringReplace=inhaltStringReplace.replace(/<script.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/script>/gi, "");
                                                  inhaltStringReplace=inhaltStringReplace.replace(/<style.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/style>/gi, "");
                                          
                                                  // remove BR tags
                                                  inhaltStringReplace=inhaltStringReplace.replace(/
                                          /gi, "");
                                                  inhaltStringReplace=inhaltStringReplace.replace(/<br\s\>/gi, "");
                                                  inhaltStringReplace=inhaltStringReplace.replace(/<br\>/gi, "");
                                          
                                                  // remove all else
                                                  inhaltStringReplace=inhaltStringReplace.replace(/<(?:.|\s)*?>/g, "");
                                          
                                                  // get rid of html-encoded characters:
                                                  inhaltStringReplace=inhaltStringReplace.replace(/ /gi," ");
                                                  inhaltStringReplace=inhaltStringReplace.replace(/&/gi,"&");
                                                  inhaltStringReplace=inhaltStringReplace.replace(/"/gi,'"');
                                                  inhaltStringReplace=inhaltStringReplace.replace(/</gi,'<');
                                                  inhaltStringReplace=inhaltStringReplace.replace(/>/gi,'>');    
                                          
                                                  if(debug) log(inhaltStringReplace);
                                          
                                                  //HIER welche States gewünscht sind ANPASSEN!!!!!!!!!!!!!!!!!!!!!
                                                  setState('javascript.0.muell.restabfall', getPos(restabfall));
                                                  setState('javascript.0.muell.gelbersack', getPos(gelbersack));
                                                  setState('javascript.0.muell.altpapier', getPos(altpapier));
                                                  setState('javascript.0.muell.bioabfall', getPos(bioabfall));
                                                  setState('javascript.0.muell.papierholsammlung', getPos(papierholsammlung));
                                          
                                          // n-ten Treffer finden
                                          
                                                  function nthIndex(str, pat, n){
                                                  var L= str.length, i= -1;
                                                  while(n-- && i++ <l){ i="str.indexOf(pat," i);/if/(i/</0)/break;/}/i_search="i;" funktion/zum/tage/im/monat/zählen/function/daysinmonth(month,/year)/{/return/new/date(year,/month,/0).getdate();/position/bestimmen/getpos(pos_welche_tonne)/var/pos="inhaltStringReplace.indexOf(pos_welche_tonne," 1);/if(debug)/log("pos/ist:/"+pos);/inhaltstringtext="inhaltStringReplace.substring((pos-13),pos-1);" log("datum/"+inhaltstringtext);/nthindex(inhaltstringtext,/".",/t_m="inhaltStringText.slice(0," i_search);/pos1="i_search+1;" log("pos1:/"/+pos1/);/2);/m_m="inhaltStringText.slice(pos1," pos2="i_search+1;" log("pos2:/+pos2/j_m="inhaltStringText.slice(pos2," inhaltstringtext.len/log(t_m/+"/,/+m_m/+j_m);/datum/heute/ermitteln/today="new" date();/log(today);/tag/t="today.getDate();" m="today.getMonth()+1;" jahr/j="today.getFullYear();" "+t+m+j);/berechnung/tagesdifferenzen/diff="0;" dim="DaysInMonth(m," j);/des/aktuellen/monats/log("tage/aktueller/monat:/"+dim);/if(j_m="">j || m_m > m) { // Prüfung: Jahr_Müll größer als aktuelles Jahr? Relevant bei Jahreswechsel ODEr Monat Müll größer aktueller Monat?
                                          
                                                      diff = parseInt(dim) - parseInt(t) + parseInt(t_m);          
                                                  }
                                                  else diff = parseInt(t_m) - parseInt(t);
                                          
                                                    if(debug) log("Tage bis zum nächsten Müll: "+diff);
                                          
                                                    return diff;
                                              }
                                          });</l){></br\></br\s\></style.*></script.*>
                                          

                                          Habe ich doch irgendwo was übersehen?

                                          <size size="150">EDIT:

                                          Sorry, habe ein paar Eingabefehler gemacht. Werde alt, muss mir unbedingt ne Brille zulegen. Altpapier und Restabfall wird jetzt angezeigt, Gelber Sack und Bio noch nicht. Den Fehler finde ich hoffentlich auch noch…</size>

                                          1 Reply Last reply Reply Quote 0
                                          • M
                                            mikiline last edited by

                                            "Ersetze Datum mit Worten" muss nicht angehakt sein und es brauch für das Skript auch keine Ereignisse

                                            Die Suchworte müssen natürlich auch genau so im Kalender vorhanden sein!

                                            Such mal nur nach "bio" dann sollte dort auch was angezeigt werden, denn das Wort "abfall" kommt bei dir auch in restabfall vor 😉

                                            Dann evtl auch nur nach "gelb" oder "gelber" suchen…..

                                            Solltest Du in der ical Instanz auch nur z.B 5 Tage bei "Tagesvorschau" eingestellt haben, kann er auch keinen Termin finden der erst in 7 Tagen stattfindet. Dort kannst z.B 31 Tage einstellen
                                            2678_ical.png

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            542
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            32
                                            159
                                            25078
                                            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