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