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 -
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,
Stefanbitte 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 :D
-
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()
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden