Presence Meta Event Injector: events indicating presence: - front door ajar - door lock using manual movement closing (unless door ajar, assume we would not use key to close from inside ) - door unlock (any method, manual, key, card, phone, ssh, etc) - panic button press - door toggle button press - back door ajar - movement sensor (maybe threshold number movements within 5 minutes) events indicating somebody left: - door closed with card, phone, ssh (while backdor and frontdoor shut) - no movement within 3 hours and movement within the last 6 hours (disable trigger if sensor is broken) events indicating "alarm state" / special message: - Panic Button pressend - Sudden rise in Temp-Sensor-Value - Sudden rise in Dust/Smoke-Sensor-Value Movement Meta Event Injector: movement sensor (maybe threshold number movements within 5 minutes) -> Movement Passed Threshold no movement within 3 hours and movement within the last 6 hours -> Movement Absence Passed Threshold asign confidence to metaevent -> if few movement was detected before door closed -> lower timeout until no presence ! -> if a lot of movement was detected -> longer timeout until no presence (e.g. confidence of SomethingReallyIsMoving{false} must reach level of SomethingReallyIsMoving{true} before presence switch is triggered Sensor Spike Event Injector: monitors sensor values and calculates running average mean, stddev over last hours, raises Event is value spikes, aka rised beyond mean +- stddev within 2 min (enables after 1 hour of collecting data) Use Cases to detect: * someone walks by the movement sensor towards the door. Closes it from outside with the Card and leaves -> nobody in room anymore * somone still works in the OLGA room while the last person in the main room leaves and closes the door behind him with the card -> best idea so far: -> all doors closed and shut -> no movement for ~30 seconds after closing doors -> assume everybody left -> movement within next ~30 seconds -> assume somebody is still here until SomthingReallyIsMoving{false} fires possible better Solution: close door "differently" from outside if people are still inside (e.g. with buttonpress prior to closing with card from outside... or install a "CLOSE ONLY" event sending device which can be triggered through the glass)