NEWS
Raum und Funktion unter 0_userdata anpassen
-
Hallo zusammen,
ich versuche gerade ein JavaScript zu bauen, dass mir automatisch alle Fensterkontakte unter 0_userdata.0.FensterOffenDelayed anlegt und die Zustände dort bei jedem öffnen oder schließen eines Kontakts aktualisiert.
Soweit so gut....Aktuell hänge ich an dem Punkt, den Datenpunkten den korrekten Raum und die Funktion "FensterOffenState" zuzuweisen.
Manuell über die GUI geht das ohne Probleme. Nur im JS bekomme ich das nicht hin.Auslesen klappt mit folgendem Befehl:
const dataPointPath_Buero = "0_userdata.0.FensterOffenDelayed.DachfensterBüro"; const dataPoint = getObject(dataPointPath_Buero, 'functions').enumNames[0]
Aber wie kann ich an diese Stelle schreiben?
Ich hoffe mal es kann mir jemand einen Tipp geben
Grüße,
Stefan -
bitte alles was text ist in Codetags packen, auch object Definition Falls es keiner beantwortet, bin in 30min zu hause, dann suche ich dir code raus. Falls ich welchen habe, weiß gerade nicht ob ich Funktionen zuweise
-
async function addToEnum(enumName, newStateId) { if (!await existsObjectAsync(newStateId)) { log(newStateId + ' not exist!', 'warn') return; } let myEnum = await getObjectAsync(enumName); if (myEnum) { let pos = myEnum.common.members.indexOf(newStateId); if (pos === -1) { try { myEnum.common.members.push(newStateId); myEnum.from = "system.adapter." + "0"; myEnum.ts = new Date().getTime(); //@ts-ignore await setObjectAsync(enumName, myEnum); } catch (e) {log(e + ' add id: ' + newStateId,'error')} } } }
so wirds benutzt:
const enumFunctions = 'online' ... for (const idPart of watchingDevice.states) { let s = Array.prototype.slice.apply($('state(id='+idPart+')')) for (const id of s) { await addToEnum('enum.functions.'+enumFunctions,id) } }
Ich füge dort States die ich raus gefiltert habe, der Gruppe überwachung hinzu. Ist auch 2 Jahre alt, heute geht ja selector.toArray()