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).
-
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; ```` `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();
});
! ````
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden