Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (2.2%) to scientific vocabulary
Last synced: 10 months ago · JSON representation ·

Repository

Basic Info
  • Host: GitHub
  • Owner: SeAMKedu
  • License: cc-by-4.0
  • Language: Python
  • Default Branch: main
  • Size: 4.07 MB
Statistics
  • Stars: 0
  • Watchers: 3
  • Forks: 0
  • Open Issues: 0
  • Releases: 3
Created almost 3 years ago · Last pushed over 2 years ago
Metadata Files
Readme Citation

README.md

DOI

Älykkäät teknologiat ESR Vipuvoimaa ELY-keskus SeAMK

Laserleikkurin datan keruu ja visualisointi

Yhden piirilevyn tietokone, johon on rakennettu Python sovellus keräämään dataa toisesta laitteesta ja lähettämällä sitä MariaDB / MySQL tietokantaan. Raspberry Pi:stä lähtee kolme GPIO pinniä jotka ottaa yhteyden toiseen laitteeseen. Tässä työssä on otettu yhtyes laitteeseen hyödyntäen releitä jotka sieppaavat signaaleja. Python koodi on keskeneräinen, mutta käytetään tuotannossa. Sovelluksia joita käytetään Windows tietokoneella: - Putty (SSH yhteyden muodostaminen) - Raspberry Pi Imager (Käyttöjärjestelmän asennus SD-kortille) - Visual Studio Code - Python 3.7 - MariaDB (jos tietokanta asennetaan tietokoneelle ja dataa tuodaan Raspberry Pi:stä) - MariaDB ODBC Connector 3.1.X (Vaaditaan Power BI:n kanssa, että yhteys voidaan muodostaa) - HeidiSQL (Asentuu MariaDB sovelluksen yhteydessä halutessa) - Power BI (Kaavioiden luontiin ja datan visualisointi)

Julkaisun historiatiedot

Merkittävät muutokset julkaisuun

|pvm|Muutokset|Tekijä| |---|---|---| |21.6.2023|Versio 1.0 julkaisu|Saku Kaarlejärvi| |21.6.2023|Zenodo julkaisu|Saku Kaarlejärvi| |8.8.2023|Versio 1.1 julkaisu|Saku Kaarlejärvi| |24.8.2023|Versio 1.2. Päivitetty DOI ja ohjelmakoodia|Saku Kaarlejärvi| |20.11.2023|Versio 1.3 Power Bi raportti osuus|Saku Kaarlejärvi|

Sisällysluettelo

Teknologiapilotti

TehoData-hankkeen pilotissa 3 pyrittiin luomaan tuotannon seurannan datankeruu sovellus hyödyntäen yhdenpiirilevyn tietokonetta ja avoimen lähdekoodin tietokantaa.

Hanketiedot

  • Hankkeen nimi: Datasta ketteryyttä ja uutta liiketoimintaa Etelä-Pohjanmaan pk-yrityksiin (TehoData)
  • Rahoittaja: Keski-Suomen ELY/ Euroopan sosiaalirahasto ESR
  • Aikataulu: 1.9.2021–31.10.2023 Hanke rahoitetaan REACT-EU-välineen määrärahoista osana unionin covid-19-pandemian johdosta toteuttamia toimia. TehoDatan hankesivut löytyvät osoitteesta https://projektit.seamk.fi/alykkaat-teknologiat/tehodata/

Kuvaus

Python koodi jolla kerätään dataa lähettämällä sitä MariaDB / MySQL tietokantaan. Raspberry Pi:stä lähtee kolme GPIO pinniä jotka ottaa yhteyden toiseen laitteeseen. Tässä työssä on otettu yhtyes laitteeseen hyödyntäen releitä jotka sieppaavat signaaleja.

Tavoitteet

Pilotissa kehitettiin sovellusta Raspberry Pi 4 laitteelle jolla pystytään keräämään dataa seuratakseen tuotantoa. Kerättyä dataa pystytään visuaalisesti katsoa kaavioista.

Toimenpiteet

Raspberry Pi 4 valmisteltiin pilottiyritystä varten tuotannon seurantaan. Kyseiselle Raspberry Pi:lle kehitettiin sovellus jolla pystytään kaappaamaan kolmesta eri pinnistä dataa. Nämä datat tuovat esille, onko laite sammutettu, käynnistetty, odottamassa toimeenpiteitä ja leikkaustilassa. Python -ohjelmointikielellä rakennettu sovellus luo näistä tiedoista dataa joka siirretään pilottiyrityksen omaan MariaDB tietokantaan, jota voidaan visuaalisesti käsitellä eri sovelluksissa.

