Zur besten Antwort gewählt
Mrz 26, 2024 - 20:40
anbei ein erster Wurf...
const https = require('https');
// Die zu sendenden Daten definieren, einschließlich der phoneid
const data = JSON.stringify({
deviceids: '05487FD85845', // Beispiel Device ID; ersetze sie durch deine eigene. Kann auch mit komma getrennt werden. '05487FD85845,05487FD85845,05487FD85845'
phoneid: '457395482536', // Beispiel Phone ID; ersetze sie durch deine eigene
});
// Die Optionen für den HTTPS-Request festlegen
const options = {
hostname: 'www.data199.com',
port: 443,
path: '/api/pv1/device/lastmeasurement',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': data.length,
},
};
// Die Request-Funktion definieren
const req = https.request(options, (res) => {
console.log(`Statuscode: ${res.statusCode}`);
let responseBody = '';
res.on('data', (chunk) => {
responseBody += chunk;
});
// Wenn die gesamte Antwort empfangen wurde
res.on('end', () => {
console.log('Antwort vom Server:', responseBody);
try {
// Die Antwort parsen
const parsedResponse = JSON.parse(responseBody);
// Überprüfen, ob die Antwort erfolgreich war und mindestens ein Gerät enthält
if (parsedResponse.success && parsedResponse.devices.length > 0) {
// Auf das erste Gerät und dessen Messwerte zugreifen
const firstDeviceMeasurement = parsedResponse.devices[0].measurement;
// Die Werte für Temperatur und Luftfeuchtigkeit extrahieren
const temperature = firstDeviceMeasurement.t1;
const humidity = firstDeviceMeasurement.h;
console.log(`Temperatur: ${temperature}, Luftfeuchtigkeit: ${humidity}`);
// Hier kannst du mit den Werten von `temperature` und `humidity` weiterarbeiten
// Variable temperature und humidity kannst du jetzt in die SystemVariablen Schreiben.
// Temperatur und Luftfeuchtigkeit als Systemvariablen setzen
executeDeviceCommand(
"Außen",
"Temperatur",
{ "value": temperature.toString() },
function(err) {
err && console.error('Temperatur Fehler:', err.message);
}
);
executeDeviceCommand(
"Außen",
"Luftfeuchtigkeit",
{ "value": humidity.toString() },
function(err) {
err && console.error('Luftfeuchtigkeit Fehler:', err.message);
}
);
} else {
console.log("Keine Gerätedaten verfügbar oder die Anfrage war nicht erfolgreich.");
}
} catch (e) {
console.error('Fehler beim Parsen der Antwort:', e);
}
});
});
// Error-Handler für die Request-Funktion
req.on('error', (e) => {
console.error('Fehler bei der Anfrage:', e);
});
// Die Daten senden und den Request abschließen
req.write(data);
req.end();
Im Debug wird mir folgendes Ausgegeben:
20:32:23 Skript Test_MobileAlerts hat gestartet.
20:32:24 Statuscode: 200
20:32:24 Antwort vom Server:,{ "devices": [ { "deviceid": "05487FD85845", "lastseen": 1711481330, "lowbattery": false, "measurement": { "idx": 6827066, "ts": 1711481326, "c": 1711481330, "lb": false, "t1": 13.7, "h": 62.0 } } ], "success": true }
20:32:24 Temperatur: 13.7, Luftfeuchtigkeit: 62
20:32:24 Skript Test_MobileAlerts hat geendet.
Ganz wichtig, 3 Aufrufe pro Minute ergibt einen Block deiner IP von 7 Minuten. Soweit ich mich erinnere, werden die Werte eh nur alle 7 Minuten aktualisiert. Also nimm ein Intervall von 7 Minuten.
Von
Hallo Eric! Sehr cool! Vielen, vielen Dank! Das ist ja eine perfekte und sehr rasche Antwort! :-) Hat super funktioniert, lediglich das Beschreiben der Systemvariablen musste ich anpassen.
executeDeviceCommand(
"Außen",
"Temperatur",
{ "value":"setValue","ext":temperature,"scale":"0.01"},
function(err) {
err && console.error('Temperatur Fehler:', err.message);
}
);
Bei " { "value": temperature.toString() }," kam die Fehlermeldung "Temperatur Fehler: ,unknow command"
Nochmals vielen Dank Eric!!!
MFG
Markus
Von
Freut mich, dass es geklappt hat.
Habe mehr Kommentare als notwendig rein, aber es macht es einfacher zu lesen und verstehen.
Wenn wieder was ist, gib Bescheid
Von
Hallo Eric, ich habe da doch noch ein Problem. Wenn ich das Skript im Debug teste funktioniert alles und die Systemvariable wird beschrieben, aber über den AM startet das Skript „nicht richtig“ und die Systemvariable wird nicht aktualisiert. Der Task ist im AM auf 7min gestellt, und zum Test schalte ich noch eine Lampe ein/aus. Die Lampe schaltet, aber das Skript tut nichts. Hast du da eine Idee, was das sein kann? Danke, MFG Markus
Von
Oh je, habe es auch nur im Debug laufen lassen.
Ich vermute es ist ein ähnliches Problem wie hier beschrieben: https://mediola.answerbase.com/4880820/Scripteditor-JavaScript-Allgemeine-Frage
Ich schaue mir das Script noch mal an. Habe aber bewusst nur Basic Funktionen verwendet.
Sollte ich nicht fündig werden, mache ich einen Call bei Mediola auf. Vielleicht rückt wer mit einer Versionsnummer raus, dann lässt es sich etwas einschränken.
Von
Super, danke!
Von
Support Ticket ist eröffnet. Wer möchte auf die Dauer bis zur Rückmeldung Wetten abschließen? ;-)
Von
Vielen Dank Eric! Ich bin auch schon gespannt wie lange das dauern wird ;-) Anscheinend ist der Skripteditor im AM etwas bescheiden....
Neuen Kommentar hinzufügen