NEWS
Prüfen ob Wechselrichter verbunden
-
-
@stefan-falt
nein, kein weiterer Trigger, einfach ein debug-baustein davor -
@homoran
Um zu prüfen was er macht? -
@stefan-falt
Das scheint zu funktionieren. Ich werde Morgen BerichtenDanke für den Support.
-
@stefan-falt sagte in Prüfen ob Wechselrichter verbunden:
@stefan-falt
Das scheint zu funktionieren. Ich werde Morgen BerichtenDanke für den Support.
nein!
nach dem request den result im debug, damit wir wissen was zurückkomt, undxes abfangen können
-
@homoran
Ah, verstehe:
-
@stefan-falt
Ich sollte wohl nur auswerten, wenn der Wert NICHT "undefined" ist ... -
@stefan-falt möglicherweise auf undefined prüfen, und nur dann weitermachen.
ich fürchte aber der EHOSTUNREACH kommt trotzdem.Vielleicht hat @paul53 einen weiteren Geistesblitz
-
Augenblicklich schauts so aus. Ich nehme an um auf undefined zu prüfen muss ich solche eine Variable erstellen?
Ich bin dann mal im Bett. Muss morgen früh raus.Danke + MfG
Stefan -
@stefan-falt sagte: Ich nehme an um auf undefined zu prüfen muss ich solche eine Variable erstellen?
Nein, einfach püfen: falls
result
-
@stefan-falt sagte in Prüfen ob Wechselrichter verbunden:
Augenblicklich schauts so aus.
nee, warte mal bis morgen
@homoran sagte in Prüfen ob Wechselrichter verbunden:
der EHOSTUNREACH kommt trotzdem.
und müllt dir doch das log zu, oder?
-
@homoran sagte: EHOSTUNREACH kommt trotzdem.
Das müsste sich doch mit Hilfe des Ping-Adapters abfangen lassen?
-
Ich würde das mit Javascript machen und ein try/catch drumherum bauen. damit ist das Problem gelöst.
Gleichzeitig würde ich auf Axios umstellen, da request deprecated ist und der Standard beim JS-Adapter Axios wird. (Je nach JS-Adapter Version musst noch axios als Modul in den Instanzeinstellungen des JS-Adapters definieren).
Gleichzeitig ein timeout anstatt ein Intervall. Problem ist, dass Intervalle immer laufen, auch wenn der Code darin noch nicht abgeschlossen ist. Mit einem timeout welches die Funktion selbst nach Ablauf des codes wieder aufruft, passiert das nicht.Ich habe es natürlich nicht getestet.
const axios = require('axios').default; axios.defaults.timeout = 1000; // timeout der Anfrage const timeout = null; // timeout für neue Anfrage async function getInfo() { try { const url = 'http://192.168.178.24:8484/getdevdata.cgi?.....'; // richtige URL eintragen const response = await axios.get(url); if (response.status === 200) { const result = response.data; await setStateAsync('VAR_PowerOfAC', result.pac, true); // usw.... } } catch (error) { if (error.code === 'EHOSTUNREACH') { log('WR is sleeping...', 'warn'); } else if (error.code === 'ECONNABORTED') { log('Request timeout... Error: ${error}'. 'error'); } else { log(`Error by request WR. Error: ${error}`, ''error); } } if (timeout) clearTimeout(timeout), (timeout = null); timeout = setTimeout(() => { getInfo(); }, 10000); } getInfo();
-
@schmakus
Dankeschön ... ich bin schon so von Blockly durchdrungen dass man nicht mehr auf die einfachsten Lösungen kommt ... Danke.