Würde gerne noch etwas einbringen. Soweit ich sehe verwendest du obj.state.val nicht. Dann könntest du val:true benutzen.
Ob das mit dem timer[obj.id] Sinn macht. Ja ist doch kaum Arbeit. Ich würde es dann aber eher so lösen:
var devices = {}; on(...(obj)=> { devices[obj.id] = true; //hier entprellen setTimeout(meineFunktion,100); }) function meineFunktion() { for (let dev in devices){...} devices = {}; }Kann Syntaxfehler enthalten. 🙂