Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [GELÖST] Fehler bei Werteänderung von Datenpunkt.

    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] Fehler bei Werteänderung von Datenpunkt.

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

      Hallo,

      mir ist kürzlich aufgefallen, dass folgendes Skript nicht mehr funktioniert bzw. einen Fehler auswirft:

      ! var idMarker12 = "variablen.lmair1.12_deckenlampe-arbeitszimmer"; // Pfad und Name, unter dem in der Javascript-Instanz der Datenpunkte angelegt wird createState(idMarker12, 0, forecreation, { // Datenpunkt wird angelegt name: 'LMAir Marker 12', desc: 'Arbeitszimmer-Deckenlampe-Marker von LMair1', type: 'boolean', def: false, role: 'value' }); ! on({id: "javascript.0." + idMarker12, change:'any'}, function (dp) { MarkerWERT = dp.state.val; ccuMarker = "hm-rega.0.1252"/*LMAir1_Marker12*/; if (getState(ccuMarker).val !== MarkerWERT) WertePruefen(MarkerWERT, 12); }); !
      Das Log:

      ! ````
      javascript.0 2018-07-30 15:53:14.315 error at Object. <anonymous>(script.js.susy.lmair1.markerauslesen:336:49)
      javascript.0 2018-07-30 15:53:14.315 error at WertePruefen (script.js.susy.lmair1.markerauslesen:203:39)
      javascript.0 2018-07-30 15:53:14.314 error Error in callback: ReferenceError: MarkerWert is not defined</anonymous>

      Ist das ein Bug, oder habe ich etwas übersehen?
      
      Bin aktuell irgendwie total ratlos und würde mich über Feedback sehr freuen!
      
      Vielen Dank im Voraus!
      1 Reply Last reply Reply Quote 0
      • paul53
        paul53 last edited by

        @Vardaaran:

        Error in callback: ReferenceError: MarkerWert is not defined
        ```` `  
        

        Skript und Fehlermeldung passen nicht zusammen (Groß-/Kleinschreibung).

        1 Reply Last reply Reply Quote 0
        • apollon77
          apollon77 last edited by

          Vor MarkerWert im Skript fehlt ein „var“

          Gesendet vom Handy …

          1 Reply Last reply Reply Quote 0
          • Vardaaran
            Vardaaran last edited by

            vielen Dank und sorry für meine Blödheit!

            Manchmal sehe ich den Wald vor lauter Bäumen nicht mehr…

            ! var MarkerWERT; var ccuMarker ! var idMarker12 = "variablen.lmair1.12_deckenlampe-arbeitszimmer"; // Pfad und Name, unter dem in der Javascript-Instanz der Datenpunkte angelegt wird createState(idMarker12, 0, forecreation, { // Datenpunkt wird angelegt name: 'LMAir Marker 12', desc: 'Arbeitszimmer-Deckenlampe-Marker von LMair1', type: 'boolean', def: false, role: 'value' }); ! on({id: "javascript.0." + idMarker12, change:'any'}, function (dp) { MarkerWERT = dp.state.val; ccuMarker = "hm-rega.0.1252"/*LMAir1_Marker12*/; if (getState(ccuMarker).val !== MarkerWERT) WertePruefen(MarkerWERT, 12); }); !
            und zusätzlich noch der Fehler mit der Groß/Kleinschreibung in der Funktion "WertePruefen" beseitigt und schon gibt es keine Fehlermeldungen mehr. :mrgreen:

            Nochmals VIELEN DANK!

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

              Es fehlt noch die Deklaration der Variablen forcecreation, oder übersehe ich was ?

              var forcecreation = false;
              
              1 Reply Last reply Reply Quote 0
              • Vardaaran
                Vardaaran last edited by

                @paul53:

                Es fehlt noch die Deklaration der Variablen forcecreation, oder übersehe ich was ?

                var forcecreation = false;
                ```` `  
                

                Das waren nur "Code-Auszüge".

                Hier der gesamte Code:

                ! ````
                // Startvariablen:
                // -----------------------------------------------------------------------------
                ! var logOn = false; // Skript Logausgabe ein- (true) / ausschalten (false). Fehler werden immer ausgegeben.
                var forecreation = false; // Default: false. true: Datenpunkte werden überschrieben (wenn z.B. Bezeichnungen geändert wurden)
                var http = require('http'); // Node Module http verwenden
                var RQoptions = { // URL, die abgefragt, bzw. gesendet werden soll
                host: 'ZENSIERT',
                path: '/params.json',
                port: 80,
                auth: 'ZENSIERT',
                method: 'GET',
                headers: {
                'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36',
                'content-Type': 'text/plain',
                'Accept' : 'application/json, text/javascript'
                }
                };
                var stringMARKERgesamt = "0000000000000000000000000000000000000000000000000000000000000000";
                var MarkerWERT; // Wert LMAir1-Marker
                var ccuMarker; // Pfad-CCU-Variable.
                ! // Datenpunkte anlegen:
                // -----------------------------------------------------------------------------
                // Marker:
                var idMarker1 = "variablen.lmair1.01_pc-101"; // Pfad und Name, unter dem in der Javascript-Instanz der Datenpunkte angelegt wird
                createState(idMarker1, 0, forecreation, { // Datenpunkt wird angelegt
                name: 'LMAir Marker 01',
                desc: 'PC-101-Marker von LMair1',
                type: 'boolean',
                def: false,
                role: 'value'
                });
                var idMarker2 = "variablen.lmair1.02_tv"; // Pfad und Name, unter dem in der Javascript-Instanz der Datenpunkte angelegt wird
                createState(idMarker2, 0, forecreation, { // Datenpunkt wird angelegt
                name: 'LMAir Marker 02',
                desc: 'TV-Marker von LMair1',
                type: 'boolean',
                def: false,
                role: 'value'
                });
                var idMarker3 = "variablen.lmair1.03_reboot"; // Pfad und Name, unter dem in der Javascript-Instanz der Datenpunkte angelegt wird
                createState(idMarker3, 0, forecreation, { // Datenpunkt wird angelegt
                name: 'LMAir Marker 03',
                desc: 'Reboot-Marker von LMair1',
                type: 'boolean',
                def: false,
                role: 'value'
                });
                var idMarker4 = "variablen.lmair1.04_nacht"; // Pfad und Name, unter dem in der Javascript-Instanz der Datenpunkte angelegt wird
                createState(idMarker4, 0, forecreation, { // Datenpunkt wird angelegt
                name: 'LMAir Marker 04',
                desc: 'Nacht-Marker von LMair1',
                type: 'boolean',
                def: false,
                role: 'value'
                });
                var idMarker5 = "variablen.lmair1.05_daemmerung"; // Pfad und Name, unter dem in der Javascript-Instanz der Datenpunkte angelegt wird
                createState(idMarker5, 0, forecreation, { // Datenpunkt wird angelegt
                name: 'LMAir Marker 05',
                desc: 'Dämmerungs-Marker von LMair1',
                type: 'boolean',
                def: false,
                role: 'value'
                });
                var idMarker6 = "variablen.lmair1.06_tageslicht"; // Pfad und Name, unter dem in der Javascript-Instanz der Datenpunkte angelegt wird
                createState(idMarker6, 0, forecreation, { // Datenpunkt wird angelegt
                name: 'LMAir Marker 06',
                desc: 'Tageslicht-Marker von LMair1',
                type: 'boolean',
                def: false,
                role: 'value'
                });
                var idMarker7 = "variablen.lmair1.07_ruhemodus-arbeitszimmer"; // Pfad und Name, unter dem in der Javascript-Instanz der Datenpunkte angelegt wird
                createState(idMarker7, 0, forecreation, { // Datenpunkt wird angelegt
                name: 'LMAir Marker 07',
                desc: 'Ruhemodus-Arbeitszimmer-Marker von LMair1',
                type: 'boolean',
                def: false,
                role: 'value'
                });
                var idMarker8 = "variablen.lmair1.08_ruhemodus-schlafzimmer"; // Pfad und Name, unter dem in der Javascript-Instanz der Datenpunkte angelegt wird
                createState(idMarker8, 0, forecreation, { // Datenpunkt wird angelegt
                name: 'LMAir Marker 08',
                desc: 'Ruhemodus-Schlafzimmer-Marker von LMair1',
                type: 'boolean',
                def: false,
                role: 'value'
                });
                var idMarker9 = "variablen.lmair1.09_stromausfall"; // Pfad und Name, unter dem in der Javascript-Instanz der Datenpunkte angelegt wird
                createState(idMarker9, 0, forecreation, { // Datenpunkt wird angelegt
                name: 'LMAir Marker 09',
                desc: 'Ruhemodus-Schlafzimmer-Marker von LMair1',
                type: 'boolean',
                def: false,
                role: 'value'
                });
                var idMarker10 = "variablen.lmair1.10_deckenlampe-schlafzimmer"; // Pfad und Name, unter dem in der Javascript-Instanz der Datenpunkte angelegt wird
                createState(idMarker10, 0, forecreation, { // Datenpunkt wird angelegt
                name: 'LMAir Marker 10',
                desc: 'Schlafzimmer-Deckenlampe-Marker von LMair1',
                type: 'boolean',
                def: false,
                role: 'value'
                });
                var idMarker11 = "variablen.lmair1.11_deckenzusatzlampen-schlafzimmer"; // Pfad und Name, unter dem in der Javascript-Instanz der Datenpunkte angelegt wird
                createState(idMarker11, 0, forecreation, { // Datenpunkt wird angelegt
                name: 'LMAir Marker 11',
                desc: 'Schlafzimmer-Deckenzusatzlampen-Marker von LMair1',
                type: 'boolean',
                def: false,
                role: 'value'
                });
                var idMarker12 = "variablen.lmair1.12_deckenlampe-arbeitszimmer"; // Pfad und Name, unter dem in der Javascript-Instanz der Datenpunkte angelegt wird
                createState(idMarker12, 0, forecreation, { // Datenpunkt wird angelegt
                name: 'LMAir Marker 12',
                desc: 'Arbeitszimmer-Deckenlampe-Marker von LMair1',
                type: 'boolean',
                def: false,
                role: 'value'
                });
                var idMarker13 = "variablen.lmair1.13_unwetter"; // Pfad und Name, unter dem in der Javascript-Instanz der Datenpunkte angelegt wird
                createState(idMarker13, 0, forecreation, { // Datenpunkt wird angelegt
                name: 'LMAir Marker 13',
                desc: 'Unwetter-Marker von LMair1',
                type: 'boolean',
                def: false,
                role: 'value'
                });
                ! // Manueller Button:
                var idButton = "alexa.lmair1-markerauslesen"; // Pfad und Name, unter dem in der Javascript-Instanz der Datenpunkte angelegt wird
                createState(idButton, 0, forecreation, { // Datenpunkt wird angelegt
                name: 'LMAir 1 Marker auslesen',
                desc: 'Marker von LMAir 1 auslesen',
                type: 'boolean',
                role: 'button'/,
                smartName: {
                de: 'LMAir 1 Marker auslesen'
                }
                /
                });
                ! // Funktionen:
                // -----------------------------------------------------------------------------
                // Daten abfragen:
                function DatenAuslesen() {
                var req = http.get(RQoptions, function(res) {
                if(logOn) log('STATUS: ' + res.statusCode); // Statuscode
                if(logOn) log('HEADERS: ' + JSON.stringify(res.headers)); // Header (Rückmeldung vom Webserver)
                // Buffer the body entirely for processing as a whole.
                var bodyChunks = [];
                var chunkLine = 0;
                res.on('data', function(chunk) {
                chunkLine = chunkLine + 1;
                if(logOn) log("Zeilennummer: " + chunkLine+ " ,Inhalt: " + chunk);
                // Hier können die einzelnen Zeilen verarbeitet werden...
                bodyChunks.push(chunk);
                }).on('end', function() {
                if(logOn) log("ARRAY mit den einzelnen Zeilen: " + bodyChunks);
                if(logOn) log("ARRAY Länge: " + bodyChunks.length);
                ! var body = Buffer.concat(bodyChunks);// erhaltene Daten
                if(logOn) log('BODY: ' + body); // ...und/oder das Gesamtergebnis.

                    DatenVerarbeiten(body);				// Abrufen der Bearbeitungs-Funktion
                    });
                });
                req.on('error', function(e) { // Fehler abfangen
                    log('ERROR: ' + e.message,"warn");
                    return("error");
                });
                

                }

                ! // Daten verarbeiten:
                function DatenVerarbeiten(result) {
                var json = JSON.parse(result);

                if (json !== null) {
                    stringMARKERgesamt = json["marker state"];
                    var wertMARKERvon = 1;
                    var wertMARKERbis = 13;
                    var stringMARKERkurz = stringMARKERgesamt.slice(wertMARKERvon-1, wertMARKERbis);
                
                    var wertDURCHLAUF = 1;
                    while (wertDURCHLAUF <= wertMARKERbis) {
                        var wertMARKERaktuell = stringMARKERgesamt.slice(wertDURCHLAUF-1, wertDURCHLAUF);
                        wertMARKERaktuell = parseFloat(wertMARKERaktuell);
                
                        WertePruefen(wertMARKERaktuell, wertDURCHLAUF);
                
                        wertDURCHLAUF++;
                    }
                } else {
                	log ("Fehler beim Einlesen der Daten.");
                }
                

                }

                ! // Werte überprüfen und anpassen:
                function WertePruefen (MarkerWERT, MarkerNR) {
                if (MarkerWERT === 1) {
                MarkerWERT = true;
                } else if (MarkerWERT === 0) {
                MarkerWERT = false;
                } else if (MarkerWERT === true || MarkerWERT === false) {
                MarkerWERT = MarkerWERT;
                } else {
                log ("Marker-Wert fehlerhaft = " + MarkerWERT);
                }

                var idMARKERaktuell;
                switch (MarkerNR) {
                    case 1:
                        idMARKERaktuell = "javascript.0." + idMarker1;          // Marker 01
                        ccuMarker = "hm-rega.0.1239"/*LMAir1_Marker01*/;
                        break;
                    case 2:
                        idMARKERaktuell = "javascript.0." + idMarker2;          // Marker 02
                        ccuMarker = "hm-rega.0.1242"/*LMAir1_Marker02*/;
                        break;
                    case 3:
                        idMARKERaktuell = "javascript.0." + idMarker3;          // Marker 03
                        ccuMarker = "hm-rega.0.1248"/*LMAir1_Marker03*/;
                        break;
                    case 4:
                        idMARKERaktuell = "javascript.0." + idMarker4;          // Marker 04
                        ccuMarker = "hm-rega.0.1243"/*LMAir1_Marker04*/;
                        break;
                    case 5:
                        idMARKERaktuell = "javascript.0." + idMarker5;          // Marker 05
                        ccuMarker = "hm-rega.0.1244"/*LMAir1_Marker05*/;
                        break;
                    case 6:
                        idMARKERaktuell = "javascript.0." + idMarker6;          // Marker 06
                        ccuMarker = "hm-rega.0.1245"/*LMAir1_Marker06*/;
                        break;
                    case 7:
                        idMARKERaktuell = "javascript.0." + idMarker7;          // Marker 07
                        ccuMarker = "hm-rega.0.1246"/*LMAir1_Marker07*/;
                        break;
                    case 8:
                        idMARKERaktuell = "javascript.0." + idMarker8;          // Marker 08
                        ccuMarker = "hm-rega.0.1247"/*LMAir1_Marker08*/;
                        break;
                    case 9:
                        idMARKERaktuell = "javascript.0." + idMarker9;          // Marker 09
                        ccuMarker = "hm-rega.0.1249"/*LMAir1_Marker09*/;
                        break;
                    case 10:
                        idMARKERaktuell = "javascript.0." + idMarker10;         // Marker 10
                        ccuMarker = "hm-rega.0.1250"/*LMAir1_Marker10*/;
                        break;
                    case 11:
                        idMARKERaktuell = "javascript.0." + idMarker11;         // Marker 11
                        ccuMarker = "hm-rega.0.1251"/*LMAir1_Marker11*/;
                        break;
                    case 12:
                        idMARKERaktuell = "javascript.0." + idMarker12;         // Marker 12
                        ccuMarker = "hm-rega.0.1252"/*LMAir1_Marker12*/;
                        break;
                    case 13:
                        idMARKERaktuell = "javascript.0." + idMarker13;         // Marker 13
                        ccuMarker = "hm-rega.0.1255"/*LMAir1_Marker13*/;
                        break;
                    default:
                        log ("fehlerhafter Marker");
                        break;
                }
                if (idMARKERaktuell !== null) {
                    if (getState(idMARKERaktuell).val !== MarkerWERT) setState(idMARKERaktuell, MarkerWERT);
                    if (ccuMarker !== "") {
                        if (getState(ccuMarker).val !== MarkerWERT) setState(ccuMarker, MarkerWERT);
                    }
                } else {
                    log ("Markerpfad fehlerhaft");
                }
                

                }

                ! // Abfrage Datenpunkte
                // -----------------------------------------------------------------------------
                on({id: "javascript.0." + idMarker1, change:'any'}, function (dp) {
                MarkerWERT = dp.state.val;
                ccuMarker = "hm-rega.0.1239"/LMAir1_Marker01/;
                if (getState(ccuMarker).val !== MarkerWERT) WertePruefen(MarkerWERT, 1);
                });
                on({id: "javascript.0." + idMarker2, change:'any'}, function (dp) {
                MarkerWERT = dp.state.val;
                ccuMarker = "hm-rega.0.1242"/LMAir1_Marker02/;
                if (getState(ccuMarker).val !== MarkerWERT) WertePruefen(MarkerWERT, 2);
                });
                on({id: "javascript.0." + idMarker3, change:'any'}, function (dp) {
                MarkerWERT = dp.state.val;
                ccuMarker = "hm-rega.0.1248"/LMAir1_Marker03/;
                if (getState(ccuMarker).val !== MarkerWERT) WertePruefen(MarkerWERT, 3);
                });
                on({id: "javascript.0." + idMarker4, change:'any'}, function (dp) {
                MarkerWERT = dp.state.val;
                ccuMarker = "hm-rega.0.1243"/LMAir1_Marker04/;
                if (getState(ccuMarker).val !== MarkerWERT) WertePruefen(MarkerWERT, 4);
                });
                on({id: "javascript.0." + idMarker5, change:'any'}, function (dp) {
                MarkerWERT = dp.state.val;
                ccuMarker = "hm-rega.0.1244"/LMAir1_Marker05/;
                if (getState(ccuMarker).val !== MarkerWERT) WertePruefen(MarkerWERT, 5);
                });
                on({id: "javascript.0." + idMarker6, change:'any'}, function (dp) {
                MarkerWERT = dp.state.val;
                ccuMarker = "hm-rega.0.1245"/LMAir1_Marker06/;
                if (getState(ccuMarker).val !== MarkerWERT) WertePruefen(MarkerWERT, 6);
                });
                on({id: "javascript.0." + idMarker7, change:'any'}, function (dp) {
                MarkerWERT = dp.state.val;
                ccuMarker = "hm-rega.0.1246"/LMAir1_Marker07/;
                if (getState(ccuMarker).val !== MarkerWERT) WertePruefen(MarkerWERT, 7);
                });
                on({id: "javascript.0." + idMarker8, change:'any'}, function (dp) {
                MarkerWERT = dp.state.val;
                ccuMarker = "hm-rega.0.1247"/LMAir1_Marker08/;
                if (getState(ccuMarker).val !== MarkerWERT) WertePruefen(MarkerWERT, 8);
                });
                on({id: "javascript.0." + idMarker9, change:'any'}, function (dp) {
                MarkerWERT = dp.state.val;
                ccuMarker = "hm-rega.0.1249"/LMAir1_Marker09/;
                if (getState(ccuMarker).val !== MarkerWERT) WertePruefen(MarkerWERT, 9);
                });
                on({id: "javascript.0." + idMarker10, change:'any'}, function (dp) {
                MarkerWERT = dp.state.val;
                ccuMarker = "hm-rega.0.1250"/LMAir1_Marker10/;
                if (getState(ccuMarker).val !== MarkerWERT) WertePruefen(MarkerWERT, 10);
                });
                on({id: "javascript.0." + idMarker11, change:'any'}, function (dp) {
                MarkerWERT = dp.state.val;
                ccuMarker = "hm-rega.0.1251"/LMAir1_Marker11/;
                if (getState(ccuMarker).val !== MarkerWERT) WertePruefen(MarkerWERT, 11);
                });
                on({id: "javascript.0." + idMarker12, change:'any'}, function (dp) {
                MarkerWERT = dp.state.val;
                ccuMarker = "hm-rega.0.1252"/LMAir1_Marker12/;
                if (getState(ccuMarker).val !== MarkerWERT) WertePruefen(MarkerWERT, 12);
                });
                on({id: "javascript.0." + idMarker13, change:'any'}, function (dp) {
                MarkerWERT = dp.state.val;
                ccuMarker = "hm-rega.0.1255"/LMAir1_Marker13/;
                if (getState(ccuMarker).val !== MarkerWERT) WertePruefen(MarkerWERT, 13);
                });
                ! // Start und Intervall:
                // --------------------------------------------------------------------------
                setTimeout(DatenAuslesen, 1000); // Beim Skriptstart die Werte auslesen
                schedule('*/1 * * * *', DatenAuslesen); // alle 1 Minuten
                ! // Button-Aktivierung:
                on({id: "javascript.0." + idButton, change:'any'}, function (dp) {
                DatenAuslesen();
                });
                ! ````

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

                Support us

                ioBroker
                Community Adapters
                Donate

                880
                Online

                31.8k
                Users

                79.9k
                Topics

                1.3m
                Posts

                3
                6
                475
                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