Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst]Script funktioniert nicht mehr auf neuem System

    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

    [gelöst]Script funktioniert nicht mehr auf neuem System

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

      Hallo, ich habe jetzt ioBroker komplett neu auf einem neuem System aufgesetzt.
      Nachdem ich alle Adapter neu Installiert habe, bin ich nun dabei die Scripte zu kopieren.

      Altes System JS Script Engine: 4.0.12
      Neues System JS Script Engine 3.6.5

      Hier das Script welches nicht funktioniert:

      var idCal = "ical.0";
      var idCalTrigger   = idCal + ".data.trigger";
      var idCalTable     = idCal + ".data.table";
      var idCalHTML      = idCal + ".data.html";
      var idCalHTMLtable = idCal + "_1.json";
      
      createState('Schicht.Tanja', " ");
      createState('Schicht.Torsten', " ");
      //createState('Test.event1', " ");
      //createState('Test.event2', " ");
      //createState('Test.date1', " ");
      //createState('Test.date2', " ");
      //createState('Test.event', " ");
      //createState('Test.date', " ");
      createState('Test.zeit1', " ");
      createState('Test.zeit2', " ");
      
      function iCalToHTMLTable() {
          var TanjaArbeiten	= "";
      	var TorstenArbeiten ="";
          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 < 2; 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 date1 = date.split(",")[0];
          var date2 = date.split(",")[1];
          var date1a;
          var date2a;
          var date3;
          var date3a;
          var date3b;
          date1 = date1.split("-")[0];
          date1 = date1.split(" ")[1];
          date1a = date1.split(':');
          date1a = parseInt(date1a[0]) + parseInt(date1a[1]) / 60;
          date2 = date2.split("-")[0];
          date2 = date2.split(" ")[1];
          date2a = date2.split(':');
          date3a = parseInt(date2a[0]);
          date3b = parseInt(date2a[1]) / 60;
          date2a = parseInt(date2a[0]) + parseInt(date2a[1]) / 60;
      
      
      //    console.log(event);
      //    console.log(event1);
      //    console.log(event2);
      //    console.log(date);
      //    console.log(date1);
      //    console.log(date2);
      
          if (event1 == event2) {
              if (event1 == "Tanja Arbeiten") {
                  TanjaArbeiten = date1a
              }
              else {
                  TorstenArbeiten = date1a
              }
              
          }
          else if (event1 != event2 ) {
              if (event1 == "Tanja Arbeiten") {
                  TanjaArbeiten = date1a;
              }
              if (event1 == "Frühschicht" || event1 == "Spätschicht" || event1 == "Nachtschicht") {
                  TorstenArbeiten = date1a;
              }
              else  {
                  TorstenArbeiten = "";
              }
              if (event2 == "Tanja Arbeiten") {
                  TanjaArbeiten = date2a;
              }
              if (event2 == "Frühschicht" || event2 == "Spätschicht" || event2 == "Nachtschicht") {
                  TorstenArbeiten = date2a;
              }
              else {
                  TorstenArbeiten = "";
              }
          }
          setState('Schicht.Tanja', TanjaArbeiten); 
          setState('Schicht.Torsten', TorstenArbeiten);
      //    setState('Test.event1', event1);
      //    setState('Test.event2', event2);
      //    setState('Test.date1', date1);
      //    setState('Test.date2', date2);
      //    setState('Test.event', event);
      //    setState('Test.date', date);
      setState('Test.zeit1', date3a);
      setState('Test.zeit2', date3b);    
      }
      
      
      on({id: idCalTable, change: "ne"}, function (obj) {
          iCalToHTMLTable();
      });
      
      schedule("5 0 * * *", function () { iCalToHTMLTable(); });
      iCalToHTMLTable();
      

      Hier die Meldungen:

      18:16:48.946	[info]	javascript.0 Stop script script.js.Schicht.Schichturzeit_start
      18:16:49.041	[info]	javascript.0 Start javascript script.js.Schicht.Schichturzeit_start
      18:16:49.058	[error]	javascript.0 script.js.Schicht.Schichturzeit_start: script.js.Schicht.Schichturzeit_start:30
      18:16:49.058	[error]	javascript.0 at iCalToHTMLTable (script.js.Schicht.Schichturzeit_start:30:20)
      18:16:49.058	[error]	javascript.0 at script.js.Schicht.Schichturzeit_start:117:1
      

      Kann mir da jemand weiterhelfen?
      Auf dem alten System läuft das Script und auf dem neuen kommen die Fehlermeldungen

      1 Reply Last reply Reply Quote 0
      • Asgothian
        Asgothian Developer last edited by

        Eine klare Vorstellung hab ich noch nicht. Was mir auffällt ist das du entry nicht auf null abprüfst bevor du entry._calName abfragst.

        A.

        T 1 Reply Last reply Reply Quote 0
        • T
          Torsten_MG @Asgothian last edited by

          @Asgothian sagte in Script funktioniert nicht mehr auf neuem System:

          .. Was mir auffällt ist das du entry nicht auf null abprüfst bevor du entry._calName abfragst.

          Da ich in JS noch nicht so Fitt bin, weiss ich leider nicht wie ich das machen müßte

          Asgothian 1 Reply Last reply Reply Quote 0
          • Asgothian
            Asgothian Developer @Torsten_MG last edited by

            @Torsten_MG

            An Stelle von

                for (var i = 0; i < 2; i++) { 
                    var entry = calTable.val[i];
            
            

            dieses probieren

                for (var i = 0; i < 2; i++) { 
                    var entry = calTable.val[i];
                   if (entry === null) {
                     console.debug('no entry for index in table' + JSON.stringify(calTable));
                     continue;
                  }
            
            T 1 Reply Last reply Reply Quote 0
            • T
              Torsten_MG @Asgothian last edited by Torsten_MG

              OK, der Fehler liegt woanders. Habe gerade festgestellt, dass meine Objekte von iCal leer sind. Nur weiss ich nicht warum?

              Dann kann hier geschlossen werden und ich stelle mein Problem in einem anderen Teil.

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

              Support us

              ioBroker
              Community Adapters
              Donate

              811
              Online

              31.9k
              Users

              80.2k
              Topics

              1.3m
              Posts

              javascript
              2
              5
              340
              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