Hallo zusammen,
ich muss vorab sagen: ich bin eigentlich kein Programmierer und nutze die Copy-and-Paste Programierung um bestehende ShellyScrips anzupassen.
Ich stehe gerade aber auf dem Schlauch und gebrauche Unterstützung.
Ich möchte die akutelle Solarleistung meiner openDTU im Shelly anzeigen lassen und nutze eine Funktion, die den JSON-String der openDTU liest, parsed und eigentlich den Wert "total.Power.v" zurückliefern soll.
Ich kann mir den Wert in der Funktion selber anzeigen lassen, bekommte den gepasten JSON aber nicht in eine andere Variable übergeben und damit nicht aus der Funktion heraus.
Was mache ich falsch?
hier die Funktion:
function getSolarPower() {
let solarPower;
let params = {
method: "GET", // Wir wollen Daten abrufen (GET-Anfrage)
url: "http://192.168.xxx.xxx/api/livedata/status" // IP-Adresse des Shelly-Geräts
};
Shelly.call("http.get", params, function(result, error_code, error_message) {
if (error_code != 0) {
print("Fehler beim Senden der Daten: ", error_message);
print(params); // Ausgabe der Parameter zur Fehleranalyse
solarPower = -777; // Fehlerwert fuer die Anzeige
} else {
print("Daten erfolgreich empfangen.");
// JSON-Antwort parsen
let parsedData = JSON.parse(result.body);
print("parsedData :", parsedData); // Ausgabe der parsedData
// Auf ein verschachteltes Element zugreifen
if (parsedData && parsedData.data && parsedData.data.total && parsedData.data.total.Power) {
solarPower = parseInt(parsedData.total.Power.v);
print(params);
}
print("solarPower :", parsedData.total.Power.v); //zeigt Werte an
print("indirekt: ", solarPower); // zeigt keine Werte an :(
}
});
return solarPower; // return parsedData.total.Power.v erzeug Fehlermeldungen
}
print('wiedergabe: ', getSolarPower());
print('wiedergabe: ', wiedergabe);
Alles anzeigen
die Console gibt mit richtig den Wert "parsedData.total.Power.v aus.
lasse ich mir den Wert über die Variable "solarPower" anzeigen, ist der Wert undeffiniert.
Entsprechend kann ich ihn nicht an die Funktion übergeben..
Am Ende möchte ich über den Aufruf "getSolarPower()" die Grösse "parsedData.total.Power.v" im Hauptprogramm aufrufen..
Ich gehe davon aus, dass es sich hier um unterschiedliche Variablen-Typen handelt, die inkompartiebel sind(?)
Was mache ich falsch?
Danke für Hilfe !!