NEWS
Javascript - Warte x Sekunden, DP erstellen
-
Falls wer das brauchen kann:
- x Sekunden Warten
- Datenpunkt aus dem Script erzeugen und befüllen - spart die Handarbeit
Wenn man Sekunden warten will - einfach diese Funktion unten in den global_Scripte einfügen und ihr könnt überall mit waitInSeconds(Anzahl der Sekunden) warten.
//warten function waitInSeconds(seconds) { return new Promise((resolve) => { setTimeout(resolve, seconds * 1000); }); }
- Da ich faul bin... wenn ich Datenpunkte brauche, dann erzeuge ich mir im Script direkt und kann diese dann auch direkt verwenden.
Wenn der DP nicht da ist, wird er erzeugt, wenn er da ist, wird einfach der Wert geschrieben.
Aufruf: writeOrCreateState(neuer Datenpunkt mit vollem Pfad, Wert den ihr braucht, <Name optional>, <type optional, wird nix angegeben number>)
Beispiel:
writeOrCreateState('0_userdata.0.e3dc.Prozentuele_Leistung_PV',"23"))
erzeugt folgenden Datenpunkt: Prozentuele_Leistung_PV im Objektbaum unter '0_userdata.0.e3dc., der Typ wäre number und bei Name würde "per Script erzeugt" stehen.bitte in global_Scripte einfügen
function writeOrCreateState(stateName, value, name = "", type = "number") { // Check if the state exists if (existsState(stateName)) { // State exists, so write the value setState(stateName, value); } else { // State does not exist, create it and initialize with the value createState(stateName, value, { name: name || "per Script erzeugt", // Use provided name or a default description type: type, // Use provided type or default to "number" }); } }
-
@tomtom24 Wait gibt es doch schon
https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#wait
-
@haus-automatisierung sorry.... hab ich übersehen...
-
@tomtom24 als Ergänzung eine Funktion, die keinen Fehler in das Log schreibt, wenn man einen Datenpunkt löschen will, der nicht existiert.
function delete_State_if_exists(stateName) { // Check if the state exists if (existsState(stateName)) { //löschen, wenn existiert. sonst nichts machen. deleteState(stateName, value); } }