Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Javascript startet nicht (unsinnige Fehlermeldung)

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Javascript startet nicht (unsinnige Fehlermeldung)

    This topic has been deleted. Only users with topic management privileges can see it.
    • W
      WolfgangFB @sigi234 last edited by

      @sigi234

      Das Skript habe ich mehrmals gestoppt und wieder gestartet, das Ergebnis bleibt gleich. Was meinst Du mit "stell das ganze mal ein"?

      sigi234 1 Reply Last reply Reply Quote 0
      • sigi234
        sigi234 Forum Testing Most Active @WolfgangFB last edited by sigi234

        @wolfgangfb sagte in Javascript startet nicht (unsinnige Fehlermeldung):

        @sigi234

        Das Skript habe ich mehrmals gestoppt und wieder gestartet, das Ergebnis bleibt gleich

        Wenn du das Skript Stopps, läuft JS auch nicht?

        @wolfgangfb sagte in Javascript startet nicht (unsinnige Fehlermeldung):

        Was meinst Du mit "stell das ganze mal ein"?

        Das komplette Skript was du verwendest.

        Irgendein Update gemacht?

        W 1 Reply Last reply Reply Quote 0
        • W
          WolfgangFB @sigi234 last edited by

          @sigi234 sagte in Javascript startet nicht (unsinnige Fehlermeldung):

          @wolfgangfb sagte in Javascript startet nicht (unsinnige Fehlermeldung):

          @sigi234

          Das Skript habe ich mehrmals gestoppt und wieder gestartet, das Ergebnis bleibt gleich. Was meinst Du mit "stell das ganze mal ein"?

          Das komplette Skript

          Gerne, aber da die sinnlose Zeile "bla" überhaupt nicht beachtet wird gehe ich davon aus, dass irgendwas nicht aktualisiert wird. "Natürlich" startet das Skript auch dann nicht, wenn ich die Zeile "bla" auskommentiere.

          console.log('Skript start');
          bla  
          var fs = require('fs');  
          var VerzeichnisDaten = '/opt/iobroker/Wolfgang/Verbrauch/Heizung/';
          const LastValFn = VerzeichnisDaten + 'lastval.txt';
          const DatenpunktEnergie = 'alias.0.Raum.Technik.Energy.0.state';
          const DatenpunktVerbrauchHeute = 'javascript.0.Verbrauch.Heizung.Heute';
          const DatenpunktVerbrauchGestern = 'javascript.0.Verbrauch.Heizung.Gestern';
          const DatenpunktZaehlerstandOffiziell = 'javascript.0.Verbrauch.Heizung.ZaehlerstandOffiziell';
          const DatenpunktZaehlerstandZwischenzaehler = 'javascript.0.Verbrauch.Heizung.ZaehlerstandZwischenzaehler';
          const CrLf = String.fromCharCode(13) + String.fromCharCode(10);
          const ZaehlerDifferenz = 23976.15 - 89.24;
          //fs.writeFileSync(LastValFn, '0'); 
          var ZaehlerstandOffiziellkWh; 
          var FileInhalt = fs.readFileSync(LastValFn);
          //var gg = toString(5);
          ZaehlerstandOffiziellkWh = toFloat(FileInhalt);
          
          var test = ZaehlerstandOffiziellkWh + 5; 
          console.log('test: ' + test);
          
          console.log('***' + ZaehlerstandOffiziellkWh);
          fs.exists(LastValFn, function(exists){
              console.log('Datei existiert');   
          
          console.log(LastValFn); 
          if (fs.existsSync(LastValFn)){console.log('not exist')} else {console.log('exist')}; 
          //fs.appendFileSync(Fn, 'Waermepumpe' + CrLf);  
          console.log('fff');
          
          function precisionRound(number, precision) {
            var factor = Math.pow(10, precision);
            return Math.round(number * factor) / factor;
          }
          
          var TagesverbrauchkWh = getState(DatenpunktVerbrauchHeute).val; // kWh
          var AnfangswertESPVerbrauchWh = getState(DatenpunktEnergie).val; // Wh
          var AktuelleZeit = (new Date().getTime()); 
          var SkriptStartTagText = formatDate(AktuelleZeit, 'DD');
          var SkriptStartStundeText = formatDate(AktuelleZeit, 'hh'); 
          
          on({id: DatenpunktEnergie, change: 'any'}, function (obj) {
              var AktuelleZeit = (new Date().getTime()); 
              var AktuelleZeitText = formatDate(AktuelleZeit, 'DD.MM hh.mm.ss');
              var AktuellerTagText = formatDate(AktuelleZeit, 'DD');
              var AktuelleStundeText = formatDate(AktuelleZeit, 'hh');
              var AktuellesDatum = formatDate(AktuelleZeit, 'DD.MM.YYYY');
          
              var VerbrauchWH = obj.state.val;
              var ZuwachsWh = VerbrauchWH - AnfangswertESPVerbrauchWh;
              var ZuwachskWh = ZuwachsWh / 1000; 
          
              AnfangswertESPVerbrauchWh = VerbrauchWH;
              TagesverbrauchkWh = TagesverbrauchkWh + ZuwachskWh;
              ZaehlerstandOffiziellkWh = ZaehlerstandOffiziellkWh + ZuwachskWh;
              var ZaehlerstandZwischenzaehlerkWh = ZaehlerstandOffiziellkWh - + ZaehlerDifferenz;
              console.log('ZS ' + ZaehlerstandOffiziellkWh);
              fs.writeFileSync(LastValFn, ZaehlerstandOffiziellkWh);
              setState(DatenpunktVerbrauchHeute, TagesverbrauchkWh);
              setState(DatenpunktZaehlerstandOffiziell, ZaehlerstandOffiziellkWh);
              setState(DatenpunktZaehlerstandZwischenzaehler, ZaehlerstandZwischenzaehlerkWh);
          
              if (AktuellerTagText != SkriptStartTagText){ // neuer Tag beginnt
                  var TagesDatei = VerzeichnisDaten + AktuellesDatum + '.txt';
                  fs.writeFileSync(TagesDatei, ZaehlerstandOffiziellkWh); 
              
                  setState(DatenpunktVerbrauchGestern, TagesverbrauchkWh);
                  TagesverbrauchkWh = 0;
                  setState(DatenpunktVerbrauchHeute, TagesverbrauchkWh);
                  SkriptStartTagText = AktuellerTagText;
                  }
              
              });
          

          Fehler bleibt bei:

          13:04:00.541	error	javascript.0 (17388) script.js.Verbrauch.Heizung compile failed: at script.js.Verbrauch.Heizung:77
          
          sigi234 paul53 2 Replies Last reply Reply Quote 0
          • sigi234
            sigi234 Forum Testing Most Active @WolfgangFB last edited by sigi234

            @wolfgangfb

            Vielleicht kann sich das mal @paul53 ansehen, er ist der Profi.

            Verate uns noch mehr von deinen System! JS Version usw...

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

              @wolfgangfb sagte: Fehler bleibt bei:

              Welche Version des JS-Adapters? Sind globale Skripte aktiv?
              Außer der falschen Zeile 2 kann ich nichts entdecken. Sind im Tab "Protokolle" weitere Informationen vorhanden?

              1 Reply Last reply Reply Quote 0
              • dslraser
                dslraser Forum Testing Most Active @WolfgangFB last edited by

                @wolfgangfb

                hier gibt es sowas Ähnliches und eine Vermutung ...(hast Du auch diese JS-Adapter Version ?)

                https://forum.iobroker.net/topic/53655/warn-mit-javascript-5-5-0

                1 Reply Last reply Reply Quote 0
                • F
                  fastfoot last edited by

                  in der letzten Zeile(74) fehlt })

                  1 Reply Last reply Reply Quote 0
                  • W
                    WolfgangFB last edited by

                    @fastfoot

                    Ich habe mal alles bis auf die erste Zeile gelöscht und siehe da, das Skript läuft. Dann Zeile für Zeile das Skript wieder gefüllt und siehe da, an dieser Stelle scheint es zu hängen:

                    fs.exists(LastValFn, function(exists){
                        console.log('Datei existiert');   
                    
                    

                    Es kommt wieder die Fehlermeldung, dass in 4 Zeilen hinter dem Ende etwas nicht stimmt und das Wort "exists" ist im Editor durchgestrichen (was auch immer das bedeuten mag).

                    heizung.jpg

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

                      Also wenn ich obiges Skript ausführe steht im ioBroker Log (nicht dem unter dem Skript-Editor) folgendes:

                      2022-03-23 14:04:23.754 - error: javascript.0 (2080) script.js.Skript_1 compile failed:
                      at script.js.Skript_1:152
                      2022-03-23 14:04:23.754 - error: javascript.0 (2080) SyntaxError: Unexpected end of input
                      2022-03-23 14:04:23.754 - error: javascript.0 (2080) at new Script (node:vm:100:7)
                      2022-03-23 14:04:23.754 - error: javascript.0 (2080) at Object.createScript (node:vm:257:10)
                      2022-03-23 14:04:23.754 - error: javascript.0 (2080) at createVM (C:\iobroker\node_modules\iobroker.javascript\main.js:1598:28)
                      2022-03-23 14:04:23.754 - error: javascript.0 (2080) at prepareScript (C:\iobroker\node_modules\iobroker.javascript\main.js:1849:37)
                      2022-03-23 14:04:23.754 - error: javascript.0 (2080) at C:\iobroker\node_modules\iobroker.javascript\main.js:1950:17
                      2022-03-23 14:04:23.755 - error: javascript.0 (2080) at Immediate._onImmediate (C:\iobroker\node_modules\iobroker.javascript\main.js:1423:17)
                      2022-03-23 14:04:23.755 - error: javascript.0 (2080) at processImmediate (node:internal/timers:466:21)
                      

                      Unexpected end of input

                      Klingt für mich als wäre fastfoot auf dem richtigen Weg. Das sieht man auch schön wenn man mal ordentlich formatiert, dass das Skript "eingezogen" endet:
                      a0773c99-022b-46b4-b8c2-b9b880b17cd6-grafik.png
                      4bc58b8f-9d62-4b9e-b49d-24aead4daec8-grafik.png

                      Füge ich am Ende }); ein, kommt eine andere (erwartete) Fehlermeldung:

                      script.js.Skript_1: ReferenceError: bla is not defined

                      1 Reply Last reply Reply Quote 0
                      • arteck
                        arteck Developer Most Active last edited by

                        @wolfgangfb hast du globale Scripte.. dann ist da dein Fehler.. deshalb der Fehler in zeile 77... die glbalen scripte werden zuerst in jedes Script gehangen.. und deshalb kommt der nicht zu deinem bla hin

                        1 Reply Last reply Reply Quote 0
                        • W
                          WolfgangFB last edited by

                          @arteck

                          Nein, ich hatte (bisher) keine globalen Skripte, wusste ehrlich gesagt gar nicht, dass es die gibt, habe aber schon länger nach so etwas gesucht 🙂
                          Ich habe jetzt mal danach gegoogelt und gelesen, dass es eigentlich immer die Ordner "common" und "global" geben sollte. Bei mir existieren die aber nicht. Mit "Neu" tauschen aber "common" und "global" auf. Bisher sind all meine Skripte entweder im Root Verzeichnis oder in darin angelegten Unterordnern.
                          Ist es sinnvoll, die Skripte alle in Common oder global zu haben?

                          Homoran W 2 Replies Last reply Reply Quote 0
                          • Homoran
                            Homoran Global Moderator Administrators @WolfgangFB last edited by

                            @wolfgangfb sagte in Javascript startet nicht (unsinnige Fehlermeldung):

                            Ist es sinnvoll, die Skripte alle in Common oder global zu haben?

                            nein!
                            nur nicht in global, außer du weißt ganz genau was du tust.
                            Deswegen ist der Ordner auch nur im Expertenmodus zu sehen

                            1 Reply Last reply Reply Quote 0
                            • W
                              WolfgangFB @WolfgangFB last edited by

                              @wolfgangfb

                              Ich habe mir gedacht, dass ich in "global" Funktionen haben könnte, die ich eigentlich fast immer brauche und deshalb in fast jedem Skript händisch vorne angelegt habe (z.B. Logfunktionen, Stringfunktionen etc.)
                              Werden die globalen Skripte dann wirklich jedem anderen Skript vorangestellt oder nur dann wenn die Funktion auch aufgerufen wird?

                              Homoran 1 Reply Last reply Reply Quote 0
                              • Homoran
                                Homoran Global Moderator Administrators @WolfgangFB last edited by

                                @wolfgangfb sagte in Javascript startet nicht (unsinnige Fehlermeldung):

                                wirklich jedem anderen Skript vorangestellt

                                ja

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

                                Support us

                                ioBroker
                                Community Adapters
                                Donate
                                FAQ Cloud / IOT
                                HowTo: Node.js-Update
                                HowTo: Backup/Restore
                                Downloads
                                BLOG

                                370
                                Online

                                32.0k
                                Users

                                80.4k
                                Topics

                                1.3m
                                Posts

                                8
                                16
                                417
                                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