NEWS
warn state "...has no existing object, ..."
-
warn state "...has no existing object, this might lead to an error in future versions"
z.B.
2020-12-21 15:40:51.194 - warn: fritzdect.0 (6608) State "fritzdect.0.Button_1234567890-1.id" has no existing object, this might lead to an error in future versionsim travis Testlauf zeigt mir das log die obige Meldung an.
Ich habe keine Ahnung wie ich das angebliche Problem lösen kann und welches die akzeptierten states und roles sind.Kann nicht erkennen, daß ich hier dagegen verstoße:
https://github.com/ioBroker/ioBroker/blob/master/doc/STATE_ROLES.md
bzw.
https://github.com/ioBroker/ioBroker.docs/blob/master/docs/en/dev/objectsschema.md#channel
wobei zwischen den beiden noch Unterschiede sind.irgend eine Idee für mich?
gibt es eine Liste der verwendbaren roles?
Was ist wenn etwas nicht dabei ist?Gruß
KlausPS id wird so angelegt
adapter.setObjectNotExists(typ + newId + '.id', { type: 'state', common: { name: 'ID', type: 'string', read: true, write: false, role: 'info', desc: 'ID' }, native: {} });
-
. .
-
@foxthefox So, jetzt noch eine korrekte Antwort:
Im folgenden Code machst du die vier Funktionen sofort hinter einander:createDevices(); createGroups(); createTemplates(); pollFritzData();
Aber createDevices() wird intern asynchron über ein Callback ausgeführt. Damit kann es sein, dass du Werte erhälst, für die du noch gar keine Datenpunkte erstellt hast. Ich denke, das ist das Problem.
Ich würde versuchen auf async/await und Promises umzustellen oder halt überall sauber mit Callbacks zu arbeiten.
-
@UncleSam sagte in warn state "...has no existing object, ...":
@foxthefox So, jetzt noch eine korrekte Antwort:
Im folgenden Code machst du die vier Funktionen sofort hinter einander:createDevices(); createGroups(); createTemplates(); pollFritzData();
Aber createDevices() wird intern asynchron über ein Callback ausgeführt. Damit kann es sein, dass du Werte erhälst, für die du noch gar keine Datenpunkte erstellt hast. Ich denke, das ist das Problem.
Ich würde versuchen auf async/await und Promises umzustellen oder halt überall sauber mit Callbacks zu arbeiten.
Danke.
Wobei ich das noch nicht ganz glauben mag. Die Funktionen sind ja von mir angelegt und deren scope setzt nicht aufeinander auf. D.h. jede Funktion kümmert sich um die eigenen Dinge. Außer das Polling fürs update macht danach wieder mit eigenen update Funktionen weiter.
Kurioserweise betrifft es auch immer die gleichen Datenpunkte id,fwversion, manufacturer... und nicht jene die state oder cmd sind. Trotz Asynchronität scheint mir da zuviel gleichartig zu sein, deswegen eher meine Frage in Richtung der Role.wobei async/await schon eine Überlegung ist.
Gruß
Klaus -
@foxthefox sagte in warn state "...has no existing object, ...":
deswegen eher meine Frage in Richtung der Role.
Du kannst theoretisch irgend etwas in die role schreiben, nicht dass du das solltest, aber für den js-contoller hat das überhaupt keine Bedeutung. Die Fehlermeldung kommt wirklich nur daher, dass du ein setState vor einem createObject (oder ähnliches) machst.
Rollen haben nur im Zusammenspiel mit anderen Adaptern eine Bedeutung.
Wenn du es nicht glaubst: logge jeden setState und createObject und du wirst sehen, wie es passiert.
-
@UncleSam
ich glaub ich habs jetzt.adapter.setObjectNotExists()
wird gleich von
adapter.setState()
gefolgt und die sind dann wohl das asynchrone Problem.