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? -
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); }
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