Asennus ja käyttö

Vaadittavat asennekuset Windows -tietokoneelle

Lista sovelluksista: - Putty (SSH yhteyden muodostaminen) - Raspberry Pi Imager (Käyttöjärjestelmän asennus SD-kortille) - Visual Studio Code tai jokin muu IDE -sovellus - Python 3.7 - MariaDB (jos tietokanta asennetaan tietokoneelle ja dataa tuodaan Raspberry Pi:stä) - MariaDB ODBC Connector 3.1.X (Vaaditaan Power BI:n kanssa, että yhteys voidaan muodostaa) - HeidiSQL (Asentuu MariaDB sovelluksen yhteydessä halutessa) - Power BI (Kaavioiden luontiin ja datan visualisointi)

Tästä GitHub repositorista tarpeellisin ladattava on vain mariadbCon.py -tiedosto joka siirretään Raspberry Pi:lle / yhden piirilevyn tietokoneeseen.

Raspberry Pi tai vastaava yhden piirilevyn tietokone

Vaatimukset yhden piirilevyn tietokoneelta: - Vaihtoehtoisesti "Headless" debian käyttöjärjestelmä asennus. Pystytään Raspberry Pi Imager -sovelluksella esiasetukset (WLAN, kieli, käyttäjätili ja salasana) ja VNC yhteydellä etäyhteys laitteeseen. - Raspberry Pi (2 - 4) - GPIO pinnejä - Debian pohjautuva -linux distro. - Python versio 3.7. Python versio voidaan asentaa 3.10 asti, mutta vaatii vianselvityksiä saadakseen esim. GPIO pinnien toimimaan. Tässä esimerkissä asensin ohjeiden mukaan Python 3.9.16 version

MariaDB tietokannan asennus

Raspberry Pi:lle MariaDB/MySQL tietokanta ja tarvittaessa tietokannan hallintaan graafisella käyttöjärjestelmä Apache2 ja phpMyAdmin.

MariaDB serverin asennus Raspberryyn: sudo apt install mariadb-server

Asennuksen jälkeen on suoritettava MySQL Secure asennus sudo mysql_secure_installation

Terminaaliin Y/N vastauksia vaatimuksien mukaan.

Asennuksen jälkeen kirjaudutaan MariaDB serveriin syötetyillä "root" käyttäjätiedoilla. sudo mysql -u root -p MySQL kysyy asennuksessa syötettyä root -salasanaa. Syöttämällä sen varmistetaan MariaDB toimivuus.

MariaDB databasen luonti

Kirjauduttua sisään MariaDB tietokantaan, voidaan rakentaa oma tietokanta ja taulukko.

DROP DATABASE IF EXISTS db_esimerkki; CREATE DATABASE db_esimerkki;

Tietokanta "db_esimerkki" on luotu ja sille annetaan seuraavaksi taulukkotiedot.

Taulukon voi luoda käyttämällä GUI:ta käyttävää HeidiSQL:ää pöytäkoneella tai asennettaessa PHPMyAdmin ja Raspberry Pi:llä selaimen kautta. Tässä esimerkissä olen luonut HeidiSQL sovelluksella taulukon ja kopioinut skriptin siitä.

Taulukon luonti datasyöttöä varten:

HUOM!

Yleisesti "duration" eli kesto -dataa on hyvä mitata sekuntteina. mariadbCon.py tiedostossa luodaan "hh:mm:ss" dataa joka on virheellinen tapa merkata kesto. Power BI:ssä esimerkisi vaaditaan muuttaa "duration" data sekunteiksi pilkkomalla hh:mm:ss omiin osiinsa ja käyttämällä laskentakaavioita saadakseen oikean tuloksen ja muuntaa takaisin hh:mm:ss muotoon.

``` DROP TABLE if exists laserdata;

CREATE TABLE laserdata ( machine_id VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4generalci', start_time DATETIME NULL DEFAULT NULL, end_time DATETIME NULL DEFAULT NULL, duration VARCHAR(50) NULL DEFAULT NULL, isFault TINYINT(10) NULL DEFAULT NULL ) COLLATE='utf8mb4generalci' ENGINE=InnoDB ; ```

