Problem:
Das Script läuft im NEO AM bei der Entwicklung korrekt ab, richtige Werte werden auf der Console ausgegeben, in die Variablen geschrieben und angezeigt.
Wird das Script über einen Task (ausgeteste: „Statuswechsel Variable“, „Zeitgesteuert“ und „Intervall“) aufgerufen, wird es nicht vollständig ausgeführt.
Über Hilfsvariablen habe ich die Stelle des Abbruchs ermittelt, siehe unten. Andere Scripts sind an dieser Stelle im Programmcode GENAUSO dokumentiert, laufen aber einwandfrei.
Der Original-Code ist unten angefügt.
Vielen Dank im Voraus.
Original-Code
executeDeviceCommand(
"AIO GATEWAY V5+ (EA)",
"cccc",
{"value":"setValue","ext":"1","extMeta":"-2147483648-2147483647"},
function(err) {
err && console.error(err.message);
}
);
var url = "https://data.sensor.community/airrohr/v1/sensor/1947/";
executeDeviceCommand(
"AIO GATEWAY V5+ (EA)",
"cccc",
{"value":"setValue","ext":"2","extMeta":"-2147483648-2147483647"},
function(err) {
err && console.error(err.message);
}
);
var https = require('https');
executeDeviceCommand(
"AIO GATEWAY V5+ (EA)",
"cccc",
{"value":"setValue","ext":"3","extMeta":"-2147483648-2147483647"},
function(err) {
err && console.error(err.message);
}
);
var req = https.get(url, function(res) {
var body = '';
res.on('data', function(chunk) {
body += String(chunk);
});
res.on('end', function() {
var sbody = JSON.parse( body );
console.log(body);
executeDeviceCommand(
"AIO GATEWAY V5+ (EA)",
"dddd",
{"value":"setValue","ext":body},
function(err) {
err && console.error(err.message);
}
);
var https = require('https');
executeDeviceCommand(
"AIO GATEWAY V5+ (EA)",
"cccc",
{"value":"setValue","ext":"4","extMeta":"-2147483648-2147483647"},
function(err) {
err && console.error(err.message);
}
);
console.log(sbody[0].sensordatavalues[0].value);
var LuftP1 = sbody[0].sensordatavalues[0].value;
console.log(LuftP1);
console.log(sbody[0].sensordatavalues[1].value);
var LuftP2 = sbody[0].sensordatavalues[1].value;
console.log(LuftP2);
console.log(sbody[0].timestamp);
var LuftTS = sbody[0].timestamp;
console.log(LuftTS);
executeDeviceCommand(
"AIO GATEWAY V5+ (EA)",
"cccc",
{"value":"setValue","ext":"5","extMeta":"-2147483648-2147483647"},
function(err) {
err && console.error(err.message);
}
);
// schreibe P1 in Gateway Variable (Typ FLOAT)
executeDeviceCommand(
"y_luft",
"luft_heide_p1",
{"value":"setValue","ext":LuftP1,"extMeta":"-21474836.48-21474836.47","scale":"
0.01"},
function(err) {
err && console.error(err);
}
);
executeDeviceCommand(
"AIO GATEWAY V5+ (EA)",
"cccc",
{"value":"setValue","ext":"6","extMeta":"-2147483648-2147483647"},
function(err) {
err && console.error(err.message);
}
);
// schreibe P2 in Gateway Variable (Typ FLOAT)
executeDeviceCommand(
"y_luft",
"luft_heide_p2",
{"value":"setValue","ext":LuftP2,"extMeta":"-21474836.48-21474836.47","scale":"
0.01"},
function(err) {
err && console.error(err);
}
);
executeDeviceCommand(
"AIO GATEWAY V5+ (EA)",
"cccc",
{"value":"setValue","ext":"8","extMeta":"-2147483648-2147483647"},
function(err) {
err && console.error(err.message);
}
);
// schreibe Timestamp in Gateway Variable (Typ Text)
executeDeviceCommand(
"y_luft",
"luft_timestamp",
{"value":"setValue","ext":LuftTS,"extMeta":"-21474836.48-21474836.47","scale":"
0.01"},
function(err) {
err && console.error(err);
}
);
executeDeviceCommand(
"AIO GATEWAY V5+ (EA)",
"cccc",
{"value":"setValue","ext":"10","extMeta":"-2147483648-2147483647"},
function(err) {
err && console.error(err.message);
}
);
});
});
Von
noch ne Idee, siehe https://mediola.answerbase.com/3255863/Script-wird-nicht-gestartet
Von
Vielen Dank für die Hinweise auf "(19) AM: Get http"! Durch Umstellung der Abfrage von "https" auf "http" läuft das Script auf dem Neo-Server wieder. (Dieser Hinweis war in der Antwort des Supports zu. o.g. Thread enthalten). Dies setzt voraus, dass "http" vom Server akzeptiert wird, was hier der Fall ist.
Das Script lief aber vorher eine längere Zeit mit "https" einwandfrei. Da stellt sich die Frage, warum es jetzt nicht mehr lief.
1. Änderung im Neo-Server (?)
2. Wurde beim Neo-Server nichts geändert, kann es sein, dass der API-Anbieter auf das "Let's Encrypt"-Zertifikat umgestellt hat (?)
Danke nochmal an hw-020. (Auch mich hat das einige Stunden gekostet ;-)
Von
Bei mir ist es so, dass es eine Zeitangabe geht und dann aber nicht mehr. Irgendwann funktioniert es dann wiederum
Hat mich auch schon viele Stunden gekostet
Manchmal hilft ein Reset vom gateway
Guten Rutsch ins neue Jahr
Von
Nicht Zeitangabe sondern zeitlang
Neuen Kommentar hinzufügen