Hallo,
ich frage per HttpGet den Wechselrichter apsystems ez1-m ab. Da dieser Mikrowechselrichter erst bei einem gewissen Lichteinfall startet und nicht fremdversorgt ist, antwortet dessen Webserver bei Dunkelheit nicht.
Das wiederum sorgt beim Pollen für hässliche Fehlerlogs, die ich bisher auch mit üblichen Try-Catch-Bemühungen nicht lösen kann und über Nacht das Fehlerprotokoll füllen:
script.js.Balkonkraftwerk: httpGet(url=http://192.168.178.58:8050/getOutputData, error=timeout of 2000ms exceeded)

Hier der ansonsten (im Hellen...) funktionierende Code:
httpGet('http://192.168.178.58:8050/getOutputData', { timeout: 2000 }, (err, response) => {
if (err)
{
setState('0_userdata.0.Balkonkraftwerk.Current_Combined_Power_W'/*Current Combined Power W*/, 0);
}
else if (response.statusCode == 200)
{
const resObj = JSON.parse(response.data);
setState('0_userdata.0.Balkonkraftwerk.Current_Combined_Power_W'/*Current Combined Power W*/, resObj.data.p1 + resObj.data.p2);
}
});
Nach etwas Recherche deutet sich an, dass Try-Catch o.ä. hier deshalb nicht funktioniert, weil die eigentliche Logmeldung innerhalb von HttpGet während der asynchronen Abarbeitung erzeugt wird:
https://www.heise.de/hintergrund/Einfuehrung-in-die-asynchrone-JavaScript-Programmierung-2752531.html
Mit welchem programmiertechnischem Kunstgriff ließen sich die obigen Logeinträge daher vermeiden?
Wäre dankbar für Vorschläge, da meine Javascript-Kenntnisse eher überschaubar sind...
Bisher nutze ich einen ohnehin verfügbaren Lichtsensor als Workaround für die Annahme, wann der Mikrowechselrichter wohl gestartet sein müsste. Ist aber genauso wie ein vorheriger Ping o.ä. auf den Webserver irgendwie keine schöne Lösung...