MariaDB:n käyttäjän luonti. Root ei ole suotavaa käyttää . "käyttäjänimi" ja "käyttäjänsalasana" kohdille laitetaan omat halutut tiedot.

DROP USER IF EXISTS käyttäjänimi; CREATE USER 'käyttäjänimi'@'%' IDENTIFIED BY 'käyttäjänsalasana'; GRANT SELECT, INSERT, DELETE, UPDATE ON db_esimerkki.laserdata TO 'käyttäjänimi'@'%'; FLUSH PRIVILEGES; Jos yhteysongelmia ilmenee käyttäjätilin kanssa, voidaan kokeilla syöttää oikeus jokaiselle IP osoittelle. Tämä ei ole suositeltavaa tietoturva syistä: CREATE USER 'käyttäjänimi'@'%.%.%.%' IDENTIFIED BY 'käyttäjänsalasana'; tai syöttää manuaalisesti IP osoite, josta pystytään ottamaan yhteyttä. Esim. CREATE USER 'käyttäjänimi'@'192.168.0.21' IDENTIFIED BY 'käyttäjänsalasana'; Tai reitittimen määrittämästä IP osoite alueelta: CREATE USER 'käyttäjänimi'@'192.168.0.%' IDENTIFIED BY 'käyttäjänsalasana';

Raspberry Pi:n vaadittavat asennukset Python Connectorille

sudo apt-get install libmariadb3 libmariadb-dev

MariaDB pip asennus importattavalle MariaDB paketille

```

Vanhempi

sudo python3 -m pip install mariadb ```

Jos yrittää asentaa uusinta versiota esim 1.1.6, tulee virhe ilmoitus:

× Getting requirements to build wheel did not run successfully. │ exit code: 2 ╰─> [1 lines of output] MariaDB Connector/Python requires MariaDB Connector/C >= 3.3.1, found version 3.1.16 [end of output] MariaDB 1.0.11 versio on uusin mahdollinen päivitys ARM pohjasille laitteille. Asentamalla mariadb==1.0.11 saa viimeisimmän päivityksen Raspberry:lle.

sudo python3 -m pip install mariadb==1.0.11

phpMyAdmin paketti

sudo apt install phpmyadmin

PHP asennusikkuna kysyy ensimmäisenä, mikä webserver palvelu asennetaan. Tässä esimerkissä Apache2 valitaan välilyönnillä ja siirrytään eteenpäin rivinvaihdolla. Asennus kyselee tietoja ja halutessa syötetään halutut tiedot, kuten PHPMyAdminin salasanat ja muut tärkeät tiedot.

Asennuksen jälkeen on muokattava Apache2 konfiguraatiotiedostoa.

sudo nano /etc/apache2/apache2.conf

Tekstieditori avaa Apache2.conf tiedoston jonne lisätään pohjalle koodi: Include /etc/phpmyadmin/apache.conf

CTRL - X ja Y ja Enter. Tiedostoon tehdyt muutokset tallennetaan.

Tarvittavat lisäpalvelut on asennettava, että PHPMyAdmin sivusto toimii apt install php7.4 libapache2-mod-php7.4 php7.4-mbstring php7.4-mysql php7.4-curl php7.4-gd php7.4-zip -y  

Apache2 palvelu on hyvä uudelleen käynnistää komennolla: sudo service apache2 restart

Komennolla "hostname -I" saadaan selville IP-osoite jolla päästään PHPMyAdmin sivulle. Esimerkkinä tulee näkyviin "192.168.0.21" ja tähän lisätään perään "/phpmyadmin" ``` hostname –I

192.168.0.21 `` Selaimeen voidaan syöttää osoitehttp://192.168.0.21/phpmyadmin` ja PHPMyAdmin kirjautumisvalikko pitäisi avautua.

Sovelluksen automaattinen käynnistys

Linux Distroille on kehitetty monenlaisia sovelluksen automaattisia käynnistyspalveluita ja käyttäjä itse saa päättää mitä haluaa käyttää tai hyödyntää. Tässä esimerkissä olen käyttänyt SystemD. Vaihtoehtoisesti suosittelen crontab yksinkertaisuuden takia.

Crontab

