NEWS
[gelöst] delete und setObject führt zu keinem Ergebnis
-
Hallo,
ich habe mehrere States einem customobjekt zugewiesen.
Nun ist es so, dass der Adapter kein Custom mehr enthält und somit dies auch nicht in der UI angezeigt wird.
Das Zahnrad ist aber aufgrund dessen noch blau.Ich würde nun gerne die Objekte der States per Skript entsprechend setzen.
hier mein code: (Aktuell auf eine spezielle Id gemünzt, mit der ich es testen wollte.
const selectorLorawan = $(`state[id=lorawan.1.bbea74d6-1fc5-4238-af20-d2aecdbb4f8e.devices.70b3d52dd302759e.uplink.decoded.targetTemperatureFloat]`); const CustomInstanz = 'lorawan.1'; // Schedules beim Skriptstart erzeugen: selectorLorawan.each((id,i)=>{ deleteCommonCustom(id); }); function deleteCommonCustom(id) { const obj = getObject(id); log(JSON.stringify(obj.common.custom)); delete obj.common.custom[CustomInstanz]; log(JSON.stringify(obj.common.custom)); setObject(id,obj); }
Laut logging ist auch der entsprechende custom eintrag entfert, aber trotz des setObject verändert sich das Objekt nicht.
Was kann ich tun, um nicht alle states einzeln durchschauen zu müssen? -
@ben1983 Habe es heraus bekommen.
Man muss hier den Wert zu null setzen, dann wird er gelöscht.const selectorLorawan = $(`state[id=lorawan.1.bbea74d6-1fc5-4238-af20-d2aecdbb4f8e.devices.70b3d52dd302759e.uplink.decoded.targetTemperatureFloat]`); const CustomInstanz = 'lorawan.1'; // Schedules beim Skriptstart erzeugen: selectorLorawan.each((id,i)=>{ deleteCommonCustom(id); }); function deleteCommonCustom(id) { const obj = getObject(id); obj.common.custom[CustomInstanz] = null; setObject(id,obj); }