NEWS
DeleteDevice im Adapter will nicht
-
Hallo zusammen,
ich rufe in meinem Adapter in einer Initialisierungs-Routine (hinzufügen neuer Geräte) folgenden Code auf:
adapter.getDevices(function (err, devices) { for(var d = 0; d < devices.length; d++) { adapter.log.debug("Device ID to delete: " + devices[d]._id); adapter.deleteDevice(devices[d]._id); } });
Damit will ich quasi alle Geräte meines Adapters auf einmal löschen.
Meine Objekte sehen so aus:
Wenn ich den obigen Code ausführe, wird irgendwie absolut nichts gelöscht.
Wo habe ich hier den Denkfehler???
-
Ich glaube in deinem Fall kannst Du "delete Device" nicht nutzen.
Die Struktur geht davon aus das "Unterhalb" eines Devices zuerst "Channel" existieren und erst dort drunter die States.
Daher geht deleteDevices hin und sucht die Devices, wenn gefunden sucht es die Channel darunter und löscht diese. Channel findet er aber bei Dir nicht … hm ...
Jetzt kann man "streiten" ob das so "ok" ist oder "blöd weil zu starr" ...
Du kannst für den js-controller mal dazu ein Github ssue anlegen wenn Du die Funktionalität brauchst ...
-
Ich glaube in deinem Fall kannst Du "delete Device" nicht nutzen.
Die Struktur geht davon aus das "Unterhalb" eines Devices zuerst "Channel" existieren und erst dort drunter die States. `
Jup, im speziellen geht er außerdem davon aus, dass die Devices direkt unter dem Adapter-Ordner hängen, alsoadapter.0.device.channel.state
Du könntest mit adapter.getObjects die Objekte und ihre IDs ermitteln und dann für die betroffenen Objekte (d.h. devices und untergeordnete States) deleteObject aufrufen.
-
Hallo zusammen,
danke für den Tip.
Habe mir jetzt ne kleine Routine mit .getObjects geschrieben.