VAASAN YLIOPISTO TEKNILLINEN TIEDEKUNTA AUTOMAATIOTEKNIIKKA Jaakko Yli-Luukko IOT-SOVELLUKSEN TOTEUTUS, KÄYTTÖASTEEN SEURANTA Diplomityö, joka on jätetty tarkastettavaksi diplomi-insinöörin tutkintoa varten Vaasassa 28.11.2017. Työn valvoja Jarmo Alander Työn ohjaaja Petri Välisuo 1 ALKULAUSE Tämä diplomityö on Vaasan yliopiston teknillisen tiedekunnan diplomi-insinöörin tut- kintoani varten. Tämä diplomityö on tehty Lapualle RiimaPlan Oy:lle. Työn tuloksista on jatkokehitetty tuote nimeltä HitScan ja tuotetta myymään on perustettu yritys nimeltä Tehotec Oy, jossa olen myös osakkaana. Kiitän RiimaPlan Oy:n Juha Lemposta ja Pekka Antilaa opastuksesta ja mahdollisuudesta diplomityöhön ja Esa Mäkelää teknisestä tuesta. Kiitän diplomityöni valvojaa professori Jarmo Alanderia ja työni ohjaajaa Petri Välisuota opastuksesta diplomityön kirjoituksen ai- kana. Lopuksi haluaisin kiittää erityisesti perhettäni kannustuksesta ja ajan järjestämisestä opinnoilleni. Ilmajoella 28.11.2017 Jaakko Yli-Luukko 2 SISÄLLYSLUETTELO sivu ALKULAUSE 1 SYMBOLI- JA LYHENNELUETTELO 7 TIIVISTELMÄ 8 ABSTRACT 9 1. JOHDANTO 10 1.1. Konepaja 11 1.2. Tavoitteet 11 1.3. Olemassaolevat järjestelmät 12 2. TEKNOLOGIAVERTAILU 13 2.1. Kaupalliset IoT-ratkaisut 13 2.1.1. Amazon AWS IoT 13 2.1.2. Google Cloud IoT 14 2.1.3. IBM Watson IoT Platform 14 2.1.4. Wapice IoT-Ticket 15 2.1.5. Microsoft Azure IoT Hub 16 2.1.6. Windows 10 IoT Core 16 2.1.7. General Electric Predix 17 2.2. Open-source IoT-ratkaisut 17 2.2.1. Kaa IoT Platform 17 2.2.2. Thinger.io platform 18 3 2.2.3. The thing system 18 2.2.4. ThingSpeak 19 2.2.5. Matlab 20 2.3. Yhteenveto olemassaolevista IoT-ratkaisuista 20 2.4. Räätälöity IoT-ratkaisu 22 2.5. Pilvipalveluiden vertailu 22 2.5.1. Google Cloud Platform 23 2.5.2. Microsoft Azure 25 2.5.3. IBM Bluemix 27 2.6. Palvelimen valinta 28 2.7. Laitteisto 30 2.7.1. Raspberry Pi 30 2.7.2. Virransyöttö 31 2.7.3. Reaaliaikakello 32 2.8. Tietovarastot ja niiden käsittely 32 2.9. Datan visualisointi ja käyttöliittymä 33 2.9.1. AngularJS 34 2.9.2. Angular 34 2.9.3. Visualisointi 35 3. TOTEUTETTAVA JÄRJESTELMÄ 36 3.1. Tiedonkeruuyksiköt 37 3.1.1. Laitteiston valinta 38 4 3.1.2. Hallinta 39 3.1.3. Tiedonsiirto 39 3.1.4. I/O-porttien luku 40 3.1.5. Tilatiedon lukeminen 40 3.1.6. Robottisolun seuranta 43 3.1.7. Laitteisto 44 3.2. Palvelin 46 3.2.1. Palvelimen vaatimukset 46 3.2.2. Tiedon varmistus 47 3.3. Tiedon tallennus 47 3.3.1. Tallennettavan tiedon määrittely 47 3.3.2. Tietokanta 48 3.3.3. Tallennettava tieto 48 3.4. Datan visualisointi 49 3.4.1. Ohjelmointirajapinta 49 3.4.2. Näytettävä tieto 50 3.4.3. Infonäyttö 51 3.4.4. Intel Compute Stick 51 3.5. Rajapinnat 51 3.5.1. Tietokanta 51 3.5.2. Autentikointi 52 3.5.3. REST API 52 5 3.6. Kehitys- ja testausympäristö 53 3.6.1. Verkko 53 3.6.2. Testaus 54 3.7. Ohjelmisto 55 3.7.1. Palvelin 55 3.7.2. Tiedonkeruuyksiköt 56 3.7.3. Autentikointi 56 3.7.4. Käyttöliittymä 57 4. TULOSTEN TARKASTELU 61 4.1. Todettuja ongelmia 61 4.2. Parannuskohteita 61 5. YHTEENVETO 63 LÄHDELUETTELO 65 LIITTEET 69 LIITE 1 Asennusohjeet 69 1.1. Linux Raspbian Jessie Lite –asennus 69 1.2. Linux Raspbian Jessie with PIXEL –asennus 70 1.3. Wi-Fi testaus 70 1.4. Levykuva 71 1.5. Tiedonkeruuyksikön ohjelmiston asennus 72 1.6. MotionEyeOs asennus 73 6 1.7. Palvelimen ohjelmistot 74 1.7.1. Apache ja MySQL asennus 74 1.8. Infonäytön asennus 75 1.8.1. Raspberry Pi:n käyttö infonäytön ohjauksessa 75 1.8.2. Etäyhteys 76 1.8.3. Windows-tietokoneen käyttö infonäytön ohjauksessa 76 1.9. Reitittimen asennus Linux-ympäristöön 77 LIITE 2 REST API 81 LIITE 3 Tiedonkeruuyksikkö 87 LIITE 4 ThingSpeak asennus 93 LIITE 5 Google Cloud Platform 94 LIITE 6 Lähdekoodit 96 LIITE 7 Tietokanta 99 7 SYMBOLI- JA LYHENNELUETTELO API Application Programming Interface, ohjelmointirajapinta CMS Content Management System, sisällönhallintajärjestelmä CRM Customer Relationship Management, asiakkuudenhallinta CSS Cascading Style Sheets ERP Enterprise Resource Planning, toiminnanohjausjärjestelmä GPIO General Purpose Input Output HDMI High Definition Multimedia Interface HTML Hyper Text Markup Language HTTP Hyper Text Transfer Protocol HTTPS Secure Hyper Text Transfer Protocol IoT Internet of Things, esineiden Internet JSON JavaScript Object Notation, tiedon välityksen tiedostomuoto NAT Network Address Translation NoSQL Not only SQL NTP Network Time Protocol, aikatiedon välitysprotokolla REST REpresentational State Transfer SQL Structured Query Language SSH Secure Shell SVG Scalable Vector Graphics TSV Tab Separated Values, tiedostomuoto USB Universal Serial Bus UTC Coordinated Universal Time, koordinoitu yleisaika VNC Virtual Network Computing 8 VAASAN YLIOPISTO Teknillinen tiedekunta Tekijä: Jaakko Yli-Luukko Diplomityön nimi: IoT-sovelluksen toteutus, käyttöasteen seuranta Valvoja: Jarmo Alander Ohjaaja: Petri Välisuo Tutkinto: Diplomi-insinööri Koulutusohjelma: Sähkö– ja energiatekniikan koulutusohjelma Suunta: Automaatiotekniikka Opintojen aloitusvuosi: 2010 Diplomityön valmistumisvuosi: 2017 Sivumäärä: 99 TIIVISTELMÄ: Tuotantoa tehostettaessa on tärkeää mitata laitteiden todellinen käyttö- aste. Kun tiedetään, miten koneita käytetään ja mihin aika kuluu, voidaan myös löytää parannuskohteita. Kun saadaan parannettua koneiden käyttöastetta, voidaan lisätä tuotan- toa ilman uusien koneiden hankkimista. Pelkkä laitteiden mittaus ei riitä, vaan tieto on hyvä visualisoida helposti ymmärrettävään muotoon. Työssä kävin läpi erilaisia kaupallisia ja vapaan lähdekoodin IoT-järjestelmiä ja niiden käyttömahdollisuuksia. Vertailin myös eri toimijoiden pilvipalveluja IoT-järjestelmän to- teuttamisnäkökulmasta ja palvelimen sijoitusalustana. IoT-järjestelmä voidaankin toteuttaa erilaisilla alustoilla ja tekniikoilla. Laitteiden ja tekniikoiden kehittyessä on tärkeää, että järjestelmä on helposti päivitettävissä. Toteutettu järjestelmä seuraa laitteiden käyttöä ja esittää visuaalisesti koneiden käyttöas- teen. Toteutin järjestelmän modulaarisesti. Järjestelmä on jaettu osiin, jolloin järjestelmän osia voidaan kehittää ja muuttaa toisistaan riippumatta. Rajapinta eri osien välillä onkin oltava mahdollisimman pysyvä ja hyvin tuettu. Laitteiden tilatiedon lukemiseen käytin Raspberry Pi –korttitietokoneita, jotka lähettävät tiedon palvelimelle. Tiedon visualisoinnin toteutin selainpohjaisesti, jolloin käyttö onnis- tuu suoraan lähes kaikilla laitteilla, joissa on Internet-selain. Työnjohdon lisäksi visualisoi- tu reaaliaikainen tieto esitetään myös työntekijöille taukotilassa sijaitsevassa televisiossa. Toteutettu järjestelmä on asennettu konepajaan, jossa järjestelmällä seurataan hitsausko- neita, särmäyspuristimia, laserleikkuria, levyntyöstökeskusta ja robottisolua. AVAINSANAT: esineiden Internet, teollinen Internet, datan visualisointi, käyttöaste. 9 UNIVERSITY OF VAASA Faculty of technology Author: Jaakko Yli-Luukko Topic of the Thesis: Implementation of the IoT application, monitoring capacity utilization Supervisor: Jarmo Alander Instructor: Petri Välisuo Degree: Master of Science in Technology Degree Programme: Degree Programme in Electrical and Energy En- gineering Major: Automation Year of Entering the University: 2010 Year of Completing the Thesis: 2017 Pages: 99 ABSTRACT: When starting to increse the performance of production, it is important to measure the actual capacity utilization of the equipment. Improvements can be found after detecting when and how the machines are being used. When machines are better used, production of the machines can be increased without the acquisition of new machinery. Measuring the capacity utilization is not enough. The information is still to be visualized in an easily understandable form. Within this work we present different commercial and open source IoT systems and possibilities to use them. Different cloud services were also compared the perspective of IoT-platform implementation and server placement. IoT-systems can be implemented on different kind of platforms and techniques. While equipment and technologies are developing, it is important to have an easily maintained system The implemented system is following the utilization of the equipment and visulaizes the utilizations of them. The system has modular structure and it consists of clearly separated parts that can be developed and updated independently. The Interfaces between the parts must be stable and supported. Raspberry Pi single card computer is used for reading the status of the equipment, which is then send to a server. Data visualization is implemented on a browser based user interface, so it can be used directly on almost any device with Internet browser. Besides of work supervision visualized real time data is represented to employees on a television located at break room. The implemented system is installed in a workshop. The system is used to monitor welding machines, press brakes, laser cutter, turret punch press and robot manufacturing cell. KEYWORDS: Internet of Things, industrial Internet, data visualization. 10 1. JOHDANTO Tässä työssä käsitellään tuotannon koneiden käyttöasteen seurantaan tarkoitettua järjes- telmää. Järjestelmän toimittaa RiimaPlan Oy ja se toimitetaan konepaja-alan asiakkaalle. Järjestelmä toteutetaan kuitenkin yleiskäyttöiseksi, jolla voidaan valvoa monen muunkin tehdassalin tai konepajan koneiden käyttöastetta. Järjestelmästä halutaan apua tuotannon seuraamiseen ja tehostamismahdollisuuksien etsimiseen. Kuvassa 1 on erään työstöko- neen päivittäisen käyttöasteen kehitys. Kuva on työssä toteutetun järjestelmän eräs vi- sualisointinäkymä. Kesäkuun alussa näkyvä pienempi käyttöaste johtuu siitä, että koneen käyttöastetta oli saatu tehostettua ja koneelta loppuivat tehtävät työt. Heinäkuulle oli taas myyty enemmän töitä. Kuva 1: Erään työstökoneen käyttöasteen kehitys järjestelmän käyttöönoton jälkeen vuonna 2017. Työssä on tutustuttu erilaisiin IoT-järjestelmiin ja kartoitettu niiden nykytilanne, sekä valittu työssä käytettävät laitteet, tekniikat ja ohjelmat. 11 1.1. Konepaja Tärkeimmät koneet konepajassa on ryhmitelty konetyyppien mukaan. Hitsauskoneet (5 kappaletta) ovat kahdessa eri solussa, mutta niitä voidaan siirrellä tarpeen vaatiessa. Sär- mäyspuristimet (3 kappaletta) ovat lähellä toisiaan. Laser-leikkuri ja levyntyöstökeskus ovat vähän erillään toisistaan. Robottisolu koostuu robottikäsivarresta, särmäyspuristimes- ta ja robottikäsivarrella varustetusta hitsauskoneesta. 1.2. Tavoitteet Asiakasyritys halusi järjestelmän, jolla voidaan seurata koneiden käyttöaikaa ja käyttö- aikasuhdetta. Mittaustietoja käydään läpi työntekijöiden kanssa kuukausipalaverissa ja mitattua tietoa voidaan myöhemmin käyttää myös tulospalkkauksen tukena. Asiakasyri- tyksen tavoitteena on näillä toimilla tehostaa tuotantoa. Nykytilanteessa koneiden käyttöasteesta on vain työntekijöiden ja työnjohdon oma arvio työkoneen käyttöasteesta. Kun halutaan tehostaa toimintaa, on hyvä olla mitattua tietoa. Toisaalta halutaan myös motivoida työntekijöitä, esittämällä koneiden käyttöaste. Eri tyyp- pisessä työssä samankin koneen käyttöaste voi olla erilainen, mutta ehkä tärkeämpää onkin verrata samantyyppistä työtä keskenään. Toisaalta tiettyyn työhön käytetty aika ja koneen käyttöaste kertovat työnjohdolle tehtävän työn kustannuksista. Uutta järjestelmää suunniteltaessa ennakko-olettamuksena on pitää järjestelmä mahdolli- simman näkymättömänä työntekijälle, jolloin työntekijän ei tarvitse vaivautua kertomaan järjestelmälle mitä on tekemässä. Ilman erikseen kerrottavaa syytäkin, voidaan nähdä kuinka paljon kone tekee tuottavaa työtä ja voidaan hakea parannuskohteita. Kun järjes- telmälle on kerrottu syy, miksi jotain on tapahtunut, on jälkikäteen toki helpompi selvittää mitä on tapahtunut. Onko työntekijöillä sitten tarve selittää tekemisiään, jää nähtäväksi. Järjestelmän tilaaja ei halua järjestelmään mitään syykoodeja. Lisäksi järjestelmään on 12 tilattu vain koneen käyttöasteen seuranta ilman häiriöiden tunnistusta. Järjestelmän suun- nittelussa kuitenkin pyritään varautumaan siihen, että tulevaisuudessa on mahdollista lisätä erilaisia häiriön tunnistuksia, mittauksia ja syykoodeja. 1.3. Olemassaolevat järjestelmät Koneiden ja laitteiden seuranta ei ole uusi ajatus. Markkinoilla on useita vastaavia järjes- telmiä. Seuraavassa on listattuna muutamia kotimaisia järjestelmiä: • Control Express Finland Oy, Webrosensor. • ARROW Engineering Oy, Machine Track. • Novotek Oy, OEE/KNL-tehokkuudenseuranta. • Vossi Group Oy, Kone- ja OEE-seuranta. • TreLab Ltd, Smart Data Mill Kävimme 8.12.2016 tutustumiskäynnillä toisessa konepaja-alan yrityksessä, jossa on Ar- row Engineering Oy:n toimittama Machine Track tiedonkeruujärjestelmä käytössä. Kun järjestelmää oli otettu käyttöön, niin jopa osa työnjohtoa vastusti uutta järjestelmää. Jär- jestelmä on kuitenkin osoittautunut hyödylliseksi. Esimerkkinä havaittiin kuinka paljon koneen käyttäjiltä kului aikaa materiaalien hakemiseen. Ratkaisuna koneen käyttäjille an- nettiin käyttöön radiopuhelimet, jolloin he voivat pyytää tarvittaessa varastomiestä tuo- maan tarvittavat materiaalit paikalle. Machine Trac mahdollistaa työaikojen suunnittelun, mutta se ei kuitenkaan ole enää käytössä, koska suunnittelemattomat muutokset työajoissa aiheuttivat ongelmia koneen seurannassa. Sen sijaan työntekijöitä on ohjeistettu sammut- tamaan virrat koneista työajan päätyttyä, jolloin järjestelmästä näkee, koska koneella on ollut työntekijä. Lisäksi työntekijät merkitsevät järjestelmän päätteelle syykoodin sille ajal- le, kun kone ei ole käytössä. He pitivätkin automaattisten syykoodien esteenä anturoinnin vaikeutta, eli kuinka saada selville keskeytyksen syy, esim. materiaalin loppuminen ja toisaalta koneelle tehtävien säätöjen asetteluun kuluva aika. 13 2. TEKNOLOGIAVERTAILU Tässä luvussa käyn läpi erilaisia tekniikoita työn toteuttamisen näkökohdista. Työn toteut- tamiseen tarvitaan jokin laite, jolla luetaan koneiden käyttötietoa. Käyttötieto on tallen- nettava jonnekin ja se on pystyttävä esittämään visuaalisesti. Työn alussa kävin läpi valmiita IoT-järjestelmiä ja niiden käyttömahdollisuuksia. 2.1. Kaupalliset IoT-ratkaisut Valmiita kaupallisia IoT-ratkaisuja löytyy useammaltakin toimijalta. Kaikki tässä käsitel- lyt ratkaisut ovat pilvipalveluja. Palveluun sisältyy tietokanta tai tietovarasto, johon tietoa voidaan tallentaa laitteista ja raportointityökaluja. Kaikilla on myös omat ohjelmointira- japinnat laitteille, tiedon käsittelyyn ja raportointiin. Vaikkakin osalla on tarjolla palve- luntarjoajan omia laitteita, palveluihin voidaan ydistää myös muita vapaasti ohjelmoitavia laitteita. Palveluita voi jossain määrin kokeilla ilmaiseksi, mutta rekisteröiminen vaatii lähes aina luottokorttitietojen antamisen. Uskoisin, että suunnitellun järjestelmän rakentaminen on- nistuu kaikkien toimijoiden työkaluilla. Nähdäkseni suurin etu kaupallisten IoT-ratkaisujen käytölle on valmiit rajapinnat ja jonkin tasoinen laitteiden hallinta. Lisäksi palvelimen hal- linta on ulkoistettu, mikä voi olla sekä hyvä että huono asia. 2.1.1. Amazon AWS IoT Amazon AWS IoT palvelut jakautuvat kolmeen osaan (Amazon, 2017): • AWS Greengrass on ohjelmisto, joka laajentaa AWS pilvipalvelun ominaisuuksia paikallisille laitteille. AWS Greengrass Core ohjelmiston ominaisuuksia. 14 – Sallii funktioiden jakamisen pilvipalvelusta ja suorittamisen paikallisessa IoT- laitteessa. Tuettuja ohjelmointikieliä ovat Python, Node.JS ja Java. – Mahdollistaa paikallisen viestinvälityksen IoT-laitteiden välillä. – Varmistaa turvallisen yhteyden laitteiden ja pilvipalvelun välillä. – Tarjoaa laitteiden pilvipohjaisen hallinnan laiterekisterin kautta ja laitteiden etäpäivityksen. Laitteiden tulee olla vähintään Raspberry Pi –tasoisia, varustettuna Linux- käyttöjärjestelmällä. • AWS IoT on hallittu pilvipalvelualusta, joka mahdollistaa palveluun kytkettyjen laitteiden vuorovaikutuksen pilvipalvelusovellusten ja toisten laitteiden kanssa. • AWS IoT Button on yksinkertainen Wi-Fi laite, jossa on yksi painike. Painikkeen toiminto ohjelmoidaan pilvipalvelussa ja sitä voidaan käyttää kaukosäätimenä käyn- nistämään ja sammuttamaan sovelluksia ja laitteita. 2.1.2. Google Cloud IoT Google Cloud IoT on kehittynyt tämän työn aikana beta-vaiheessa olevaksi pilvipohjaisek- si IoT-palveluksi. IoT Core on osa Google Cloud Platform pilvipalvelua (Google, 2017c). IoT Core palveluun luodaan yksi tai useampi laiterekisteri, johon itse laitteet lisätään. Viestinvälitykseen käytetään Pub/Sub palvelua, joka on myös osa Google Cloud Plat- form pilvipalvelua. Muu toiminnallisuus on mahdollista toteuttaa Google Cloud Platform palveluiden avulla. 2.1.3. IBM Watson IoT Platform IBM Watson IoT Platform on yksi osa IBM Bluemix pilvipalvelua (IBM, 2017b). Vi- sualisointia varten on erilaisia tauluja, johon voidaan liittää kortteja, joihin taas saadaan yksinkertaisia kuvaajia ja mittareita, tai tietoja tekstimuodossa (kuva 2). Laitteita varten luodaan ensin laitetyyppi, johon voidaan laitekohtaisesti liittää eri tietoja laitteesta. IBM on julkaissut asiakaskirjastot usealle eri ohjelmointikielelle. Asiakaskir- 15 Kuva 2: IBM Watson IoT Platform. jaston avulla sovellus tai laite voi kommunikoida Watson IoT Platform –alustan kanssa. Esimerkiksi Python kirjasto asentui suoraan Raspberry Pi:n Raspbian Linuxille. 2.1.4. Wapice IoT-Ticket En ole päässyt kokeilemaan IoT-Ticket –alustaa, mutta esittelyvideon perusteella se vaikut- taa olevan markkinoiden kehittynein IoT-alusta, mihin olen törmännyt. Erityisesti tiedon visualisointi on todella vaikuttavaa (Wapice, 2017). Alustaan voidaan liittää myös mui- ta laitteita tai sovelluksia IoT-Ticket API rajapinnan kautta, jopa Android matkapuhelinta varten on oma sovelluksensa. Työn loppuvaiheessa hintatietoja ei enää löytynyt yrityksen Internet-sivuilta, mutta aiem- 16 min (4.2.2017) oli saatavilla 30 päivän ilmainen kokeiluversio, sekä kolme eri tasoista ratkaisua 349 e/kk aina 4799 e/kk asti. WRM 247+ IoT-laitteen hinta oli 645 e. 2.1.5. Microsoft Azure IoT Hub Azure IoT Hub on suojattu viestinvälityspalvelu, jolla liitetään IoT-laitteet Azure pilvi- palveluun (Microsoft, 2017a). Ohjelmointirajapinta IoT-laitteille on saatavilla .NET, Java, Node.JS, Python ja C –ohjelmointikielille. Tuettuna on useita eri laitteita mm. Raspber- ry Pi. IoT-laitteiden lähettämää tietoa voidaan visualisoida käyttämällä Power BI ja Web Apps –palveluja. IoT Hub hinnoittelu on esitetty taulukossa 2. Taulukko 2: Azure IoT Hub hinnoittelu (24.11.2017). Laitteiden määrä Viestiä päivässä Hinta [e/kk] 500 8 000 ilmainen rajoittamaton 400 000 42,17 rajoittamaton 6 000 000 421,65 rajoittamaton 300 000 000 4 216,50 2.1.6. Windows 10 IoT Core Windows 10 IoT Core on IoT-laitteille tarkoitettu Windows käyttöjärjestelmä (Microsoft, 2017b). Tuettuja laitteita on useita mm. Raspberry Pi. Windows 10 IoT Core käyttöjär- jestelmän asennus muistikortille tapahtuu Windows 10 IoT Core Desktop –ohjelmalla, joka on saatavilla Windows 10 käyttöjärjestelmälle. Kokeilin Windows 10 IoT Core – käyttöjärjestelmää Raspberry Pi 3:lla. Asentaminen onnistuu helposti micro sd kortille. Asennuksen automaattinen viimeistely Raspberry Pi 3 kortilla kestää hetken. Langaton- 17 ta verkkoa käytettäessä, Wi-Fi asetukset täytyy asettaa asennuksen jälkeen. Tätä varten täytyy Raspberry Pi:hin kytkeä näyttö ja näppäimistö. Asennetun Windows 10 IoT Core käyttöjärjestelmän käyttö paikallisesti on hyvin rajoitettua. Käytössä on yksinkertainen komentotulkki ja Internet-selain. Windows 10 IoT Core käyttöjärjestelmän etäkäyttö ta- pahtuu ottamalla yhteys selaimella laitteen porttiin 8080. Selaimella voidaan muuttaa laajemmin asetuksia ja asentaa sovelluksia. Esimerkkiohjelmien asennus sujui helposti ja ne myös toimivat hyvin. Käyttöjärjestelmä käynnistyy vähän hitaammin, kuin Raspbian Linux. 2.1.7. General Electric Predix General Electric Predix on teollisen Internetin alusta, joka on rakennettu alunperin GE:n omia liiketoiminta-alueita varten. Tarjolla on GE:n omia sovelluksia, kolmannen osapuolen tekemiä sovelluksia ja Predix Developer Network alustapalvelu (GE, 2017). Predix Developer Network on laaja alustapalvelu sovellusten rakentamiseen. Järjestelmäs- sä on laaja valikoima valmiita palveluita, ohjelmistoja, analytiikkaa ja sovelluksia, joita voidaan hyödyntää sovelluksissa. 2.2. Open-source IoT-ratkaisut 2.2.1. Kaa IoT Platform Kaa on open source middleware IoT –alusta, jonka taustalla on CyberVision –niminen ohjelmistoyritys (KaaIoT, 2017). Ohjelmisto on ilmainen ja vapaasti ladattavissa. Va- littavana on ladattava valmis virtuaalikone ”hiekkalaatikko”, Amazonin pilvipalvelussa toimiva ”hiekkalaatikko”, Linux-asennuspaketit ja lähdekoodipaketti. Kokeiltaessa virtu- aalikone toimii ongelmitta. Hallinta tapahtuu selainpohjaisesti. Mukana on useita demo- sovelluksia, joista yksi on Raspberry Pi:lle, lämpötilanvalvontasovellus. Osa ohjeista ja demo-sovelluksista on vielä vanhemmille versioille tehtyjä. Kehitystyö onkin vielä selvästi 18 kesken. Palvelimen ohjelmointirajapinnat näyttävät melko valmiilta. SQL-tietokannoista on tuettuna MariaDB ja PostgerSQL, NoSQL-tietokannoista on tuettuna Apache Cassan- dra ja MongoDB. Datan visualisointia ei ole. Kaa vaikuttaa toimivan, mutta on kuitenkin vielä sen verran keskeneräinen, että se ei taida olla vielä tuotantokäyttöön soveltuva, koska aiemmistakin versioista on epäyhteensopivia muutoksia. 2.2.2. Thinger.io platform Thinger.io platform on open source IoT-alusta (Thinger.io, 2017). Palvelinohjelmisto on ladattavissa Ubuntu-Linuxille. Amazon AWS pilvipalveluun on saatavilla valmis pilvipal- velinpohja. Myös Raspberry Pi 3:lle on saatavilla Thinger.io palvelin levykuvana. Thin- ger.io tarjoaa IoT alustaa pieneen käyttöön ilmaisena pilvipalveluna ja laajempaan käyttöön maksullisena palveluna. Palvelussa on hallintapaneelit laitteille, tietovarastoille, käyttöoi- keuksille ja ohjattaville tapahtumille. Ohjattavia tapahtumia ovat mm. sähköpostin lähe- tys, HTTP-pyyntö ja laitekutsu. Visualisointia varten on yksinkertaisia kuvaajia (kuva 3). Palvelimen ohjelmointirajapintojen dokumentaatiossa oli vielä puutteita. IoT-laitteiden ohjelmointirajapinta löytyy Arduinolle ja Linux-pohjaisille laitteille, myös Max OS:lle. 2.2.3. The thing system The thing system on open source ohjelmisto, joka on keskittynyt laitteiden väliseen kom- munikointiin. Tuettuna onkin useita eri tyyppisiä laitteita. Projektin ytimenä on steward –niminen Node.JS ohjelma (Blixa Morgan, 2017). Ohjelman asennus ei kuitenkaan toimi- nut ja projekti näyttääkin jääneen kesken, koska viimeisin päivitys ohjelmistoon on tehty kesällä 2016. 19 Kuva 3: Thinger.io IoT pilvipalvelussa on visualisointia varten yksinkertaisia kuvaajia. 2.2.4. ThingSpeak ThingSpeak on avoin ilmainen open source palvelu ei-kaupalliseen käyttöön, jossa pal- veluun ladattua dataa voidaan analysoida ja visualisoida MatLab-ympäristössä ilman MatLab-lisenssiä. Käyttö on melko rajattua, tiedon tallennustapaan ei juurikaan pysty vai- kuttamaan. Hyvänä puolena on MatLabin käyttö datan analysointiin (Mathworks, 2017). Kaupalliseen käyttöön on lisenssi, joka maksaa 650 e(9.11.2017). Yksi lisenssiyksikkö sisältää 33 miljoonaa viestiä, joka riittää yhdelle laitteelle vuodeksi, kun lähetetään yksi viesti sekunnissa. Dataa voidaan tallentaa 100 miljoonaa viestiä yhtä lisenssiyksikköä kohden. ThingSpeak voidaan asentaa myös paikallisesti, mutta silloin ei ole käytössä MatLab – analysointityökaluja. ThingSpeak on paikallisesti asennettuna turhan suppea sellaisenaan. 20 ThingSpeak-palvelu sopii hyvin demokäyttöön, prototyyppeihin ja pieneen IoT-laitteiden seuraamiseen. Paikallisesti asennettunakin voidaan nopeasti saada yksinkertaisia kuvaajia mittaustiedoista. ThingSpeak tukee yksinkertaisia kuvaajia, mutta data voidaan myös hakea halutulta aika- väliltä json-muodossa, jolloin voidaan käyttää myös muita analysointityökaluja. Raspberry Pi demon asennus on liitteessä LIITE 4. Tein ohjelman, joka lukee painiketiedon Raspberry Pi:llä ja lähettää tiedon palvelimelle. Lähdekoodi on liitteessä LIITE 6. 2.2.5. Matlab Matlabissa on suora tuki Raspberry Pi:lle laitetasolla ja ThingSpeak-palvelulle. Lisäksi tietoa voidaan hakea eri pilvipalveluista ja tietokannoista. Matlab on varteenotettava vaih- toehto rakennettaessa IoT-järjestelmiä, varsinkin kun tarvitaan monimutkaisempaa datan analysointia, tai Matlab on muuten käytössä. 2.3. Yhteenveto olemassaolevista IoT-ratkaisuista IoT-ratkaisut ovat tällä hetkellä voimakkaan kehityksen alla. Osa IoT-projektien ja - valmistajien Internet-sivuista oli kadonnut tämän työn tekemisen aikana. Kokeilluista IoT-ratkaisuista vain ThingSpeak oli valmis käyttöön ilman lisäohjelmointia. ThingSpeak sopii erityisen hyvin nopeaan kehitys- ja demokäyttöön. IBM:n palvelu oli kokonaisuu- dessaan monipuolinen, mutta laajuudestaan johtuen tarvitsee myös paljon perehtymistä. Amazonin palvelusta täytyy nostaa erityisesti esille mahdollisuus päivittää IoT-laitteen ohjelmisto etänä. IoT-ratkaisujen suora vertailu on hankalaa, koska kaikki ovat erilaisia niin laajuudessaan 21 kuin toteutustavassaan. Myös samankaltaisia ominaisuuksia löytyy. Google IoT Core ja Azure IoT Hub ovat periaatteeltaan hyvin samankaltaisia. Google ja Azure vaikuttavat hyvin suppeilta verrattuna IBM:n IoT-ratkaisuun. Kuitenkin Googlen ja Azuren pilvi- palvelussa on laajat mahdollisuudet tiedon jatkojalostukselle. Ero IoT-ratkaisun ja muun pilvipalvelusovelluksen välillä on häilyvä, jos sitä on tarpeen erottaakaan. Sovelluksesta riippuen valmiin IoT-alustan käyttö ei välttämättä vähennä tarvittavan työn määrää, koska IoT-alustan opiskelu vie aikaa. Ratkaisevaa on kuitenkin se, mitä IoT- sovelluksen on tarkoitus tehdä. Mikäli on olemassa valmis sovellus jonkin toimijan pal- velussa, voi olla tarkoituksenmukaista käyttää myös kyseisen toimijan IoT-ratkaisua. Jos sovellus kuitenkin rakennetaan puhtaalta pöydältä, voi olla helpompi rakentaa myös IoT- alusta itse. Rajoitetussa ympäristössä IoT-laitteiden rajapinnasta saadaan melko yksinker- tainen. Yleiskäyttöisen IoT-ratkaisun tekeminen onkin sitten jo haastavampaa. Kokeilemistani IoT-ratkaisuista vain osassa oli kiinnitetty huomiota tiedon visualisointiin ja niissäkin visualisointi rajoittui muutamiin eri peruskuvaajiin. Monimutkaisempi visua- lisointi ei valmiilla IoT-ratkaisuilla onnistu suoraan. Monimutkaisempaa tietojen käsittelyä varten kaikissa kokeilemissani alustoissa on kuitenkin jokin rajapinta olemassa. Se mitä haluaisin IoT-alustoissa nähdä tulevaisuudessa on: Yksi tai kaksi standardia raja- pintaa laitteiden ja palvelimen tai tietovaraston välillä. Pienelle datamäärälle REST API (Fredrich, 2016) ja kaksisuuntaiseen tiedonsiirtoon ja suurille datamäärille gRPC (gRPC, 2016) tai jokin sen kaltainen. Lisäksi tarvitaan laitteiden hallinta, tiedon analysointi- ja visualisointimahdollisuus ja tarvittaessa laitteiden ohjauslogiikka ja käyttöliittymä. Tällä hetkellä lähes kaikki taitaa olla valmiina ThingSpeak, Matlab, Simulink –yhdistelmällä. Usealla laitevalmistajalla on myös omia IoT-alustoja, jotka on tarkoitettu toimivaksi vain valmistajien omien laitteiden kanssa. Mielestäni pidemmän aikavälin ratkaisu tulisi kui- tenkin olla avoin, tai ainakin osittain avoin laiteriippumaton alusta. Valmistajia ja laitteita tulee ja menee, mutta toimivat rajapinnat pysyvät kauemmin. 22 Monet pilvipalvelut, esimerkiksi Google Cloud Platform ja IBM tuntuvat painottavan so- vellusten välisiä rajapintoja, mikä mahdollistaa järjestelmän osien riippumattomuuden toi- sista osista, sekä sovellusten liittämisen toisiin sovelluksiin ja palveluihin. Jopa kilpailevan toimijan palveluihin on omat rajapintansa. Kun rajapinnat ovat sovittuja, voidaan eri osia kehittää erikseen ja vaihtaa tarvittaessa toiseen. Tämä on nähty muuallakin standardoin- nin tarpeena ja kehittymisenä, esimerkiksi eri valmistajien Wi-Fi laitteet kommunikoivat toistensa kanssa. Uskonkin, että tulevaisuudessa nimenomaan rajapintojen standardointi tulee helpottamaan ja lisäämään IoT-laitteiden käyttöä. Pienelle tarpeelle ja pienille yrityksille kaupallisten IoT-ratkaisujen hinta voi tulla käyt- töönoton esteeksi. Toisaalta nimenomaan pienessä yrityksessä ei välttämättä ole aikaa eikä tietotaitoa oman IoT-ratkaisun toteuttamiseen. 2.4. Räätälöity IoT-ratkaisu Useimmat open source –alustat keskittyvät lähinnä kommunikointiin laitteiden välillä, eivätkä datan analysointiin ja visualisointiin. Kaupallisten IoT-ratkaisujen ja valmiiden open source –ratkaisujen sijaan järjestelmä voidaan rakentaa myös itse. Ratkaisuun voidaan yhdistää osia sekä kaupallisista että open-source –ratkaisuista. 2.5. Pilvipalveluiden vertailu Järjestelmää suunniteltaessa, päädyttiin palvelinten osalta mahdolliseen pilvipalvelujen käyttöön. Kansainvälisiä pilvipalveluita tarjoaa ainakin Google, Microsoft ja Amazon. Lisäksi on useita pienempiä koti- ja ulkomaisia palveluntarjoajia. Valinta pilvipalveluntar- joajan välillä päätettiin tehdä Googlen ja Microsoftin välillä, joihin oli tarkoitus tutustua tarkemmin. Pilvipalvelinten osalta perehdyin siis kahteen eri vaihtoehtoon, Google Cloud Platform ja 23 Microsoft Azure, joiden välillä valinta tultaisiin tekemään. Molemmissa voidaan luoda se- kä Linux-, että Windows-virtuaalipalvelimia, molemmissa on valmiita työkaluja ja pohjia erilaisille palveluille. Lisäksi tutustuin päällisin puolin IBM:n pilvipalveluihin. 2.5.1. Google Cloud Platform Google Cloud Platform (Google, 2017b) on kokeiltavissa ilmaiseksi 60 päivän ajan. Lisäksi rekisteröityessä täytyy antaa luottokortin tiedot. Virtuaalipalvelinta luodessa valitaan sopivin datakeskus, jossa palvelu sijaitsee. Kirjoi- tushetkellä lähin on St. Ghislain, Belgiassa. Vuonna 2017-2018 pitäisi olla saatavilla myös Haminan datakeskus Suomessa. Virtuaalipalvelimelle valitaan konetyyppi, proses- soriydinten lukumäärä ja muistin määrä. Kirjoitushetkellä (17.11.2017) valittavana olevat käyttöjärjestelmät ovat taulukossa 3. Taulukko 3: Google Cloud Platform palvelinten käyttöjärjestelmät. Debian GNU/Linux CentOS CoreOS Ubuntu ChromiumOS-pohjainen Container-Optimized OS Red Hat Enterprise Linux SUSE Linux Enterprise Server Windows Server Valittavissa on myös suuri määrä valmiiksi asennettuja kolmannen osapuolen sovelluspal- velimia. Voidaan myös valita oma virtuaalikone tai kopioida jokin käytössä oleva virtu- aalikone. Virtuaalikoneen hinta muodostuu valittujen ominaisuuksien mukaan. Virtuaa- likoneen luonti kesti pari minuuttia. Palvelussa virtuaalipalvelimia voidaan luoda uusia, 24 kopioida, poistaa, sammuttaa, käynnistää ja muokata, palvelimia voidaan myös ryhmitellä. Virtuaalipalvelinten kuormitusta voidaan seurata ja palvelimeen voidaan ottaa ssh-yhteys suoraan selaimella, sekä ulkoisella ohjelmalla. Pilvipalvelun hallintaan on myös Android- sovellus, jolla palveluja voidaan hallita suoraan puhelimella. Jokaiselle virtuaalikoneelle on oma sisäinen kiinteä IP-osoite, sekä mahdollinen ulkoinen IP-osoite, joka voi olla kiin- teä tai vaihtuva. Virtuaalikoneen luontiin ja hallintaan on myös REST API, kuten monissa muissakin palveluissa. Pienin muistimäärä jaetulla prosessoriytimellä on 0,6 GB. Pienin levytila on 10 GB. Enimmillään virtuaalikoneessa voi olla 64 ydintä ja 416 GB muistia. Maksimi levytila on 65536 GB. Virtuaalikoneen hintaesimerkkejä on taulukossa 6. Palvelussa voidaan lisätä käyttäjiä Google-tilin mukaan ja hallita käyttäjien oikeuksia eri palvelujen osiin. Taulukko Google Cloud Platform palveluista on liitteessä LIITE 5. Taulukossa 4 on Googlen eri tallennusvaihtoehtojen vertailu (Google, 2017a). Taulukko 4: Google Cloud Platform eri tallennusvaihtoehtoja (Google, 2017a). Persistent Disk Täysin hallinnoitu levytallennustila. Google Cloud Storage Skaalautuva hallittu tallennustila mm. multimediatiedos- toille ja muulle jäsentämättömälle tiedolle. Google Cloud Bigtable Skaalautuva hallittu NoSQL tietokanta, joka soveltuu sekä reaaliaikaiseen käsittelyyn, että analysointiin. Google Cloud Datastore Skaalautuva hallittu NoSQL tietokanta web- ja mobiiliso- vellusten tiedontallennukseen. Google Cloud SQL Hallittu MySQL ja PostgreSQL tietokantapalvelu. Google Cloud Spanner Globaalisti saalautuva korkean saatavuuden relaatiotieto- kantapalvelu. Google BigQuery Skaalautuva hallittu tietovarasto, josta voidaan tehdä SQL- hakuja. Soveltuu suurten tietomäärien käsittelyyn. Google Drive Yhteisöllinen tila tiedostojen tallennukseen, jakamiseen ja muokkaukseen. Soveltuu vuorovaikutukseen loppukäyttä- jän kanssa. 25 Taulukossa 5 on esimerkkinä Billing-palvelussa esitetyt tiedot, Google Cloud Platform palvelujen kustannusten kertymisestä. Taulukko 5: Billing-palvelussa esitetyt tiedot, Google Cloud Platform palvelujen kustannusten kertymisestä Product Resource Usage Amount Cloud Bigtable Server Node 344.31 Hours e211.43 Google Compute Generic Small instance with 1 VC- PU, no scratch disk 5,611 Minutes e2.65 Google Compute Storage FD Capacity 1.26 GB-month e0.05 Yhteenvetona Google Cloud Platform hyvät puolet: + helppokäyttöinen hallinta selaimen kautta, + virtuaalipalvelinten hallinta, + käyttöoikeuksien hallinta, + virtuaalikoneiden salasanoja ei tarvitse muistaa. Ja huonot puolet: - Kustannusten kertymisen arviointi osassa palveluita, esim. BigTable. 2.5.2. Microsoft Azure Microsoft Azure (Microsoft, 2017c) on kokeiltavissa ilmaiseksi 30 päivän ajan. Lisäksi rekisteröityessä täytyy antaa luottokortin tiedot. Microsoft Azure:ssa on valittavana paljon erilaisia valmiita virtuaalikoneympäristöjä ja Windows- ja Linux-käyttöjärjestelmiä. Virtuaalikoneen ominaisuudet (mm. ydinten lu- kumäärä, muisti ja levytila) voidaan valita muutamasta kokonaisuudesta, yksittäisiä omi- naisuuksia ei voi valita. Virtuaalikoneen luominen kestää noin 5 minuuttia. Jokaiseen 26 virtuaalikoneeseen ja palveluun yhdistetään aina jokin DNS-nimi. Virtuaalikoneen hin- taesimerkkejä on taulukossa 6. Virtuaalikoneiden lisäksi Azuressa on laaja valikoima erilaisia sovelluspalveluja, joihin perehtymiseen menisi paljon aikaa. IP-osoitteiden, vir- tuaaliverkkojen, DNS-palvelujen ja muiden verkkojen hallintaan liittyviin asioihin on omat palvelunsa. NoSQL tietokantarajapinnaksi voidaan valita DocumentDB ja MongoDB. SQL tietokanta on azuren oma. SQL-tietokannan käyttöönotossa valitaan haluttu maksimi koko, jonka pohjalta laskutus tapahtuu. Tietokantaa ja laskutuspohjaa voidaan myös jälkikäteen muut- taa. SQL-tietokanta vaatiikin laajempaa perehtymistä aiheeseen. Azuressa on myös hallittu MySQL-palvelu. Azure HDInsight Cluster on pilvipohjainen Apache Spark ja Hadoop palvelu. Valittavia palveluja ovat Hadoop, HBase, Storm, Spark, Interactive Hive, R server ja Kafka. Ko- keiltaessa palvelujen käyttöönottoa tuli testikäytön 60 prosessoriytimen raja vastaan. Kun Hadoop ja Spark –palveluista oli valittu resursseiltaan pienimmät vaihtoehdot perjantaina ja palvelut olivat vain päällä ilman käyttöä, oli ilmaiseen testikäytöön varattu 170 e:n raja kulunut loppuun sunnuntaina. Syy yllättäviin kustannuksiin on olettavasti siinä, että Hadoop palvelu luo pienimmilläänkin niin paljon resursseja vaativan virtuaalikoneen, että sen käyttökustannukset ovat suuret. Kustannukset esitetään Azuressa visuaalisesti resurs- sien mukaan jaoteltuna ja ajan mukaan kertymänä. Kertymäkuvaajassa on mukana myös ennuste kustannusten kertymisestä. Lisäksi kustannukset esitetään taulukkona resurssien mukaan. Yhteenvetona Microsoft Azure hyvät puolet: + virtaalikoneille ja palveluille annetaan aina jokin dns-nimi, huonot puolet: - virtuaalikoneiden salasanojen hallinta, - yllättävät kustannukset palvelun käytöstä, esim. HDInsight. 27 2.5.3. IBM Bluemix IBM Bluemix (IBM, 2017a) on kokeiltavissa ilmaiseksi 30 päivän ajan. Luottokorttia ei tarvita kokeilujakson aktivoimiseksi. IBM Bluemix pilvipalvelussa on tarjolla palvelimia erilaisina palveluina, fyysisinä palvelimina ja virtuaalipalvelimina. Palvelimien kokeile- minen ei kuitenkaan onnistu ilmaisessa kokeilujaksossa. Palvelimien lisäksi tarjolla on infrastruktuuripalveluita tiedon tallennukseen, verkkopal- veluita ja tietoturvaa. Palveluita voidaan toteuttaa myös sovelluspalveluina ilman erillistä palvelinta. Tuettuina on useita eri ohjelmointikieliä. Sovelluspalvelussa laskutus tapah- tuu gigatavutunteina, pilvipalvelussa aktiivisena olevan muistin määrä tuntia kohden. So- velluspalveluita voidaan yhdistää muihin palveluihin, mm. IoT-palveluun. Rajapintojen luomiseen ja hallintaan on oma palvelunsa. Data & Analytics –palvelut sisältävät useita erilaisia tietokanta- ja analysointipalveluita ja mm. IBM Watson Machine Learning –koneoppimispalvelun. Watson –palvelut sisältävät monia kognitiivisia sovelluksia ja työkalua, mm. tekstistä pu- heeksi, puheesta tekstiksi, dokumenttien muunnos, kielenkääntö ja visuaalista tunnistusta. Internet of Things Platform –palvelu on käsitelty kohdassa 2.1.3.. Tarjolla on myös muita erikoissovelluksia, mm. kuljettajan käyttäytymiseen, elektroniikan laitteisiin ja vakuutus- yhtiöille valvontaan. IBM Bluemix –palvelun suurin vahvuus on mielestäni Watson-tekoälypalvelut, mikäli niille on tarvetta. 28 2.6. Palvelimen valinta Päätin toteuttaa järjestelmän siten, että se toimii omalla palvelimella, mahdollisesti jopa Windows-palvelimella, sekä Googlen tai Microsoftin tai jonkin muun palveluntarjoajan pilvipalvelussa. Palvelimen paikkaa voidaan siten haluttaessa vaihtaa. Valinnan vapaus edellyttää sellaisten ohjelmistokomponenttien käyttöä, jotka toimivat kaikissa palvelimissa ja palveluissa. Pilvipalveluiden toimittajakohtaisia ohjelmistorajapintoja ei voida silloin käyttää. Tietokantapalvelimeksi valitsin MySQL ja WWW-palvelimeksi Apache. Sekä Googlen että Microsoftin pilvipalvelussa on suora tuki hallinnoidulle MySQL-palvelulle. MySQL voidan myös ottaa käyttöön suoraan virtuaalipalvelimeen. Google Cloud Platform ja Microsoft Azure olivat minulle etukäteen tuntemattomia, jo- ten pääsin tekemään vertailua puhtaalta pöydältä, ehkä pieni ennakkoasenne Microsoftia vastaan. Google Cloud Platform tuntui heti aluksi melko selkeältä, kun taas Microsoft Azure tuntui sekavalta. Kustannusten osalta yllätys oli Azuren HDInsight, joka käytti kai- ken ilmaisen testijakson käyttöön varatusta budjetista. Samalla lailla Googlen BigTable käytti lähes kaiken ilmaisen testijakson käyttöön varatusta budjetista. Azuressa on mo- nipuolisempi kustannusten seuranta. Siinä tuntui olevan joitain ristiriitaisuuksia, mutta ilmeisesti se ei vain ole täysin reaaliaikainen. Kustannuksen kertymän lisäksi siinä on ennustettu kertymä. Googlen kustannusten seuranta on hyvin minimaalinen ja näyttää lä- hinnä tuotekohtaisesti summat. Googlen palvelussa voi tehdä kustannuksille budjetin ja hälytyksiä. Hinnaltaan yleiskäyttöinen virtuaalipalvelin on Googlen palvelussa vähän halvempi, kuin Azuressa (taulukko 6). Googlen palvelussa on mielestäni selkeämpi palvelinten hallinta. Azuren palvelussa annetaan palvelimelle aina jokin dns-nimi, kun Googlen palvelussa dns- nimien hallinta on erillinen palvelu. Kehitysvaiheessa on helpompi, kun virtuaalikoneella on DNS-nimi eikä pelkkä IP-osoite. Pilvipalvelussa maksetaan sekä käytön mukaan että varatusta kapasiteetista. Kapasiteettia on helppo jälkikäteen lisätä. Palvelun aloitus ja lisäys on myös nopeasti tehtävissä pilvi- 29 Taulukko 6: Google Cloud Platform ja Microsoft Azure virtuaalikoneiden hintaesimerkkejä (24.11.2017). Google Cloud Platform Ytimiä Muisti Levytila Levytyyppi Hinta [$/kk] Käyttöjärjestelmä 1 jaettu 0,6 GB 10 GB HDD 4,28 Debian, CentOS, Co- reOS ja Ubuntu 1 jaettu 0,6 GB 10 GB HDD 18,88 SUSE 1 jaettu 0,6 GB 50 GB HDD 20,48 Windows Server 2016 8 52 GB 512 GB HDD 262,49 Debian 8 52 GB 512 GB SDD 329,05 Debian 8 52 GB 512 GB HDD 496,09 Windows Server 2016 64 416 GB 65536 GB HDD 4 557,52 Debian 64 416 GB 65536 GB SDD 13 077,20 Debian 64 416 GB 65536 GB HDD 6 426,32 Windows Server 2016 Microsoft Azure Ytimiä Muisti Levytila Levytyyppi Hinta [e/kk] Käyttöjärjestelmä 1 0,75 GB 32 GB 12,41 CentOS, Ubuntu 8 14 GB 512 GB 250,45 CentOS, Ubuntu 8 14 GB 512 GB 388,73 Windows 8 56 GB 512 GB 620,21 Ubuntu 8 56 GB 512 GB 851,70 Windows 64 256 GB 4096 GB 2 192,63 Ubuntu 64 256 GB 4096 GB 4 148,12 Windows palvelussa. Omassa fyysisessä palvelimessa omissa tiloissa on aluksi suuri alkuinvestointi, jonka jälkeen maksetaan lähinnä sähköstä ja tietoliikenteestä. Pilvipalvelussa palvelin tulee nimenomaan palveluna ja palvelusta maksetaan. Omassa fyy- sisessä palvelimessa maksetaan palvelimesta ja ylläpito ja asennustyö tehdään itse, tai mak- setaan ylläpidosta ja asennuksesta. Toisaalta myös pilvipalvelu pitää asentaa ja ylläpitää, 30 pilvipalvelussa asennus ja ylläpito on kuitenkin nopeampaa ja helpompaa. Pilvipalvelua käytettäessä Internet-liikennettä tarvitaan sovelluksesta riippuen enemmän, kuin yrityk- sen lähiverkossa sijaitsevalla palvelimella. Tässä tapauksessa näkyvin ero omissa tiloissa olevaan palvelimeen verrattuna on käyttöliittymän käytössä, jonka käytön nopeus riippuu- kin Internet-yhteyden nopeudesta. Uskon kuitenkin, että siinäkään ei ole merkittävää eroa. Tiedonkeruuyksiköiden kannalta palvelimen sijainnilla ei ole merkitystä. Pilvipalvelimen etuna on toimintavarmuus. Toki pilvipalvelussakin paremmasta toimintavarmuudesta lai- terikkojen varalta maksetaan erikseen. Toisaalta Internet-yhteyden toimintavarmuus pilvi- palvelua käytettäessä tulee kriittisemmäksi. Yrityksen tietoturvapolitiikalla voi myös olla merkitystä palvelimen valinnassa. Tietoturvan kannalta en kuitenkaan näe merkittävää eroa palvelimen valinnassa. Lopullinen valita palvelimen käytöstä jätettiinkin asiakkaan valinnaksi. 2.7. Laitteisto Tilatiedon lukemista varten laitevaihtoehtona oli heti alussa Raspberry Pi, koska siitä oli aiempaa kokemusta. Muitakin yhden kortin tietokoneita on markkinoilla. Tarkempaa vertailua en korttien välillä kuitenkaan suorittanut. 2.7.1. Raspberry Pi Raspberry Pi 3 (kuva 4) on edullinen yhden piirilevyn tietokone (Raspberry, 2016), jossa voidaan ajaa Linux–käyttöjärjestelmää, Windows 10 IoT Core, sekä muutamaa muuta kolmannen osapuolen käyttöjärjestelmää, joita ei tässä dokumentissa käsitellä. Raspberry Pi ei kuitenkaan sisällä analogisia tuloja eikä –lähtöjä. Mahdolliset analogiset signaalit saadaan kuitenkin luettua elektroniikkaa lisäämällä. 31 Kuva 4: Raspberry Pi 3 (Element14, 2016) 2.7.2. Virransyöttö Virransyötössä on huomioitava, että tavallinen puhelimen 500 mA:n USB-laturi ei joka tilanteessa anna riittävästi virtaa Raspberry Pi:lle. Esimerkiksi käynnistettäessä Raspberry Pi saattaa jossain vaiheessa aloittaa käynnistyksen alusta, vaikka virta olisikin näennäisesti päällä. Vähintään 2 A:n laturi onkin suositeltava. Raspberry Pi:n virrankulutus on tietoko- neeksi melko pieni, mutta kuitenkin sen verran suuri, että akkukäyttöisyys on poissuljettu tässä sovelluksessa. Raspberry Pi virransyötöstä on kerrottu enemmän osoitteessa: https://www. raspberrypi.org/help/faqs/#power https://www.raspberrypi.org/help/faqs/#power https://www.raspberrypi.org/help/faqs/#power 32 2.7.3. Reaaliaikakello Raspberry Pi ei sisällä paristovarmistettua reaaliaikakelloa, joten virran katketessa Raspberry Pi menettää aikatiedon. Käynnistettäessä kello päivitetään Internetin NTP- palvelimelta. Kello päivittyy parissa minuutissa virran palautuessa. Mikäli Internet- yhteyttä ei ole saatavilla, kellonaika ei päivity oikeaksi. Kellonaika tallentuu kuitenkin käyttöjärjestelmätasolla siten, että käynnistettäessä kellonaika on ennen päivitystä lähes sama kuin virran katketessa. Kellonaika ei siis täysin nollaannu. Valmiita reaaliaikakellomoduuleja on kuitenkin markkinoilla useita. 2.8. Tietovarastot ja niiden käsittely Kävin läpi tietovarastoja ja niiden käsittelyyn käytettäviä ohjelmia (taulukko 7). Taulukko 7: Tietovarastoja ja niiden käsittelyyn käytettäviä ohjelmia. MySQL Relaatiotietokantaohjelmisto, joka on hyvin yleisesti käytössä erilaisissa web-palveluissa. MariaDB Pohjautuu MySQL:ään ja sen pääkehittäjä on toinen MySQL:n alkuperäisistä kehittäjistä. Apache Hadoop Luotettava ja vikasietoinen ohjelmakirjastosto suurten tieto- määrien hajautettuun käsittelyyn, joka skaalautuu yhdestä pal- velimesta tuhansiin koneisiin (Hadoop, 2016). Hadoop Common Hadoop moduulien yhteiset osat. HDFS™ Hadoop Distributed File System, Hadoop hajautettu tiedosto- järjestelmä. Hadoop YARN Hadoop runko töiden aikataulutukselle ja resurssien hallintaan. 33 Hadoop MapReduce YARN-pohjainen järjestelmä suurten tietomäärien rinnakkai- seen käsittelyyn. Apache Drill Apache Drill tukee monia tietokantoja ja tiedostomuotoja, josta voidaan suorittaa SQL-syntaksin mukaisia hakuja (Drill, 2016). Apache HBase Skaalautuva hajautettu tietokanta, joka tukee jäsennettyä tiedon varastointia suurille taulukoille (HBase, 2016). HBase tarjoaa Googlen BigTable –tyyppisiä ominaisuuksia Hadoop HDFS:n päällä. Apache Hive Tietovarasto infrastruktuuri suurten tietomäärien käsitte- lyyn hajautetussa järjestelmässä. Tukee SQL-syntaksia (Hive, 2016). Apache Pig Analysointialusta suurille tietomäärille korkean tason ohjel- mointikielellä, joka tukee rinnakkaista käsittelyä (Pig, 2016). Apache Spark Nopea ja yleiskäyttöinen laskentamoottori Hadoop datalle (Spark, 2016). Apache Storm Hajautettu reaaliaikainen laskentajärjestelmä (Storm, 2016). 2.9. Datan visualisointi ja käyttöliittymä Järjestelmä päätettiin tehdä siten, että käyttö tapahtuisi selainpohjaisesti. Tarvittiin siis jokin alusta, jonka päälle käyttöliittymä rakennetaan. Myös datan visualisointiin tarvittiin jokin tekniikka. 34 2.9.1. AngularJS Harkitsin useita eri sisällönhallintaohjelmia, mutta ne ovat pääasiassa tarkoitettu staatti- sen sisällön hallintaan. Kuitenkin tässä tapauksessa sisällön ulkoasu pysyy samana, mutta esitettävä tieto on pääasiassa dynaamista. Käytettäväksi alustaksi valikoituikin ilman suu- rempia vertailuja AngularJS. AngularJS on JavaScript-kirjasto, joka soveltuu hyvin selainpohjaisiin käyttöliittymiin (AngularJS, 2017). Sivu rakentuu selaimessa HTML-pohjista JavaScriptin avulla. HTML- pohjiin lisätään JavaScript-kirjaston tunnistamia elementtejä, joilla tuodaan sivuun dynaa- mista sisältöä tai toisia HTML-pohjia. Käyttöliittymää rakennettaessa saadaan ulkoasu pi- dettyä erillään HTML-pohjissa ja CSS-tyylitiedostoissa. Käyttöliittymän ohjelmallinen toiminnallisuus on JavaScript-tiedostoissa. AngularJS on varsin laaja ympäristö, jonka opettelu vie paljon aikaa. Tässäkin työssä käytettiin vain pientä osaa kirjaston mahdollisuuksista. 2.9.2. Angular Angular oli työn alkuvaiheessa vielä beta-vaiheessa, joten sitä ei käytetty työn ensimmäi- sessä vaiheessa. Siihen siirryttiin vasta jatkokehityksessä varsinaisen diplomityöosuuden päätyttyä. Angular on AngularJS:n tilalle kehitetty uudempi TypeScript-kirjasto ja kehitys- ympäristö (Angular, 2017). Suurin ero AngularJS:ään verrattuna on TypeScriptin käyttö JavaScriptin tilalla. TypeScriptissä on parannuksia JavaScriptiin verrattuna, mm. mahdol- lisuus käyttää luokkia sekä muuttujien tyypitys. Pääosin TypeScript on hyvin JavaScrip- tin kaltainen. Kehitysympäristö myös kääntää TypeScript-sovelluksen JavaScript-kielelle, joka sitten suoritetaan selaimessa. Angular-ympäristön käyttö myös tuntuu selkeämmältä ja siten helpommalta kuin AngularJS-ympäristön. 35 2.9.3. Visualisointi Visualisointiin ja kuvaajien piirtoon oli myös paljon eri vaihtoehtoja, joista kaksi nousi ylitse muiden: Charts.js ja D3.js. Useat vapaat ja kaupalliset työkalut myös pohjautuvat varsinkin D3.js:ään. Molemmat ovat open source JavaScipt-kirjastoja, joilla voidaan luoda HTML-sivulle kuvaajia ladatun datan perusteella. Chart.js on suppeampi ja yksinkertai- sempi. Chart.js luo kuvaajat HTML Canvas –elementiksi (Chart.js, 2017). D3.js mahdollistaa kuvaajien lisäksi laajemminkin datan visualisoinnin HTML- CSS- ja SVG-elementeillä (Bostock, 2017). D3.js onkin varsin laaja kirjasto, jonka opettelu vaatii aikaa. Eri versiot eivät ole täysin yhteensopivia, joten monet vanhemmat esimerkit eivät suoraan toimi uusimmalla versiolla. 36 3. TOTEUTETTAVA JÄRJESTELMÄ Toteutettava järjestelmä koostuu itsenäisistä osista, jotka esitellään tässä dokumentissa tarkemmin erikseen. Järjestelmän loogisia osia ovat (kuvassa 5): • tiedonkeruuyksiköt, • palvelin ja tietokanta, • datan tulkinta ja visualisointi, • järjestelmän hallinta. Tiedonkeruuyksiköt ovat itsenäisiä fyysisiä yksikköjä, joissa voi kuitenkin olla useampia- kin loogisia yksikköjä. Tiedonkeruuyksikkö tässä työssä tarkoittaa laitetta, jolla luetaan konepajan laitteiden tilatietoa ja lähetetään luettu tilatieto palvelimelle. Muut loogiset yk- siköt voivat sijaita yhdessä tai useammassa fyysisessä palvelimessa. Datan visualisointi toimii selain–käyttöliittymällä, joka voi siten sijaita missä tahansa. Järjestelmässä pyritään käyttämään valmiita standardeja laitteita, ohjelmia ja menetel- miä, jotka pyritään erottamaan toisistaan siten, että yksittäinen laite tai ohjelma voidaan myöhemmin vaihtaa, ilman että muihin tarvitsee tehdä muutoksia. Tavoitteena on laite- ja ohjelmistoriippumattomuus. Laitteet (tiedonkeruuyksiköt) tulee olla vaihdettavissa, si- ten että muuhun järjestelmään ei tarvitse tehdä muutoksia laitteiden vaihtuessa. Uusia laitteita kuitenkin tulee markkinoille ja vanhoja poistuu. Lisäksi muu järjestelmä ei ota mitään kantaa siihen, miten tiedonkeruuyksiköt keräävät tietoa, eikä tiedon analysointi- ja visualisointivaiheessa oteta kantaa siihen, mistä tai miten tieto on järjestelmään tullut. Tiedonkeruuyksiköt lähettävät tiedon sovitussa muodossa, riippuen siitä mitä mitataan. Ohjelmistoriippumattomuus voi olla vaikeampi toteuttaa. Suunnitteluvaiheessa täytyykin tehdä valintoja joustavuuden ja valmiiden ohjelmien välillä. Lisäksi täytyy tehdä valinta pilvipalvelun ja paikallisen palvelimen välillä. Järjestelmä on mahdollista rakentaa si- ten, että paikallisesti asennetaan vain tiedonkeruuyksiköt. Tiedon tallennus, analysointi ja datan visualisointi voivat tapahtua muualla sijaitsevassa pilvipalvelussa. 37 Palvelimen varmennus Palvelin Tehdashalli MySQL tietokanta Matkapuhelin / tietokone Datan visualisointi selaimessa JavaScript Datan visualisointi Tiedon keräys, haku ja tulkinta Hitsauskone Särmäri Laser Levyntyöstökeskus Kone N Tiedonkeruuyksikkö Tiedonkeruuyksikkö Tiedonkeruuyksikkö Tiedonkeruuyksikkö Lan/Wifi HTTP(S)-rajapintaLan/Wifi SSH-rajapinta SSH- rajapinta Raspberry Pi Selain Infonäyttö Chromecast HTTP(S)-rajapinta Apache Ylläpito Kuva 5: Järjestelmän kaaviokuva. Kuvassa suorakaide on fyysinen laite, pyöristetty suorakaide on ohjelma, keltaisella pohjalla olevissa lohkoissa on järjestelmään tehtyjä osia ja ohjelmistoja. 3.1. Tiedonkeruuyksiköt Alkuperäisen tavoitteen mukaan tiedonkeruuyksikön tehtävänä on mitata laitteista digi- taalista tilatietoa, koska laite on käynnissä. Tiedonkeruuyksikkö lähettää mittaamansa tilatiedon palvelimelle. Tiedonkeruuyksikön tiedonsiirto tapahtuu salatun langattoman lä- hiverkon kautta, jolloin vältytään tiedonsiirtokaapeleiden asennukselta tehdashalliin. Tie- donsiirto voidaan myös tarvittaessa toteuttaa kaapelilla. Seurattavan laitteen käyttötieto kytketään tiedonkeruuyksikköön kaapelilla, jonka kautta seurattavasta laitteesta voidaan mahdollisuuksien mukaan ottaa myös virransyöttö tiedonkeruuyksikölle. 38 3.1.1. Laitteiston valinta Tiedonkeruuyksikön tulee olla riittävän pieni, että se ei häiritse koneen käyttöä. Useim- mat koneet ovat kuitenkin niin suuria, että koteloinnin koko ei ole merkitsevä asia, vain hitsauskoneet ovat siirrettäviä. Useissa laitteissa on myös mahdollisuus saada 24 V DC tiedonkeruuyksikön virransyöttöä varten. Tiedonkeruuyksikköä ei ollut tarkoitus suunnitella kokonaan tätä tarkoitusta varten, vaan suunnittelussa oli lähtökohtana käyttää mahdollisimman valmiita komponentteja. Laitteen tulisi olla yleisesti saatavilla, edullinen, siinä tulee olla digitaalisia tuloja ja mahdollisuus langattomaan tiedonsiirtoon. Lisäksi tiedonkeruuyksikössä tulee olla sen verran laskenta- kapasiteettia, että tarvittaessa voidaan suorittaa pienimuotoista signaalinkäsittelyä. Valinnassa päädyttiin yhden piirilevyn tietokoneeseen, tässä tapauksessa Raspberry Pi 3. Raspberry Pi 3 on yksinkertaiseen tiedon käsittelyyn reilusti ylimitoitettu, mutta sillä voi- daan tarvittaessa suorittaa pienimuotoista signaalinkäsittelyä ja lisäksi siinä on valmiina langaton lähiverkkoliitäntä. Kortti on lisäksi edullinen. Toinen varteenotettava vaihtoehto on Raspberry Pi Zero, joka on vielä pienempi ja halvempi. Raspberry Pi Zero:n saata- vuus on kuitenkin heikko. Yhden piirilevyn tietokoneita on toki muitakin, Raspberry Pi lienee kuitenkin yksi yleisimmistä. Lisäksi tarvitaan riittävä kotelointi ja elektroniikkaa virransyöttöön sekä signaalin sähköiseen erottamiseen. Käyttöjärjestelmänä käytetään Linux-pohjaista ’Rasbian Jessie Lite’ –käyttöjärjestelmää, ilman graafista käyttöliittymää. Lisäksi testausvaiheessa on käytössä myös ’Raspbian Jes- sie with PIXEL’ graafisella käyttöliittymällä, joka on laajempi asennus. Asennusohjeet ovat liitteessä LIITE 1 kohdassa 1.1. ja 1.2.. Mikäli tiedonkeruuyksikköön halutaan tiedon syöttö- ja näyttömahdollisuus, voidaan Raspberry Pi korvata tabletilla. Markkinoilla on olemassa USB- ja Bluetooth-liitäntäisiä tiedonkeruukortteja, joilla tiedon keruu saattaisi olla mahdollista suoraan tabletilla. Rasp- berry Pi voi toki olla keräämässä tietoa tabletin rinnallakin. Tabletit ovat nykyään melko 39 edullisia ja suuri osa ihmisistä on tottunut kosketusnäyttöjen käyttöön. Tabletti voidaan lisäksi upottaa koteloon, jolloin se ei haluttaessa edes näytä tabletilta. Ensimmäisessä vaiheessa seurattavista laitteista luetaan vain digitaalista tilasignaalia. Li- säksi tiedonkeruuyksiköön voidaan laittaa merkkivalot osoittamaan laitteen tilaa — virta päällä ja laite toiminnassa. Koska tiedonkeruuyksikössä on riittävästi laskentatehoa, voidaan luettava tieto käsitellä valmiiksi oikeaan muotoon tietokantaan tallennettavaksi. Tiedonkeruuyksikön sisäisen tallennustilan loppumisen estämiseksi, ei tallenneta mitään lokia toiminnasta, tai lokitiedostojen koolle on asetettava yläraja. Lokien hallinta onkin Raspbian Linuxissa valmiina. 3.1.2. Hallinta Tiedonkeruuyksikön asetusten muuttamista varten tiedonkeruuyksiköön tulee päästä jo- tenkin käsiksi. Raspberry Pi tiedonkeruuyksikkö on Linux–tietokone, joten tapoja on useita. Massamuistina toimii micro SD korttipaikka, joten micro SD kortille voidaan suo- raan muuttaa tarvittavat asetukset (Liite LIITE 1 kohta 1.4.). Laitteeseen voidaan liittää USB-hiiri ja –näppäimistö sekä näyttö HDMI-liitännällä. Laitteeseen voidaan ottaa myös SSH-yhteys kaapelilla ethernet-portin tai langattoman verkon kautta, joka onkin todennä- köisin tapa asetusten muuttamiseen. 3.1.3. Tiedonsiirto Tiedonsiirto tiedonkeruuyksiköltä palvelimelle tapahtuu HTTP– tai HTTPS-protokollaa käyttämällä. Mikäli langattomassa verkossa tulee häiriöitä, laite voi puskuroida kerättyä tietoa, kunnes yhteys on jälleen saatavilla. Mitattavaa tietoa muokataan vain sen verran, kuin tiedon tallennuksen kannalta on tarpeen. 40 Tieto tiedonkeruuyksiköltä palvelimelle siirretään HTTP GET, PUT tai POST pyynnöllä. Palvelinpään virheen sattuessa tiedonkeruuyksikkö yrittää tiedonsiirtoa uudelleen määri- tellyn ajan kuluessa, ei kuitenkaan välittömästi, ettei laajemmassa häiriössä verkko ruuh- kaannu. Virheen sattuessa tiedon keruuta kuitenkin jatketaan normaalisti ja tieto tallen- netaan puskuriin myöhempää lähetystä varten. Kun luetaan tilatietoa, tiedonkeruuyksikkö lähettää tilan muuttuessa aina uuden viestin, sekä nykyisen tilan määrätyin välein (esim. 30 sekuntia). Vikatilanteen sattuessa, viimeisin lähetetty tilatieto ennen uudelleen käynnis- tystä on varmistettu tieto, jota voidaan käyttää hyväksi tilatietoja tulkittaessa. Ilman jatku- vaa tilatiedon ja uudelleenkäynnistystiedon lähettämistä, ei voida olla varmoja mittauksen jatkuvuudesta tilatietojen välillä. Lohkokaavio tilatiedon lukemisesta ja lähetyksestä on kuvassa 6. Käyttämällä standardia HTTP(S) protokollaa, tiedon tallentava palvelin voi periaatteessa sijaita missä tahansa, kunhan tiedonkeruuyksikkö saa siihen yhteyden. 3.1.4. I/O-porttien luku GPIO-porttien luku tapahtuu Python-kielisellä ohjelmalla, joka käyttää raspberry-gpio- python –kirjastoa. Kirjaston ohjeet löytyy osoitteesta: https://sourceforge.net/p/raspberry-gpio-python/wiki/Home/ Liitteessä LIITE 6 on esimerkkinä Python-kielinen ohjelma, joka lukee yhden GPIO- portin tilan ja asettaa toisen, sekä lähettää tiedon ThingSpeak-palvelimelle. GPIO-portti voidaan määritellä lähdöksi tai tuloksi. Tuloportille voidaan vielä määritellä käytetäänkö ylös-, alasvetovastusta tai ei mitään. 3.1.5. Tilatiedon lukeminen Koneilta tallennetaan vain suoraan mitattavissa oleva käyttöaika tilatietona, ei häiriöitä tai odotusaikoja. Tilatiedon luku koneilta pyritään tekemään siten, että koneen toiminta ei mis- https://sourceforge.net/p/raspberry-gpio-python/wiki/Home/ 41 Tilatiedon luku Onko tila muuttunut? Onko kulunut yli 30 s. edellises- tä päivityksestä? Lisää uusi tila- tieto puskuriin. Tarkista puskuri. Odota 1 s.Onko puskuri tyhjä? Lue yksi tilatie- to puskurista. Lähetä tilatie- to palvelimelle. Odota 10 s. Onnistuiko lähetys? ei kyllä ei kyllä ei kyllä ei kyllä Kuva 6: Lohkokaavio, tilatiedon luku ja lähetys palvelimelle. sään tapauksessa häiriintyisi. Useissa työstökoneissa on jonkintasoinen tietokoneohjaus, joka lisäksi on yhteydessä yrityksen lähiverkkoon. Mikäli työstökoneissa olisi valmiina 42 rajapinta, joka lähettäisi tilatiedon haluttuun paikkaan, erillisiä tiedonkeruuyksiköitä ei edes tarvittaisi. Työstökoneet ovat kuitenkin eri ikäisiä ja eri valmistajien tekemiä, joten koneiden toimintaan ei haluttu puuttua millään lailla. Tilatietoa luetaan seuraavilta koneilta: • Laser: Tilatiedon mittaus tapahtuu laserin varoitusvalosta (kuva 7), jonka päällä- olo tunnistetaan fototransistorilla. Varoitusvalo on päällä, kun leikkuuohjelma on käynnissä. Varoitusvalo on päällä, myös silloin kun leikkuupää siirtyy seuraavaan kohteeseen, eikä laser ole päällä. Levyn vaihdon yhteydessä varoitusvalo ei ole päällä. • Levyntyöstökeskus: Tilatieto saadaan logiikalta, joka antaa iskukäskyn. Tilatieto on vain lyhyt pulssi. Reikien kierteytystä ei tunnisteta. • Särmärit: Koneen kytkentäkaapista logiikalta mitataan suoraan koneen käyttöpol- kimen tilatietoa. Koneen käyttötavasta riippuen käyttäjä voi yhtä taitosta varten painaa poljinta yhden tai useamman kerran. Työkalu liikkuu alaspäin vain silloin, kun poljinta pidetään alhaalla. • Hitsauskoneet: Mitataan paloaikaa kaasunsyötön magneettiventtiilistä, tai maajoh- dosta. – Kemppi MasterTig AC/DC 3500W: Tilatieto saadaan kaasunsyötön magneet- tiventtiilin ohjauksesta (24 V DC). Tiedonkeruuyksikön virransyöttö saadaan muuntajan jälkeen ohjausyksikön virransyötöstä (24 V AC). – Kemppi FastMig Pulse 350/FastMig MXF 65: Kaasunsyötön magneettiventtii- li (24 V DC) on helposti käsillä langansyöttöyksikössä, mutta langansyöttöyk- sikön ohjaukselle tulee 50 V DC. Tiedonkeruuyksikön virransyöttö toteutetaan erillisellä muuntajalla. – Kemppi Kempact 323A: Laite on muovikuorinen ja kaasunsyötön magneetti- venttiiliin käsiksi pääseminen vaatii mm. langansyöttökoneiston irroittamisen. Mittaus tapahtuu maajohdosta reed-releellä. Maajohdosta kierretään kolmen kierroksen kela riittävän suuren magneettikentän aikaansaamiseksi. Reed-rele asetetaan kelan keskelle (kuva 8). Kun tilatieto otetaan maajohdosta, on tie- 43 donkeruuyksikön asennus huomattavasti helpompi ja nopeampi, kuin hitsaus- koneen sisältä otettava tilatieto. – Aristotig 255: Tilatieto otetaan maajohdosta samalla tavalla kuin Kempact 323A. Kuva 7: Tilatiedon mittaus laserin varoitusvalosta. Nuoli osoittaa koteloidun fototransistorin. Taulukossa 8 on esitetty yhteenvetona laitteiden tilatiedon lukutapa ja tiedonkeruuyksikön virransyöttö. 3.1.6. Robottisolun seuranta Robottisolu koostuu kappaleita siirtelevästä robottikäsivarresta, särmäristä ja toiseen ro- bottikäsivarteen liitetystä hitsauskoneesta. Robottisolun seurantaan päätettiin kokeilla ka- meravalvontaa. Kameravalvonta asennetaan Raspberry Pi 3 –kortille, johon on asennettu Raspberry Pi kameramoduuli. Käyttöjärjestelmänä on Linux-pohjainen motionEyeOS, jota ei ole tarkoitettu yleiskäyttöiseksi Linux jakeluksi (Crisan, 2017). Tilatieto lähtee, kun ohjelma huomaa liikkeen kuvassa. Liikkeen jatkuessa, tai loppuessa tilatietoa ei lähetetä. Asetuksista liikkeen herkkyyttä ja liikkeen tunnistuksen aikaväliä sää- tämällä voidaan saada riittävä tarkkuus robottisolun seuraamiseen. Kun liikkeen tunnistus tapahtuu riittävän usein tilatiedon voimassaoloajan puitteissa, saadaan robotin liikkuessa 44 (a) (b) Kuva 8: Hitsiauskoneiden tilatiedon mittaus maajohdosta. Oikean puoleisessa kuvassa musta maajohto on kierretty kolmesti kelalle, jonka keskelle on asettettu koteloitu reed-rele. Tiedonkeruuyksikkö on harmaassa kotelossa, johon reed-rele on kytketty harmaalla kirkkaalla johdolla. jatkuva tilatieto. Jos robotti kuitenkin liikkuu koko ajan, ei tilatietoa lähetetä uudelleen. Robottisolun seuranta onkin toiminut riittävällä tarkkuudella. Kuvassa 9a on kamera harmaassa laatikossa kuvaamassa robottisolua. Kuvassa 9b on kameran näkymä robottisolusta. 3.1.7. Laitteisto Raspberry Pi:n GPIO-liityntään ei voida suoraan kytkeä 24 V:n tilatietoa koneilta, vaan vä- liin tarvitaan jotain suojaamaan tuloliitäntöjä. Tuloliitäntöjen suojana käytetään optoerotin- piiriä sopivasti mitoitetuilla vastuksilla. Liitteessä LIITE 3 on piirikaavio (LIITE 3.1) kolmen tilatiedon lukua varten. Kolme sär- 45 Taulukko 8: Laitteiden tilatiedon lukutapa ja tiedonkeruuyksikön virransyöttö. Laite Tilatiedon lukutapa Virransyöttö Laserleikkuri Varoitusvalosta fototran- sistorilla. Logiikan 24 V:n virransyöttö. Levyntyöstökeskus Iskukäsky logiikalta. Logiikan 24 V:n virransyöttö. Särmärit Käyttöpolkimen tilatieto logiikalta. 5 V:n USB verkkomuuntaja. Hitsauskone Kemppi MasterTig Kaasunsyötön magneetti- venttiili. Ohjausyksikön 24 V:n virransyöttö. Hitsauskone Kemppi FastMig Kaasunsyötön magneetti- venttiili. 5 V:n USB verkkomuuntaja. Hitsauskoneet Kemppi Kempact Reed-releellä maajohdosta 5 V:n USB verkkomuuntaja. Hitsauskone Aris- totig Reed-releellä maajohdosta 5 V:n USB verkkomuuntaja. (a) (b) Kuva 9: Vasemmalla kamera kuvaamassa robottisolua, oikealla kameran näkymä robottisolusta. märiä ovat niin lähellä toisiaan, että niiden tilatiedot voidaan lukea samalla tiedonkeruu- yksiköllä. Virransyöttö oli tarkoitus saada yhdeltä särmäriltä 24 voltin tasavirtalähteestä. Tässä tapauksessa kuitenkin päädyttiin erilliseen USB-virtalähteeseen, koska särmäreistä voidaan katkaista virrat toisistaan riippumatta. Tilatietojen lukua varten kytkennässä on valmiina tulot 5, 12 ja 24 voltin tulojännitteille, jotka voivat olla tasa- tai vaihtovirtaa. Kyt- kettäessä tiedonkeruuyksikköä valitaan tuloliitin jännitteen mukaan. Vaihtovirtasignaalin 46 lukua varten kytkennässä on kondensaattori, joka voidaan kytkeä irti, mikäli luetaan ta- savirtasignaalia. Kuvassa LIITE 3.5 on ensimmäinen prototyyppi tiedonkeruuyksiköstä, johon on merkitty tulojen kytkentä. Liitteessä LIITE 3 on piirikaavio (LIITE 3.2) yhden tilatiedon lukua varten. Ensimmäiseen prototyyppiin verrattuna tulossa ei ole useaa eri vastusta tulolle, koska optoerottimen tulossa on melko laaja virta-alue. Näitä käytetään hitsauskoneissa, joista tilatieto otetaan kaasunsyötön magneettiventtiilin ohjauksesta. Kuvassa LIITE 3.6 on toinen prototyyppi tiedonkeruuyksiköstä, johon on myös merkitty tulojen kytkentä. Liitteessä LIITE 3 on piirikaavio (LIITE 3.3) hitsauskoneen tilatiedon lukua varten, kun mittaus tapahtuu maajohdosta reed-releellä. Tiedonkeruuyksikkö on kuvassa LIITE 3.7. Reed-rele on ohuessa lasiputkessa, joka rikkoutuu todella helposti. Tein alumiinista pienen suojan reed-releelle. Liitteessä LIITE 3 on piirikaavio (LIITE 3.4) laserleikkurin tilatiedon lukua varten. Ti- latiedon luku tapahtuu varoitusmajakasta fototransistorin avulla. Tiedonkeruuyksikkö on kuvassa LIITE 3.8 ja fototransistori koteloituna kuvassa LIITE 3.9. Osassa työstökoneista otetaan tiedonkeruuyksikön virransyöttö suoraan koneen logiikan 24 V:n virransyötöstä. Jännitteen muuntamiseen käytetään ajoneuvoihin tarkoitettua 24 V - 5 V USB –muunninta. Virransyöttö ei ole aiheuttanut mitään ongelmia. 3.2. Palvelin 3.2.1. Palvelimen vaatimukset Järjestelmä tulee toteuttaa siten, että se toimii pienellä mittakaavalla hyvin kevyessä tie- tokoneessa, mutta on myös tarvittaessa skaalattavissa suurempaan tietokoneeseen. Itse käyttöjärjestelmän ylläpitoon ei oteta tässä mitään kantaa. Järjestelmä toimii Windows- 47 tai Linux-palvelimessa. Järjestelmä voisi toimia myös virtuaalikoneen päällä Windows- tietokoneessa. Olemassa olevien palvelinten toimintaan pyritään puuttumaan mahdolli- simman vähän. 3.2.2. Tiedon varmistus Tietokanta voi olla tallennettuna erikseen varmennetulle verkkolevylle tai paikalliselle koneelle. Lisäksi koko palvelin voidaan varmentaa verkon yli, jolloin palvelimen vikaan- tuessa on koko palvelin nopeasti palautettavissa. 3.3. Tiedon tallennus 3.3.1. Tallennettavan tiedon määrittely Jokainen kone ja mitattava tieto on voitava yksilöidä ja tallennus tulee tehdä siten, että tieto on kohtuullisella vaivalla luettavissa. Tilatietojen mittauksessa tilatietoja on odotettavissa korkeintaan keskimäärin 10 sekunnin välein, jolloin vuositasolla jatkuvalla mittauksella saadaan kaikilta koneilta yhteensä suuruusluokkaa 3 000 000 mittaustietoa. Tallennustilan kannalta määrä ei ole vielä liian suuri, kunhan tieto tallennetaan tiiviissä muodossa. Miten koneelle/mitattavalle kohteelle annetaan täysin yksilöllinen tunniste? Tunniste ei saa myöskään olla riippuvainen käytettävästä tiedonkeruuyksiköstä, koska vikatilanteessa tiedonkeruuyksikkö tulee olla vaihdettavissa. 1. Ratkaisu: Tieto tallennetaan hierarkisessa hakemistorakenteessa (yritys/paikka/ko- neen.nimi/kohde), jossa paikka on konesalin nimi, koneen.nimi on koneen lyhyt tunniste ja kohde mitattavan kohteen tunniste. • Koneen tunnistetietoa ei tarvitse tallentaa jokaiselle mittaustiedolle erikseen. • Miten mitattavan kohteen tyyppi (digitaali, analogi) tunnistetaan? 2. Ratkaisu: Tieto tallennetaan yhteen SQL-taulukkoon. 48 • Koneen tunnistetietoa joudutaan tallentamaan jokaiselle mittaustiedolle erik- seen. 3. Ratkaisu: Jokaiselle mitattavalle kohteelle annetaan tietokannassa oma numeerinen tunniste. Tunnisteen avulla luodaan jokaiselle kohteelle myös oma taulunsa tieto- kantaan. Nyt jokaisesta mittaustiedosta ei tarvitse tallentaa kohteen tunnisteita. 3.3.2. Tietokanta Tiedon tallennukseen käytetään MySQL tietokantaa. MySQL:n valintaan vaikutti lähinnä laaja tuettavuus. Kaikki tekstipohjainen tieto tallennetaan UTF-8 –koodauksella, ellei toisin mainita. Sama koskee myös tiedon esitystä. Tietokannan luontitiedosto on liitteessä LIITE 7. Tietokanta sisältää seuraavat taulut: • settings Taulussa on yleiset ja ryhmäkohtaiset asetukset ja autentikointiavaimet. • groups Taulussa on koneryhmän tiedot. • sensors Taulussa on koneen tiedot. • msgStatus_nn Taulussa on yhden koneen tilatiedot, taulun nimessä nn on anturin numero. Tämä taulu luodaan koneen lisäyksen yhteydessä. 3.3.3. Tallennettava tieto Seurattavasta laitteesta tallennetaan kerralla vähintään seuraavat tiedot: • koneen tai mitattavan kohteen tunnistetieto • aikaleima (32-bittinen tai 64-bittinen) • tilatieto (64-bittinen) Koneen tilan oletetaan pysyvän muuttumattomana, kunnes tulee uusi tilatieto. Kaksi peräk- 49 käistä samaa tilatietoa eri aikaleimalla sallitaan, tilan pysyessä samana. Tilatietoja lisäksi odotetaan saapuvan tietyin määrävälein (30 s), jolloin voidaan varmistaa tiedon jatkuva mittaus. Mikäli kahden mittauksen välinen aika on riittävän suuri (> 60 s), voidaan olettaa mittauksen keskeytyneen. Tietokantaan tallennettua tietoa ei enää muuteta ja tieto tallennetaan mahdollisimman muokkaamattomana. Kaikki tieto tulkitaan vasta luettaessa. Lisäksi tiedonkeruuyksiköltä voidaan tarvittaessa tallentaa muuta myöhemmin määritel- tävää tietoa, esimerkiksi kuvaa, ääntä tai mittaustietoja. Koneen tunnistetietoa vastaa lisäksi lyhyt tekstipohjainen otsikkokenttä. 3.4. Datan visualisointi Datan visuaalinen esittäminen tapahtuu selainpohjaisesti. Palvelimella data tuotetaan sel- laiseen muotoon, että se on esitettävissä lähes millä tahansa laitteistolla, jossa on Internet- selain. Dataa voidaan siten esittää mobiililaitteilla tai isolla näytöllä. Datan visuaalisen esityksen toimivuus tulee todeta mobiililaitteella, joka ei välttämättä ole ihan huipputason laite, sekä tietokoneen isolla näytöllä. 3.4.1. Ohjelmointirajapinta Tutustuttuani erilaisiin visualisointirajapintoihin, päätin käyttää tässä työssä D3.js JavaSc- ript kirjastoa. D3.js on melko laajasti käytössä ja sillä pystyy tekemään näyttäviäkin gra- fiikoita. Kuvaajat luodaan käyttämällä HTML, SVG ja CSS –elementtejä, joten kuvaajat voidaan helposti luoda myös ilman D3.js kirjastoa. Tarve käyttää D3.js kirjastoa tulee kuitenkin siinä vaiheessa, kun halutaan luoda grafiikkaa dynaamisesti datan vaihtuessa. Ihan pieneen tarpeeseen D3.js rajapintojen käyttöä ei kannatakaan opiskella, vaan on no- peampaa ja helpompaa ohjelmoida sellainen itse JavaScriptillä. Grafiikan ohjelmointiin 50 D3.js kirjaston avulla löytyy useita esimerkkejä. Lisäksi käytän tässä työssä AngularJS –JavaScript kirjastoa, joka on tarkoitettu dynaamisten verkkosivujen luontiin. Harkitsin myös gnuplot kuvaajienpiirto-ohjelman käyttöä, jolloin grafiikan luonti tapah- tuisi palvelimella. Järjestelmän rajapintojen kannalta pidin kuitenkin parempana, että gra- fiikan luonti tapahtuu selaimessa ja data siirretään sopivassa muodossa palvelimelta. 3.4.2. Näytettävä tieto Tavoitteena on näyttää kustakin seurattavasta kohteesta koneen absoluuttinen käyttöaste, käyttöaste verrattuna viitearvoon, aamu ja iltavuoron välinen ero ja ero viikonpäivien välillä. Tiedon tulkinta eri kohteille: • Laser ja levyntyöstökeskus: Laser ja levyntyöstökeskus voivat olla käynnissä pitkiä- kin aikoja, myös öisin ja viikonloppuisin. Näytettävä tieto on käyttöaikasuhde, tai suora tilatieto pienellä aikavälillä. Normaali käyttöaikasuhde onkin 100 %. • Särmäri: Lasketaan iskujen määrää aikavälillä (iskua/tunti). Iskujen määrä tunnissa voi olla prototyypin teossa 1 - 30 ja pienillä kappaleilla jopa 300. • Hitsauskone: Lasketaan paloaikasuhde. Normaali paloaikasuhde odotetaan olevan käsinhitsauksessa alle 25 %, ja robottihitsauksessakin alle 50 %. Käyttöaikasuhteen ja paloaikasuhteen yksi mittaustieto lasketaan tarkasteltavan aikavälin kahden pois-päällä –tilamuutoksen väliseltä ajalta. Datan visualisoinnissa tietoja verrataan keskiarvoon, edelliseen päivään, viikonpäivien välillä ja aamu- ja iltavuorojen välillä. Tieto ryhmitellään koneryhmittäin. Näytettäviä aikavälejä ovat: viimeiset 8 työtuntia, viikko ja kuukausi. Näytettävä tieto voidaan hakea selaimella ajankohdittain. 51 3.4.3. Infonäyttö Koneiden käyttöaikaseuranta näytetään työntekijöille taukotilassa olevalla televisiolla. Ku- va voidaan siirtää televisioon suoraan tietokoneesta, Google Chromecastin avulla kauem- pana olevasta tietokoneesta, yksi Raspberry Pi liitettynä televisioon tai käytetään äly- televisiota, jossa on selain itsessään. Asiakkaalla oli kuitenkin valmiina televisio, jota tultaisiin käyttämään infonäyttönä. Tarvitaan siis jokin tietokone, jossa on selainikkuna auki. Asennusohjeet infonäytölle ovat liitteessä LIITE 1 kohdassa 1.8.. 3.4.4. Intel Compute Stick Vaikka Raspberry Pi soveltuukin hyvin infonäytön ohjaukseen, saatavilla oli Intel Com- pute Stick –laite, jossa oli Windows 10 asennettuna. Intel Compute Stick on fyysisiltä mitoiltaan jopa Raspberry Pi:tä pienempi ja valmiiksi koteloitu tietokone, varustettuna yhdellä HDMI-liittimellä ja yhdellä USB-liittimellä. Laite sisältää 2 GB käyttömuistia ja 32 GB sisäistä tallennustilaa. 3.5. Rajapinnat Hyvin toteutetut rajapinnat järjestelmän eri osien välillä mahdollistavat järjestelmän eri osien suunnittelun ja testauksen toisistaan riippumatta. Järjestelmän eri osat ovat myös tarpeen vaatiessa vaihdettavissa, muiden osien pysyessä muuttumattomina. 3.5.1. Tietokanta Tietokantana käytetty MySQL sisältää lisäyksiä standardiin SQL:ään verrattuna, joten tie- tokannan vaihtaminen ei onnistune suoraan. Kuitenkin tietokannan vaihtuessa muutokset eivät välttämättä ole kovin suuria. Tietokantaa käyttää suoraan vain palvelimella ajettava sovellus. Tietokannan luonti ja samalla tietokannan rakenne on liitteessä LIITE 7. 52 3.5.2. Autentikointi Ensimmäisessä vaiheessa autentikointi suoritetaan käyttämällä APIKey metodia. Kaikissa REST API –kutsuissa lähetetään Key –niminen argumentti, joka sisältää avaimen kyseisen toiminnan toteuttamiseen. Avain on 16-64 merkkiä pitkä merkkijono. Tiedon kirjoitukselle on WriteKey, jota anturiyksiköt käyttävät tiedon päivittämiseen. WriteKey on ryhmäkoh- tainen. Tiedon lukemiseen on ReadKey, jota käytetään datan visualisoinnissa. Myös Read- Key on ryhmäkohtainen. Hallintaa varten on AdminKey, jota käytetään koneiden tietojen hallinnassa. Tietoturvan kannalta tämä ei ole kaikkein turvallisin ratkaisu. Se on kuitenkin yksinker- tainen ja helppo toteuttaa. Koska avain lähetetään salaamattomana, kaikki liikenne tu- leekin olla salattua. Avain ei ole ulkopuolisen luettavissa, kun käytetään salattua HTTPS- protokollaa. Eri toiminnoille käytetään myös eri avainta, joten tiedon lukemiseen käytetyllä avaimella ei ole oikeuksia tehdä mitään muutoksia. 3.5.3. REST API Palvelin ja REST API –rajapinta ovat koko järjestelmän kannalta keskeisin osa. Samaa REST API rajapintaa käyttävät sekä Raspberry Pi anturiyksiköt tiedon lähetykseen pal- velimelle, että selain tiedon hakemiseen palvelimelta JavaScriptillä datan visualisointia varten. Rajapinnan toteutustapa on REST API (Fredrich, 2016; Fielding, 2000). REST API on käytössä monessa paikassa ja on yksinkertaisuudessaan todella nerokas. REST API toimii HTTP(S) -protokollan päällä. Esimerkiksi GET-pyyntö http://192.168.1.107/iot/v1_alpha/sensors/1? usage=0&stop=2017-01-16T12:30:38.1& start=2017-01-16T08:18:00.0Z palauttaa JSON-muodossa koneen numero 1 tilojen suhteet halutulla aikavälillä. Palve- 53 limen osoitteen jälkeen tulee rajapinnan nimi (iot) ja rajapinnan versio (v1, v2), jonka jälkeen tulee varsinainen rajapintapyyntö. Rajapinta on kuvattu tarkemmin liitteessä LII- TE 2. 3.6. Kehitys- ja testausympäristö Kehitysympäristönä käytin Windowsille asennettavaa Windows Subsystem for Linux – Linux-ympäristöä (Microsoft, 2017d). Kehitysympäristöön asensin palvelinsovellukset ja kaikki kehitettävät ohjelmat on linkitetty suoraan Windows-hakemistoon, jossa kehitys tapahtuu. Näin palvelimen ohjelmistoa kehitettäessä muutokset ovat suoraan nähtävillä, ilman tiedostojen siirtoa. Vain tiedonkeruuyksikön ohjelmistoa kehitettäessä testaus ta- pahtui itse Raspberry Pi –laitteella. 3.6.1. Verkko Tiedonkeruuyksiköiden on tarkoitettu toimivan omassa Wi-Fi-verkossaan. Tiedonkeruu- yksiköt voivat käyttää dynaamista IP-osoitetta tai kiinteää IP-osoitetta. Koska tiedonke- ruuyksiköt lähinnä lähettävät tilatietoa, ei kiinteä IP-osoite ole välttämätön. Kuitenkin etähallinnan kannalta kiinteä IP-osoite voi olla helpommin hallittavissa. Tiedonkeruuyksiköiden kannalta verkon halutaan pysyvän samanlaisena kehitys-, demo-, ja testausvaiheessa. Kuvassa 10 on kuvattu kehitysympäristön lähiverkko. Tiedonkeruu- yksiköt ovat omassa langattomassa lähiverkossaan, joka on kehitysympäristöstä täysin erillään. Yksi Raspberry Pi on asetettu reitittimeksi verkkojen välille, sekä se toimii sa- malla palvelimena, johon tiedonkeruuyksiköt lähettävät tietonsa. Demokäytössä Android- puhelimesta jaetaan Internet-yhteys Raspberry Pi –reitittimen kautta. Kannettava tieto- kone toimii kaikissa verkoissa. Tiedonkeruuyksiköiden langattomasta lähiverkosta pääsee kehitysympäristön lähiverkkoon, mutta ei toisinpäin. Kehitysympäristöstä saadaan tiedon- keruuyksiköihin yhteys kytkemällä ne kehitysympäristön ethernet-lähiverkkoon. 54 Wi-Fi laiteverkko 192.168.0.0 Raspberry Pi Wi-Fi reititin Kehitysympäristön LAN-verkko 192.168.1.0 Kannettava tietokone Android hotspot USB Raspberry Pi tiedonkeruuyksikkö Wi-Fi/ethernet Pöytäkone ethernet USB ethernet ethernet Wi-Fi Wi-Fi Kuva 10: Kehitysympäristön kuvaus. Reitittimen asennusohjeet ovat liitteessä LIITE 1 kohdassa 1.9.. 3.6.2. Testaus Käyttöliittymän testaukseen käytin pääasiassa Google Chrome-selainta, jossa on hyvin toimiva debuggeri. Tietokannan luontia varten tein useamman pienen ohjelman, jotka luovat tietokantaan koneet ja satunnaista tilatietoa. 55 3.7. Ohjelmisto Järjestelmää varten on tehty kolme eri ohjelmistoa: tiedonkeruuyksiköille, palvelimelle ja selainpohjainen käyttöliittymä. 3.7.1. Palvelin Tiedon tallennus ja haku toimii Apache palvelimessa. Ohjelma on toteutettu Python- kielellä. Asennusohjeet palvelimelle ovat liitteessä LIITE 1 kohdassa 1.7.. Palvelinohjelmisto toteuttaa anturin ja palvelimen välisen rajapinnan, joka on kuvattu koh- dassa 3.5.3.. Koska palvelinohjelmisto toimii Apache palvelimen päällä, palvelin ei suorita mitään ajastettuja toimintoja, eikä suorita mitään toimenpiteitä tausta-ajona. Ohjelmisto on myös suunniteltu siten, että ajastetulle tai jatkuvalle toiminnalle ei ole mitään tarvetta. Mikäli kuitenkin tulevaisuudessa on tarvetta ajastetulle tai taustalla ajettavalle toiminnal- le, sellainen voidaan toteuttaa erillisenä prosessina. Kaikki muuttuva tieto on kuitenkin tallennettuna tietokantaan, jota voidaan käsitellä myös useammalla sovelluksella. Tilatieto tallennetaan siten, että jokaiselle tilatiedolle on tilan alkuaika, tilan numero ja tilan voimassaoloaika. Jos tilatiedon voimassaoloaikana päivitetään muuttumaton tila, niin tilatiedon voimassaoloaikaa päivitetään vastaavasti. Tilan muuttuessa, edellisen tilatiedon voimassaoloajaksi päivitetään uuden tilatiedon aloitusaika (kuva 11). Palvelimelle tulevat kutsut ovat asynkronisia ja palvelinprosesseja voi olla käynnissä useampiakin. Kun edellisen tilatiedon voimassaoloaikaa muutetaan, on mahdollista syntyä tilanne, jossa kaksi tilatietoa saapuu palvelimelle lähes samanaikaisesti. Tällöin voi syn- tyä kilpatilanne edellisen tilatiedon päivitykseen. Kuitenkaan ei ole tarkoituksenmukaista päivittää yhden kohteen tilatietoja useammasta paikasta. Myöskään tiedonkeruuyksikön ei ole tarkoituksenmukaista lähettää uutta tilatietoa, ennen kuin edellinen tilatiedon lähetys on valmistunut. Tässä tapauksessa ei siis ole tarpeen ottaa huomioon kilpavaraustilannetta. Tilatietoja luettaessa ei haittaa, vaikka edellisen tilatiedon voimassaoloaikaa muutetaan, 56 ennen uuden tilatiedon lisäämistä. Mikäli tilatiedon voimassaoloaika päättyy, niin tila katsotaan määrittelemättömäksi. Mää- rittelemätön tila vastaa tilannetta, jolloin tiedonkeruuyksikkö ei ole päällä lähettämässä tilaa, tai lähetyksessä tulee pidempi katkos, esimerkiksi verkkohäiriön sattuessa. Tilatieto päivittyy palvelimelle toteutuneen mukaisesti, kun tiedonkeruuyksikkö toipuu verkkohäi- riöstä. Tilatiedon voimassaoloajan säännöllinen päivitys nopeuttaa ja helpottaa koneen tilan seurantaa, sekä mahdollistaa mahdolliset palvelimelta tiedonkeruuyksikölle säännöl- lisin väliajoin lähetettävät viestit. Tiedonkeruuyksikön ja palvelimen välillä ei ole pysyvää yhteyttä, eikä palvelimelta tiedonkeruuyksikölle voida lähettää muuten viestejä. Laskettaessa käyttöaikasuhdetta halutulta aikaväliltä, lasketaan kunkin tilan voimassao- loajat yhteen ja jaetaan aikavälin pituudella. Kun halutaan laskea esimerkiksi särmäriltä, montako iskua tietyllä aikavälillä on saavu- tettu, lasketaan vain yhteen iskutilat, jossa aloitusaika osuu kyseiselle aikavälille. 3.7.2. Tiedonkeruuyksiköt Raspberry Pi tiedonkeruuyksiköissä on yksi ajettava ohjelma jokaista mittauskohdetta kohden. Ohjelma on toteutettu Python-kielellä. Asennusohjeet tiedonkeruuyksikölle ovat liitteessä LIITE 1 kohdassa 1.5.. Ohjelma on jaettu kahteen säikeeseen. Ensimmäinen säie huolehtii fyysisistä liitännöistä ja tiedon lukemista. Toinen säie huolehti tiedon lähettämisestä palvelimelle. Tieto kahden säikeen välillä puskuroidaan, mikäli tiedonsiirto palvelimelle keskeytyy. 3.7.3. Autentikointi Tiedonkeruuyksiköiden autentikointi tapahtuu avaimen avulla, jolla tiedon lähetys palve- limelle sallitaan. Myös käyttöliittymän autentikointi tapahtuu avaimen avulla. Hallintaa ja 57 Tiedon vastaanottokone Onko ensimmäinen tilatieto, tai onko edellisen tilan voimas- saoloaika päättynyt? Onko edellinen tila eri kuin nykyinen tila? Päivitä edelliseen tilatietoon uusi voimassaoloaika. Päivitä edelliseen tilatietoon voimas- saoloajaksi uuden tilatiedon alkuaika. Lisää uusi tilatieto. Lopetus, OK ei kyllä ei kyllä Kuva 11: Tilan päivitys tiedonkeruuyksiköltä palvelimelle. Katkoviivalla on esitetty tiedonsiirto tiedonkeruuyksikön ja palvelimen välillä. datan visualisointia varten on oma avaimensa. 3.7.4. Käyttöliittymä Käyttöliittymä on toteutettu selainpohjaisesti. Sivusto voi sijaita periaatteessa missä tahan- sa, mistä selain voi sivuston ladata. Kaikki toiminnallinen osa on toteutettu JavaScriptillä, jolla myös muuttuva tieto haetaan palvelimelta. JavaScript-ohjelma ladataan kerran pal- velimelta, jonka jälkeen näkymän vaihtuessa sivustoa ei ladata palvelimelta uudelleen. Näkymän vaihto tapahtuu JavaScript-ohjelman sisäisellä reitityksellä. Aivan kuten pal- velinkin, myös selaimella ajettavan JavaScript-ohjelmiston sisäinen reititys on toteutettu 58 soveltaen REST API:n henkeä. Selaimen osoiterivillä näkyvä osoite vastaa aina tiettyä nä- kymää. Osoiteriville voidaan suoraan syöttää haluttu näkymän tyyppi, valittu koneryhmä ja kone. Selaimen osoiterivillä oleva linkki toimii aina samalla tavalla, mikäli tallennettu tieto ei muutu. Kaikki tiedon haku palvelimelta tapahtuu asynkronisesti, eikä selaimen ti- laa tallenneta mitenkään. Poikkeuksena on autentikointiavain, joka tallennetaan selaimen muistiin. Autentikointiavain syötetään joko sivulla olevaan avain-kenttään tai se annetaan osoiteri- ville Key –argumentilla, joka poistuu osoiteriviltä autentikoinnin jälkeen. Autentikointia- vaimen syöttö osoiteriviltä on tarkoitettu vain infonäytölle. Käyttöliittymän rakenne on toteutettu AngularJS JavaScript kirjaston avulla. Käyttöliitty- män yksi osa koostuu yhdestä html-sivusta, johon upotetaan eri toiminnallisuudet JavaSc- riptillä. Käyttöliittymä on jaettu kahteen osaan, hallintaan ja datan visualisointiin. Hallinta-osassa voidaan mm. lisätä koneita järjestelmään. Datan visualisointi on toteutettu D3.js JavaScript kirjaston avulla. Kuvaajat luodaan suo- raan HTML-sivuun SVG-grafiikalla. Käyttöliittymä on tarkoitettu käytettäväksi erikokoisilla näytöillä, joten se on suunniteltu responsiiviseksi, eli näytettävä tieto mukautuu käyttöliittymän kokoon. Selaimet osaavat toki rivittää tekstit näytön koon mukaan. Haastavaksi suunnittelu tulee siinä vaiheessa, kun esimerkiksi kuvaajien halutaan täyttävän näytöltä kaiken käytettävissä olevan tilan. Vielä haastavampaa on saada useita kuvaajia näytölle siten, että kaikki ovat saman kokoisia. Monet ongelmat johtuvat siitä, että selain piirtää sivua ja samalla Javascript-ohjelmat luovat uutta sisältöä sivuun. Javasript-ohjelmassa saadaan kyllä selville minkä kokoinen elementti sivusta on varattu, mutta sivun piirtämisen ollessa kesken, samankokoiseksi tarkoitetut elementit voivatkin olla eri kokoisia Javascript-ohjelman suoritusajankohdasta ja -järjestyksestä riippuen. Ongelma esiintyy lähinnä silloin, kun halutaan sovittaa kuvaaja 59 käyttämään sille varatun pystysuuntaisen tilan. Kun kuvaajalle annetaan vakio korkeus ongelma poistuu. Kun sivulla on useita Javascript-ohjelmalla toteutettuja elementtejä ja niiden välillä on keskinäisiä riippuvuuksia, suoritusjärjestyksellä on suuri merkitys. Olen myös aiemmin tehnyt selainpohjaisia käyttöliittymiä ja voin todeta, että toiminnal- lisuuden siirtäminen palvelimelta selaimelle helpottaa käyttöliittymän kehitystä huomat- tavasti. Tarvitaan vain rajapinta tiedon siirtoon palvelimen ja selaimen välillä. Lisäksi käyttöliittymän toiminta voi olla paljon nopeampaa, kun koko sivua ei tarvitse ladata uu- delleen kaikille toiminnoille. Suuria tietomääriä visualisoitaessa selaimen toiminta käy kuitenkin hitaaksi, minkä takia oletuksena näytetäänkin tilanäkymä, jossa ei ole kaikkia yksityiskohtia. Tarvittaessa voidaan tarkastella tilanäkymää, jossa näkyy jokainen tilatie- don muutos sekunnin tarkkuudella. Kuvassa 12 on yleiskuva käyttöliittymästä. Tämä on oletusnäkymä, joka on myös taukotilassa sijaitsevassa infonäytössä. Kuvissa 13 ja 14 on yhden koneryhmän tilatieto ja käyttöaste yhdeltä päivältä. Tilatieto ja käyttöaste ovat myös erillisiä näkymiä, joita voidaan tarkastella koneryhmittäin tai konekohtaisesti. Kuva 12: Yleiskuva käyttöliittymästä, Kuvassa vasemmalla näkyy laitteiden tilatieto, vihreät palkit ovat päällä-tilatietoja. Oikealla näkyy koneiden käyttöaste. 60 Kuva 13: Särmärien tilatieto yhdeltä päivältä, vihreät palkit ovat päällä-tilatietoja. Kuva 14: Särmärien käyttöaste yhdeltä päivältä. Vasemmalla olevista luvuista ylempi on luettujen polkimen painallusten määrä ja alempi laskettu koneen käyttöaika (tunnit:minuutit:sekunit) 61 4. TULOSTEN TARKASTELU Kaikenkaikkiaan järjestelmä on otettu hyvin vastaan asiakasyrityksessä sekä johdon että työtekijöiden osalta. Sunnitelluista ominaisuuksista jäi toteuttamatta käyttöasteen vertailu viitearvoon, vertailu aamu- ja iltavuoron välillä, sekä viikonpäivien välinen vertailu. Usean eri näytettävän aikavälin tilalle valikoitui pelkkä vuorokauden näkymä, sekä päivittäisen käyttöaikasuhteen näyttö halutulta aikaväliltä. Vaikka kaikkia suunniteltuja ominaisuuksia ei toteutettu, on yksinkertainen järjestelmä helppokäyttöisyydessään osoittautunut hyödylliseksi. Järjestelmän käyttöönoton jälkeen laserin ja levyntyöstökeskuksen käyttöastetta on saatu nostettua niin paljon, että koneil- ta alkoivat loppua työt, koska koneiden kapasiteettia ei oltu myyty riittävästi. Sittemmin myyntiä on voitu lisätä. Työntekijöiden taukotilassa olevassa infonäytössä esitetty ajan- tasainen tilanne tuotantolaitteiden käyttöasteesta on aikaansaanut jopa pientä kilpailua työntekijöiden välillä. 4.1. Todettuja ongelmia Ohjelmointivirheiden lisäksi käytössä ilmeni myös joitain laiteongelmia. Ongelmia tie- donkeruuyksiköiden kanssa on aiheuttanut joidenkin muistikorttien ilmeisesti heikosta laadusta johtuvat muistivirheet, jolloin käyttöjärjestelmä ei enää käynnisty. Infonäyttöä ohjaava Intel Compute Stick vaihdettiin Wi-Fi ongelmien takia pois ja tilalle otettiin Rasp- berry Pi 3. 4.2. Parannuskohteita Tekniset perusratkaisut osoittautuivat pääosin toimiviksi. Varsinaisen diplomityöosuuden valmistumisen jälkeen järjestelmää on jatkokehitetty. Jatkokehityksessä AngularJS vaihtui uudempaan Angular 4 kirjastoon. 62 Suurilla tietomäärillä tietokannan käsittely käy hitaaksi. Haettaessa suuria tietomääriä tietokannasta Python-MySQL –rajapinta aiheuttaa hitautta. Myös tietokannan kasvaessa osa MySQL-tietokannan toiminnoista hidastuu selvästi. Osa tietokannan nopeusongelmis- ta on ratkaistavissa ohjelmallisesti, kenties käyttämällä eri tietokantarajapintaa. Suurilla tietomäärillä MySQL:n tilalle tulisi mahdollisesti jokin HBase-pohjainen ratkaisu. 63 5. YHTEENVETO Kokeilujeni perusteella en voi suositella mitään yksittäistä valmista IoT-ratkaisua tai pil- vipalvelua ensisijaisena vaihtoehtona. IoT-ratkaisun voi toteuttaa monilla eri tekniikoilla. Olennaisempaa on, mitä erikoistarpeita järjestelmältä vaaditaan, sekä mitä vaatimuksia mahdollisesti olemassa oleva infrastruktuuri edellyttää. Käytetyt menetelmät voi valita tarpeen ja osaamisen mukaan. On eri asia tehdä prototyyppi, kuin laaja vuosia käytössä oleva järjestelmä. Prototyypin teossa voi käyttää jotain helppoa ja yksinkertaista. ThingS- peak esimerkiksi sopii erinomaisesti prototyyppi ja demoalustaksi. Tässä rakennetussa järjestelmässä ei ole mitään uutta tekniikkaa, eikä mitään yksittäistä osaa mitä ei olisi jo jossain muualla tehty. Kokonaisuuden rakentaminen vaatii kuitenkin ohjelmointia. Ohjelmoinnin ja koko työn kannalta suurin työ on ollut datan visualisoinnissa ja käyttöliittymän tekemisessä. Vaikka ohjelmointi vaatiikin paljon työtä, vaati paljon aikaa myös käytettävien tekniikoiden ja järjestelmien vertailu ja opiskelu. Mielestäni tärkeimpiä asioita IoT-ratkaisun rakentamisessa on hallittava kokonaisuus, jo- ka voidaan saavuttaa hyvin toteutetuilla rajapinnoilla. Järjestelmää ei kuitenkaan saada kerralla valmiiksi, joten järjestelmän eri osioita on pystyttävä päivittämään toisistaan riip- pumatta. Myös skaalautuvuus on otettava huomioon. Järjestelmän rakenteessa on parempi varautua nykyistä hieman suurempaan järjestelmään. Vaikka onkin hyvä varautua tuleviin lisäyksiin, liian yleiskäyttöinen järjestelmä voi kuitenkin tuoda turhaa lisäkuormaa koko järjestelmään. Javascript-pohjainen selainkäyttöliittymä on mielestäni hyvä vaihtoehto erilliselle tieto- koneessa ajettavalle sovellukselle. Sovelluksesta ei tarvita eri versioita eri alustoille ja järjestelmä saadaan toimimaan kaikilla alustoilla, joissa vain on riittävän uusi selain. Tosin näytön koko ja eri käyttötavat on otettava huomioon. Monet sovellukset ovatkin viimeaikoina siirtyneet verkossa toimiviksi palveluiksi. 64 Tietokannan suorituskykyyn en ole täysin tyytyväinen, vaikkakin sain sitä rakennetta muuttamalla parannettua huomattavasti, alkuperäisiin suunnitelmiin verrattuna. Selaimen suorituskyky suurilla tietomäärillä aiheutti myös ongelmia. Tiedonkeruuyksikkönä on ollut vain Raspberry Pi 3, mutta palvelimen olen asentanut ongelmitta usealle eri alustalle. Työstä oli posteri esillä Suomen automaatioseuran järjestämässä Automaatiopäivät22 – tapahtumassa 23.-24.3.2017 Vaasassa. 65 LÄHDELUETTELO Amazon (2017). AWS IoT - Amazon Web Services. [Online; siteerattu 22.11.2017]. url: http://www.chartjs.org/. Angular (2017). Angular. [Online; siteerattu 14.11.2017]. url: https://angular.io. AngularJS (2017). AngularJS. [Online; siteerattu 14.11.2017]. url: https : / / angularjs.org. Blixa Morgan, Brendan T. Hill (2017). the thing system. [Online; siteerattu 23.11.2017]. url: http://thethingsystem.com/. Bostock, Mike (2017). D3.js. [Online; siteerattu 14.11.2017]. url: https://d3js.org/. Chart.js (2017). Chart.js. [Online; siteerattu 14.11.2017]. url: http://www.chartjs. org/. Crisan, Calin (2017). motionEyeOS. [Online; siteerattu 31.3.2017]. url: https : / / github.com/ccrisan/motioneyeos/wiki/FAQ. Drill (2016). Apache Drill. [Online; siteerattu 19.12.2016]. url: http : / / drill . apache.org. Element14 (2016). Raspberry Pi 3 Model B Technical Specifications. [Online; siteerattu 27.11.2016]. url: https://www.element14.com/community/docs/DOC-80899/ l/raspberry-pi-3-model-b-technical-specifications. http://www.chartjs.org/ https://angular.io https://angularjs.org https://angularjs.org http://thethingsystem.com/ https://d3js.org/ http://www.chartjs.org/ http://www.chartjs.org/ https://github.com/ccrisan/motioneyeos/wiki/FAQ https://github.com/ccrisan/motioneyeos/wiki/FAQ http://drill.apache.org http://drill.apache.org https://www.element14.com/community/docs/DOC-80899/l/raspberry-pi-3-model-b-technical-specifications https://www.element14.com/community/docs/DOC-80899/l/raspberry-pi-3-model-b-technical-specifications 66 Fielding, Roy Thomas (2000). Representational State Transfer (REST). [Online; siteerattu 18.1.2017]. url: http://www.ics.uci.edu/~fielding/pubs/dissertation/ rest_arch_style.htm. Fredrich, Todd (2016). REST API Tutorial. [Online; siteerattu 19.12.2016]. url: http: //www.restapitutorial.com/lessons/whatisrest.html. GE (2017). Predix | Industrial Cloud-Based Platform (PaaS) | GE Digital. [Online; sitee- rattu 22.11.2017]. url: https://www.ge.com/digital/predix. Google (2017a). Choosing a Storage Option | Google Cloud Platform. [Online; siteerattu 23.11.2017]. url: https://cloud.google.com/storage-options/. Google (2017b). Google Cloud Platform. [Online; siteerattu 7.2.2017]. url: https: //cloud.google.com/. Google (2017c). IoT-Ticket, the Office Suite for Internet of things. [Online; siteerattu 22.11.2017]. url: https://cloud.google.com/solutions/iot/. gRPC (2016). gRPC. [Online; siteerattu 19.12.2016]. url: http://www.grpc.io. Hadoop (2016). Apache Hadoop. [Online; siteerattu 19.12.2016]. url: http://hadoop. apache.org. HBase (2016). Apache HBase. [Online; siteerattu 19.12.2016]. url: http://hbase. apache.org. Hive (2016). Apache Hive. [Online; siteerattu 19.12.2016]. url: http://hive.apache. org. http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm http://www.restapitutorial.com/lessons/whatisrest.html http://www.restapitutorial.com/lessons/whatisrest.html https://www.ge.com/digital/predix https://cloud.google.com/storage-options/ https://cloud.google.com/ https://cloud.google.com/ https://cloud.google.com/solutions/iot/ http://www.grpc.io http://hadoop.apache.org http://hadoop.apache.org http://hbase.apache.org http://hbase.apache.org http://hive.apache.org http://hive.apache.org 67 IBM (2017a). IBM Bluemix. [Online; siteerattu 7.2.2017]. url: https://console.ng. bluemix.net/. IBM (2017b). IBM Watson Internet of Things (IoT). [Online; siteerattu 22.11.2017]. url: http://www.ibm.com/internet-of-things/. KaaIoT (2017). Kaa Open-Source IoT Platform 2017. [Online; siteerattu 22.11.2017]. url: https://www.kaaproject.org/. Mathworks (2017). IoT Analytics - ThingSpeak Internet of Things. [Online; siteerattu 23.11.2017]. url: https://thingspeak.com/. Microsoft (2017a). Microsoft Azure. [Online; siteerattu 24.11.2017]. url: https:// docs.microsoft.com/fi-fi/azure/iot-hub/. Microsoft (2017b). Microsoft Azure. [Online; siteerattu 24.11.2017]. url: https:// developer.microsoft.com/en-us/windows/iot. Microsoft (2017c). Microsoft Azure. [Online; siteerattu 7.2.2017]. url: https://azure. microsoft.com. Microsoft (2017d). Windows Subsystem for Linux Documentation. [Online; siteerattu 10.11.2017]. url: https://msdn.microsoft.com/en-us/commandline/wsl/ about. Pig (2016). Apache Pig. [Online; siteerattu 19.12.2016]. url: http://pig.apache.org. Raspberry (2016). Raspberry Pi 3 model b. [Online; siteerattu 15.11.2016]. url: https: //www.raspberrypi.org/products/raspberry-pi-3-model-b/. https://console.ng.bluemix.net/ https://console.ng.bluemix.net/ http://www.ibm.com/internet-of-things/ https://www.kaaproject.org/ https://thingspeak.com/ https://docs.microsoft.com/fi-fi/azure/iot-hub/ https://docs.microsoft.com/fi-fi/azure/iot-hub/ https://developer.microsoft.com/en-us/windows/iot https://developer.microsoft.com/en-us/windows/iot https://azure.microsoft.com https://azure.microsoft.com https://msdn.microsoft.com/en-us/commandline/wsl/about https://msdn.microsoft.com/en-us/commandline/wsl/about http://pig.apache.org https://www.raspberrypi.org/products/raspberry-pi-3-model-b/ https://www.raspberrypi.org/products/raspberry-pi-3-model-b/ 68 Raspberry (2017). GPIO: Models A+, B+, Raspberry Pi 2 B and Raspberry Pi 3 B. [Online; siteerattu 3.2.2017]. url: https://www.raspberrypi.org/documentation/ usage/gpio-plus-and-raspi2/README.md. Spark (2016). Apache Spark. [Online; siteerattu 19.12.2016]. url: http://spark. apache.org. Storm (2016). Apache Storm. [Online; siteerattu 19.12.2016]. url: http://storm. apache.org. Thinger.io (2017). Thinger.io - Open Source IoT Platform. [Online; siteerattu 23.11.2017]. url: https://thinger.io/. Wapice (2017). AWS IoT - Amazon Web Services. [Online; siteerattu 25.11.2017]. url: https://www.iot-ticket.com/. https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/README.md https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/README.md http://spark.apache.org http://spark.apache.org http://storm.apache.org http://storm.apache.org https://thinger.io/ https://www.iot-ticket.com/ 69 LIITE 1 Asennusohjeet 1.1. Linux Raspbian Jessie Lite –asennus Raspbian on ladattavissa osoitteessa: https://downloads.raspberrypi.org/raspbian_lite_latest Levykuva voidaan kirjoittaa sd-kortille käyttämällä Win32DiskImager nimistä Windows- ohjelmaa. Ohjelma on ladattavissa osoitteessa: https://sourceforge.net/projects/win32diskimager/ Samalla ohjelmalla voidaan lukea sd-kortista levykuva, jolloin asetusten tekemisen jälkeen sd-kortti voidaan helposti monistaa käyttövalmiiksi muita tiedonkeruuyksiköitä varten. Ennen Wi-Fin asennusta, on käyttöjärjestelmään kirjauduttava paikallisesti. Raspbian ole- tus käyttäjätunnus on pi ja salasana on raspberry. Konfiguroi Raspberry Pi suorittamalla komento: sudo raspi-config Aseta käyttöjärjestelmä käyttämään koko SD korttia, valitsemalla ’1 Expand Filesystem’. Aseta maa-asetukset, aikavyöhyke ja Wi-Fi maa-asetus. Aktivoi myös SSH- palvelin kohdasta ’7 Advanced Options’. Wi-Fi asennus, kun IP-osoite haetaan automaattisesti DHCP-palvelimelta: https://thepihut.com/blogs/raspberry-pi-tutorials/ 83502916-how-to-setup-wifi-on-raspbian-jessie-lite sudo nano /etc/wpa_supplicant/wpa_supplicant.conf https://downloads.raspberrypi.org/raspbian_lite_latest https://sourceforge.net/projects/win32diskimager/ https://thepihut.com/blogs/raspberry-pi-tutorials/83502916-how-to-setup-wifi-on-raspbian-jessie-lite https://thepihut.com/blogs/raspberry-pi-tutorials/83502916-how-to-setup-wifi-on-raspbian-jessie-lite 70 Muokkaa tiedostoon oikea SSID ja salasana. country=FI ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="Pi_AP" psk="Raspberry" } Käynnistä uudelleen: sudo reboot Tämän jälkeen järjestelmään voidaan kirjautua verkon yli SSH:lla. Asennetaan käyttöjärjestelmän päivitykset: sudo apt-get update sudo apt-get dist-upgrade 1.2. Linux Raspbian Jessie with PIXEL –asennus Käyttöjärjestelmä käynnistyy suoraan graafiseen käyttöliittymään, jolloin Wi-Fi asennus voidaan hoitaa helposti oikean yläkulman kuvakkeista. Kun Wi-Fi on asennettu, voidaan käyttöjärjestelmän päivitykset tehdä, kuten Raspbian Jessie Lite –asennuksessakin. Graafista etähallintaa varten katso kohta 1.8.2.. 1.3. Wi-Fi testaus Wi-Fi signaalin voimakkuutta voidaan seurata ohjelmalla nimeltä wavemon. Asennus ja ohjelman käynnistys: sudo apt-get install wavemon wavemon 71 Myös komennolla iwconfig, saadaan nopeasti hetkellinen signaalin voimakkuus. Kokeiltaessa, kahden Raspberry Pi 3:n välillä yhteys katkeaa aiemmin, kuin Raspberry Pi 3:n ja kannettavan tietokoneen välillä, joten Raspber