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] split is not a function

    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

    SOLVED [gelöst] split is not a function

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

      Hallo,
      ich bin gerade dabei ein Script zu erstellen das mir den 3stündigen Trend für die Barometerdaten errechnet. Dazu habe lege ich alle 5 Minuten den Wert für den Unterschied zum vorherigen Wert in einem Datenpunkt als Liste ab

      -0.05,0.02,0.04,0.04,0,0.08,0.06,0,0.03,0.03,-0.02,-0.05,0.05,-0.05,0.06,0.02,-0.12,0.06,0.02,-0.04,0.07,0.04,-0.02,0.02,0.04,0.04,0.01,-0.02,0.06,0.04,-0.07,-0.11,0.11,-0.11,0,0.02,-0.02,0.05,0.02,0,0.03,0.01,0.04,-0.09,0.02,-0.04,0.03,0.06,0.1,-0.08,-0.04,0.05,0.03,0.01,0.02,0.01,0.05,0.03,0.1,0,0.01,-0.02,0.02,-0.01,-0.04,0.04,0.08,0.03,-0.05,-0.12,0.09,0.07
      

      Diese Liste lese ich mit ein und will sie mit split zum errechnen des Trends zerlegen

      function barotrend() {
        var tmpelements = getState(DP_BAROTREND_DATA).val.split(',');
        for (let i = 2; i <= ELEMENTS - 1; i++) {
          b_tmp = parseFloat(tmpelements[i]);
          A_BAROTRENDTEMPDATA.push(b_tmp);
          b_akt_diff = b_akt_diff + b_tmp;
       }
        A_BAROTRENDTEMPDATA.push(b_diff);
        b_akt_diff = b_akt_diff + b_diff;  b_akt_diff = Math.round((b_akt_diff / ELEMENTS) * 100 ) / 100;
        setState(DP_BAROTREND_DATA, A_BAROTRENDTEMPDATA);
        setState(DP_BAROTREND_ALT, b);
        setState(DP_BAROTREND_TREND, b_akt_diff);
      }
      
      schedule('*/'+CRON+' * * * *', function () {
        barotrend();
      });
      

      Allerdings kommt spätestens nach dem zweiten Aufruf der Funktion barotrend() der Fehler

      javascript.1	2019-11-05 19:49:00.018	error	(2070) at Timer.processTimers (timers.js:223:10)
      javascript.1	2019-11-05 19:49:00.017	error	(2070) at listOnTimeout (timers.js:263:5)
      javascript.1	2019-11-05 19:49:00.017	error	(2070) at tryOnTimeout (timers.js:300:5)
      javascript.1	2019-11-05 19:49:00.017	error	(2070) at ontimeout (timers.js:436:11)
      javascript.1	2019-11-05 19:49:00.017	error	(2070) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:501:7)
      javascript.1	2019-11-05 19:49:00.016	error	(2070) at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:543:11
      javascript.1	2019-11-05 19:49:00.016	error	(2070) at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:173:10)
      javascript.1	2019-11-05 19:49:00.016	error	(2070) at Job.nodeSchedule.scheduleJob [as job] (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1279:34)
      javascript.1	2019-11-05 19:49:00.015	error	(2070) at Object.<anonymous> (script.js.Test.Weathercalc:417:3)
      javascript.1	2019-11-05 19:49:00.015	error	(2070) at barotrend (script.js.Test.Weathercalc:390:53)
      javascript.1	2019-11-05 19:49:00.014	error	(2070) Error in callback: TypeError: getState(...).val.split is not a function
      

      Node.js v10.17.0
      NPM 6.11.3
      js-controller: 2.0.39

      Kann mir einer sagen wo da der Fehler ist?

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @CKMartens last edited by

        @CKMartens sagte:

        wo da der Fehler ist?

        Enthält der Datenpunkt schon ein Array ? Dann funktioniert .split(',') nicht und ist auch nicht erforderlich.

        CKMartens 1 Reply Last reply Reply Quote 1
        • CKMartens
          CKMartens @paul53 last edited by CKMartens

          @paul53 sagte in split is not a function:

          @CKMartens sagte:

          wo da der Fehler ist?

          Enthält der Datenpunkt schon ein Array ? Dann funktioniert .split(',') nicht und ist auch nicht erforderlich.

          Wie muss ich dann vorgehen @paul53 ?

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @CKMartens last edited by

            @CKMartens sagte:

            Wie muss ich dann vorgehen

            Ohne split() einlesen.

              var tmpelements = getState(DP_BAROTREND_DATA).val;
            
            CKMartens 2 Replies Last reply Reply Quote 1
            • CKMartens
              CKMartens @paul53 last edited by

              @paul53 Ah... Ok, versuche ich morgen. Danke schon einmal.

              1 Reply Last reply Reply Quote 0
              • CKMartens
                CKMartens @paul53 last edited by

                @paul53 sagte in split is not a function:

                @CKMartens sagte:

                Wie muss ich dann vorgehen

                Ohne split() einlesen.

                  var tmpelements = getState(DP_BAROTREND_DATA).val;
                

                Hallo @paul53
                leider habe ich jetzt das Problem das jetzt die Variable tmpelements als Elemente jedes Zeichen enthält. Also aus dem Wert -0.3 werden die Elemente "-", "0", "." und "3" gemacht. Der Typ des Datenpunktes ist ein Array.

                paul53 1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @CKMartens last edited by paul53

                  @CKMartens sagte:

                  Also aus dem Wert -0.3 werden die Elemente "-", "0", "." und "3" gemacht. Der Typ des Datenpunktes ist ein Array.

                  Dann wurde das Array an anderer Stelle als String im Datenpunkt gespeichert. Das muss korrigiert werden.

                  CKMartens 1 Reply Last reply Reply Quote 1
                  • CKMartens
                    CKMartens @paul53 last edited by

                    @paul53 sagte in split is not a function:

                    @CKMartens sagte:

                    Also aus dem Wert -0.3 werden die Elemente "-", "0", "." und "3" gemacht. Der Typ des Datenpunktes ist ein Array.

                    Dann wurde das Array an anderer Stelle als String im Datenpunkt gespeichert. Das muss korrigiert werden.

                    Hmmm, eigentlich greift nur noch ein andres Script lesend auf den DP zu. Danke für den Tip, ich mach mich da mal geziehlt auf die Suche

                    paul53 1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @CKMartens last edited by

                      @CKMartens sagte:

                      ich mach mich da mal geziehlt auf die Suche
                      Der Typ des Datenpunktes ist ein Array.

                      Wenn in einem Skript ein String in einen Datenpunkt vom Typ "array" geschrieben wird, erfolgt eine Warnung "wrong type ...". Im Reiter "Log" findet man dazu den Skriptnamen und die Zeilennummer.

                      CKMartens 1 Reply Last reply Reply Quote 1
                      • CKMartens
                        CKMartens @paul53 last edited by

                        @paul53 Habe es gefunden. Ein Testscript ist noch gelaufen obwohl es im eigentlich deaktiviert gewesen sein sollte.

                        Jetzt läuft es. Danke nochmals!

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        427
                        Online

                        31.8k
                        Users

                        80.0k
                        Topics

                        1.3m
                        Posts

                        javascript
                        2
                        10
                        1409
                        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