Läsnäolo-logiikan rakentaminen liiketunnistimilla kotiautomaatioon

Aika hyvin asunto on liiketunnistimilla täytetty, melkein kaikki valot toimivat niillä. Ongelma tietenkin on etteivät ne ole läsnäolotunnistimia, vaan liikettä pitää olla parin minuutin sisällä, jotta valot pysyvät päällä.
Kuvassa on asunto jaettu alueisiin, jotka ovat toisiinsa liitoksissa. Tuo ei ole rakennepiirros vaan koot ja sijainnit riippuvat miten tilojen liitokset menevät ts. mistä on ovia&kulkuja toisiin osiin.

Liiketunnistimista saa tiedon milloin tilassa on nähty viimeksi liikettä. Eli milloin liiketunnistin on hälyttänyt ensimmäisen kerran ja sen jälkeen, kun tunnistin on 'on' niin liikettä on ollut vähintään max( 'on'-hetki, now()-liiketunnistimen timeout). Sitten kun liiketunnistin menee tilaa 'off', niin viimeksi on liike ollut tuo aika - timeout.
Tästä saadaan siis tiedot milloin viimeksi on missäkin tilassa nähty liikettä. Yksinkertaisin keino olisi tietenkin valita aina se viimeisin liike ja sen tila merkataan että siellä on ihminen. Mutta se ei toimi kun liikkujia on usein.
Joten yksinkertainen logiikka niin että kun liiketunnistimissa tapahtuu muutos, niin testataan jokainen tila niin että jos tilan viimeisin liike on myöhemmin kun minkään siihen liittyvän tilan, niin se merkitsee että tilassa on henkilö.
Logiikka ei ole täydellinen ts. jos kaksi henkilöä liikkuu vierekkäisissä tiloissa, niin silloin vuorotellen kumpikin tila merkitään aktiiviseksi. Samoin liikkuminen käytävässä tarkoittaa että jos yksittäisessä huoneessa on ihminen, niin systeemi luulee hänen liikkuneen käytävään. Tällöin kuitenkin läsnäolotieto voidaan palauttaa yksinkertaisesti liikkumalla huoneessa.
Tämä ei siis muuta normaalien liiketunnistimen toimintaa ts. valot ovat päällä tilassa missä liikettä on havaittu, mutta tämä jättää valot päälle tilaan, missä on merkitty olevan ihminen, vaikkei liikettä olekaan pitkään aikaan (=liiketunnistimen timeout) havaittu. Ei siis tarvita kokoustilojen taukoliikuntaa eli käsien heiluttelua.

Comments