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

                              646
                              Online

                              32.0k
                              Users

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