Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. ICal Daten in Datenpunkte schreiben

    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 Daten in Datenpunkte schreiben

    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      der-eine last edited by

      Hallo zusammen,

      bräuchte mal eure Hilfe. Wenn man nach sowas ähnlichem sucht, geht es nur um "Abfallkalender" leider fehlt mir die nötige Kenntnis diese umzubauen.

      Ich möchte ganz schlicht die Termine von ical ohne Tabelle oder andere Veränderungen in Datenpunkte schreiben.

      Es werden insgesamt 4 unterschiedliche Kalender die alle ihre eigene Instanz bekommen.

      Ich habe einen Ordner der Hilfsvariablen.0 heißt und unter Objekten liegt. Dort hätte ich auch gerne die Datenpunkte.

      Wie Die Datenpunkte heissen bzw in welchen Unterordner sie liegen würde ich dann gerne selber festlegen. Hoffe, dass man

      das aus dem Skript rauslesen kann.

      Ist es möglich, für jeden Tag (Heute, Morgen, Übermorgen) jeweils 3 Datenpunkte 1. Termin 2. Termin 3. Termin anzulegen?

      Hoffe ihr könnt mir da behilflich sein.

      Danke und Gruß

      der-eine

      1 Reply Last reply Reply Quote 0
      • D
        danw last edited by

        viewtopic.php?f=21&t=21447

        https://github.com/ioBroker/ioBroker.ical

        1 Reply Last reply Reply Quote 0
        • D
          der-eine last edited by

          Danke für den Link, schau ich mir an.

          1 Reply Last reply Reply Quote 0
          • D
            der-eine last edited by

            @danw

            hatte jetzt endlich Zeit das Skript umzuschreiben. Genau das hab ich gesucht. <emoji seq="1f44d-1f3fb">👍🏻</emoji>

            Eine Frage hätte ich noch und zwar, ist es möglich den Ordner nicht unter Javascript.0 zu erstellen sondern ausserhalb?

            Also in die oberste Struktur wo alle .0 Ordner liegen?

            Danke und Gruß

            1 Reply Last reply Reply Quote 0
            • D
              danw last edited by

              In dem iCal Adapter oder in deinem eigenen Script?

              Im eigenen Script ganz einfach:

              setState("custom.0.ordner.objekt", "Wert");

              Objekt muss vorher(!) vorhanden sein. createState() vorher machen oder manuell erstellen.

              1 Reply Last reply Reply Quote 0
              • D
                der-eine last edited by

                Wenn ich:

                createState( „ Hilfsvariablen.0.Kalender.Name.event1“, „ „);

                Mache erstellt er die Ordner unter JavaScript.

                Gesendet von iPhone mit Tapatalk

                1 Reply Last reply Reply Quote 0
                • D
                  danw last edited by

                  @der-eine:

                  Wenn ich:

                  createState( „ Hilfsvariablen.0.Kalender.Name.event1“, „ „);

                  Mache erstellt er die Ordner unter JavaScript.

                  Gesendet von iPhone mit Tapatalk `

                  Ordner vorher erstellen, am besten auch das Objekt. Dann gehts sicher.

                  1 Reply Last reply Reply Quote 0
                  • D
                    der-eine last edited by

                    Dann kann ich das createState aus dem Skript raus nehmen wenn ich die Datenpunkte selber erstelle?

                    Gesendet von iPhone mit Tapatalk

                    1 Reply Last reply Reply Quote 0
                    • D
                      danw last edited by

                      ja

                      1 Reply Last reply Reply Quote 0
                      • D
                        der-eine last edited by

                        Jetzt ist doch irgendwie der Hund drin. Kannst Du da bitte mal drüber schauen?

                        `var idCal = "ical.1";
                        var idCalTrigger   = idCal + ".data.trigger";
                        var idCalTable     = idCal + ".data.table";
                        var idCalHTML      = idCal + ".data.html";
                        var idCalHTMLtable = idCal + "_1.json";
                        
                        function iCalToHTMLTable() {
                            var calTable = getState(idCalTable);
                            var inst     = getObject("system.adapter."+idCal);
                            var instopt  = inst.native;
                            var calendar = {};
                            var event /    var date = ""
                        
                            for (var i = 0; i < 3; i++) { 
                                var entry = calTable.val[i];
                                if ( entry._calName != calendar.name ) {
                                    calendar = {};
                                    for (var c = 0; c < instopt.calendars.length; c++ ) {
                                        if (entry._calName == instopt.calendars[c].name ) {
                                            calendar = instopt.calendars[c];
                                            break;
                                        }
                                    }
                                }    
                            event += entry.event + ","
                            date +=  entry.date + ","
                            }  
                            var event1 = event.split(",")[0];
                            var event2 = event.split(",")[1];
                            var event3 = event.split(",")[2];
                            var date1 = date.split(",")[0];
                            var date2 = date.split(",")[1];
                            var date3 = date.split(",")[2];
                        
                            console.log(event);
                            console.log(event1);
                            console.log(event2);
                            console.log(event3);
                            console.log(date);
                            console.log(date1);
                            console.log(date2);
                            console.log(date3);
                        
                            setState('Hilfsvariablen.0.Kalender.Daniel.event1', event1);
                            setState('Hilfsvariablen.0.Kalender.Daniel.event2', event2);
                            setState('Hilfsvariablen.0.Kalender.Daniel.event3', event3);
                            setState('Hilfsvariablen.0.Kalender.Daniel.date1', date1);
                            setState('Hilfsvariablen.0.Kalender.Daniel.date2', date2);
                            setState('Hilfsvariablen.0.Kalender.Daniel.date3', date3);
                            setState('Hilfsvariablen.0.Kalender.Daniel.event', event);
                            setState('Hilfsvariablen.0.Kalender.Daniel.date', date);   
                        }
                        
                        on({id: idCalTable, change: "ne"}, function (obj) {
                            iCalToHTMLTable();
                        });
                        
                        schedule("5,35 * * * *", function () { iCalToHTMLTable(); });
                        iCalToHTMLTable();`
                        
                        Komme nicht drauf, was daran falsch ist bzw was die errors bedeuten...
                        
                        Danke schon mal
                          [10117_bildschirmfoto_2019-02-05_um_16.02.00.png](/assets/uploads/files/10117_bildschirmfoto_2019-02-05_um_16.02.00.png)  [/i]
                        
                        1 Reply Last reply Reply Quote 0
                        • D
                          danw last edited by

                          Auch wenn du mich per PN anschreibst geht es nicht schneller. Ich bin weder bezahlter Programmierer, noch hier angestellt.

                          `var idCal = "ical.1";
                          var idCalTrigger   = idCal + ".data.trigger";
                          var idCalTable     = idCal + ".data.table";
                          var idCalHTML      = idCal + ".data.html";
                          var idCalHTMLtable = idCal + "_1.json";
                          
                          function iCalToHTMLTable() {
                              var calTable = getState(idCalTable);
                              var inst     = getObject("system.adapter." + idCal);
                              var instopt  = inst.native;
                              var calendar = {};
                              var event = "";
                              var date = "";
                          
                              for (var i = 0; i < 3; i++) { 
                                  var entry = calTable.val[i];
                                  if (entry._calName != calendar.name) {
                                      calendar = {};
                                      for (var c = 0; c < instopt.calendars.length; c++ ) {
                                          if (entry._calName == instopt.calendars[c].name ) {
                                              calendar = instopt.calendars[c];
                                              break;
                                          }
                                      }
                                  }    
                              event += entry.event + ",";
                              date +=  entry.date + ",";
                              }  
                              var event1 = event.split(",")[0];
                              var event2 = event.split(",")[1];
                              var event3 = event.split(",")[2];
                              var date1 = date.split(",")[0];
                              var date2 = date.split(",")[1];
                              var date3 = date.split(",")[2];
                          
                              setState('Hilfsvariablen.0.Kalender.Daniel.event1', event1);
                              setState('Hilfsvariablen.0.Kalender.Daniel.event2', event2);
                              setState('Hilfsvariablen.0.Kalender.Daniel.event3', event3);
                              setState('Hilfsvariablen.0.Kalender.Daniel.date1', date1);
                              setState('Hilfsvariablen.0.Kalender.Daniel.date2', date2);
                              setState('Hilfsvariablen.0.Kalender.Daniel.date3', date3);
                              setState('Hilfsvariablen.0.Kalender.Daniel.event', event);
                              setState('Hilfsvariablen.0.Kalender.Daniel.date', date);   
                          }
                          
                          on({id: idCalTable, change: "ne"}, function (obj) {
                              iCalToHTMLTable();
                          });
                          
                          schedule("5,35 * * * *", function () { iCalToHTMLTable(); });
                          iCalToHTMLTable();` 
                          
                          Bis jetzt fallen mir nur fehlende ";" auf, habe ich mal hinzugefügt. Welche Zeile ist die, die den Fehler generiert? Ich weiss ja nicht, ob dein Script noch größer ist.[/i]
                          
                          1 Reply Last reply Reply Quote 0
                          • D
                            der-eine last edited by

                            Ok, sorry…

                            Laut error im Post darüber 17, 20, 61.

                            Danke trotzdem für deine Zeit auch wenn Du nicht hier angestellt bist.

                            Gesendet von iPhone mit Tapatalk

                            1 Reply Last reply Reply Quote 0
                            • D
                              danw last edited by

                              Die Frage war welche Zeile das bei dir ist?

                                      if (entry._calName != calendar.name) {
                              
                              

                              Die?

                              1 Reply Last reply Reply Quote 0
                              • D
                                der-eine last edited by

                                Diese sind es 3. Hab gerade gesehen, Du siehst ja nicht die Zeilennr.

                                if ( entry._calName != calendar.name ) {
                                if (entry._calName == instopt.calendars[c].name ) {
                                iCalToHTMLTable();
                                
                                
                                1 Reply Last reply Reply Quote 0
                                • D
                                  danw last edited by

                                  Bei mir kein Problem, hab mir grad extra den Adapter installiert.

                                  Ist die Instanz denn korrekt ical.1? Wenn du nur eine Instanz hast ist es meistens ical.0.

                                  1 Reply Last reply Reply Quote 0
                                  • D
                                    der-eine last edited by

                                    Nein, ist nicht die einzige. Aber der Fehler bezieht sich immer wieder auf die erste Zeile

                                    Ich habe 3 Instanzen aber davon aktuell nur die ical.1 aktiv.

                                    > var idCal = "ical.1";

                                    1 Reply Last reply Reply Quote 0
                                    • D
                                      der-eine last edited by

                                      Das wären die Fehler im Log wenn Dir das evtl was sagt.

                                      avascript.0 2019-02-06 13:30:39.609 error at ContextifyScript.Script.runInContext (vm.js:59:29)

                                      javascript.0 2019-02-06 13:30:39.609 error at script.js.common.Kalender.Daniel.iCal.1:61:1

                                      javascript.0 2019-02-06 13:30:39.609 error at iCalToHTMLTable (script.js.common.Kalender.Daniel.iCal.1:17:20)

                                      javascript.0 2019-02-06 13:30:39.609 error TypeError: Cannot read property '_calName' of undefined

                                      javascript.0 2019-02-06 13:30:39.608 error ^

                                      javascript.0 2019-02-06 13:30:39.608 error if ( entry._calName != calendar.name ) {

                                      javascript.0 2019-02-06 13:30:39.608 error script.js.common.Kalender.Daniel.iCal.1: script.js.common.Kalender.Daniel.iCal.1:17

                                      1 Reply Last reply Reply Quote 0
                                      • D
                                        danw last edited by

                                        Steht dann auch was in den Objekten des Adapter drin? Wie gesagt: Hier kein Problem.

                                        Ersatz mal folgende Zeilen

                                         `for (var i = 0; i < 3; i++) { 
                                                console.log("entry: " + JSON.stringify(entry));
                                                console.log("caltable: " + JSON.stringify(calTable));
                                                console.log("caltable inc: " + JSON.stringify(calTable.val[i]));
                                                var entry = calTable.val[i];
                                                if (entry._calName != calendar.name) {` [/i][/i]
                                        
                                        1 Reply Last reply Reply Quote 0
                                        • D
                                          danw last edited by

                                          @der-eine:

                                          Das wären die Fehler im Log wenn Dir das evtl was sagt.

                                          avascript.0 2019-02-06 13:30:39.609 error at ContextifyScript.Script.runInContext (vm.js:59:29)

                                          javascript.0 2019-02-06 13:30:39.609 error at script.js.common.Kalender.Daniel.iCal.1:61:1

                                          javascript.0 2019-02-06 13:30:39.609 error at iCalToHTMLTable (script.js.common.Kalender.Daniel.iCal.1:17:20)

                                          javascript.0 2019-02-06 13:30:39.609 error TypeError: Cannot read property '_calName' of undefined

                                          javascript.0 2019-02-06 13:30:39.608 error ^

                                          javascript.0 2019-02-06 13:30:39.608 error if ( entry._calName != calendar.name ) {

                                          javascript.0 2019-02-06 13:30:39.608 error script.js.common.Kalender.Daniel.iCal.1: script.js.common.Kalender.Daniel.iCal.1:17 `

                                          Dann steht nix in den Objektes des Adapters drin.

                                          1 Reply Last reply Reply Quote 0
                                          • D
                                            der-eine last edited by

                                            @danw:

                                            @der-eine:

                                            Das wären die Fehler im Log wenn Dir das evtl was sagt.

                                            avascript.0 2019-02-06 13:30:39.609 error at ContextifyScript.Script.runInContext (vm.js:59:29)

                                            javascript.0 2019-02-06 13:30:39.609 error at script.js.common.Kalender.Daniel.iCal.1:61:1

                                            javascript.0 2019-02-06 13:30:39.609 error at iCalToHTMLTable (script.js.common.Kalender.Daniel.iCal.1:17:20)

                                            javascript.0 2019-02-06 13:30:39.609 error TypeError: Cannot read property '_calName' of undefined

                                            javascript.0 2019-02-06 13:30:39.608 error ^

                                            javascript.0 2019-02-06 13:30:39.608 error if ( entry._calName != calendar.name ) {

                                            javascript.0 2019-02-06 13:30:39.608 error script.js.common.Kalender.Daniel.iCal.1: script.js.common.Kalender.Daniel.iCal.1:17 `

                                            Dann steht nix in den Objektes des Adapters drin. `

                                            Meinst Du im Kalender oder der Standardwert der Datenpunkte?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            853
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            42
                                            2960
                                            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