Puoi usare una variabile con 3 possibili stati:
- qualcuno a casa
- nessuno a casa
- indeterminato
Questi stati si escludono a vicenda, quindi avrà senso utilizzarli per la modellazione. Ogni volta che si apre la porta, impostare lo stato su "indeterminato". Ogni volta che la porta si chiude, avvia un timer e quando il timer termina, cambi lo stato in "qualcuno a casa" o "nessuno in casa", a seconda di ciò che il sensore di movimento ti ha detto nell'intervallo di tempo misurato. Dovrebbe essere ovvio che quando la porta viene riaperta durante l'intervallo di tempo, devi fermare il timer e mantenere lo stato "indeterminato". Potresti anche considerare di impostare lo stato su "qualcuno a casa" ogni volta che c'è movimento all'interno del corridoio, anche quando la porta non è aperta o chiusa.
Questo modello si prende cura del fatto che una persona a casa potrebbe aprire la porta, ma non se ne va, o viceversa viene da fuori, apre la porta, cambia idea e non entra. Si correggerà anche da solo quando avrai sbagliato lo stato (forse perché la persona è uscita o non è entrata dalla porta principale), e più tardi misurerà qualche movimento all'interno.
Naturalmente, quando c'è più di una persona a casa, e solo una lascia, questo modello avrà lo stato sbagliato, ma questo non è nulla che possa essere risolto da un modello migliore, solo da più sensori; -)