!7 sclass NotebookLid extends DynBigNumber { transient Bool openLast; transient long openSince; void start { super.start(); setDescription("Notebook Lid"); ownTimer(doEvery(2.0, r updateMe)); } void update { Bool open = isNotebookLidOpen(); if (isTrue(open) && isFalse(openLast)) { openSince = now(); dm_say("Lid opened"); } else if (isFalse(open) && isTrue(openLast)) dm_say("Lid closed"); openLast = open; setValue(now() < openSince + 10000 ? "JUST OPENED" : nullFalseTrue(open, "?", "CLOSED", "OPEN")); } }