NEWS

[GELÖST] Fehler bei Werteänderung von Datenpunkt.


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

  • @Vardaaran:

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

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


  • Vor MarkerWert im Skript fehlt ein „var“

    Gesendet vom Handy …


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


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

    var forcecreation = false;
    

  • @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();
    });
    ! ````

Suggested Topics

  • 4
  • 9
  • 7
  • 7
  • 25
  • 3
  • 10
  • 5

1.3k
Online

36.7k
Users

42.4k
Topics

587.4k
Posts