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