NEWS
Frage zu type: 'folder' und createState() + setObject()
-
Gibt soweit ich weiß keine Möglichkeit etwas anderes als einen
type: 'state'zu erzeugen, deshalb frage ich mich ob der folgende Code zum Erstellen einestype: 'folder'keine Probleme bereitet.async function init() { try { if (!existsObject(path)) await createStateAsync(path) let o = await getObjectAsync(path) if (o.type !== 'hier soll folder stehen') { o.type = 'folder' o.common.name = 'Geräteüberwachung' delete o.common.type delete o.common.role await setObjectAsync(path,o) } //work() } catch(e) {log(e)} return Promise.resolve(true); } -
Gibt soweit ich weiß keine Möglichkeit etwas anderes als einen
type: 'state'zu erzeugen, deshalb frage ich mich ob der folgende Code zum Erstellen einestype: 'folder'keine Probleme bereitet.async function init() { try { if (!existsObject(path)) await createStateAsync(path) let o = await getObjectAsync(path) if (o.type !== 'hier soll folder stehen') { o.type = 'folder' o.common.name = 'Geräteüberwachung' delete o.common.type delete o.common.role await setObjectAsync(path,o) } //work() } catch(e) {log(e)} return Promise.resolve(true); }@ticaki sagte: keine Möglichkeit etwas anderes als einen type: 'state' zu erzeugen
Mit setObject(id, obj) kann man beliebige (zulässige) Objekt-Typen erzeugen. setObject() überschreibt bestehende Objekte. Einzelne Objekt-Eigenschaften kann man mit extendObject() ändern.
Zeile 3 ist macht keinen Sinn. -
@ticaki sagte: keine Möglichkeit etwas anderes als einen type: 'state' zu erzeugen
Mit setObject(id, obj) kann man beliebige (zulässige) Objekt-Typen erzeugen. setObject() überschreibt bestehende Objekte. Einzelne Objekt-Eigenschaften kann man mit extendObject() ändern.
Zeile 3 ist macht keinen Sinn.@paul53 sagte in Frage zu type: 'folder' und createState() + setObject():
@ticaki sagte: keine Möglichkeit etwas anderes als einen type: 'state' zu erzeugen
Mit setObject(id, obj) kann man beliebige (zulässige) Objekt-Typen erzeugen. setObject() überschreibt bestehende Objekte. Einzelne Objekt-Eigenschaften kann man mit extendObject() ändern.
Danke, da ich gerade nen vollseitige Fehlermeldung bekommen habe, was sind die Mindestangabe zum erzeugen eines objectes?

Zeile 3 ist macht keinen Sinn.
war am rumprobieren :)
-
@paul53 sagte in Frage zu type: 'folder' und createState() + setObject():
@ticaki sagte: keine Möglichkeit etwas anderes als einen type: 'state' zu erzeugen
Mit setObject(id, obj) kann man beliebige (zulässige) Objekt-Typen erzeugen. setObject() überschreibt bestehende Objekte. Einzelne Objekt-Eigenschaften kann man mit extendObject() ändern.
Danke, da ich gerade nen vollseitige Fehlermeldung bekommen habe, was sind die Mindestangabe zum erzeugen eines objectes?

Zeile 3 ist macht keinen Sinn.
war am rumprobieren :)
@ticaki sagte: was sind die Mindestangabe zum erzeugen eines objectes?
Das sind type (string), common (object) und native (object). Eine (globale) Funktion könnte z.B. so aussehen:
function createFolder(id, name) { if(existsObject(id)) log('Objekt: ' + id + ' existiert bereits!', 'warn'); else { const obj = { type: 'folder', common: { name: name }, native: {} }; setObject(id, obj); } } -
@paul53
DankeUnd falls es jemand gebrauchen kann, die fertigen Funktionen nach Pauls Beispiel:
// id muß ein gültiger String sein, alles weitere is optional async function createFolderAsync(id, name='', desc='') { return Promise.resolve(await _createObject(id, 'folder', name, desc)) } async function createChannelAsync(id, name='', desc='') { return Promise.resolve(await _createObject(id, 'channel', name, desc)) } async function createDeviceAsync(id, name='', desc='') { return Promise.resolve(await _createObject(id, 'device', name, desc)) } async function _createObject(id, typ, name='', desc='') { try { if(existsObject(id)) log('Objekt: ' + id + ' existiert bereits!', 'warn'); else { const obj = { type: typ, common: { name: name, desc: desc }, native: {} } if (!id || typeof id !== 'string') { throw new Error('Fehler in _createObject Parameter 1 ist kein string') } if (!(id.startsWith('alias.0') || id.startsWith('0_userdata.0') || id.startsWith('mqtt'))) { throw new Error('Fehler in _createObject Parameter 1: ' + id.split('.').slice(0,2).join('.') + ' nicht erlaubt') } await setObjectAsync(id, obj); } return Promise.resolve(true); } catch (error) { log(error + '!', 'error') } return Promise.resolve(false); } -
@paul53
DankeUnd falls es jemand gebrauchen kann, die fertigen Funktionen nach Pauls Beispiel:
// id muß ein gültiger String sein, alles weitere is optional async function createFolderAsync(id, name='', desc='') { return Promise.resolve(await _createObject(id, 'folder', name, desc)) } async function createChannelAsync(id, name='', desc='') { return Promise.resolve(await _createObject(id, 'channel', name, desc)) } async function createDeviceAsync(id, name='', desc='') { return Promise.resolve(await _createObject(id, 'device', name, desc)) } async function _createObject(id, typ, name='', desc='') { try { if(existsObject(id)) log('Objekt: ' + id + ' existiert bereits!', 'warn'); else { const obj = { type: typ, common: { name: name, desc: desc }, native: {} } if (!id || typeof id !== 'string') { throw new Error('Fehler in _createObject Parameter 1 ist kein string') } if (!(id.startsWith('alias.0') || id.startsWith('0_userdata.0') || id.startsWith('mqtt'))) { throw new Error('Fehler in _createObject Parameter 1: ' + id.split('.').slice(0,2).join('.') + ' nicht erlaubt') } await setObjectAsync(id, obj); } return Promise.resolve(true); } catch (error) { log(error + '!', 'error') } return Promise.resolve(false); }@ticaki
Da setObject() von sich aus keine Einschränkungen hat, sollte man vielleicht Zeile 26 ergänzen:if(id.startsWith('alias.0') || id.startsWith('0_userdata.0') || id.startsWith('mqtt')) await setObjectAsync(id, obj); else log('ID ist ungültig!', 'warn'); -
@ticaki
Da setObject() von sich aus keine Einschränkungen hat, sollte man vielleicht Zeile 26 ergänzen:if(id.startsWith('alias.0') || id.startsWith('0_userdata.0') || id.startsWith('mqtt')) await setObjectAsync(id, obj); else log('ID ist ungültig!', 'warn');ergänzt
// id muß ein gültiger String sein und mit 0_userdata.0, alias.0 oder mqtt anfangen, alles weitere is optional async function createFolderAsync(id, name='', desc='') { return Promise.resolve(await _createObject(id, 'folder', name, desc)) } async function createChannelAsync(id, name='', desc='') { return Promise.resolve(await _createObject(id, 'channel', name, desc)) } async function createDeviceAsync(id, name='', desc='') { return Promise.resolve(await _createObject(id, 'device', name, desc)) } async function _createObject(id, typ, name='', desc='') { try { if(existsObject(id)) log('Objekt: ' + id + ' existiert bereits!', 'warn'); else { const obj = { type: typ, common: { name: name, desc: desc }, native: {} } if (!id || typeof id !== 'string') { throw new Error('Fehler in _createObject Parameter 1 ist kein string') } if (!(id.startsWith('alias.0') || id.startsWith('0_userdata.0') || id.startsWith('mqtt'))) { throw new Error('Fehler in _createObject Parameter 1: ' + id.split('.').slice(0,2).join('.') + ' nicht erlaubt') } await setObjectAsync(id, obj); } return Promise.resolve(true); } catch (error) { log(error + '!', 'error') } return Promise.resolve(false); }
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