Crontab on yksinkertainen vaihtoehto laittamaan palveluita käyntiin laitteen käynnistyessä. Ohjeita löytyy erillaisille toiminnoille ja mitä halutaan saavuttaa vaikka Raspberry Pi / SBC käynnistyksessä. Asennusohjeita seuraamalla asennetaan Crontab terminaalista sudo apt install cron Tässä esimerkissä tein Raspberry Pi OS:n natiiville SystemD palvelulle käynnistyskäskyt.

SystemD startup konfigurointi

SystemD config example

Jos jostain syystä ei ole asennettuna systemd pakettia, se pystytään asentamaan komennolla: sudo apt install libsystemd-dev tälläisen paketinasennuksen jälkeen on suositeltavaa käynnistää laite uusiksi

Terminaaliin kirjoitetaan komento, jolla luodaan oma "Service" laitteelle. sudo nano /lib/systemd/system/rasplaser.service  korvaamalla "rasplaser" voidaan lisätä oma palvelunnimi. esim sudo nano /lib/systemd/system/omapalvelualoitussovellus.service.

Tässä esimerkissä loin rasplaser.service tiedoston jonne laitetaan halutut komennot ja määritykset käynnistyessä. Palvelu tiedostoon rasplaser.service lisätään seuraavat komennot:

``` [Unit]

Human readable name of the unit

Description=Python Script LaserMachine After=network.target multi-user.target [Service] User=pi Type=idle ExecStart=/usr/bin/python /home/pi/Desktop/sshVSC/mariadbCon.py [Install] WantedBy=multi-user.target ```

HUOM!

Kohta ExecStart= ja /home/pi/Desktop/sshVSC/mariadbCon.py on ohjelmakoodin sijainti. Varmista että sijainti on oikea ja olemassa laitteessa. Muuten sovellus ei tule käynnistymään

Tämä on tällä hetkellä minulla toimiva rasplaser.service tiedosto. README:n lopusta löytyy eri vaihtoehtoja ja havaittuja virheitä ja korjausehdotuksia.

CTRL - X ja Y ja Enter. Tiedostoon tehdyt muutokset tallennetaan.

Oikeudet lukea service käynnistyessä:

``` sudo chmod 755 /home/pi/Desktop/sshVSC/

sudo chmod 644 /lib/systemd/system/rasplaser.service ```

Terminaaliin on syötettävä sudo systemctl daemon-reload virkistääkseen käynnistyskomennot Raspberry:stä

``` sudo systemctl daemon-reload sudo systemctl enable rasplaser sudo systemctl start rasplaser

```

Terminaaliin kirjoitettu sudo systemctl enable rasplaser voidaan aktivoida luotu palvelu käynnistykseen. ``` $ sudo systemctl enable rasplaser Created symlink /etc/systemd/system/multi-user.target.wants/rasplaser.service → /lib/systemd/system/rasplaser.service.

`` Terminaaliin kirjoitettunasudo systemctl status rasplaser` nähdään, onko service aktiivinen

``` rasplaser.service - Python Script LaserMachine Loaded: loaded (/lib/systemd/system/rasplaser.service; disabled; vendor pr> Active: active (running) since Tue 2023-04-24 10:21:37 EET; 3s ago Main PID: 29502 (python) Tasks: 1 (limit: 8986) CPU: 134ms CGroup: /system.slice/rasplaser.service └─29502 /usr/bin/python /home/pi/Desktop/sshVSC/mariadbCon.py

Dec 20 18:21:37 rpam systemd[1]: Started Python Script LaserMachine.

`` Suorittamalla tämän jälkeensudo reboot -h nowvoidaan uudelleen käynnistyksen jälkeen tarkistaa toimiiko automaattinen palvelunkäynnistys. Kirjoittamalla uudelleensudo systemctl status rasplaser` komentoriville ja tarkista onko palvelu aktiivinen ja mikä "Main PID" palvelulla on. Ylhäällä huomataan palvelun olevan 29502, eli mitä suurempi luku, sitä myöhässä se käynnistyy. Uudelleen käynnistämällä selviää oikea "Main PID" luku.

