Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Ical Setzen eines Events

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.4k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.0k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.5k

Ical Setzen eines Events

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
159 Beiträge 32 Kommentatoren 29.8k Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • T Offline
    T Offline
    tempestas
    schrieb am zuletzt editiert von
    #134

    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]
    

    <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

    1 Antwort Letzte Antwort
    0
    • wendy2702W Online
      wendy2702W Online
      wendy2702
      schrieb am zuletzt editiert von
      #135

      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.
      

      Bitte keine Fragen per PN, die gehören ins Forum!

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      1 Antwort Letzte Antwort
      0
      • T Offline
        T Offline
        tempestas
        schrieb am zuletzt editiert von
        #136

        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

        <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

        1 Antwort Letzte Antwort
        0
        • E Offline
          E Offline
          eve11
          schrieb am zuletzt editiert von
          #137

          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 Antwort Letzte Antwort
          0
          • M Offline
            M Offline
            mikiline
            schrieb am zuletzt editiert von
            #138

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

            1 Antwort Letzte Antwort
            0
            • E Offline
              E Offline
              eve11
              schrieb am zuletzt editiert von
              #139

              Nu hast natürlich recht.

              Peinlich.

              Aber trotzdem Danke

              eve11

              1 Antwort Letzte Antwort
              0
              • C Offline
                C Offline
                csamaggi
                schrieb am zuletzt editiert von
                #140

                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 Antwort Letzte Antwort
                0
                • L Offline
                  L Offline
                  lutzer
                  schrieb am zuletzt editiert von
                  #141

                  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 Antwort Letzte Antwort
                  0
                  • M Offline
                    M Offline
                    mikiline
                    schrieb am zuletzt editiert von
                    #142

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

                    1 Antwort Letzte Antwort
                    0
                    • L Offline
                      L Offline
                      lutzer
                      schrieb am zuletzt editiert von
                      #143

                      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 Antwort Letzte Antwort
                      0
                      • M Offline
                        M Offline
                        mikiline
                        schrieb am zuletzt editiert von
                        #144

                        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 Antwort Letzte Antwort
                        0
                        • L Offline
                          L Offline
                          lutzer
                          schrieb am zuletzt editiert von
                          #145

                          Guten Morgen,

                          ja es geht um Müll :D

                          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 Antwort Letzte Antwort
                          0
                          • M Offline
                            M Offline
                            mikiline
                            schrieb am zuletzt editiert von
                            #146

                            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 Antwort Letzte Antwort
                            0
                            • L Offline
                              L Offline
                              lutzer
                              schrieb am zuletzt editiert von
                              #147

                              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 Antwort Letzte Antwort
                              0
                              • M Offline
                                M Offline
                                mikiline
                                schrieb am zuletzt editiert von
                                #148

                                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 Antwort Letzte Antwort
                                0
                                • L Offline
                                  L Offline
                                  lutzer
                                  schrieb am zuletzt editiert von
                                  #149

                                  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 Antwort Letzte Antwort
                                  0
                                  • M Offline
                                    M Offline
                                    mikiline
                                    schrieb am zuletzt editiert von
                                    #150

                                    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 Antwort Letzte Antwort
                                    0
                                    • M Offline
                                      M Offline
                                      Marc1970
                                      schrieb am zuletzt editiert von
                                      #151

                                      @ 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

                                      Und denkt immer daran, blau ist rot und Plus ist Minus…

                                      1 Antwort Letzte Antwort
                                      0
                                      • W Offline
                                        W Offline
                                        w00dy
                                        schrieb am zuletzt editiert von w00dy
                                        #152

                                        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>

                                        LG,
                                        w00dy

                                        1 Antwort Letzte Antwort
                                        0
                                        • M Offline
                                          M Offline
                                          mikiline
                                          schrieb am zuletzt editiert von
                                          #153

                                          "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 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          757

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe