Hyppää sisältöön
Etusivu HAMK Pilkku Verkkosovelluksen kehittäminen hevosten juontiseurantaan tallinhoitajien avuksi
  • HAMK Pilkku -Verkkolehti

Verkkosovelluksen kehittäminen hevosten juontiseurantaan tallinhoitajien avuksi

  • Joni Rikula
  • Olli Koskela
  • Atte Partanen

Hevosten hyvinvoinnin seuranta on keskeinen osa vastuullista eläintenhoitoa. Yksi vakavimmista ja yleisimmistä hevosten terveysuhkista on ähky, joka vaatii välitöntä hoitoa ja on edelleen merkittävin yksittäinen hevosten kuolinsyy. Yksi ähkyn ensimmäisistä oireista on juomisen väheneminen tai loppuminen kokonaan. Tästä syystä hevosen juomakäyttäytymisen tarkkailu on tärkeä osa ennaltaehkäisevää hoitoa.

Nykyisin juomisen seuraaminen perustuu usein manuaalisiin menetelmiin, kuten vesisaavien kantamiseen ja silmämääräiseen arviointiin. Tämä on kuitenkin työläs menetelmä, joka on altis inhimillisille virheille. Parempi ratkaisu olisikin tilanne, jossa hevonen voi ”lähettää viestin” hoitajalleen heti, kun se kaipaa huomiota. Näin voisi toimia juoma-automaatti, joka havaitsee juomakäyttäytymisessä poikkeaman, informoi siitä sovelluksen kautta, ja näin mahdollinen ähky voidaan havaita ajoissa.

Älyjuoma-automaatti 2022 -hankkeessa kehitettiin laitteistoa lehmien yksilökohtaiseen juontiseurantaan. Tavoitteena oli luoda ratkaisu, joka olisi riittävän kompakti ja kustannustehokas laajamittaiseen käyttöönottoon (HAMK, n.d.; Tuomisto ym, 2025; Koskela & Vartiainen, 2025). Hankkeen tuloksena syntyi laitteisto, jolla voitiin mitata juontimäärät tarkasti, ja sitä testattiin kahdessa jaksossa yhteensä yli vuoden ajan navetoissa, joissa testilaitteistojen läpi kulki 150 000 litraa vettä.

Tässä artikkelissa jatketaan hankkeen tuloksien pohjalta ja pohditaan laitteiston sovelluskohteen laajentamista hevosten juontiseurantaan, erityisesti sen kannalta, kuinka kerätylle mittausdatalle saadaan rakennettua käyttöliittymä. Tavoitteena oli luoda tallien hoitajille käyttökelpoinen työkalu, jonka avulla hevosten vedensaantia voidaan paremmin seurata reaaliajassa. Käyttöliittymän on tarkoitus tarjota käyttäjälle selkeä näkymä juontidataan sekä mahdollistaa nopea reagointi ja riittävät hälytystoiminnot poikkeustilanteisiin.

Käyttöliittymäkonseptin kehittäminen

Projektin alussa teimme kuvauksen käytettävästä datasta ja määrittelyn sovelluksen jokapäiväisistä käyttäjistä. Tämä tieto on sovelluksen kehittäjän näkökulmasta olennaista, sillä sen avulla pystyy näkemään, tarvitseeko dataa muokata ohjelmiston puolella visualisointia varten. Kehittäjänä on myös hyvin tärkeää tietää, mitkä ominaisuudet ja suunnitteluvalinnat ovat loppukäyttäjien kokemuksen kannalta tärkeimpiä. Ennen suunnitteluprosessin aloittamista teimmekin luettelon keskeisistä ominaisuuksista ja tavoitteista, jotka ohjasivat käyttöliittymän ulkoasun ja toiminnallisuuden suunnittelussa.

Sovelluksen ensisijainen tavoite oli juontimäärien visualisointi ja sen ottaminen huomioon, että samassa järjestelmässä tullaan seuraamaan useita hevosia. Oletuksena oli myös, että tärkeimmät aikaikkunat juomisen seurannalle olisivat viimeiset 24 tuntia sekä edelliset kolme, seitsemän ja 30 päivää. Datan visualisoinnin lisäksi suunnittelimme kirjautumistoimintoa käyttäjille ja käyttäjänhallintaominaisuuksia järjestelmänvalvojan tason käyttäjille.

Loimme käyttöliittymälle alustavia suunnitelmia Figma Design -suunnittelutyökalun avulla (Figma, Inc., n.d.). Nämä prototyyppisuunnitelmat auttoivat kuvamaan idean muille projektin osallistujille ja antoivat suuntaa projektille. Niiden avulla pystyimme myös selvittämään minkä ominaisuuksien kehittäminen priorisoitaisiin sovelluksen ensimmäisessä versiossa. Kuvassa 1 on esitetty suunniteltu käyttöliittymäkonsepti ja toiminnallisuudet datan visualisoinnissa.

Kuva 1. Figma Design -työkalun avulla piirrettyjä konseptikuvia käyttöliittymästä. Tässä yleisasettelun luonnoksessa on erilaisin kuvakkein merkitty hevosten hyvinvointi-indikaattoreita (vihreä, keltainen ja punainen pallo) sekä painikkeita aikaikkunoiden vaihtamiseksi. Vasemmalla on näkyvissä pienennettyinä ikkunoina usean hevosen tilanne ja oikealla suurennettuna käyttäjän kulloinkin valitsema yksilö

Mittausdatasta visualisointiin käyttäjänhallinta huomioiden

Älyjuoma-automaatti 2022 -hankkeessa juontitapahtumien mittausdata kerättiin tietokantaan automaattisesti ja reaaliaikaisesti. Tämä ns. raakadata koostuu useista noin sekunnin mittaisista aikaikkunoista, joiden aikana kerätään mittauksia veden hydrostaattisesta paineesta laitteiston välisäiliössä ja juomakupissa sekä muista laitteiston ohjausparametreista. Hydrostaattinen paine on suoraan verrannollinen vesipatsaan korkeuteen tunnetussa laitteistogeometriassa, joten näiden mittausten avulla saadaan määriteltyä juotu vesimäärä. Muita laitteiston ohjausparametreja ovat esimerkiksi venttiilien avaukset ja sulkemiset sekä vesipumppujen käynnistykset.

Käyttöliittymävisualisointia kehitettäessä totesimme, että raakadatasta tulee koostaa juontitapahtumat sovelluksen taustaominaisuuksissa eli palvelimella, josta visualisoitava data haetaan. Näin saadaan vähennettyä sitä, kuinka paljon sovellus kuluttaa tietoliikennekapasiteettia ja käyttäjän laitteen laskentatehoa. Juontitapahtumien määrittely oli Älyjuoma-automaatti 2022 -hankkeessa tarkoitus tehdä yksilöntunnistuksella, joka perustui lehmien korvamerkkien etäluettaviin RFID-siruihin, mutta niiden luotettava lukuetäisyys jäi liian lyhyeksi (Hattingh & Koskela, 2025). Hankkeen päätyttyä reaaliaikaista mittausdataa ei myöskään enää kertynyt, joten käyttöliittymän kehitys tehtiin käyttämällä tarkoitukseen soveltuvaa, keinotekoisesti luotua testidataa.

Taulukossa 1 on esitetty tavoiteltu tietomuoto, jota testidata noudatti. Palvelimelle luotiin tätä vastaava MySQL-tietokantataulu kehitystyötä varten. Valitussa tiedon esittämismuodossa juomatapahtuman ajallinen kesto dokumentoidaan alku- ja loppuajankohdilla, ja juodun nesteen määrä sekä käytetty juoma-asema tallennetaan tarkkuuden säilyttämiseksi.

KenttäTietotyyppiKuvaus
idintYksilöllinen tapahtumatunniste
horse_IDintHevosen tunniste
drink_starttextJuomatapahtuman alkuaika
drink_endtextJuomatapahtuman päättymisaika
stationtextJuoma-aseman tunniste
litersdoubleJuodun nesteen määrä litroina
Taulukko 1. Juomatapahtumien tallentamiseen suunniteltu “drinking_events” -tietotaulu ja siinä olevien kenttien tietotyypit ja kuvaukset.

Tietorakenne mahdollistaa hevosen yhdistämisen omistaja- ja käyttöoikeustietoihin horse_ID-kentän avulla. Hevoseen liitettävän juontitiedon käyttöoikeuksien hallinta osoittautui monimutkaisemmaksi suunniteltavaksi. Juontitieto on relevanttia eläimen omistajalle ja hoitajalle, mutta toisaalta mahdollisia juontia mittaavia laitteita voi omistajan sijaan hallita esimerkiksi vuokratallin ylläpitäjä, jolla saattaa olla palveluksessaan useita henkilöitä. Teknisesti helpoin ratkaisu olisi linkittää jokaiseen käyttäjään lista hevosista, joiden tietoihin käyttäjällä on lukuoikeus. Tällaisen ratkaisun ylläpitäminen on kuitenkin työlästä, joten lähdimme luonnostelemaan käyttöoikeuksien hallintaa omistus- ja tallisuhteiden kautta. Taulukossa 2 on esitetty, miten käyttöoikeuksien hallinta lähtee rakentumaan.

KenttäTietotyyppiKuvaus
horse_IDintHevosen tunniste
owner_IDtextOmistajan tunniste
home_stable_IDintKotitallin tunniste
admin_IDintYlläpitäjän tunniste
Taulukko 2. Käyttöoikeuksien hallintaa varten luotu erillinen ”user_access”-tietotaulu.

Projektin tekniseen toteutukseen valitut sovellusteknologiat

Toteutimme projektissa sekä tarvittavat backend- että frontend-toiminnot. Backend rakennettiin Node.js:llä (OpenJS Foundation, n.d.) ja Expressillä (OpenJS Foundation, n.d.), ja se noutaa dataa MySQL-tietokannasta (Oracle Corporation, n.d.). Frontend kehitettiin Reactia käyttämällä (Meta Platforms Inc., n.d.), verkkosovelluksen tyyli määriteltiin Tailwind CSS:ää käyttämällä (Tailwind Labs Inc., n.d.), ja Chart.js ohjelmistokirjastoa käytettiin vedenjuomistietojen visualisoimiseen kaavioiden avulla (Chart.js contributors, n.d.). Päädyimme näihin valintoihin aiempien kokemusten ja sovellusten joustavuuden takia. React tarjoaa mahdollisuuden kehittää sovelluksesta tulevaisuudessa myös mobiiliversio React Nativen avulla. Sovelluksen ohjelmakoodi on saatavilla osoitteesta https://github.com/hamk-uas/Alyjuoma-UI/tree/v1.0.0 MIT-lisensoituna.

Näillä valinnoilla käyttöliittymäratkaisua päästiin toteuttamaan tehokkaasti ja ne loivat perustan skaalautuvalle kokonaisuudelle tietokantojen ja taulujen osalta, jotka voidaan myöhemmin integroida todellisen mittausdatan kanssa. Kuvissa 2a ja 2b on esitetty tämän kehitystyön viimeisin versio käyttöliittymästä ja sen toiminnallisuuksista. Juontidata on visualisoitu juomatapahtumittain yhden kuukauden ajalle viivakuvaajana (kuva 2a), ja lisäksi käyttäjä voi valita sen kalenteritoiminnosta myös haluamansa ajanjakson. Lisäksi juomatapahtumista voidaan laskea pylväskuvaajat päiväkohtaisista summista (kuva 2b), jolloin pitkän ajanjakson tarkastelu on selkeämpää. Käyttöoikeustason vaihto on mahdollista valikon kautta.

Kuva 2a. Käyttöliittymäkonsepti juontitapahtumien visualisointiin. Käyttäjä voi vaihtaa näkymää juontitapahtumista päiväkohtaisiin summiin, viivakuvaajasta pylväskuvaajaan, valita kalenteritoiminnolla halutun ajanjakson sekä valikon kautta muuttaa käyttöoikeustasoa. Kuva 2a näyttää juontitapahtumat viivakuvaajana.
Kuva 2b. Käyttöliittymäkonseptin näkymä päiväkohtaisiin juontisummiin pylväskaavioina. Päiväkohtaisten juontisummien laskenta koettiin käyttöliittymäsuunnittelussa tärkeäksi, sillä johtopäätöksen tekeminen yksittäisistä juontitapahtumista voi olla työlästä.

Pohdinta

Sovelluksen tulevat käyttäjät ovat hevosien hoitajia, joilla ei välttämättä ole teknistä taustaa tietojenkäsittelyn alalta. Niinpä olisikin tärkeää, että sovelluksen käyttö olisi selkeää ja suoraviivaista. Kaavioiden avulla hoitajat pystyvät seuraamaan hevosten juontimääriä helposti ymmärrettävässä muodossa, ja määriteltyjen hälytysrajojen avulla voidaan myös lähettää ilmoituksia hoitajien älypuhelimiin.

Kehitysprojekti auttoi määrittelemään palvelimelta ja käyttöliittymältä vaadittavia ominaisuuksia, ja vaikka pääpaino olikin käyttäjän näkemissä toiminnoissa, työ tuki laajasti juontiseurantasovelluksen idean full-stack -kehitystä. Kehitysprosessin aikana nousi esiin monia ajatuksia, joita ei ilman vastaavaa kehitystyötä pystyttäisi välttämättä kunnolla määrittelemään. Tästä esimerkkeinä voidaan mainita käyttäjänhallinnan monitasoisuus ja raakadatasta juontitapahtumiksi ja päiväkohtaisiksi summiksi tehtävä laskenta, jotka vaativat yhteispeliä käyttöliittymän ja palvelinpuolen välillä.

Sovelluksen tämänhetkinen versio tarjoaa perustan juomavedenkulutuksen visualisoinnille ja sisältää toiminnon juontitapahtumien päiväkohtaisten summien laskemiseksi, mikä oli erittäin tärkeä saada toimimaan, koska muuten taulukko ja viivakuvaaja olisivat epäselkeitä, kun juontidataa tarkastellaan pidemmältä aikajaksolta. Sovellusta on hyvinkin mahdollista laajentaa ja lisätä sen ominaisuuksia. Sovelluksessa ei esimerkiksi vielä ole käyttäjänhallintaominaisuutta, mutta tulevaisuudessa on mahdollista ottaa käyttöön roolipohjaiset käyttäjätilit. Näin pystytään erottamaan hevosenomistajat hoitajista ja määräämään heille erilaiset oikeudet nähdä juontidataa. Varsinaisia käyttäjätestauksia ei ole vielä tehty, mutta sovellus on nyt siinä vaiheessa, että sitä voitaisiin testata käytännön tilanteissa.

Lähdeluettelo

Kirjoittajat

Joni Rikula

Joni Rikula toimi HAMKissa opetusassistenttina artikkelin työn ja kirjoittamisen aikana.

Lisätietoja

Työ oli jatkoa Älyjuoma-automaatti 2022 -hankkeelle, joka rahoitettiin Euroopan maaseudun kehittämisen maatalousrahastosta (Manner-Suomen maaseudun kehittämisohjelma 2014–2020 EU:n elpymisrahaston lisävarat, maaseudun innovaatioryhmät EIP). Artikkelissa raportoidun työn on toteuttanut pääasiassa Joni Rikula opetusassistentin työtehtävän ohessa 2024–2025.

Julkaisun tiedot

Pysyvä osoite

https://doi.org/10.63777/9707

Lisenssi

CC BY-NC-SA 4.0

Avainsanat

, , , ,

Viittausohje

Rikula, J., Koskela, O., & Partanen, A. (2025). Verkkosovelluksen kehittäminen hevosten juontiseurantaan tallinhoitajien avuksi. HAMK Pilkku. https://doi.org/10.63777/9707