Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Ical mehrere Instanzen -> nur bestimmte Termine

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Ical mehrere Instanzen -> nur bestimmte Termine

    This topic has been deleted. Only users with topic management privileges can see it.
    • Karel Puhli
      Karel Puhli @liv-in-sky last edited by

      @liv-in-sky Danke Dir schon mal!!! 👍

      liv-in-sky 1 Reply Last reply Reply Quote 0
      • liv-in-sky
        liv-in-sky @Karel Puhli last edited by liv-in-sky

        @karel-puhli

        hier ist ein script , das 3 datenpunkte schreibt:

        nächster termin
        nächster ganz-tags termin
        erster, im moment laufender termin

        du musst :

        • im script die instanzen angeben, die du checken willst (können ja mehrere sein)
        • die datenpunkte , die im script angegeben werden mußt du anlegen bzw. lege dir irgendwelche dp vom typ zeichenkette an und gleiche das script daran an
        • über die ausgabe in den dp können wir ja noch diskutieren - wie die aussehen sollen, wann was drin stehen soll

        da ich nicht weiß, wie viel du über iobroker und scripte weißt, einfach fragen, wenn etwas unklar ist

        javascript zum import:

        
        
        let dpTSJson=["ical.0.data.table","ical.1.data.table","ical.2.data.table"];                      // bei nur einer instanz: ["ical.0.data.table"]
        let dpTerminNext="0_userdata.0.Tabellen.IcalTerminNext";                     // WICHTIG   - datenpunkt anlegen: zeichenkette
        let dpTerminRunning="0_userdata.0.Tabellen.IcalTerminRunning";               // WICHTIG  - datenpunkt anlegen: zeichenkette 
        let dpTerminNextGanzerTag="0_userdata.0.Tabellen.IcalTerminNextGanzerTag";   // WICHTIG   - datenpunkt anlegen: zeichenkette
        
        
        
        let helperTerminNext;
        let helperTerminRunning;
        
        
        let mySchedule3="  0,30  * * * * ";                       //jede stunde um 0 minuten und 30 minuten
        
        
        let myData=[];
        let inDpNext=""
        let inDpRunning=[];
        let inDpRunning2="";
        let inDpGanzTag=""
        
        
         schedule(mySchedule3,  function () {
         myData=[];
         inDpNext=""
         inDpRunning=[];
         inDpRunning2="";
         inDpGanzTag=""
         helperTerminNext="" 
         helperTerminRunning=""   
        
        for (let i=0;i<dpTSJson.length;i++) {
           let myDpInput=(getState(dpTSJson[i]).val);
           myData=myData.concat(myDpInput)          //myData=myData.concat(getState(dpTSJson[i]).val)
        }
        // log(JSON.stringify(myData))
        
        // SORTIEREN
        myData.sort(function(a, b){
                                       return new Date(a._date).getTime() - new Date(b._date).getTime();      // return parseInt(new Date(b.date).getTime()) - parseInt(a.date);
                                      });
        
        // NEXT TERMIN
           for (let x=0;x<myData.length;x++ ) {
                   if (!myData[x].date.includes("&#8594;") && myData[x].date.includes(":")&& !myData[x].date.includes("01:00-00:00"))
                       {   helperTerminNext=myData[x].date
                           helperTerminNext=helperTerminNext.replace(/(.+?\..*?\.).* (\d\d\:\d\d)-\d\d\:\d\d/,"$1 $2: ");  
                                     
                        if(   formatDate(getDateObject(myData[x]._date), "DD.MM") == formatDate(getDateObject((new Date().getTime())), "DD.MM") ) {helperTerminNext=helperTerminNext.replace(/.+? (\d\d\:\d\d)/,"Heute $1: ")} // : helperTerminNext=helperTerminNext.replace(/(.+?\..*?\.).* (\d\d\:\d\d)-\d\d\:\d\d/,"$1 $2")   
                     
                   //  log(  formatDate(getDateObject((new Date().getTime())+(1000 * 60 * 60 * 24 * 1)), "DD.MM") +"  "+formatDate(getDateObject((new Date().getTime())), "DD.MM"))
                       if (  formatDate(getDateObject((new Date().getTime())+(1000 * 60 * 60 * 24 * 1)), "DD.MM") == formatDate(getDateObject(myData[x]._date), "DD.MM") ) {
                             helperTerminNext=helperTerminNext.replace(/.+? (\d\d\:\d\d)/,"Morgen $1: "); }
              
                           inDpNext=helperTerminNext+" "+myData[x].event;
                                             
                        break;}
           }
        //NEXT GANZER TAG
        
           for (let x=0;x<myData.length;x++ ) {
                   if ((!myData[x].date.includes("&#8594;") && !myData[x].date.includes(":") &&  formatDate(getDateObject(myData[x]._date), "DD.MM") != formatDate(getDateObject((new Date().getTime())), "DD.MM")) || 
                           (!myData[x].date.includes("&#8594;") && myData[x].date.includes("01:00") &&  formatDate(getDateObject(myData[x]._date), "DD.MM") != formatDate(getDateObject((new Date().getTime())), "DD.MM")) )
                      { helperTerminNext=myData[x].date
                       // log(helperTerminNext)
                        let morgen =  formatDate(getDateObject((new Date().getTime())+(1000 * 60 * 60 * 24 * 1)), "DD.MM"); //log(morgen)
                        
                        if (  formatDate(getDateObject((new Date().getTime())+(1000 * 60 * 60 * 24 * 1)), "DD.MM") == formatDate(getDateObject(myData[x]._date), "DD.MM") ) {
                              helperTerminNext="Morgen: " ;
                           //   log("-"+helperTerminNext)
                              }
                       
                                          
                   inDpGanzTag=helperTerminNext+" "+myData[x].event ; 
                           
                   break;}
           }
        // LÄUFT GERADE
        
           for (let x=0;x<myData.length;x++ ) {
                   if (myData[x].date.includes("&#8594;")   && myData[x].date.includes(":") && !myData[x].date.includes("00:00") )
        
                       {   helperTerminNext=myData[x].date.replace("&#8594;","")
                       helperTerminNext=helperTerminNext.replace(/.+? (.?)/,"bis: $1")
                       inDpRunning.push(helperTerminNext+" "+myData[x].event)
                       
                        } }
             inDpRunning.length>0 ? inDpRunning2=inDpRunning[inDpRunning.length-1]  :  inDpRunning2=""
           
        
        
            setState(dpTerminRunning,inDpRunning2)
            setState(dpTerminNext,inDpNext)
            setState(dpTerminNextGanzerTag,inDpGanzTag)
        
         });
        
        
        
        
        
        
        
        
        
        
        
        
         
        
        

        die ausgabe sieht so aus - ist unformatiert - einfach die datenpunkte untereinander ausgegeben

        Image 7.png

        Karel Puhli 1 Reply Last reply Reply Quote 2
        • Karel Puhli
          Karel Puhli @liv-in-sky last edited by

          @liv-in-sky

          Sehr cool, vielen Dank dafür! 👍 👍 👍

          Naja, sagen wir es mal so. Ich bin in den ersten Zügen JS. Das Script kann ich gut lesen, bis zur ersten for Schleife, danach wirds schwierig für mich... 😉

          Ich habe alles wie von dir beschrieben gemacht. Ich habe 4 Instanzen angegeben (0 bis 3) und die 3 Datenpunkte angelegt. Im Vis wird auch schon etwas angezeigt. Allerdings gibt es in Instanz 3 einen TerminNext der früher ist als ein TerminNext der Instanz 1. Trotzdem zeigt er den Termin der Instanz 1 unter TerminNext an...

          Vielen Dank für deine Mühen!!!

          Gruß Karel

          liv-in-sky 1 Reply Last reply Reply Quote 0
          • liv-in-sky
            liv-in-sky @Karel Puhli last edited by

            @karel-puhli ja - da habe ich etwas vergessen, wird später nachgeliefert

            passt das format der ausgabe oder soll ich das anders inden datenpunkt schreiben ?

            Karel Puhli 1 Reply Last reply Reply Quote 0
            • Karel Puhli
              Karel Puhli @liv-in-sky last edited by

              @liv-in-sky Also ich denke, das Format passt ertmal so. Ich halte diesbezüglich meine Vis eher schlicht, was Termine angeht.

              liv-in-sky 1 Reply Last reply Reply Quote 0
              • liv-in-sky
                liv-in-sky @Karel Puhli last edited by

                @karel-puhli

                habe das script weiter oben ausgetauscht - bitte mal testen, ob jetzt die daten richtig angezeigt werden

                du musst dann die 4 variablen - oben - wieder anpassen

                Karel Puhli 1 Reply Last reply Reply Quote 1
                • Karel Puhli
                  Karel Puhli @liv-in-sky last edited by Karel Puhli

                  @liv-in-sky das kommt jetzt im log

                  javascript.0	2021-01-14 09:59:53.624	error	(1734) at process._tickCallback (internal/process/next_tick.js:68:7)
                  javascript.0	2021-01-14 09:59:53.624	error	(1734) at promise.then (/opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49)
                  javascript.0	2021-01-14 09:59:53.624	error	(1734) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
                  javascript.0	2021-01-14 09:59:53.623	error	(1734) at client.get (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:608:33)
                  javascript.0	2021-01-14 09:59:53.623	error	(1734) at adapter.getForeignState (/opt/iobroker/node_modules/iobroker.javascript/main.js:1219:17)
                  javascript.0	2021-01-14 09:59:53.623	error	(1734) at createProblemObject (/opt/iobroker/node_modules/iobroker.javascript/main.js:1681:17)
                  javascript.0	2021-01-14 09:59:53.622	error	(1734) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1587:37)
                  javascript.0	2021-01-14 09:59:53.622	error	(1734) at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1364:28)
                  javascript.0	2021-01-14 09:59:53.622	error	(1734) at Object.createScript (vm.js:277:10)
                  javascript.0	2021-01-14 09:59:53.622	error	(1734) at new Script (vm.js:83:7)
                  javascript.0	2021-01-14 09:59:53.621	error	(1734) SyntaxError: Unexpected end of input
                  javascript.0	2021-01-14 09:59:53.621	error	(1734)
                  javascript.0	2021-01-14 09:59:53.621	error	(1734) log('registered ' + __engine.__subscriptions + ' subscription' + (__engine.__subscriptions === 1 ? '' : 's' ) + ' and ' + __engine.__schedules + ' schedule' + (__engine.__schedules === 1 ? ''
                  javascript.0	2021-01-14 09:59:53.620	error	at script.js.Test.JavaScript.icalTabellen:71
                  javascript.0	2021-01-14 09:59:53.620	error	(1734) script.js.Test.JavaScript.icalTabellen compile failed:
                  

                  edit: ganz unten die letzte Klammer: "}" wurde erwartet

                  liv-in-sky 1 Reply Last reply Reply Quote 0
                  • liv-in-sky
                    liv-in-sky @Karel Puhli last edited by liv-in-sky

                    @karel-puhli

                    @karel-puhli

                    bitte die fehler und solche art von posts in code tag

                    siehe: https://forum.iobroker.net/post/553912

                    könnte da was beim kopieren schief gegangen sein

                    schaut dann so aus:

                    javascript.0 2021-01-14 09:59:53.624 error (1734) at process._tickCallback (internal/process/next_tick.js:68:7)
                    javascript.0 2021-01-14 09:59:53.624 error (1734) at promise.then (/opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49)
                    javascript.0 2021-01-14 09:59:53.624 error (1734) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
                    javascript.0 2021-01-14 09:59:53.623 error (1734) at client.get (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:608:33)
                    javascript.0 2021-01-14 09:59:53.623 error (1734) at adapter.getForeignState (/opt/iobroker/node_modules/iobroker.javascript/main.js:1219:17)
                    javascript.0 2021-01-14 09:59:53.623 error (1734) at createProblemObject (/opt/iobroker/node_modules/iobroker.javascript/main.js:1681:17)
                    javascript.0 2021-01-14 09:59:53.622 error (1734) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1587:37)
                    javascript.0 2021-01-14 09:59:53.622 error (1734) at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1364:28)
                    javascript.0 2021-01-14 09:59:53.622 error (1734) at Object.createScript (vm.js:277:10)
                    javascript.0 2021-01-14 09:59:53.622 error (1734) at new Script (vm.js:83:7)
                    javascript.0 2021-01-14 09:59:53.621 error (1734) SyntaxError: Unexpected end of input
                    javascript.0 2021-01-14 09:59:53.621 error (1734)
                    javascript.0 2021-01-14 09:59:53.621 error (1734) log('registered ' + __engine.__subscriptions + ' subscription' + (__engine.__subscriptions === 1 ? '' : 's' ) + ' and ' + __engine.__schedules + ' schedule' + (__engine.__schedules === 1 ? ''
                    javascript.0 2021-01-14 09:59:53.620 error at script.js.Test.JavaScript.icalTabellen:71
                    javascript.0 2021-01-14 09:59:53.620 error (1734) script.js.Test.JavaScript.icalTabellen compile failed:
                    
                    Karel Puhli 1 Reply Last reply Reply Quote 0
                    • Karel Puhli
                      Karel Puhli @liv-in-sky last edited by

                      @liv-in-sky

                      Das war definitiv ein Kopierfehler... 🙄

                      Jetzt passt auch alles mit den Terminen! 👍 👍 👍

                      Ich befasse mich mal jetzt ausführlich mit dem Skript!

                      Und sage vielen Dank dafür! Top!!! 🙂

                      liv-in-sky 1 Reply Last reply Reply Quote 0
                      • liv-in-sky
                        liv-in-sky @Karel Puhli last edited by

                        @karel-puhli gerne - bei fragen einfach posten

                        N 1 Reply Last reply Reply Quote 1
                        • N
                          nousefor82 @liv-in-sky last edited by nousefor82

                          @liv-in-sky

                          Servus und Danke für das Script.

                          N 1 Reply Last reply Reply Quote 1
                          • N
                            nousefor82 @nousefor82 last edited by nousefor82

                            @liv-in-sky

                            Guten Morgen,

                            ich habe einen "Fehler"?

                            Gestern stand unter NextGanzTägig: Morgen "balbal"
                            Heute steht im gleichen Feld: Noch 1 Tag "blabla".

                            Wäre es möglich, dass dann hier steht Heute, bzw. im Running-DP?

                            Gerade gesehen, das Skript ja das, was es vom ical-bekommt.

                            Und nach dem ical mir die Geburtstage (ganztägige Serientermine) über 2 Tage anzeigt, kommt es zu dieser unglücklichen Formulierung.

                            @liv-in-sky : Kannst du im Skript einbauen, dass wenn da steht "Noch 1 Tag" umwandelt in "Heute"?

                            Gruß

                            liv-in-sky 1 Reply Last reply Reply Quote 0
                            • liv-in-sky
                              liv-in-sky @nousefor82 last edited by

                              @nousefor82

                              muss ertmal nachdenken - dieses teilscript wurde ja hier rausgenommen - https://forum.iobroker.net/post/553690 in dem script brauche ich unbedingt dieses setting in ical:

                              Image 1.png

                              das "ersetze datum mit worten" darf nicht angklickt sein

                              ich habe ein neues script im post oben drin - dort sollte mit dem "setting des bildes" das heute und morgen funktionieren

                              @Karel-Puhli
                              beim kopieren des scripts die settings (auch schedule) wieder angleichen!

                              Image 2.png

                              Karel Puhli 1 Reply Last reply Reply Quote 0
                              • Karel Puhli
                                Karel Puhli @liv-in-sky last edited by Karel Puhli

                                @liv-in-sky said in Ical mehrere Instanzen -> nur bestimmte Termine:

                                Image 1.png

                                das "ersetze datum mit worten" darf nicht angklickt sein

                                komisch, habe es bei mir angeklickt... es wird trotzdem korrekt angezeigt. Bezieht sich das nur auf einen der 3 Datenpunkte?

                                liv-in-sky 2 Replies Last reply Reply Quote 0
                                • liv-in-sky
                                  liv-in-sky @Karel Puhli last edited by

                                  @karel-puhli

                                  habe es mit der einstellung bei dem script hier nicht getestet - aber es wäre schon möglich - ich suche ja nach einem bestimmten format und ersetze dann. wenn das format nicht gefunden wird, bleibt der text unverändert und heute bzw morgen wird angezeigt

                                  ich wollte nur einen standard für die beiden scripte haben - damit gehe ich auf nummer sicher, wenn jmd mal einen fehler hat. damit kann ich sicherstellen., dass der user die selben daten bekommt wie ich. ändert sich da mal was, kann ich das script umschreiben.

                                  1 Reply Last reply Reply Quote 1
                                  • liv-in-sky
                                    liv-in-sky @Karel Puhli last edited by

                                    @karel-puhli

                                    hi - ich mußt bei meinem anderen script (https://forum.iobroker.net/post/562178) noch etwas korrigieren , was auch dein script betrifft

                                    habe es in den post kopiert - vielleicht kannst du bei gelegenheit testen

                                    Karel Puhli 1 Reply Last reply Reply Quote 0
                                    • Karel Puhli
                                      Karel Puhli @liv-in-sky last edited by

                                      @liv-in-sky

                                      Hi! Oben im Spoiler ist jetzt ein aktuelleres Skript?

                                      Grüße!

                                      liv-in-sky 1 Reply Last reply Reply Quote 0
                                      • liv-in-sky
                                        liv-in-sky @Karel Puhli last edited by

                                        @karel-puhli

                                        ja - hier: https://forum.iobroker.net/post/557333

                                        Karel Puhli 2 Replies Last reply Reply Quote 1
                                        • Karel Puhli
                                          Karel Puhli @liv-in-sky last edited by

                                          @liv-in-sky

                                          Ich teste und sage bescheid. Was hast du denn geändert?

                                          Danke und beste Grüße!

                                          liv-in-sky 1 Reply Last reply Reply Quote 0
                                          • liv-in-sky
                                            liv-in-sky @Karel Puhli last edited by

                                            @karel-puhli es geht um die anzeige bzw um das erkennen . was der nächste termin ist. der ical adapter hat eine eigenwillige art zu zeigen, welche art der termin ist

                                            wenn z.b. ein ganztagestermin heute ist, steht nur ein datum. ist ein ganz tagestermin in einen der folgenden tagen, steht dort: termin 01:00-00:00 und das datum des folgetages.

                                            das habe ich versucht besser zu filtern, weil bei bestimmten konstellationen, falsche termine in den datenpunkten stand

                                            Karel Puhli N 2 Replies Last reply Reply Quote 1
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            717
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            how-to vis
                                            6
                                            84
                                            6928
                                            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