``` ● rasplaser.service - Python Script LaserMachine Loaded: loaded (/lib/systemd/system/rasplaser.service; enabled; vendor pre> Active: active (running) since Tue 2023-04-24 10:30:28 EEST; 15s ago Main PID: 917 (python) Tasks: 2 (limit: 1629) CPU: 8.463s CGroup: /system.slice/rasplaser.service └─917 /usr/bin/python /home/pi/Desktop/sshVSC/mariadbCon.py

Apr 25 10:30:28 rpi3B systemd[1]: Started Python Script LaserMachine.

```

Python ohjelman käyttö

Tiedosto mariadbCon.py on ladattavissa ja siirrettävissä käyttöönottoa varten määritettyyn kansioon, kuten SystemD esimerkissäni olen käyttänyt /home/pi/Desktop/sshVSC/mariadbCon.py osoitetta. Python koodi tarvitsee muutoksia, jotka on mariadbCon.py -tiedostoon merkitty # -kommentteina.

Selitys visuaalisesti mikä on kommentti.

Risuaita rivinalussa on kommentti, jota ohjelma ei pysty lukemaan. Sinne voidaan kirjoittaa mitä vain eikä se häiritse ohjelman suorittamista.

Raspberry Pi:n GPIO pinnit selitettynä.

Pinni taulukko Raspberry PI:lle selitettynä

Tässä Python ohjelmassa ovat GPIO pinnit 23, 24 ja 25 ovat valittuna. Pinnit ovat järjestysluvuiltaan 16, 18 ja 22. Näihin kytketään kolme kytkintä joilla kerätään tuotantolaitteesta dataa.

| 23 | 24 | 25 | |---|---|---| |Laseri päällä|Laite on IDLE -tilassa|Laite on päällä|

Muutoksia ohjelmakoodiin

Ohjelmakoodiin on määritettävä muutoksia saadakseen se toimivaksi omaan käyttöön. Lataamalla ja siirtämällä mariadbCon.py -tiedoston on varmistettava, että se on SystemD käynnistyspalvelun mukaisesti rasplaser.service määritetyssä tiedostopolussa. Muuten ohjelma vain käynnisty ja ei tee mitään. Tätä polkua voidaan muokata omaan haluttuun sijantiin ja on tehtävät tarvittavat muutokset sovelluksen toimivuudeksi.

Tiedostopolun määrittely

Python ohjelmassa on rivillä 69 määritetty tiedostopolku alla olevan kuvanmukaisesti:

Tiedostopolku kuvankaappaus

Käyttäjätilikredentiaalit JSON tiedostoon

Tiedostopolun määrittelyn jälkeen on luotava kirjautumiskredentiaalit. Luodaan JSON -tiedosto esimerkiksi userconf.json. Tekstitiedostoa muokkaamalla pystytään lisäämään userconf.json tiedostoon kirjautumiskredentiaalit, jonka ohjelma lukee kirjautuakseen sisään määritettyyn MariaDB -tietokantaan.

Tekstitiedostoon lisätään käyttäjätilitiedot user ja password. Myös luetaan tiedostosta tietokannan IP-osoite host esimerkiksi 192.168.0.21 tai jos Raspberry PI:n omaan MariaDB tietokantaan, niin localhost. Tietokannan port on vakiona 3306 ja lopuksi määritetään database eli tietokanta, johon yhteys muodostetaan. Esimerkissä luotiin tietokanta db_esimerkki.

Alla on esimerkki tiedostosta userconf.json: { "user": "käyttäjänimi", "password": "käyttäjänsalasana", "host": "192.168.0.21", "port": 3306, "database": "db_esimerkki" }

Tiedoston voi ladata täältä. Tämän userconf.json tiedosto luonnin jälkeen on hyvä varmistaa, että ohjelmakoodi lukee oikean tiedoston saadakseen yhteyden MariaDB -tietokantaan. Kuvassa on esimerkki, missä pystytään tarkistamaan minkä tiedoston ohjelma lukee.

userconf kredentiaalitiedosto

Kuvassa ohjelma lukee jsonPath määritetystä tiedostopolusta userconfHome.json -tiedoston. Tämä pitää varmistaa, että yhteys onnistuu halutulle MariaDB -tietokannalle

Havaitut virheet ja ongelmatilanteet

Palvelu ei käynnisty Raspberry Pi:n yhtyedessä

-Tarkista verkkoyhteys, myös Wi-Fi yhteys jos langatonverkkoyhteys on käytössä.

