NEWS
createState deprecated
-
Was ist hierfür eigentlich der Grund?
Method "createState" is deprecated and will be removed in js-controller 7, use "extendObject/setObjectNotExists" instead
Dann müsste ja mit der 7'ner Version des js-controller gefühlt jeder zweite Adapter angepasst werden.
-
@carsten04 said in createState deprecated:
Was ist hierfür eigentlich der Grund?
Method "createState" is deprecated and will be removed in js-controller 7, use "extendObject/setObjectNotExists" instead
Dann müsste ja mit der 7'ner Version des js-controller gefühlt jeder zweite Adapter angepasst werden.
Mit js-controller 6 wird die Funktion DEPRECATED funktioniert aber uneingeschränkt weiter.
Erst mit js-controller 7 wird diese deaktiviert. Und ja da sind sicher einige Adapter anzupassen.Zu den Gründen kann @Apollon77 bzw. @FoxRiver76 sicher was sagen. Wenn hier nichts kommen sollte stell due Frage bitte im Telegramm Developer Chat (Invite Links unter http://www.iobroker.dev). Wahrscheinlich bekommst du dirt rascher eine Antwort.
-
@carsten04 sagte in createState deprecated:
Dann müsste ja mit der 7'ner Version des js-controller gefühlt jeder zweite Adapter angepasst werden.
IMHO nicht nur die Adapter, sondern wahrscheinlich auch alle JavaScripte, die "createState" verwenden?
Hoffentlich gibt es dann nicht auch ähnliche (Verständnis-)Probleme, wie sie z.B. bei Ersatz von "request" deprecated durch "httpGet" aufgekommen sind.
@apollon77, @foxriver76 Mich würden auch die Hintergründe dazu interessieren. -
@joergeli Diesern Change hat nichts mit dem JavaScript Adapter nichts zu tun im ersten Schritt, oder bekommst Du dort auch solche Deprecation Meldungen?
Auch die Annahme "jeder zweite" ist nicht korrekt ... wenn ich die greppe die ich ausgecheckt habe komme ich auf 21 Adapter ...
Die Methoden createState und so (auch createDevice) und so versuchen mit viel Magie und Login und basierend auf den Parameters zu erraten was der Dev gern anlegen möchte und versucht dann eine Objekt ID nach der Regel "device.channel,state" zu erzeugen (oder je nachdem was der Dev angegeben hat als Parametern). Da aber viele Informationen fehlen können wir die "zwischenobjekte" der Struktur nicht sauber anlegen weil wir auch nur raten könnten. Das ganze führt am Ende dazu das die Entwickler die das nutzen nicht auf dem Radar haben das diese zwischenobjekte fehlen und diese auch so nicht anlegen.
Da es nur wenige Adapter nutzen ist es sauberer solche "Magischen methoden" einfach zu entfernen und lieber die Devs die Dinge anlegen zu lassen was Sie brauchen. Und einen String ala "device.channel.state" selbst zusammenzubauen anstelle es als 3 Parameter anzugeben bekommt jeder hin
Der Ersatz ist also ein setObjectNotExists oder so mit nem default wert oder dem state value getrennt und ggf Zwischen-Strukturobjekte.
-
@apollon77
Danke für Deine Antwort, und nein, ich bekomme keine Deprecation-Meldungen.
Wenn primär die Adapter betroffen sind und nicht JS bin ich mit meinem Halbwissen erst mal beruhigt