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 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

                            710
                            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