Palvelu ei käynnisty laitteen käynnistyksen yhteydessä, mutta käynnistyy sudo systemctl restart omapalvelu.service jälkeen.

Tähän ongelmaan voi olla monta selitystä ja ratkaisuja.

Tarkista käynnistysprioriteetti

Ensimmäisenä testasin sudo systemctl status rasplaser.service komentoa tarkastaakseni ohjelman statuksen. Kaikki vaikutti hyvältä ja terminaali palautti tekstin:

pi@rpi3B:~ $ sudo systemctl status rasplaser.service ● rasplaser.service - Python Script LaserMachine Loaded: loaded (/lib/systemd/system/rasplaser.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2023-08-09 12:11:49 EEST; 2min 9s ago Main PID: 725 (python) Tasks: 1 (limit: 1629) CPU: 544ms CGroup: /system.slice/rasplaser.service └─725 /usr/bin/python /home/pi/Desktop/sshVSC/mariadbCon.py

Mitään ongelmaa ei ole havaittavissa ja palvelu pyörii aktiivisesti. Mutta käännettyäni kytkimen asentoa ja syöttämällä terminaaliin uudelleen sudo systemctl status rasplaser.service ilmestyy ongelma:

``` pi@rpi3B:~ $ sudo systemctl status rasplaser.service ● rasplaser.service - Python Script LaserMachine Loaded: loaded (/lib/systemd/system/rasplaser.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Wed 2023-08-09 12:14:21 EEST; 6s ago Process: 725 ExecStart=/usr/bin/python /home/pi/Desktop/sshVSC/mariadbCon.py (code=exited, status=1/FAILURE) Main PID: 725 (code=exited, status=1/FAILURE) CPU: 645ms

Aug 09 12:14:21 rpi3B python[725]: self.laserDataRead(machineid, starttime,endtime,duration, isFault) Aug 09 12:14:21 rpi3B python[725]: File "/home/pi/Desktop/sshVSC/mariadbCon.py", line 405, in laserDataRead Aug 09 12:14:21 rpi3B python[725]: self.stopMeasuringTimer(machineid, starttime, endtime, duration, isFa> Aug 09 12:14:21 rpi3B python[725]: File "/home/pi/Desktop/sshVSC/mariadbCon.py", line 321, in stopMeasuringTi> Aug 09 12:14:21 rpi3B python[725]: self.dataSendDb(machineid, starttime, end_time, duration, isFault) Aug 09 12:14:21 rpi3B python[725]: File "/home/pi/Desktop/sshVSC/mariadbCon.py", line 106, in dataSendDb Aug 09 12:14:21 rpi3B python[725]: self.conn.commit() Aug 09 12:14:21 rpi3B python[725]: AttributeError: 'mainClass' object has no attribute 'conn' Aug 09 12:14:21 rpi3B systemd[1]: rasplaser.service: Main process exited, code=exited, status=1/FAILURE Aug 09 12:14:21 rpi3B systemd[1]: rasplaser.service: Failed with result 'exit-code'. ```

Virhe: AttributeError: 'mainClass' object has no attribute 'conn'

Tästä on vaikea päätellä mikä olisi ongelmana. Tarkistamalla Raspberry Pi:lle luodoun rasplaser.service SystemD käynnistyslogiikka, voidaan päätellä että verkkoyhteys ongelma tai yhteydessä vikaa kun ollaan määritetty IP-osoitteet ja kredentiaalit.

Avattuani sudo nano /lib/systemd/system/rasplaser.service komennolla palvelun auki, tarkistin seuraavan osion: ``` [Unit]

Human readable name of the unit

Description=Python Script LaserMachine After=network.target multi-user.target `` [Unit]alueelta minulta puuttuiAfterkohdastanetwork.targetjoka odottaa verkonkäynnistymistä, ennen kuin se aloittaa palvelun. Korjattuani asian, Raspberry Pi odottaa network palvelun käynnistystä, kun se voi käynnistäärasplaser.service`:n.

Oikeuksien tarkistaminen

``` [Unit]

Human readable name of the unit

Description=Python Script LaserMachine After=network.target multi-user.target

[Service] User=root Type=idle ExecStart=/usr/bin/python3 -u /home/pi/Desktop/sshVSC/mariadbCon.py WorkingDirectory=/home/pi/Desktop/sshVSC Restart=on-failure RestartSec=10

[Install] WantedBy=multi-user.target ```

Kokemuksellani, User=pi ei aina löydä paketteja, joten voidaan vaihtoehtoisesti käyttää User=root käyttäjää Myös monen ongelmatilanteen jälkeen huomattiin, että lisäämällä rasplaser.service tiedostoon Restart=on-failure ja WorkingDirectory=/home/pi/jokinsijainti saadaan käynnistys toimimaan. Muista lähteistä löytyy hyvät ohjeet lisätä python skripti ja tärkeät tiedostot "järjestelmän" kansioihin, ettei tarvitse välittää chmod 755 tai muista oikeuksien lisäämisestä.

Näiden lisäksi, Python pakettien asennuksia voidaan joutua suorittamaan uudelleen. Paketit saattavat "kadota" tai "hukkua" käyttöoikeuksista JOS käytetään User=root käyttäjää palvelukonfiguraatiossa. Uudelleen asennukset on suositeltavaa tehdä sudo:lla saadakseen pääkäyttäjä oikeudet ja python3:lla varmistetaan että asennetaan oikealle Python versiolle paketit. Esimerkki komento terminaaliin: sudo python3 -m pip install [package-name]

Minulle ilmeni vastaavia ongelmia ja tiedä tarkempia syitä, mitkä tekijät ovat tuoneet nämä viat vastaan. Tälläisissä projekteissa on myös suotavaa rakentaa venv eli virtuaali ympäristö jonne asennetaan omat halutut ja tarvittavat paketit, sekä rasplaser.service tiedostoon määritetään sijainti mistä tämä sovellus ajetaan hyödyntäen virtuaali ympäristöä. Tässäkin tapauksessa, jos on syötetty arvot User=root palvelutiedostoon, on tärkeä myöntää kansiolle chmod 755 kirjoitus- ja lukuoikeudet.

NetworkManager vs. dhcpcd

``` [Unit]

Human readable name of the unit

Description=Python Script LaserMachine After=network.target multi-user.target [Service] User=pi Type=idle ExecStart=/usr/bin/python /home/pi/Desktop/sshVSC/mariadbCon.py [Install] WantedBy=multi-user.target ```

Viimeisimmässä havainnoissani huomasin virheen ja selvitin, miksei rasplaser.service lähtenyt käyntiin. After=network.target viivästyttää vielä Python skriptin aktivoinnin, että MariaDB / MySQL Service pystyvät aktivoitumaan. sudo systemctl status rasplaser antoi virheeksi, ettei kykenyt lukemaan MariaDB .json tiedosta, jossa on kirjautumistiedot.

Myös eri vaihtoehto ongelmien korjaamiseen on asentaa uusi NetworkManagerin. Tämä on stabiilimpi ja varmempi nettikonfiguroinneissa ja tulee korvaamaan nykyisen dhcpcd. Tarkemmat asennusohjeet löytyvät Stack Exchange sivustolta, mutta yksinkertaisesti:

``` sudo apt install network-manager network-manager-gnome

sudo systemctl enable NetworkManager sudo systemctl start NetworkManager sudo systemctl disable dhcpcd

sudo reboot -h now ```

On tärkeää tarkistaa DHCP -palvelun tila ettei se ole häiritsemässä taustalla.

``` pi@rpi3B:~ $ sudo systemctl status dhcpcd ● dhcpcd.service - DHCP Client Daemon Loaded: loaded (/lib/systemd/system/dhcpcd.service; enabled; vendor preset: enabled) Active: inactive (dead) Docs: man:dhcpcd(8)

```

Tulokset

Tulossa pian...

Power Bi raportti ja data Power BI raportti

Lisenssi

Dokumentit lisensoitu: - License: CC BY 4.0

Tekijät

Saku Kaarlejärvi

Owner

  • Name: Seinäjoki University of Applied Sciences
  • Login: SeAMKedu
  • Kind: organization
  • Location: Finland

Citation (CITATION.cff)

cff-version: 1.1.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Kaarlejärvi"
  given-names: "Saku"
title: "SeAMKedu/tehodata-lasercuttingmachine-data-collection: Initial release"
date-released: 2023-11-20
version: 1.0.2
url: "https://github.com/SeAMKedu/tehodata-lasercuttingmachine-data-collection"

GitHub Events

Total
Last Year