GESTAPO
Antti Krats
Anna Kämäräinen
Kai Lahti
Kari Perttula
Tietotekniikan cum laude -työprojekti
Sovellussuunnitelma
01.13.02
JYVÄSKYLÄN YLIOPISTO
TIETOTEKNIIKAN LAITOS
GESTAPO-projekti
Projektiryhmä: Antti Krats
Anna Kämäräinen
Kai Lahti
Kari Perttula
Visuaalinen konsultti: Laura Kuurne
Tilaaja: Informaatioteknologian tiedekunta
Jukka Järvinen
Sauli Takkinen
Vastaava ohjaaja: Jukka-Pekka Santanen
Tekninen ohjaaja: Juha Lamberg
Työtila: Agora, C225.3
Laitteet: Neljä PC-tietokonetta, joissa käyttöjärjestelmänä Windows 2000. Erilaisia kameroita ja antureita.
Ohjelmistonkehitystyökalut: Delphi 6
Suunnittelutyökalut: Excel, Argo/UML
SISÄLTÖ
  |   |
Sovelluksen minimivaatimuksiksi määriteltiin ensimmäisessä projektipalaverissa 20.9.2001:
Siirtomedian osalta ei tehty päätöksiä, mutta liikuteltavuutta pidettiin suotavana. Käyttömahdollisuuksia mietittiin ainakin USB-, infrapuna, radiolinkki ja sarjaporttiliitäntöjen osalta.
Luvussa 3 kuvataan järjestelmän arkkitehtuuria. Järjestelmä on jaettu ohjelmiston osalta viiteen komponenttiin, jotka esitellään luvussa 4. Luvussa 5 käsitellään käyttötapauskuvaukset. Luvussa 6 käydään läpi hallintosovelluksen käyttöliittymää, ja luvussa 7 kuvataan järjestelmän rakennetta luokkakaavioiden avulla. Luvun 8 toteutusjärjestys kuvaa toteutettavien osien prioriteettijärjestystä siten, että listan loppupäässä olevia toimintoja ei voi käyttää, jos alkupäähän määriteltyjä ei ole toteutettu.
Termit ja lyhenteet
Seuraavassa luettelossa on esitelty dokumentissa esiintyviä termejä ja lyhenteitä:
Hallintosovelluksella (engl. Configuration Unit, lyh. CU) suoritetaan järjestelmän konfigurointi, sekä sen toiminnan seuranta.
Hälytysyksikkö (engl. Alarm Unit, lyh. AU) on toteutettavan järjestelmän osa, joka vastaa tekstiviesti- tai sähköpostihälytysten lähettämisestä.
Konfigurointitiedoston avulla seuranta- ja hälytysyksikölle kerrotaan sen toimintaa säätelevät parametrit.
Lokitiedostostoihin tallennetaan seurantayksiköiden mittaamat tulokset sekä kameroilla otetut still-kuvat.
Seurantayksikkö (engl. Surveillance Unit, lyh. SU) on järjestelmän osa, joka vastaa kameroiden ja antureiden ohjauksesta.
Tallennusyksikkö Tallennusyksikkö (engl. Data Unit, lyh. DU) koostuu konfigurointitietojen tietokannasta ja lokitiedostoista.
Järjestelmän kuvaus
Luvussa kuvataan järjestelmän arkkitehtuuria sen rakenteen ja eri yksiköiden toimintojen avulla.
Kuva 1. Järjestelmän arkkitehtuuri.
Hälytyksen sattuessa ilmoitus hälytysrajojen rikkoutumisesta välitetään tallennusyksikölle, joka välittää sen edelleen hälytysyksikölle. Hälytysyksikkö prosessoi saadun informaation ja tarvittaessa aktivoi seurantayksikön häytyslaitteen (esim. äänihälytys). Seurantayksikkö välittää tapahtuman tiedot tallennusyksikölle, joka tallentaa sen lokiin.
Seurantayksikön konfiguraatiotiedosto surveillanceunit1.ini sijaitsee tallennusyksikössä. Konfiguraatiotiedoston muoto on seuraava:
[CAMERA]
camera_number=0 Kameran numero (0-9).
framerate=50 Päivitysnopeus millisekunteina.
image_size=320*240 Kuvan koko.
image_color_format=8bit Värien määrä (8bit,16bit,24bit).
Quality=high Kuvanlaatu(high,medium,low).
mirror=off Kuvan peilaus.
flip=off Kuvan kääntäminen ylösalaisin.
negative=off Värit negatiiviseksi.
[JOYSTICK]
joystick_number=0 Joystick-portin numero (0-1).
x-axel_on/off=on Käytetäänkö x-akselia.
x-axel_factor=3000 X-akselin kalibrointikerroin.
x-axel_low_limit=15000 X-akselin hälytyksen alaraja.
x-axel_high_limit=55000 X-akselin hälytyksen yläraja.
Y-axel_on/off=off Käytetäänkö y-akselia.
y_axel_factor=0 Y-akselin kalibrointikerroin.
y_axel_low_limit=0 Y-akselin hälytyksen alaraja.
y_axel_high_limit=0 Y-akselin hälytyksen yläraja.
[COMPORT]
com1_on/off=on Käytetäänkö ensimmäistä com-porttia.
CTS=on Tarkkaillaanko pinniä CTS.
DSR=on Tarkkaillaanko pinniä DSR.
Ring=off Tarkkaillaanko pinniä Ring indicator.
RLSD=off Tarkkaillaanko pinniä RLSD.
[DATAUNIT]
dataunitip=130.234.167.158 Tallennusyksikön ip-osoite.
dataunitport=10079 Tallennusyksikön portti, jota käytetään.
Hälytysyksikön konfiguraatiotiedosto alarmunit.ini sijaitsee tallennusyksikössä. Konfiguraatiotiedoston muoto on seuraava:
[SMS]
wwwalarmaddress=www.alarm.com Tekstiviestipalvelun osoite.
firealarmnumber=112,+358503610983 Palohälytyksen numerot.
systemalarmnumber=+358503610983 Järjestelmähälytyksen numero.
burglaralarmnumber=10022,+358503610983 Murtohälytyksen numerot.
moisturealarmnumber=+358503610983 Kosteushälytyksen numero.
alarmtimelimit=5 Hälytysväli.
[EMAIL]
firealarmaddress=palomies@palokunta.fi, Palohälytyksen
sautakki@jyu.fi sähköpostiosoitteet.
systemalarmaddress=sautakki@jyu.fi Järjestelmähälytyksen sähköpostiosoite.
burglaralarmaddress=konstaapeli@poliisi.fi, Murtohälytyksen
sautakki@jyu.fi sähköpostiosoitteet.
moisturealarmaddress=sautakki@jyu.fi, Kosteushälytyksen
huoltomies@lvi.fi sähköpostiosoitteet.
alarmtimelimit=1 Hälytysväli.
[DATAUNIT]
dataunitip=130.234.167.174 Tallennusyksikön
dataunitport=10079 Tallennusyksikön portti.
Jokaista seurantayksikköä pystytään tarkkailemaan yksittäisesti. Reaaliaikaisia tietoja voidaan seurata suoraan kustakin seurantayksiköstä. Hallintosovelluksen käyttöliittymän ikkunoita on hahmoteltu luvussa 6.
DeviceController- ja SurveillanceController-komponentit sijaitsevat seurantayksikössä. DeviceController hallitsee mikrotietokoneeseen liitettyjä laitteita ja SurveillanceController toimii yksikön päättävänä osana.
AlertController-komponentti kuuluu hälytysyksikköön ja se hoitaa hälytysten lähettämisen tekstiviestillä ja sähköpostilla.
DataController-komponentti sijaitsee tallennusyksikössä. Konfiguraatiot ja seurantadata kulkevat DataController-komponentin kautta konfiguraatiotiedostoihin ja lokiin.
Communication-komponentti kuuluu kaikkiin yksiköihin ja mahdollistaa yksiköiden välisen kommunikoinnin.
Seuraavissa luvuissa käsitellään komponenttien toiminnalliset ja tekniset vaatimukset sekä rajoitteet.
Teknisten vaatimusten osalta järjestelmässä käytettäviä liitäntöjä ovat ainakin sarja-, rinnakkais- ja peliportit. Niihin voidaan kytkeä kameroita, märkä/kuiva-, lämpötila- ja liiketunnistimia, sekä erilaisia on/off-periaatteella toimivia antureita.
Kameroiden valmistajan ajurit on oltava asennettuina. Kuvan siirtämisessä sovellukseen käytetään Video for Windows -ohjelmakirjastoa. Kameroiden liittämiseen käytetään pääasiassa USB-liitäntää.
Rajoitteiden osalta yhteen sarjaporttiin voidaan kytkeä viisi on/off-anturia. Liitettävien antureiden maksimimäärä on siis kymmenen, sillä tietokoneessa on kaksi sarjaporttia.
Peliporttiin voidaan liittää kaksi peliohjainta, jolloin saadaan mitattua yhteensä neljää akselia eli neljää analogista arvoa. Näistä liittimistä voidaan selvittää esimerkiksi lämpötila-anturin lämpötila. Peliportti tunnistaa lisäksi neljä on/off-kytkintä.
USB-väylää käytetään kameroiden liittämiseen, mutta sillä on useita rajoituksia. Kaapelin pituus on standardin mukaan rajoitettu neljään metriin. Tämä pakottaa kameran olemaan lähellä seurantayksikköä. USB:n siirtokapasiteetin raja on 12 Mbps, joka vähentää liitettävien kameroiden määrän neljään. Näin taataan jokaiselle kameralle kohtuullinen kuvanlaatu ja päivitysnopeus.
SurveillanceController-komponentin tulee osata käsitellä muita seurantayksikön komponentteja, välittää niille tietoja ja ottaa tietoja vastaan.
Tallennettavan data sisältää monenlaista tietoa sekä tekstinä että kuvina. DataController -komponentti pitää tämän annetun datan sidoksissa toisiinsa. Komponentin toimintaa rajoittaa kiintolevytila.
Äänihälytys välitetään DeviceControllerille. GSM-tekstiviesti lähetetään joko WWW-palvelun kautta tai tarkoitukseen varatulla GSM-puhelimella datasuite-ohjelmiston avulla.
Komponentti tutkii annettuja portteja. Komponentti välittää annettuja tietoja, jotka voivat olla kuvia tai tekstiä. Yhteyksiä voi olla vain yksi kerrallaan ja uutta yhteyttä ei voida aloittaa ennen kuin edellinen on saatu loppuun.
Suorittajat: Ylläpitäjä
Esiehdot: Hallintosovellus, tallennusyksikkö ja vähintään yksi seurantayksikkö on toimintavalmiudessa.
Kuvaus: Käyttäjä avaa hallintosovelluksesta listauksen järjestelmässä olevista seurantayksiköistä [Poikkeus 1: Lokitiedostosta ei saada tietoja]. Valitsemalla seurantayksikön käyttäjä näkee kaikki yksikköön liittyvät tiedot. Käyttäjä muuttaa yksikön asetuksia. Käyttäjä voi vahvistaa muutokset Apply-painikkeella. Vahvistuksen jälkeen tiedot tallennetaan lokiin [Poikkeus 2: Tiedonsiirto ei onnistu] ja konfiguraatiotiedostoon [Poikkeus 3: Tallennus ei onnistu]. Tallennusyksikkö lähettää tiedot edelleen muutoksien kohteena olevalle seurantayksikölle [Poikkeus 4: Lähetys ei onnistu]. Saatuaan tiedot seurantayksikkö ottaa ne käyttöön.
Poikkeukset:
Suorittaja: Ylläpitäjä
Esiehdot: Hallintosovellus on avattu ja vähintään yksi seurantayksikkö on toimintavalmiudessa.
Kuvaus:
Käyttäjä valitsee hallintosovelluksesta olevalla puumaisella rakenteella seurantayksikön ja tämän alta haluamansa laitteen [Poikkeus 1: Laitteita tai seurantayksikköjä ei löydy].Hallintosovellus muodostaa suoran yhteyden valittuun seurantayksikköön [Poikkeus 2: Yhteyttä seurantayksikköön ei saada]. Tämän jälkeen käyttäjällä on edessään viimeisimmät kyseisen laitteen tiedot [Poikkeus 3: Seurantayksikkö ei anna tietoja].
Poikkeukset:
Suorittajat: Ylläpitäjä
Esiehdot: Vanhoja tietoja on lokitiedostoissa ja hallintosovellus on avattu.
Kuvaus:
Käyttäjä valitsee hallintosovelluksessa olevalla puumaisella rakenteella haluamansa seurantayksikön ja tämän alta haluamansa laitteen [Poikkeus 1: Laitteita tai seurantayksikköjä ei löydy]. Tämän jälkeen käyttäjä valitsee Search From Log -välilehden, johon syötetyillä kriteereillä tiedot etsitään lokista [Poikkeus 2: Lokitiedostosta ei saada tietoja].
Poikkeukset:
Suorittajat: Seurantayksikkö
Esiehdot: Seurantayksikön anturit ovat toiminnassa ja niille on asetettu rajat.
Kuvaus:
Seurantayksikkö tallentaa antureiden tietoja ja kameroiden kuvia tallennusyksikön konfiguraatiotiedostossa olevien asetusten mukaan [Poikkeus 1: Tallennus ei onnistu]. Seurantayksikkö vertaa antureilta saatuja arvoja asetettuihin rajoihin. Jos rajat ylittyvät, seurantayksikkö välittää hälytyksen tallennusyksikön kautta hälytysyksikölle [Poikkeus 2: Hälytyksen välitys ei onnistu]. Määritellyn hälytyslogiikan mukaisesti hälytysyksikkö lähettää tarvittaessa sen sähköpostina, tekstiviestinä ja/tai laitehälytyksen hälytyksen vastaanottajalle. Äänihälytys suoritetaan konfiguraatiotiedostossa määritellyssä yksikössä.
Poikkeukset:
Kuva 2. Käyttöliittymän pääikkunassa reaaliaikaisten tietojen tarkastelu.
Real-time values -välilehdeltä näkyvät tuoreimmat kameroiden kuvat sekä antureilta kerätyt arvot. Kameroiden kuvat erotellaan tunnisteilla (CameraID). Antureilta saadut arvot on kerätty Sensor values -otsikon alle. Lämpötilat ilmoitetaan Celsius-asteina. Märkä/kuiva-anturin (Moisture Sensor) osalta näkyy punainen huutomerkki, mikäli anturi on märkä. Huutomerkki on vihreä, jos anturi on kuiva.
Tiedot päivittyvät Surveillance Settings -lehdellä määriteltyjen tietojen mukaan. Tarvittaessa tiedot voi päivittää painamalla Refresh-painiketta.
Kuva 3. Vanhojen tietojen katselu lokitiedostosta
Kamerat erotetaan toisistaan tunnisteilla. Kuvien alle sijoitettu päivämäärä ja kellonaika ilmaisevat kuvien ottoajankohdan. Kuvat on otettu yhtä aikaa, mutta eri kameroilla. Haun jälkeen kuvat alkavat pyöriä automaattisesti eteenpäin. Kuvat voi pysäyttää tarvittaessa lehdelle sijoitetuilla painikkeilla.
Kuva 4. Seurantayksikön toiminnan konfigurointi.
Tiedot tallennetaan painamalla Save new settings -painiketta. Katumapäälle tullessa painetaan Cancel -painiketta, jolloin käytössä olevat arvot palautuvat ruutuihin muokattujen tilalle.
Kuva 5. Hälytysrajojen konfigurointi
Seurantayksikölle on mahdollista määritellä erilaisia hälytyksiä. Alarm Settings - otsikon alla olevaan taulukkoon on määritelty kellon ajan perusteella kaksi erilaista hälytystä. Kaikki taulukkoon merkityt hälytysrajat ovat yhtä aikaa käytössä.Jokaiselle riville määritellään erikseen alkamisajankohta, päättymisaika ja hälytyksen vakavuus (Priority). Prioriteetit määritellään Alarm Unit Configuration -välilehdellä.
Uusi rivi lisätään taulukkoon Create New Alarm Options -painikkeella. Avautuvaan lomakkeeseen täytetään tarpeelliset kohdat. Rivejä voi poistaa taulukosta valitsemalla ne hiirellä ja painamalla delete - painiketta.
Priorities-taulukkoon määritellään, mitä hälytyksen ilmetessä tapahtuu. Repeat interval määrittelee ajan, jonka jälkeen tarvittaessa hälytetään uudelleen. Esimerkiksi korkean lämpötilan takia lähetettyä hälytystä ei uusita, jos lämpötila on laskenut riittävän alas. Jokaiselle prioriteetille määritellään käytettävät hälytysmuodot: tekstiviesti, sähköposti ja paikallinen hälytyslaite. Taulukossa On tarkoittaa, että kyseistä hälytysmuotoa käytetään. Off tarkoittaa, että sitä ei käytetä.
Alarm target -taulukkoon määritellään kohde, johon hälytys lähetetään. Eri antureiden aiheuttamille hälytyksille voidaan määritellä oma kohde. Kaikissa hälytyksissä voidaan käyttää kuitenkin samaa puhelinnumeroa ja sähköpostiosoitetta.
Kuva 6. Hälytysyksikön konfigurointi
Luokkakaaviot
Tässä luvussa esitellään järjestelmän luokkakaavioita.
Kuva 7 esittää seurantayksikössä olevaa luokkajakoa. TSurveillanceController on yksikön hallitseva osa. TCommunication välittää tiedot toisille yksiköille. TDeviceController hallitsee mikrotietokoneeseen liitettyjä laitteita.
Kuva 7. Seurantayksikkö (SU).
Kuvassa 8 on esitetty hälytysyksikön toteutus luokkakaaviona. TAlertController hoitaa hälytysten välittämisen. Jos TAlertControllerille tulee useita hälytyksiä, osaa luokka tehdä niistä koostetun hälytyksen. TLocalAlert ohjaa seurantayksikön paikallista hälytyslaitetta. TGSMAlert lähettää hälytyksen tekstiviestinä ja TEMail sähköpostina.
Kuva 8. Hälytysyksikkö (AU).
Kuvassa 9 on esitetty tallennusyksikön luokkarakenne. TDataController hoitaa konfiguraatio- ja lokitiedostojen käsittelyn. Käyttöliittymällä päästään muuttamaan ja katsomaan konfiguraatio- ja lokitiedostojen sisältöä TDataControllerin kautta.
Kuva 9. Tallennusyksikkö (DU).
Tyyppi Etuliite Nimi
----------------------------------------
int n nNumber
char sz szType
string s sName
double d dPrice
BOOL b bDone
long l lHours
luokka T TEMail
pointer p pPointer
Delphin omien komponenttien kanssa käytetään Delphille ominaista nimeämistapaa, esimerksiksi ButtonSend. Ohjelmakoodi kommentoidaan funktioittain. Tiedostoon alkuun merkitään tekijä, päivämäärä sekä lyhyt kuvaus sen toiminnasta, ja jokaisen funktion yläpuolelle kuvataan funktion toiminta.
- TComport
- TCamera
- TCameras
- TJoystick
- TJoysticks
- TDevicecontroller
- TCommunication
- TSurveillanceController
- TDataController
- Hälytys
- TEMail
- TAlertController
- Hälytys sähköpostilla
- TGSMAlert
- Hälytys tekstiviestillä
- TSoundAlert
- Hälytys paikallisesti
- Käyttöliitymä
- Konfiguraatioiden asetus/vaihto
- Loki-historian selailu
- Reaaliaikainen seuranta
- Hälytysilmoitus käyttöliittymään
- Hälytyksen kuittaus tekstiviestillä