Raspberry Pi valvekaamera: Difference between revisions

From ICO wiki
Jump to navigationJump to search
 
(40 intermediate revisions by the same user not shown)
Line 1: Line 1:
Käesoleva artikli eesmärk on anda juhised, kuidas Raspberry Pi näitel oleks võimalik püsti panna valvesüsteem. Möödaminnes on juttu ka riistvara ühendamisest, kuid need teemad jäävad õppeaine skoobist välja ja seega pikemalt neil ei peatu (autori poolt valitud olulisemad viited sel teemal leiab artikli lõpust).
Käesoleva artikli eesmärk on anda juhised, kuidas Raspberry Pi näitel oleks võimalik püsti panna valvesüsteem ja seda lihtsaimal moel. Autor on valinud netist allatõmmatava lahenduse, kuid käsitletavad teemad ja viited on piisavad, et nende põhjal luua oma vajadustele põhinev süsteem. Artikkel ei keskendu kaamera jms peenseadistustele.


'''Artikkel eeldab sudo õigustes käskude sisestamist.'''
'''Artikkel eeldab sudo õigustes käskude sisestamist.'''
== Sissejuhatus ==
Raspberry Pi on väga laia kasutust leidnud ARM protsessoriga mikroarvuti, millest saab ehitada kõikvõimalikke erinevaid huvitavaid projekte, alustades programmeerimisplatvormist ja lõpetades heeliumpalliga stratosfääri lennutatud aerofotosid tegeva ilmajaamaga (High Altitude Ballooning, Near Space Photography). Raspberry Pi kaamera aga on üks paljudest moodulitest, mis lisab mikroarvutile kasutusala. Üks võimalikke väljundeid ongi valvesüsteem, mis turul olevate valmislahenduste kõrval on suhteliselt odav ja seadistatav igaühe soovide järgi.


== Süsteemi kirjeldus ==
== Süsteemi kirjeldus ==
Line 7: Line 10:
=== Eeldused ===
=== Eeldused ===
* Oskus lugeda tehnilisi dokumentatsioone
* Oskus lugeda tehnilisi dokumentatsioone
* Algteadmised linuxi käsureast
* Algteadmised GNU/Linuxi (edaspidi: Linux) käsureast
* Algteadmised programmeerimisest (et skriptide sisu mõista ja vastavalt vajadustele muuta)
* Algteadmised programmeerimisest (et skriptide sisu mõista ja vastavalt vajadustele muuta)
* Oskus käsitleda jootekolbi tuleb kasuks<ref group=ext>[https://learn.adafruit.com/adafruit-guide-excellent-soldering/common-problems Enam levinud vead jootmisel]</ref><ref group=ext>[https://learn.adafruit.com/adafruit-guide-excellent-soldering/preparation Kuidas joota]</ref>
* Oskus käsitleda jootekolbi tuleb kasuks<ref group="ext">[https://learn.adafruit.com/adafruit-guide-excellent-soldering/common-problems Enam levinud vead jootmisel]</ref><ref group="ext">[https://learn.adafruit.com/adafruit-guide-excellent-soldering/preparation Kuidas joota]</ref>
* Loomingulisus
* Loomingulisus


=== Riistvara ===
=== Riistvara ===
[[File:RPI_components.jpg|thumb|upright=1.2|alt=Komponendid|1-Komponendid]]
[[File:RPI_components.jpg|thumb|upright=1.2|Komponendid]]
* Raspberry Pi mikroarvuti<ref>Käesolevas artiklis on kasutatud Raspberry Pi 1 (Model B), kuid sobivad ka teised mudelid.</ref> (vt pildilt [[:File:RPI_components.jpg|1-Komponendid]])
* Raspberry Pi mikroarvuti<ref>Käesolevas artiklis on kasutatud Raspberry Pi 1 (Model B), kuid sobivad ka teised mudelid.</ref> (vt pildilt [[:File:RPI_components.jpg|Komponendid]])
* Pi kaameramoodul<ref>Ei sobi öövõtete jaoks.</ref> või Pi infrapuna kaameramoodul (Pi NoIR)<ref>Vajab infrapuna valgusallikat lisaks. Valgusallikana võib kasutada Raspberry Pi ametlikku öövaatlusmoodulit (night vision board, mis on müügil ka koos kaameraga) või Bright Pi lisakaarti (eelis on see, et on kasutatav nii tavakaameraga, kui ka öökaameraga. Lisaks on see, tänu kaardil oleva kiibi, 100% konfigureeritav. Võib ka ise meisterdada. Erinevaid sobivaid infrapuna kaarte võib teisigi leida, aga tasub eelnevalt juurde uurida voolutarbe ja võimalike probleemide kohta).</ref> (vt pilti [[:File:RPI_components.jpg|1-Komponendid]])
* Pi kaameramoodul<ref>Ei sobi öövõtete jaoks.</ref> või Pi infrapuna kaameramoodul (Pi NoIR)<ref>Vajab infrapuna valgusallikat lisaks. Valgusallikana võib kasutada Raspberry Pi ametlikku öövaatlusmoodulit (night vision board, mis on müügil ka koos kaameraga) või Bright Pi lisakaarti (eelis on see, et on kasutatav nii tavakaameraga, kui ka öökaameraga. Lisaks on see, tänu kaardil oleva kiibi, 100% konfigureeritav. Võib ka ise meisterdada. Erinevaid sobivaid infrapuna kaarte võib teisigi leida, aga tasub eelnevalt juurde uurida voolutarbe ja võimalike probleemide kohta).</ref> (vt pildilt [[:File:RPI_components.jpg|Komponendid]])
* 10 klass mälukaart<ref>Min. 8GB või suurem, kui on soov lokaalselt andmeid talletada.</ref> (vt pildilt [[:File:RPI_components.jpg|1-Komponendid]])
* 10 klass mälukaart<ref>Min. 8GB või suurem, kui on soov lokaalselt andmeid talletada.</ref> (vt pildilt [[:File:RPI_components.jpg|Komponendid]])
* Wifi pulk või LAN kaabel<ref>Raspberry Pi 3 on integreeritud wifiga.</ref> <ref name="toide">Võimalik on kasutada ka POE jagurit, et vähem juhtmeid oleks.</ref> (vt pildilt [[:File:RPI_components.jpg|1-Komponendid]])
* WiFi pulk või LAN kaabel<ref>Raspberry Pi 3 on integreeritud WiFi'ga.</ref> <ref>Võimalik on kasutada ka POE jagurit, et vähem juhtmeid oleks.</ref> (vt pildilt [[:File:RPI_components.jpg|Komponendid]])
* Toiteplokk (vt pildilt [[:File:RPI_components.jpg|1-Komponendid]])
* Toiteplokk (vt pildilt [[:File:RPI_components.jpg|Komponendid]])
* Korpus<ref>Sobivaks korpuseks võib kasutada ka pettekaameraid (dummy security camera), mis ebay's jms kohtades on kättesaadavad päris soodsa hinnaga. Pettekaamera puhul on võimalik ka ära kasutada nende infrapuna valgusallikat. Puuduseks on pettekaameratel see, et nad pole enamasti ilmastikukindlad ning valmistatud plastikust, kuid leidub ka kvaliteetsemaid. Kasutada võib ka päris valvekaamerate korpusi (CCTV encloser), mis tihti peale on kütteelemendiga. Kütteelemente müüakse ka eraldi.</ref>
* Korpus<ref>Sobivaks korpuseks võib kasutada ka pettekaameraid (dummy security camera), mis ebay's jms kohtades on kättesaadavad päris soodsa hinnaga. Pettekaamera puhul on võimalik ka ära kasutada nende infrapuna valgusallikat. Puuduseks on pettekaameratel see, et nad pole enamasti ilmastikukindlad ning valmistatud plastikust, kuid leidub ka kvaliteetsemaid. Kasutada võib ka päris valvekaamerate korpusi (CCTV encloser), mis tihti peale on kütteelemendiga. Kütteelemente müüakse ka eraldi.</ref>
* Klaviatuur
* Klaviatuur
Line 26: Line 29:
==== Lisad ====
==== Lisad ====
* Mälupulk
* Mälupulk
* PIR ehk infrapunaliikumisandur<ref>Alternatiivine võib kasutada Motion nimelist tarkvara, mis tuvastab liikumist videopildi muutuste põhjal</ref><ref group=ext>[https://github.com/Motion-Project/motion Tarkvaraline liikumise tuvastamise tarkvara Motion]</ref>
* PIR ehk infrapunaliikumisandur<ref>Alternatiivine võib kasutada Motion nimelist tarkvara, mis tuvastab liikumist videopildi muutuste põhjal</ref><ref group="ext">[https://github.com/Motion-Project/motion Tarkvaraline liikumise tuvastamise tarkvara Motion]</ref>
* Emane-emane ühendusjuhtmed PIR-ile, kui neid kaasas pole (jumper wire F/F)
* Emane-emane ühendusjuhtmed PIR-ile, kui neid kaasas pole (jumper wire F/F)
* Katkematu vooluallika tarbeks võib veel lisada ka akupanga<ref>Peab võimaldama samaaegselt laadimist ja toitmist.</ref>
* Katkematu vooluallika tarbeks võib veel lisada ka akupanga<ref>Peab võimaldama samaaegselt laadimist ja toitmist.</ref>
Line 32: Line 35:


=== Tarkvara ===
=== Tarkvara ===
* Raspbian operatsioonisüsteem<ref group=ext>[https://www.raspberrypi.org/downloads/raspbian/ Raspbian allalaadimine]</ref>
* Raspbian operatsioonisüsteem<ref group="ext">[https://www.raspberrypi.org/downloads/raspbian/ Raspbian allalaadimine]</ref>
* SD-kaardi formaatimise utiliit (nt Windows ja Mac: SD Formatter<ref group=ext>[https://www.sdcard.org/downloads/formatter_4/ SD Formatter allalaadimine]</ref>; Linux: GParted<ref group=ext>[https://gparted.org/download.php GParted allalaadimine]</ref>)
* SD-kaardi vormindamise haldusvahend (nt MS Windows (edaspidi: Windows) ja macOS: SD Formatter<ref group="ext">[https://www.sdcard.org/downloads/formatter_4/ SD Formatter allalaadimine]</ref>; Linux: GParted<ref group="ext">[https://gparted.org/download.php GParted allalaadimine]</ref>)
* lahti pakkija (nt Windows: 7-Zip<ref group=ext>[http://www.7-zip.org/ 7-Zip allalaadimine]</ref>; Linux: Unzip<ref group=ext>[http://www.info-zip.org/mans/unzip.html Unzip allalaadimine]</ref>; Mac: The Unarchiver<ref group=ext>[http://unarchiver.c3.cx/unarchiver The Unarchiver allalaadimine]</ref>)
* Lahti pakkija (nt Windows: 7-Zip<ref group="ext">[http://www.7-zip.org/ 7-Zip allalaadimine]</ref>; Linux: Unzip<ref group="ext">[http://www.info-zip.org/mans/unzip.html Unzip allalaadimine]</ref>; macOS: The Unarchiver<ref group="ext">[http://unarchiver.c3.cx/unarchiver The Unarchiver allalaadimine]</ref>)
* tõmmise kirjutamise utiliit (nt Etcher- toetab nii Windowsi, Linuxit kui ka Maci<ref group=ext>[https://etcher.io/ Etcher allalaadimine]</ref>)
* Tõmmise kirjutamise haldusvahend (nt Etcher- toetab nii Windowsit, Linuxit kui ka macOS'i<ref group="ext">[https://etcher.io/ Etcher allalaadimine]</ref>)
* SSH klient (Linux ja Mac: terminal; Windows: PuTTy või Bitvise<ref group=ext>[http://www.putty.org/ PuTTy või Bitvise allalaadimine]</ref>)
* SSH klient (Linux ja macOS: terminal; Windows: PuTTy või Bitvise<ref group="ext">[http://www.putty.org/ PuTTy või Bitvise allalaadimine]</ref>)
* RPi Cam Web Interface veebirakendus kõige kontrollimiseks<ref group="ext">[https://elinux.org/RPi-Cam-Web-Interface#Installation_Instructions RPi Cam Web Interface veebikeskkond]</ref>
* Meiliteavituste saatmiseks klient (nt sSMTP<ref group="ext">[https://wiki.debian.org/sSMTP Simple SMTP]</ref>)
'''''NB!''' Kuigi välja on toodud graafilise liidesega tarkvarad, siis õppe eesmärgil kasutatakse antud artiklis maksimaalselt käsurea vahendeid (sudo õigustes).''
'''''NB!''' Kuigi välja on toodud graafilise liidesega tarkvarad, siis õppe eesmärgil kasutatakse antud artiklis maksimaalselt käsurea vahendeid (sudo õigustes).''


=== Töövahendid ===
=== Töövahendid ===
[[File:DIY_tools.jpg|thumb|upright=0.8|alt=Töövahendid|2-Töövahendid]]
[[File:DIY_tools.jpg|thumb|upright=0.8|Töövahendid]]
* Jootmisvahendid
* Jootmisvahendid
* Kolmas käsi
* Kolmas käsi
Line 48: Line 53:
* Teip
* Teip
* jms
* jms
Töövahendid on pildil [[:File:DIY_tools.jpg|2-Töövahendid]]
Töövahendid on pildil [[:File:DIY_tools.jpg|Töövahendid]]


== Riistvara ühendamine<ref group=ext>[https://www.raspberrypi.org/documentation/hardware/raspberrypi/gpio/README.md Raspberry Pi General Purpose Input/Output]</ref><ref group=ext>[https://pimoroni.com/swag/pi/raspberry-pi-gpio-cheatsheet.pdf Raspberry Pi GPIO Cheat Sheet]</ref><ref group=ext>[http://www.doctormonk.com/2013/02/raspberry-pi-and-breadboard-raspberry.html Raspberry Leaf GPIO-le]</ref><ref group=ext>[https://docs.google.com/file/d/0B23BvTk93HRYOXVwbjVrWHRjbDg/edit Raspberry Leaf GPIO-le välja printimiseks]</ref> ==
== Riistvara ühendamine<ref group="ext">[https://www.raspberrypi.org/documentation/hardware/raspberrypi/gpio/README.md Raspberry Pi General Purpose Input/Output]</ref><ref group="ext">[https://pimoroni.com/swag/pi/raspberry-pi-gpio-cheatsheet.pdf Raspberry Pi GPIO Cheat Sheet]</ref><ref group="ext">[http://www.doctormonk.com/2013/02/raspberry-pi-and-breadboard-raspberry.html Raspberry Leaf GPIO-le]</ref><ref group="ext">[https://docs.google.com/file/d/0B23BvTk93HRYOXVwbjVrWHRjbDg/edit Raspberry Leaf GPIO-le välja printimiseks]</ref> ==


* NoIR kaamera ühendamine pildil [[:File:rpi_noir.jpg|3-NoIR kaamera ühendamine]]<ref group=src>[https://www.raspberrypi.org/documentation/usage/camera/README.md Kaamera ühendamine ja sisse lülitamine] Vaadatud: 28.10.2017</ref>
* NoIR kaamera ühendamine pildil<ref group="src">[https://www.raspberrypi.org/documentation/usage/camera/README.md Kaamera ühendamine ja sisse lülitamine] Vaadatud: 28.10.2017</ref>
[[File:rpi_noir.jpg|thumb|none|upright=1.5|alt=NoIR kaamera|3-NoIR kaamera ühendamine]]
[[File:rpi_noir.jpg|thumb|none|upright=1.5|alt=NoIR kaamera|NoIR kaamera moodul ühendatud plaadiga]]
Ühendada kaamera lintkaabel pessa selliselt, et kontaktid oleksid vastakuti (Raspberry Pi 1 B puhul kaabli kontaktid suunatud HDMI pesa poole).
 
* Bright Pi ühendamine pildil<ref group="src">[https://www.pi-supply.com/make/bright-pi-quickstart-faq/ Bright Pi kokkupanek, ühendamine ja testimine] Vaadatud: 29.10.2017</ref>
[[File:Brightpi.jpg|thumb|none|upright=1.5|alt=Bright Pi valgusti|Bright Pi ühendatud plaadiga]]
Bright Pi jootmisel sisestada LED'id selliselt, et lühem jalg on noole otstes.


* Bright Pi ühendamine pildil [[:File:Brightpi.jpg|4-Bright Pi ühendamine]]<ref group=src>[https://www.pi-supply.com/make/bright-pi-quickstart-faq/ Bright Pi kokkupanek, ühendamine ja testimine] Vaadatud: 29.10.2017</ref><ref group=src>[https://www.pi-supply.com/make/bright-pi-quickstart-faq/ Bright Pi koodi näited tuledele]</ref>
[[File:Brightpi.jpg|thumb|none|upright=1.5|alt=Bright Pi valgusti|4-Bright Pi ühendamine]]
Pildilt vaadatuna on juhtmed:
Pildilt vaadatuna on juhtmed:
# must - pin 6 (GND)
# must - pin 6 (GND)
Line 63: Line 71:
# lilla - pin 3 (SCL1/i2c)
# lilla - pin 3 (SCL1/i2c)


* PIR ühendamine<ref group=src>[https://www.modmypi.com/blog/raspberry-pi-gpio-sensing-motion-detection Liikumisanduri juhend] Vaadatud: 29.10.2017</ref>
* PIR ühendamine<ref group="src">[https://www.modmypi.com/blog/raspberry-pi-gpio-sensing-motion-detection Liikumisanduri juhend] Vaadatud: 29.10.2017</ref>
 
Juhtmed ühendatud:
Juhtmed ühendatud:
# pin 2 (5V)
# pin 2 (5V)
Line 69: Line 78:
# pin 20 (GND)
# pin 20 (GND)


* Kõik seadmed GPIO küljes pildil [[:File:Noir_pir_brightpi.jpg|5-NoIR + BrightPi + PIR]]
* Kõik seadmed GPIO küljes pildil
[[File:Noir_pir_brightpi.jpg|thumb|none|400px|alt=NoIR + BrightPi + PIR|5-NoIR + BrightPi + PIR]]
[[File:Noir_pir_brightpi.jpg|thumb|none|400px|NoIR + BrightPi + PIR]]


== Installeerimine<ref group=src>[https://www.raspberrypi.org/documentation/installation/installing-images/README.md Raspbiani installeerimine] Vaadatud: 25.10.2017</ref>==
== Paigaldamine<ref group="src">[https://www.raspberrypi.org/documentation/installation/installing-images/README.md Raspbiani paigaldamine] Vaadatud: 25.10.2017</ref>==
''Kuna vastavalt SD spetsifikatsioonile formaadivad tööriistad SD kaardid > 32GB vaikimisi ExFat failisüsteemi, aga Raspberry Pi GPU-le laetud alglaadur (bootloader) toetab vaid FAT16 ja FAT32 lugemist, siis tuleb SD kaardid üle formaatida FAT32-s. <ref group=src>[https://www.sdcard.org/developers/overview/capacity/ SD mahu standardid] Vaadatud 25.10.2017</ref><ref group=src>[https://www.raspberrypi.org/documentation/installation/sdxc_formatting.md SD kaardi konverteerimine Raspberry Pi tarbeks] Vaadatud 25.10.2017</ref>''
Valmistame ette mälukaardi Raspbiani operatsioonisüsteemiks.<ref group="src">[https://www.sdcard.org/developers/overview/capacity/ SD mahu standardid] Vaadatud 25.10.2017</ref><ref group="src">[https://www.raspberrypi.org/documentation/installation/sdxc_formatting.md SD kaardi vormindamine Raspberry Pi tarbeks] Vaadatud 25.10.2017</ref>


=== Mac ===
=== macOS ===
Kasutame käsurea utiliiti '''diskutil'''<ref group=ext>[https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man8/diskutil.8.html Mac OS X diskutil man page]</ref>.
Kasutame käsurea haldusvahendit '''diskutil'''<ref group="ext">[https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man8/diskutil.8.html Mac OS X diskutil man page]</ref>.


Alustame sellest, et kuvame kõik seadmed, mis süsteemile nähtavad on, et valmistada ette mälukaart. Kasutame selleks käsku <code>diskutil list [-plist] [device]</code>.
Alustame sellest, et kuvame kõik seadmed, mis süsteemile nähtavad on. Kasutame selleks käsku <code>diskutil list [-plist] [device]</code>.


'''Näide:'''
'''Näide:'''
Line 106: Line 115:
</source>
</source>


''Antud artiklis kasutame /dev/disk2 seadet sest see on meie mälukaart, kuhu me Raspbiani peale paneme.''
''Antud artiklis kasutame '''/dev/disk2''' seadet sest see on meie mälukaart, kuhu me Raspbiani peale paneme.''


Et näha, mis formaati saab konverteerida ja milline peab olema parameetri kirjapilt, kasutame käsku <code>diskutil listFilesystems [-plist]</code>.
Et näha, mis formaati saab vormindada ja milline peab olema parameetri kirjapilt, kasutame käsku <code>diskutil listFilesystems [-plist]</code>.


'''Näide:'''
'''Näide:'''
Line 143: Line 152:




Konverteerime mälukaardi FAT32 formaati ja paneme nimeks RASPBIAN (peab olema läbiva suure tähega). Kasutame selleks käsku <code>diskutil eraseDisk <format> <NAME> [APM[Format] | MBR[Format] | GPT[Format]] <device></code>.
Vormindame mälukaardi '''FAT32''' formaati ja paneme nimeks '''RASPBIAN''' (peab olema läbiva suure tähega). Kasutame selleks käsku <code>diskutil eraseDisk <format> <NAME> [APM[Format] | MBR[Format] | GPT[Format]] <device></code>.


'''Näide:'''
'''Näide:'''
Line 163: Line 172:
</source>
</source>


Laeme alla ja pakime lahti Raspbian operatsioonisüsteemi. Lahti pakkimiseks kasutame '''TAR'''<ref group=ext>[https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/tar.1.html Mac OS X TAR man page]</ref> utiliiti ja käsku <code>tar -xf <archive-filename></code>.
Laeme alla ja pakime lahti Raspbian operatsioonisüsteemi. Lahti pakkimiseks kasutame '''TAR'''<ref group="ext">[https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/tar.1.html Mac OS X TAR man page]</ref> haldusvahendit ja käsku <code>tar -xf <archive-filename></code>.


'''Näide (asukohaks kaust, kus pakk asub):'''
'''Näide (asukohaks kaust, kus pakk asub):'''
Line 170: Line 179:
</source>
</source>


Kirjutame lahti pakitud tõmmise mälukaardile '''dd'''<ref group=ext>[https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/dd.1.html Mac OS X dd man page]</ref> utiliidi käsuga <code>dd [bs=n if=[file] of=[file] conv=[value]]</code>.<ref group=src>[https://www.raspberrypi.org/documentation/installation/installing-images/mac.md  Raspbiani tõmmise installeerimine Mac OS-is.]Vaadatud: 25.10.2017</ref>
Kirjutame lahti pakitud tõmmise mälukaardile '''dd'''<ref group="ext">[https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/dd.1.html Mac OS X dd man page]</ref> haldusvahendi käsuga <code>dd [bs=n if=[file] of=[file] conv=[value]]</code>.<ref group="src">[https://www.raspberrypi.org/documentation/installation/installing-images/mac.md  Raspbiani tõmmise paigaldamine macOS'is.]Vaadatud: 25.10.2017</ref>


'''Näide:'''
'''Näide:'''
Line 192: Line 201:
4916772864 bytes transferred in 1716.593197 secs (2864262 bytes/sec)
4916772864 bytes transferred in 1716.593197 secs (2864262 bytes/sec)
</source>
</source>
Väljastame mälukaardi diskutiliidiga:
Väljastame mälukaardi diskutil haldusvahendiga:
<source lang="bash">
<source lang="bash">
diskutil eject /dev/disk2
diskutil eject /dev/disk2
Line 202: Line 211:


=== Linux ===
=== Linux ===
<span style="color:red">'''''TODO'''''</span>


=== Windows ===
=== Windows ===
Disk-Part Utility
Disk-Part haldusvahend
<source lang="bash">
<source lang="bash">
diskpart
diskpart
Line 216: Line 226:
format fs=fat32
format fs=fat32
</source>
</source>
<span style="color:red">'''''VAJAB TÄIENDAMIST'''''</span>


== Raspbiani seadistamine ==
== Raspbiani seadistamine ==
''Jätkamise eelduseks on, et eelinstalleeritud mälukaart on sisestatud Raspberry Pi lugejasse, wifi pulk ühendatud USB pessa<ref group=ext>[https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=23205 Kui Raspberry teeb restarti peale USB seadme külge panemist]</ref> ja Raspberry vooluvõrku ühendatud.''
''Jätkamise eelduseks on, et eelpaigaldatud mälukaart on sisestatud Raspberry Pi lugejasse, WiFi pulk ühendatud USB pessa<ref group="ext">[https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=23205 Kui Raspberry teeb restarti peale USB seadme külge panemist]</ref> ja Raspberry vooluvõrku ühendatud.''


'''''NB!''' Jätkuvalt tuleb käsud sisestada sudo õigustes.''
'''''NB!''' Jätkuvalt tuleb käsud sisestada '''sudo''' õigustes.''


=== WLAN seadistamine<ref group=src>[https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md Raspbiani wifi seadistamine üle käsurea] Vaadatud 25.10.2017</ref> ===
=== WLAN seadistamine<ref group="src">[https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md Raspbiani WiFi seadistamine üle käsurea] Vaadatud 25.10.2017</ref> ===
Kõige esimese asjana ühendame Raspberry Pi wifi võrku.
Kõige esimese asjana ühendame Raspberry Pi WiFi võrku.


Kui Raspbian on käima läinud, avame terminali (CTRL+ALT+T) ja skanneerime saadaval olevaid wifi võrke.
Kui Raspbian on käima läinud, avame terminali ('''CTRL+ALT+T''') ja skanneerime saadaval olevaid WiFi võrke.


'''Näide:'''
'''Näide:'''
Line 262: Line 273:
                     IE: Unknown: DD930050F204104A0001101044000102103B00010310470010000102030405060708090A0B0C..
                     IE: Unknown: DD930050F204104A0001101044000102103B00010310470010000102030405060708090A0B0C..
</source>
</source>
Lisame wifi võrgu üksikasjad nano teksti redaktoriga (või muu meelepärasega) konfiguratsiooni faili:
Lisame WiFi võrgu üksikasjad '''nano''' teksti redaktoriga (või muu meelepärasega) konfiguratsiooni faili:
<source lang="bash">
<source lang="bash">
nano /etc/wpa_supplicant/wpa_supplicant.conf
nano /etc/wpa_supplicant/wpa_supplicant.conf
</source>
</source>
Lisame faili lõppu read (oma wifi võrgu nime ja parooliga):
Lisame faili lõppu read (oma WiFi võrgu nime ja parooliga):
<source lang="bash">
<source lang="bash">
network={
network={
Line 273: Line 284:
}
}
</source>
</source>
Salvestame faili Ctrl+O kiirklahviga ning väljume failist Ctrl+X kiirklahviga.
Salvestame faili '''Ctrl+O''' kiirklahviga ning väljume failist '''Ctrl+X''' kiirklahviga.


Teeme seadistuse üle laadimise:
Teeme seadistuse üle laadimise:
Line 279: Line 290:
wpa_cli -i wlan0 reconfigure
wpa_cli -i wlan0 reconfigure
</source>
</source>
Kontrollime, kas saime IP aadressi oma wifi liidesele:
Kontrollime, kas saime IP aadressi oma WiFi liidesele:
<source lang="bash">
<source lang="bash">
ifconfig wlan0
ifconfig wlan0
Line 285: Line 296:
''Kui inet addr taga on IP, siis on kõik õigesti siiani.''
''Kui inet addr taga on IP, siis on kõik õigesti siiani.''


=== SSH<ref group=ext>[https://www.openssh.com/manual.html OpenSSH man page]</ref> ===
=== SSH<ref group="ext">[https://www.openssh.com/manual.html OpenSSH man page]</ref> ===
Lubame SSH. Vajalik, kuna alates november 2016 väljalaskest, on see vaikimisi keelatud<ref group=src>[https://www.raspberrypi.org/documentation/remote-access/ssh/ SSH lubamine Raspbianis] Vaadatud 25.10.2017</ref>. Selleks käivitame '''raspi-config'''<ref group=ext>[https://www.raspberrypi.org/documentation/configuration/raspi-config.md Raspbiani konfiguratsiooni fail RASPI-CONFIG]</ref> utiliidi.
Lubame SSH. Vajalik, kuna alates november 2016 väljalaskest, on see vaikimisi keelatud<ref group="src">[https://www.raspberrypi.org/documentation/remote-access/ssh/ SSH lubamine Raspbianis] Vaadatud 25.10.2017</ref>. Selleks käivitame '''raspi-config'''<ref group="ext">[https://www.raspberrypi.org/documentation/configuration/raspi-config.md Raspbiani seadistamise haldusvahend RASPI-CONFIG]</ref> haldusvahendi.


'''Näide:'''
'''Näide:'''
Line 293: Line 304:
</source>
</source>
Väljund:
Väljund:
[[File:raspi-config.png|thumb|none|700px|alt=raspi-config|raspi-config utiliit]]
[[File:raspi-config.png|thumb|none|700px|raspi-config haldusvahend]]
Valime "5 Interfacing Options"
Valime "'''5 Interfacing Options'''"


Seejärel valime "P2 SSH ..." ja kinnitame valiku "Yes" nupuga.  
Seejärel valime "'''P2 SSH ...'''" ja kinnitame valiku "'''Yes'''" nupuga.  


Väljume utiliidist "OK" ja "Finish" nuppudega.
Väljume haldusvahendist "'''OK'''" ja "'''Finish'''" nuppudega.


SSH-ga Raspberry Pi-sse ühendumiseks, avame Linux/Mac süsteemis terminali, Windowsis PuTTY , Bitvise vms säärase ssh kliendi ja sisestame käsu <code>ssh [kasutajanimi@ip_address]<ref>Raspberry Pi vaikimisi kasutajanimi on "pi" ja parool "raspberry".</ref></code>.
SSH-ga Raspberry Pi-sse ühendumiseks, avame Linux/macOS süsteemis terminali, Windowsis PuTTY , Bitvise vms säärase ssh kliendi ja sisestame käsu <code>ssh [kasutajanimi@ip_address]<ref>Raspberry Pi vaikimisi kasutajanimi on "pi" ja parool "raspberry".</ref></code>.


'''Näide:'''
'''Näide:'''
Line 310: Line 321:


=== Staatilised võrguaadressid ===
=== Staatilised võrguaadressid ===
Järgmisena paneme võrgukaartidele (LAN ja WLAN) staatilise ip. Selleks avame '''/etc/dhcpcd.conf''' faili (endale meelepärase teksti redaktoriga) ja lisame faili lõppu read (vastavalt oma ruuteri seadistustele):
Järgmisena paneme võrgukaartidele (LAN ja WLAN) staatilise ip. Selleks avame <code>/etc/dhcpcd.conf</code> faili (endale meelepärase teksti redaktoriga) ja lisame faili lõppu read (vastavalt oma ruuteri seadistustele):
<source lang="bash">
<source lang="bash">
interface eth0
interface eth0
Line 325: Line 336:
Salvestame muudatused ja väljume failist ning teeme restardi. Peale restarti peaksime saama määratud IP-le SSH ühenduse teha.
Salvestame muudatused ja väljume failist ning teeme restardi. Peale restarti peaksime saama määratud IP-le SSH ühenduse teha.


== Välise andmekandja seadistamine<ref group=src>[https://www.raspberrypi.org/documentation/configuration/external-storage.md Välise andmekandja seadistamine] Vaadatud 01.11.2017</ref> ==
== Välise andmekandja seadistamine<ref group="src">[https://www.raspberrypi.org/documentation/configuration/external-storage.md Välise andmekandja seadistamine] Vaadatud 01.11.2017</ref> ==
''Väline andmekandja peab ühendatud olema.''
 
Kasutame käsku <code>blkid</code>, et teada saada seadme asukoht ja '''uuid''', mille alusel me hiljem seadme automaatselt külge haakuma paneme.
Kasutame käsku <code>blkid</code>, et teada saada seadme asukoht ja '''uuid''', mille alusel me hiljem seadme automaatselt külge haakuma paneme.


Line 339: Line 350:
/dev/sda1: LABEL="1.42.6-15152" UUID="93548308-bfd1-4a12-b767-dbd0c2d7eee0" TYPE="ext4" PARTUUID="21ea6e75-01"
/dev/sda1: LABEL="1.42.6-15152" UUID="93548308-bfd1-4a12-b767-dbd0c2d7eee0" TYPE="ext4" PARTUUID="21ea6e75-01"
</source>
</source>
''Meid huvitav seade on antud juhul on '''/dev/sda1'''.''
''Meid huvitav seade antud juhul on '''/dev/sda1'''.''


Haagime seadme küljest lahti ja konverteerime ext4 failisüsteemiga.
Haagime seadme küljest lahti ja vormindame '''ext4''' failisüsteemiga.


'''Näide:'''
'''Näide:'''
Line 385: Line 396:
</source>
</source>


== Andmete ümbersuunamine välisele andmekandjale ==
''Saame nüüd soovi korral osa andmeid välisele andmekandjale suunata (nt logifailid ja kaamera meediafailid).''
=== Logide ümbersuunamine ===
 
== Valve seadistamine<ref group="ext">[https://elinux.org/RPi-Cam-Web-Interface Kiireim, lihtsaim, mugavaim viis kaamera valmis seada.]</ref> ==
 
=== Riistvara tööle panek ja testimine ===
 
==== Kaamera<ref group="ext">[https://media.readthedocs.org/pdf/picamera/latest/picamera.pdf PiCamera dokumentatsioon]</ref> ====
Käivitada '''raspi-config''' haldusvahend ja teha valikud vastavalt piltidele
{|style="margin: 0 auto;"
| [[File:raspi-config.png|thumb|none|400px|raspi-config haldusvahend]]
| [[File:enable_camera.png|thumb|none|300px|kaamera lubamine]]
|}
 
Testimiseks  teeme pildi.
 
'''Näide:'''
<source lang="bash">
raspistill -o pilt.jpg
</source>
 
==== Bright Pi ====
Toimida vastavalt piltidele.
{|style="margin: 0 auto;"
| [[File:raspi-config.png|thumb|none|350px|raspi-config haldusvahend]]
| [[File:i2c.png|thumb|none|350px|i2c lubamine]]
|}
Testimiseks kasutada käsku <code>i2cdetect -y 1</code> (kui see annab errorit, võib proovida <code>i2cdetect -y 0</code>).
 
'''Näide:'''
<source lang="bash">
i2cdetect -y 1
</source>
 
Väljund:
<source lang="bash">
    0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: 70 -- -- -- -- -- -- -- 
</source>
 
Antud väljund  näitab, et meil on üks seade ühendatud, järelikult Bright Pi on õigesti seadistatud.
 
Testimiseks sisestada käsk <code>i2cset -y 1 0x70 0x00 0xa5</code>, mis pane põlema kõik infrapuna LED'id. Kui nüüd pilti teha käsuga <code>raspistill -o pilt.jpg</code> peaks pilt olema hallides toonides. Alternatiivselt võib suunata LED'id kaamerasse ja peaks näha olema nende helendamist.
 
Mõned olulisemad koodi näited<ref group="src">[https://www.pi-supply.com/bright-pi-v1-0-code-examples/ Bright Pi koodi näited Vaadatud 08.11.2017]</ref>:
* kõikide valgete LED'ide sisse lülitamine
<source lang="bash">
i2cset -y 1 0x70 0x00 0x5a
</source>
* kõikide infrapuna LED'ide sisse lülitamine
<source lang="bash">
i2cset -y 1 0x70 0x00 0xa5
</source>
* kõikide LED'ide sisse lülitamine
<source lang="bash">
i2cset -y 1 0x70 0x00 0xff
</source>
* intensiivsuse suurendamine
<source lang="bash">
i2cset -y 1 0x70 0x09 0x0f
</source>
* valgete LED'ide ereduse tõstmine
<source lang="bash">
i2cset -y 1 0x70 0x02 0x32
i2cset -y 1 0x70 0x04 0x32
i2cset -y 1 0x70 0x05 0x32
i2cset -y 1 0x70 0x07 0x32
</source>
* infrapuna LED'ide ereduse tõstmine
<source lang="bash">
i2cset -y 1 0x70 0x01 0x32
i2cset -y 1 0x70 0x03 0x32
i2cset -y 1 0x70 0x06 0x32
i2cset -y 1 0x70 0x08 0x32
</source>
* kõikide LED'ide välja lülitamine
<source lang="bash">
i2cset -y 1 0x70 0x00 0x00
</source>
 
Lisame ajastatud toimingu, mis käivitab ühe skripti, kui päike hakkab loojuma (ligikaudne aeg) ja teise skripti, kui tõusma hakkab.<ref group="src">[https://www.pi-supply.com/make/illuminate-bright-pi-automatically/ Automaatne tulede käivitamine] Vaadatud 08.11.2017</ref>
 
Selleks kloonime skriptid GitHubist:
<source lang="bash">
git clone https://github.com/raspberrycoulis/brightpi-control.git
</source>
 
Teeme kõik skriptid käivitatavateks käsuga <code>chmod +x [skript]</code>.
 
Avame croni muutmiseks käsuga <code>sudo crontab -e</code> ja lisame sinna näiteks read:
<source lang="bash">
0 16 * * * /bin/sh /home/pi/brightpi-control/IR-on.sh >> /var/log/cron/bright_pi.log
0 8 * * * /bin/sh /home/pi/brightpi-control/all-off.sh >> /var/log/cron/bright_pi.log
</source>
 
==== PIR<ref group="src">[https://www.modmypi.com/blog/raspberry-pi-gpio-sensing-motion-detection Liikumisanduri seadistamine ja testimine] Vaadatud: 29.10.2017</ref><ref group="src">[https://learn.adafruit.com/adafruits-raspberry-pi-lesson-4-gpio-setup/configuring-i2c i2c seadistamine] Vaadatud: 29.10.2017</ref><ref group="src">[http://www.mpja.com/download/31227sc.pdf PIR spetsifikatsioon] Vaadatud: 29.10.2017</ref> ====
Pealt vaates (objektiiv suunatud alla, oranžid potensiomeetrid enda poole) on vasakpoolne potensiomeeter tundlikkuse reguleerimiseks (päripäeva keerates suureneb tundlikkus ~5m-7m) ja parempoolne potensiomeeter aegviite reguleerimiseks (päripäeva keerates suureneb viite aeg 5s-300s). Vasakus servas on jumper, mis positsioonil H (vaikepositsioon) registreerib liikumist seni, kuni liikumine kestab, pikendades aegviidet pidevalt ja positsioonil L registreerib liikumise aegviite jooksul ja lõpetab liikumise registreerimise, kui aegviide on läbi.
 
Kontrollida, et <code>/etc/modules</code> failis on read <code>i2c-bcm2708</code> ja <code>i2c-dev</code>.
 
Kontrollida, et <code>/boot/config.txt</code> failis on read <code>dtparam=i2c1=on</code> ja <code>dtparam=i2c_arm=on</code>.
 
Testimiseks käivitada skript ning tekitada anduri ees liikumist:
<source lang="python">
import RPi.GPIO as GPIO
import time
 
GPIO.setmode(GPIO.BCM)
PIR_PIN = 24
GPIO.setup(PIR_PIN, GPIO.IN)
 
def MOTION(PIR_PIN):
              print “Motion Detected!”
 
print “PIR Module Test (CTRL+C to exit)”
time.sleep(2)
print “Ready”
 
try:
              GPIO.add_event_detect(PIR_PIN, GPIO.RISING, callback=MOTION)
              while 1:
                              time.sleep(100)
except KeyboardInterrupt:
              print “ Quit”
              GPIO.cleanup()
</source>
 
'''NB!'''<code>PIR_PIN</code> väärtuseks peab olema, GPIO number, kuhu on ühendatud anduri signaali juhe (mitte pini järjekorra number). Antud juhul on selleks pin järjekorra numbriga 18 programmilise väärtusega GPIO 24.
 
Skripti väljundiks peaks tulema midagi sellist:
<source lang="bash">
PIR Module Test (CTRL+C to exit)
Ready
Motion Detected!
Motion Detected!
</source>
 
=== RPi Cam Web Interface paigaldamine<ref group="src">[https://elinux.org/RPi-Cam-Web-Interface#Installation_Instructions RPi Cam Web Interface paigaldamine] Vaadatud 10.11.2017</ref> ===
RPi Cam Web Interface on valmis veebirakendus, millega saab vähese vaevaga kaamera töövalmis seada, kaamera peenseadistusi teha, teha videosalvestust, jms.
 
Kloonime tarkvara repositooriumi GitHubist:
<source lang="bash">
git clone https://github.com/silvanmelchior/RPi_Cam_Web_Interface.git
</source>
 
Paigaldamiseks liigume <code>RPi_Cam_Web_Interface</code> kausta ja käivitame paigaldamise skripti:
<source lang="bash">
cd RPi_Cam_Web_Interface
./install.sh
</source>
 
Avanevas aknas on võimalus muuta pildil nähtavaid vaikesätteid:
[[File:rpi_cam_control_script.png|thumb|none|300px|install.sh]]


=== Kaamera salvestiste ümbersuunamine ===
Olulised kohad veebirakenduse sätete muutmisel:
* <code>/RPi_Cam_Web_Interface kaust</code> ''<- sisaldab skripte, millega saab rakendust muuta, eemaldada''
* <code>/var/www/</code> ''<- veebirakenduse baas''
* <code>/etc/raspimjpeg</code> ''<- konfiguratsioonifail, mis sisaldab samu sätteid, mis veebiliideski ja kus saab muuta meedia salvestamise sihtkohta''
* <code>/etc/motion</code> ''<- motioni sätted''
 
Avades nüüd RPi ip aadress (kui paigaldamisel märgitud alamkaust ja pordiks midagi muud kui 80, siis koos alamkausta ja pordiga) peaks avanema kaamera otsevaade.
[[File:rpi_cam_control.png|thumb|none|700px|RPI esileht]]
 
Siin saab teha peenseadistusi. Pildidelt näha mõningad neist.
{|style="margin: 0 auto;"
| [[File:rpi_cam_control_cam_settings.png|thumb|none|400px|Kaamera sätted]]
| [[File:rpi_cam_control_sys_settings.png|thumb|none|300px|Süsteemi sätted]]
|}


== Kaamera seadistamine<ref group=ext>[https://elinux.org/RPi-Cam-Web-Interface Kiireim, lihtsaim, mugavaim viis kaamera valmis seada.]</ref> ==
=== Välisvõrgust ligipääs ===
https://media.readthedocs.org/pdf/picamera/latest/picamera.pdf
Selleks, et väljaspool sisevõrku otseülekannet näha, tuleb koduruuteris port suunata.


=== Live View ===
'''Näide:'''
:raspberry sisevõrgu aadress on: 192.168.0.110
:port: 8081
:ISP poolt saadud staatiline ip: 12.123.123.123


=== Liikumise peale video salvestamine ===
ruuteris tuleb:
:pordi suunamise lehel määrata väline port: nt 80
:sisemine port (sama, mis seadistamisel pandud): 8081
:sisemine IP (raspberry IP): 192.168.0.110


=== Liikumise tuvastamisel teavituse saatmine meilile ===
Peale seda saab välisvõrgust kaamera pilti vaadata aadressil <code>http://staatiline_IP:80</code>.


== Turvalisuse lisamine<ref group=src>[https://www.raspberrypi.org/documentation/configuration/security.md Turvalisuse lisamine] Vaadatud 31.10.2017</ref> ==
== Turvalisuse lisamine<ref group="src">[https://www.raspberrypi.org/documentation/configuration/security.md Turvalisuse lisamine] Vaadatud 31.10.2017</ref> ==


=== Konto seaded ===
=== Konto seaded ===
Line 417: Line 604:
</source>
</source>


=== Ajastatud toimingud<ref group=src>[https://www.raspberrypi.org/documentation/linux/usage/cron.md Ajastatud toimingu lisamine] Vaadatud 31.10.2017</ref> ===
=== Ajastatud toimingud<ref group="src">[https://www.raspberrypi.org/documentation/linux/usage/cron.md Ajastatud toimingu lisamine] Vaadatud 31.10.2017</ref> ===
Lisame ajastatud toimingu, mis uuendab igapäevaselt SSH-d. Loome esmalt bash skripti <code>/usr/local/bin</code> kausta.  
Lisame ajastatud toimingu, mis uuendab igapäevaselt SSH-d. Loome esmalt bash skripti <code>/usr/local/bin</code> kausta.  


Line 431: Line 618:
export LC_ALL=C
export LC_ALL=C


sudo apt-get -y install openssh-server
sudo apt-get install --only-upgrade openssh-server
</source>
</source>


Line 443: Line 630:
See rida tähendab, et käivitatakse <code>/usr/local/bin/daily_update.sh</code> skript iga päev kell 00:00 ja tegevus logitakse <code>/var/log/cron/daily_update.log"</code> logifaili.
See rida tähendab, et käivitatakse <code>/usr/local/bin/daily_update.sh</code> skript iga päev kell 00:00 ja tegevus logitakse <code>/var/log/cron/daily_update.log"</code> logifaili.
''Logikaust peab olemas olema.''
''Logikaust peab olemas olema.''
'''NB! Selle paketi uuendamise eesmärk on hoolitseda selle eest, et SSH võimalikud turvaaugud oleksid paigatud. Kuna meil eraldi testkeskkonda pole, siis ei soovi artikli autor kogu süsteemi uuendamist automatiseerida (nii mõnigi teenus võib sellest töötamast lakata või teenuse seadistus kaduda). Töökeskkonnas siiski sellist üksikpaketi uuendamist ei praktiseerita.'''


=== Võtmefailiga SSH ühendus<ref group="src">[https://www.raspberrypi.org/documentation/remote-access/ssh/passwordless.md Paroolita kaughaldus]</ref> ===
=== Võtmefailiga SSH ühendus<ref group="src">[https://www.raspberrypi.org/documentation/remote-access/ssh/passwordless.md Paroolita kaughaldus]</ref> ===
Järgmisena lisame SSH-le võtmefailiga sisselogimise. Selleks loome võtmepaari arvutis, millega ühenduda soovime.
Järgmisena lisame SSH-le võtmefailiga sisselogimise. Selleks loome võtmepaari arvutis, millega ühenduda soovime.


'''Näide:'''
'''Näide:<ref group="src">[http://enos.itcollege.ee/~edmund/materials/ssh/ssh.txt Edmund Laugassoni SSH cheatsheet]</ref>'''
<source lang="bash">
<source lang="bash">
ssh-keygen -t rsa -a 5 -C "eve-mac"
ssh-keygen -t rsa -b 4096 -C "Evelin Padjus, evelin@...."
</source>
</source>
'''''-t''' määrab krüpteerimise algoritmi, '''-a''' lisab soolab, '''-C''' lisab kommentaari''
'''''-t''' määrab krüpteerimise algoritmi, '''-b''' võtme pikkus bittides, '''-C''' lisab kommentaari''


Väljund:
Väljund:
Line 459: Line 648:
Enter passphrase (empty for no passphrase):  
Enter passphrase (empty for no passphrase):  
Enter same passphrase again:  
Enter same passphrase again:  
Your identification has been saved in /Users/eve/.ssh/id_rsa.
Your identification has been saved in /Users/eve/.ssh/id_rsa_evelin.
Your public key has been saved in /Users/eve/.ssh/id_rsa.pub.
Your public key has been saved in /Users/eve/.ssh/id_rsa_evelin.pub.
The key fingerprint is:
The key fingerprint is:
SHA256:0gYu5M/xdtdOBaFceQiIYcIbX52J83ODDGeQinL3BCA eve-mac
SHA256:0gYu5M/xdtdOBaFceQiIYcIbX52J83ODDGeQinL3BCA Evelin Padjus, evelin@....
The key's randomart image is:
The key's randomart image is:
+---[RSA 2048]----+
+---[RSA 4096]----+
|    E.o.oo.*.+oo |
|    E.o.oo.*.+oo |
|    .ooo B.*oo..|
|    .ooo B.*oo..|
Line 477: Line 666:
</source>
</source>


Tulemuseks on 2 faili: salajane võti <code>/Users/eve/.ssh/id_rsa</code> ja avalik võti <code>/Users/eve/.ssh/id_rsa</code>. Salajane võti peab jääma masinasse, millega ühendutakse ja avalik võti tuleb Raspberry Pi-sse toimetada.
Tulemuseks on 2 faili: salajane võti <code>/Users/eve/.ssh/id_rsa_evelin</code> ja avalik võti <code>/Users/eve/.ssh/id_rsa_evelin.pub</code>. Salajane võti peab jääma masinasse, millega ühendutakse ja avalik võti tuleb Raspberry Pi-sse toimetada.


Kopeerime avaliku võtme Raspberry'sse:
Kopeerime avaliku võtme Raspberry'sse:
<source lang="bash">
<source lang="bash">
cat .ssh/id_rsa.pub | ssh pi@192.168.0.111 'cat >> .ssh/authorized_keys'
ssh-copy-id -i /Users/eve/.ssh/id_rsa_evelin.pub pi@192.168.0.111  
</source>
</source>
''Kui <code>.ssh/authorized_keys</code> faili või kataloogi pole, siis võib selle luua.''


Muudame <code>.ssh/authorized_keys</code> faili õigusi:
Väljund:
<source lang="bash">
<source lang="bash">
sudo chmod 644 ~/.ssh/authorized_keys
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/eve/.ssh/id_rsa_evelin.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
pi@192.168.0.111's password:
 
Number of key(s) added:        1
 
Now try logging into the machine, with:  "ssh 'pi@192.168.0.111'"
and check to make sure that only the key(s) you wanted were added.
</source>
</source>


Line 497: Line 693:
</source>
</source>


Kuime juba siin failis oleme, siis lisame sinna ka read:
'''NB! Nende kolme reaga keelatakse ära parooliga autentimine üls SSH. Need on artiklis esitatud selleks, et demonstreerida, kuidas turvalisust tõsta, kuid töökeskkonnas peab see olema läbimõeldud tegevus (kui võtmefailidega midagi juhtub, saab arvutile ligi vaid lokaalselt).'''
 
Kui me juba siin failis oleme, siis lisame sinna ka read:
<source lang="bash">
<source lang="bash">
PermitRootLogin no
PermitRootLogin no
</source>
</source>
''"root" kasutaja ei saa SSH-ga ühenduda.''
''"root" kasutaja ei saa SSH-ga ühenduda.''


Line 506: Line 705:
AllowUsers pi
AllowUsers pi
</source>
</source>
''Lubame vaid "pi" kasutajale SSH ühenduse.''
''Lubame vaid "pi" kasutajale SSH ühenduse.''


Line 512: Line 712:
'''Näide:'''
'''Näide:'''
<source lang="bash">
<source lang="bash">
ssh pi@192.168.0.111
ssh -i /Users/eve/.ssh/id_rsa_evelin pi@192.168.0.111
Enter passphrase for key '/Users/eve/.ssh/id_rsa':  
Last login: Tue Oct 31 22:25:17 2017 from 192.168.0.122
Last login: Tue Oct 31 22:25:17 2017
</source>
 
''Võtmepaariga SSH ühenduse loomise tarbeks oleks mõistlik luua klientmasinasse alias.''
 
=== HTTPS ligipääs ===
Selleks, et kaamera pildi vaatamine üle võrgu turvalisem oleks, tuleks https seadistada ja http ümber suunata https-i peale.
 
Loome võtme:
<source lang="bash">
openssl genrsa -out /etc/ssl/root_ca.key 2048
</source>
 
Väljund:
<source lang="bash">
Generating RSA private key, 2048 bit long modulus
......+++
.+++
e is 65537 (0x010001)
</source>
 
<source lang="bash">
openssl req -new -x509 -days 365 -key /etc/ssl/root_ca.key -out /etc/ssl/root_ca.crt
</source>
 
Väljund:
<source lang="bash">
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ee
State or Province Name (full name) [Some-State]:Raplamaa
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:asd.com
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:secam01.asd.com
Email Address []:
</source>
 
Serveri privaatvõtme loomine:
<source lang="bash">
openssl genrsa -out /etc/ssl/server.key 2048
</source>
 
Väljund:
<source lang="bash">
Generating RSA private key, 2048 bit long modulus
.................................+++
.........+++
e is 65537 (0x010001)
</source>
 
<source lang="bash">
openssl req -new -key /etc/ssl/server.key -out /etc/ssl/server.csr
</source>
 
Väljund:
<source lang="bash">
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ee
State or Province Name (full name) [Some-State]:Raplamaa
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:asd.com
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:kaamera.asd.com
Email Address []:
 
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:asd.com
</source>
 
<source lang="bash">
openssl x509 -req -days 365 -in /etc/ssl/server.csr -CA /etc/ssl/root_ca.crt -CAkey /etc/ssl/root_ca.key -set_serial 01 -out /etc/ssl/server.crt
Signature ok
subject=C = ee, ST = Raplamaa, O = padjus.com, CN = kaamera.asd.com
Getting CA Private Key
</source>
</source>


== VNC serveri paigaldamine<ref group=src>[https://www.raspberrypi.org/documentation/remote-access/vnc/README.md VNC serveri paigaldamine Raspberry Pi-s] Vaadatud 01.11.2017</ref> ==
<source lang="bash">
openssl req -x509 -days 365 -key /etc/ssl/server.key -in /etc/ssl/server.csr -out /etc/ssl/server_ss.crt
</source>
 
Serveri võtmest parooli eemaldamine:
<source lang="bash">
openssl rsa -in /etc/ssl/server.key -out /etc/ssl/server.key.insecure
</source>
 
Väljund:
<source lang="bash">
writing RSA key
</source>
 
<source lang="bash">
mv /etc/ssl/server.key /etc/ssl/server.key.secure
mv /etc/ssl/server.key.insecure /etc/ssl/server.key
</source>
 
Loodud sertifikaadid:
*server.crt: Iseallkirjastatud serveri sertifikaat
*server.csr: Serveri sertifikaadi allkirja taotlus
*server.key: Serveri privaatvõti. (Ei nõua parooli apache käivitamisel)
*server.key.secure: Serveri privaatvõti. (Nõuab parooli apache käivitamisel)
*root_ca.crt: CA sertifikaat
*root_ca.key: Võti millega CA allkirjastab sertifikaadi allkirja taotlusi
 
SSL mooduli lubamine:
<source lang="bash">
a2enmod ssl
a2enmod rewrite && sudo service apache2 restart
</source>
 
Veedume, et Apache kuulab pordil 443 failis <code>/etc/apache2/sites-available/default-ssl.conf</code> ja lisame sinna sertifikaadi ja privaatvõtme asukoha:
<source lang="bash">
SSLCertificateFile /etc/ssl/server.crt
SSLCertificateKeyFile /etc/ssl/server.key
</source>
 
Taaskäivitame teenuse:
<source lang="bash">
systemctl restart apache2
</source>
 
<span style="color:red">'''''TÄIENDAMISEL'''''</span>


== Varundamine ==
== Varundamine ==


=== Kuvatõmmise tegemine<ref group=src>[https://www.raspberrypi.org/documentation/linux/filesystem/backup.md Kuvatõmmise tegemine SD kaardist] Vaadatud 02.11.2017</ref> ===
=== Tõmmise tegemine<ref group="src">[https://www.raspberrypi.org/documentation/linux/filesystem/backup.md Tõmmise tegemine SD kaardist] Vaadatud 02.11.2017</ref> ===
Peale seda, kui kõik vajalik on süsteemis ära seadistatud, teeme mälukaardist tõmmise '''dd''' haldusvahendiga.
 
'''Näide:'''
<source lang="bash">
sudo dd bs=4m if=/dev/disk2 of=raspbian.img
</source>


Väljund:
<source lang="bash">
1895+0 records in
1895+0 records out
7948206080 bytes transferred in 970.554788 secs (8189343 bytes/sec)
</source>


=== Kataloogide varundamine<ref group=src>[https://www.raspberrypi.org/documentation/remote-access/ssh/rsync.md rsync ] Vaadatud 01.11.2017</ref><ref group=src>[http://blog.hekkers.net/2013/05/18/backing-up-raspberry-pi-to-synology-nas/ Raspberry Pi rsync Synology NAS-i] Vaadatud 01.11.2017</ref> ===
=== Kataloogide varundamine NAS-i<ref group="src">[https://www.raspberrypi.org/documentation/remote-access/ssh/rsync.md rsync ] Vaadatud 01.11.2017</ref><ref group="src">[http://blog.hekkers.net/2013/05/18/backing-up-raspberry-pi-to-synology-nas/ Raspberry Pi rsync Synology NAS-i] Vaadatud 01.11.2017</ref> ===
Varundame meile vajalikud kaustad rsynciga NAS seadmesse (käesolevas artiklis tehakse seda Synology NAS-i, aga samalaadselt peaks see ka töötama QNAPis vms NAS seadmes, mis toetab rsynci).
Varundame meile vajalikud kaustad rsynciga NAS seadmesse (käesolevas artiklis tehakse seda Synology NAS-i, aga samalaadselt peaks see ka töötama QNAPis vms NAS seadmes, mis toetab rsynci).


Loome esmalt NAS-i jagatud kausta hierarhia (vt pildilt [[:File:RPI_shared_folder.png|6-Jagatud kaust NAS-is]] ja [[:File:RPI_backup_folders.png|7-Kausta hierarhia]]
Loome esmalt NAS-i jagatud kausta hierarhia (näide piltidel).
{|style="margin: 0 auto;"
{|style="margin: 0 auto;"
| [[File:RPI_shared_folder.png|thumb|none|400px|alt=Jagatud kaust NAS-is|6-Jagatud kaust NAS-is]]
| [[File:RPI_shared_folder.png|thumb|none|400px|Jagatud kaust NAS-is]]
| [[File:RPI_backup_folders.png|thumb|none|400px|alt=Kausta hierarhia|7-Kausta hierarhia]]
| [[File:RPI_backup_folders.png|thumb|none|400px|Kausta hierarhia]]
|}
|}


Loome võtmepaari NAS-is (kuna antud teema on pikemalt lahti kirjutatud eespool, ei hakka siin üksikasju üle kordama):
Meil on nüüd NAS-ile samuti võtmepaari vaja. Töökeskkonnas peab lähtuma sellest, kuidas konkreetse ettevõtte IT infrastruktuuris mõistlik oleks hallata SSH võtmeid:
*kas luus üks globaalne võtmepaar, mille puhul sama privaatne võti pannakse igasse klientmasinasse ja sama avalik võti igasse servermasinasse
*luua iga serveri jaoks eraldi võtmepaar, kus kõikide serverite privaatne võti pannakse klientmasinasse
*luua iga klientmasina kohta võtmepaar
*iga klientmasina ja serveri paaril on oma võtmepaar
 
Käesolevas artiklis võtame kasutusele variandi, kus serveri privaatne võti pannakse kõikidesse klientmasinatesse. Seega kopeerime juba eespool loodud privaatvõtme NAS-i.
 
'''Näide''':
<source lang="bash">
<source lang="bash">
ssh-keygen -t rsa -a 5 -C "nas"
scp /Users/eve/.ssh/id_rsa_evelin evelin@nas:/var/services/homes/evelin/.ssh/ 
</source>
</source>


Kuna me praegu veel üle SSH NAS-ist RPI-sse ei pääse, siis kopeerime avaliku võtmefaili <code>/var/services/homes/evelin/.ssh/id_rsa.pub</code> sisu puhvrisse ja lisame selle RPI terminali aknas <code>.ssh/authorized_keys</code> faili.
Väljund:
<source lang="bash">
evelin@nas's password:
id_rsa_evelin                                                                          100% 3247  498.5KB/s  00:00 
</source>


Kui nüüd SSH-d tehes RPI-sse tuleb NAS-is teade:
Kui nüüd SSH-d tehes RPI-sse:
<source lang="bash">
ssh -i /var/services/homes/evelin/.ssh/id_rsa_evelin pi@secam01
</source>
 
tuleb NAS-is teade:
<source lang="bash">
<source lang="bash">
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@        WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@        WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/var/services/homes/evelin/.ssh/id_rsa' are too open.
Permissions 0777 for '/var/services/homes/evelin/.ssh/id_rsa_evelin' are too open.
It is recommended that your private key files are NOT accessible by others.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
This private key will be ignored.
Load key "/var/services/homes/evelin/.ssh/id_rsa": bad permissions
Load key "/var/services/homes/evelin/.ssh/id_rsa_evelin": bad permissions
Permission denied (publickey).
Permission denied (publickey).
</source>
</source>


Siis muudame õigusi käsuga <code>sudo chmod 700 /var/services/homes/evelin/.ssh/id_rsa</code>.
Siis muudame õigusi käsuga <code>sudo chmod 700 /var/services/homes/evelin/.ssh/id_rsa_evelin</code>.


Nüüd saame teha SSH-d NAS-ist RPI-sse ilma parooli sisestamata (va juhul, kui võtmepaari loomisel määrasime ''passphrase'i'').
Nüüd saame teha SSH-d NAS-ist RPI-sse ilma parooli sisestamata (va juhul, kui võtmepaari loomisel määrasime ''passphrase'i'').


Järgmisena loome bashi skripti, mis hakkab NAS-is ajastatud toiminguna üle SSH varundama määratud kauste ja pakendab nad siis kokku.
''Võtmepaariga SSH ühenduse loomise tarbeks oleks mõistlik luua klientmasinasse alias.''
 
Järgmisena loome bashi skripti, mis hakkab NAS-is ajastatud toiminguna üle SSH varundama määratud kauste ja hoiab tulevikus neid sünkroonis.


'''Näide bashi skriptist<ref group="src">[https://guficulo.blogspot.com.ee/2015/04/backup-your-raspberry-pi-automatically.html?_escaped_fragment_# Raspberry varundamine Synology NAS-i]</ref>:'''
'''Näide bashi skriptist<ref group="src">[https://guficulo.blogspot.com.ee/2015/04/backup-your-raspberry-pi-automatically.html?_escaped_fragment_# Raspberry varundamine Synology NAS-i] Vaadatud 01.11.2017</ref>:'''
<source lang="bash">
<source lang="bash">
#!/bin/bash
#!/bin/bash
Line 574: Line 935:
Teeme skripti käivitatavaks käsuga <code>chmod +x backup_folders.sh</code>.  
Teeme skripti käivitatavaks käsuga <code>chmod +x backup_folders.sh</code>.  


''Antud juhul võttis varundamine kohutavalt palju aega. Skript vajab kindlasti täiendamist.''
''Esimene sync võib väga kaua aega võtta, kuna kopeeritakse kõik NAS-i. Edaspidi sünkroniseeritakse vaid muudatused (incremental).''


Synology NAS-is ajastatud toimingu loomine näha piltidel [[:File:NAS_sched_task_tab1.png|8-]], [[:File:NAS_sched_task_tab2.png|9-]] ja [[:File:NAS_sched_task_tab3.png|10-]]
Synology NAS-is ajastatud toimingu loomine näha järgnevatel piltidel:
{|style="margin: 0 auto;"
{|style="margin: 0 auto;"
| [[File:NAS_sched_task_tab1.png|thumb|none|200px|8-]]
| [[File:NAS_sched_task_tab1.png|thumb|none|250px]]
| [[File:NAS_sched_task_tab2.png|thumb|none|200px|9-]]
| [[File:NAS_sched_task_tab2.png|thumb|none|250px]]
| [[File:NAS_sched_task_tab3.png|thumb|none|200px|10-]]
| [[File:NAS_sched_task_tab3.png|thumb|none|250px]]
|}
|}
== Galerii ==
<gallery mode=packed heights=200px>
File:RPI_components.jpg|Komponendid
File:rpi_noir.jpg|NoIR kaamera moodul ühendatud Raspberry Pi-ga
File:Brightpi.jpg|Bright Pi ühendatud Raspberry Pi-ga
File:Noir_pir_brightpi.jpg|NoIR + BrightPi + PIR
File:komponendid2.jpg|Komponendid2
File:korpus.jpg|Korpuse detailid
File:korpus_komponendid.jpg|Korpus ja sisu
File:korpus_komponendid2.jpg|Korpus ja sisu pealt
File:korpus_komponendid3.jpg|Korpus ja sisu ees
File:korpuses0.jpg|Komplekteeritud sabaga
File:korpuses1.jpg|Komplekteeritud kattega
File:korpuses2.jpg|Final touch
File:voolukaabli_pikendus.jpg|5 meetrit voolukaablit juurde
File:im_0002_20171120_220020.jpg|BrightPi leedide peegeldus esiklaasilt, kui ledid on ümber kaamera
File:lainurk_objektiiviga.jpg|Kaamera uues kuues ja lainurk objektiiviga
File:IR_lambid.JPG|Infrapuna valgustid. 12V/1A/4W/850nm/15-20meetrit
File:IR_Lainurk_hommikul.jpeg|Lainurk objektiiviga, hommikul
File:IR_Lainurk_pimedas_lumeta.jpeg|Lainurk objektiiviga, pimedas
File:IR_pimedas_lumega_lisavalgus.jpeg|2x4w IR lampidega, lumega
File:Tl 0002 1355 20171205 122834.jpg|Keskpäeval, objekt esiplaanil
File:Tl 0022 0675 20171202 103156 copy.jpg|objekt ~10m kaugusel
File:Upgrade RPi3.jpeg|Emaplaadi vahetus. RPi1 B -> RPi3
File:Upgrade RPi3 vol2.jpeg|Emaplaadi vahetus. RPi1 B -> RPi3
</gallery>


== Kokkuvõte ==
== Kokkuvõte ==
Käesolevas artiklis esitatud peatükkide läbimise tulemusel valmis valvesüsteem, mis:
* on ühendatud sise- ja välisvõrku
** omab ligipääsu sisevõgus üle SSH
** omab ligipääs sise- ja välisvõrgust veebirakendusele RPi Cam Web Interface
* tuvastab liikumist PIR-iga aga on seadistatav tuvastama liikumist tarkvaraliselt
* on turvalisuse tõstmise eesmärgil piiratud ligipääsuga
* sisaldab automatiseeritud tegevusi


Nagu näha, avab Raspberry Pi üha uusi võimalusi koduste erilahenduste väljatöötamiseks.


== Vaata lisaks ==
== Vaata lisaks ==
Line 607: Line 1,003:
== Autor ==
== Autor ==
Evelin Padjus, AK31<br>
Evelin Padjus, AK31<br>
2017
2017<br>
{| class="wikitable"
|-
! Versioon
! Muudatuse kp
! Muutja
! Muudatus
|-
| 1.0
| 10.11.2017
| Evelin Padjus
| Esimene väljaanne
|-
| 1.1
| 20.11.2017
| Evelin Padjus
| Süntaksi ja õigekirja kontroll
|-
| 1.2
| 07.12.2017
| Evelin Padjus
| Parandused SSH teemades
|-
| 1.3
| 08.12.2017
| Evelin Padjus
| SSL sertifikaadi loomine
|}


[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]]

Latest revision as of 11:25, 11 December 2017

Käesoleva artikli eesmärk on anda juhised, kuidas Raspberry Pi näitel oleks võimalik püsti panna valvesüsteem ja seda lihtsaimal moel. Autor on valinud netist allatõmmatava lahenduse, kuid käsitletavad teemad ja viited on piisavad, et nende põhjal luua oma vajadustele põhinev süsteem. Artikkel ei keskendu kaamera jms peenseadistustele.

Artikkel eeldab sudo õigustes käskude sisestamist.

Sissejuhatus

Raspberry Pi on väga laia kasutust leidnud ARM protsessoriga mikroarvuti, millest saab ehitada kõikvõimalikke erinevaid huvitavaid projekte, alustades programmeerimisplatvormist ja lõpetades heeliumpalliga stratosfääri lennutatud aerofotosid tegeva ilmajaamaga (High Altitude Ballooning, Near Space Photography). Raspberry Pi kaamera aga on üks paljudest moodulitest, mis lisab mikroarvutile kasutusala. Üks võimalikke väljundeid ongi valvesüsteem, mis turul olevate valmislahenduste kõrval on suhteliselt odav ja seadistatav igaühe soovide järgi.

Süsteemi kirjeldus

Eeldused

  • Oskus lugeda tehnilisi dokumentatsioone
  • Algteadmised GNU/Linuxi (edaspidi: Linux) käsureast
  • Algteadmised programmeerimisest (et skriptide sisu mõista ja vastavalt vajadustele muuta)
  • Oskus käsitleda jootekolbi tuleb kasuks[ext 1][ext 2]
  • Loomingulisus

Riistvara

Komponendid

Lisad

  • Mälupulk
  • PIR ehk infrapunaliikumisandur[8][ext 3]
  • Emane-emane ühendusjuhtmed PIR-ile, kui neid kaasas pole (jumper wire F/F)
  • Katkematu vooluallika tarbeks võib veel lisada ka akupanga[9]
  • Lisada võib ka telefonile mõeldud kaamera objektiivi adapteri, et vaatevälja suurendada (wide angle lens) või miks mitte kalasilma või teleobjektiivi[10]

Tarkvara

  • Raspbian operatsioonisüsteem[ext 4]
  • SD-kaardi vormindamise haldusvahend (nt MS Windows (edaspidi: Windows) ja macOS: SD Formatter[ext 5]; Linux: GParted[ext 6])
  • Lahti pakkija (nt Windows: 7-Zip[ext 7]; Linux: Unzip[ext 8]; macOS: The Unarchiver[ext 9])
  • Tõmmise kirjutamise haldusvahend (nt Etcher- toetab nii Windowsit, Linuxit kui ka macOS'i[ext 10])
  • SSH klient (Linux ja macOS: terminal; Windows: PuTTy või Bitvise[ext 11])
  • RPi Cam Web Interface veebirakendus kõige kontrollimiseks[ext 12]
  • Meiliteavituste saatmiseks klient (nt sSMTP[ext 13])

NB! Kuigi välja on toodud graafilise liidesega tarkvarad, siis õppe eesmärgil kasutatakse antud artiklis maksimaalselt käsurea vahendeid (sudo õigustes).

Töövahendid

Töövahendid
  • Jootmisvahendid
  • Kolmas käsi
  • Kruvikeeraja
  • Kartonginuga
  • Kuumaliim
  • Teip
  • jms

Töövahendid on pildil Töövahendid

Riistvara ühendamine[ext 14][ext 15][ext 16][ext 17]

  • NoIR kaamera ühendamine pildil[src 1]
NoIR kaamera
NoIR kaamera moodul ühendatud plaadiga

Ühendada kaamera lintkaabel pessa selliselt, et kontaktid oleksid vastakuti (Raspberry Pi 1 B puhul kaabli kontaktid suunatud HDMI pesa poole).

  • Bright Pi ühendamine pildil[src 2]
Bright Pi valgusti
Bright Pi ühendatud plaadiga

Bright Pi jootmisel sisestada LED'id selliselt, et lühem jalg on noole otstes.

Pildilt vaadatuna on juhtmed:

  1. must - pin 6 (GND)
  2. valge - pin 4 (5V)
  3. hall - pin 5 (SDA1/i2c)
  4. lilla - pin 3 (SCL1/i2c)

Juhtmed ühendatud:

  1. pin 2 (5V)
  2. pin 18 (GPIO 24)
  3. pin 20 (GND)
  • Kõik seadmed GPIO küljes pildil
NoIR + BrightPi + PIR

Paigaldamine[src 4]

Valmistame ette mälukaardi Raspbiani operatsioonisüsteemiks.[src 5][src 6]

macOS

Kasutame käsurea haldusvahendit diskutil[ext 18].

Alustame sellest, et kuvame kõik seadmed, mis süsteemile nähtavad on. Kasutame selleks käsku diskutil list [-plist] [device].

Näide:

diskutil list

Väljund:

/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *121.3 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:          Apple_CoreStorage Macintosh HD            120.5 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3

/dev/disk1 (internal, virtual):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS Macintosh HD           +120.1 GB   disk1
                                 Logical Volume on disk0s2
                                 A311BC5A-A369-4C74-8FBB-E76B7904BB6D
                                 Unlocked Encrypted

/dev/disk2 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *7.9 GB     disk2
   1:               Windows_NTFS Untitled                7.9 GB     disk2s1

Antud artiklis kasutame /dev/disk2 seadet sest see on meie mälukaart, kuhu me Raspbiani peale paneme.

Et näha, mis formaati saab vormindada ja milline peab olema parameetri kirjapilt, kasutame käsku diskutil listFilesystems [-plist].

Näide:

diskutil listFilesystems

Väljund:

Formattable file systems

These file system personalities can be used for erasing and partitioning.
When specifying a personality as a parameter to a verb, case is not considered.
Certain common aliases (also case-insensitive) are listed below as well.

-------------------------------------------------------------------------------
PERSONALITY                     USER VISIBLE NAME                               
-------------------------------------------------------------------------------
ExFAT                           ExFAT                                           
Free Space                      Free Space                                      
  (or) free
MS-DOS                          MS-DOS (FAT)                                    
MS-DOS FAT12                    MS-DOS (FAT12)                                  
MS-DOS FAT16                    MS-DOS (FAT16)                                  
MS-DOS FAT32                    MS-DOS (FAT32)                                  
  (or) fat32
HFS+                            Mac OS Extended                                 
Case-sensitive HFS+             Mac OS Extended (Case-sensitive)                
  (or) hfsx
Case-sensitive Journaled HFS+   Mac OS Extended (Case-sensitive, Journaled)     
  (or) jhfsx
Journaled HFS+                  Mac OS Extended (Journaled)                     
  (or) jhfs+


Vormindame mälukaardi FAT32 formaati ja paneme nimeks RASPBIAN (peab olema läbiva suure tähega). Kasutame selleks käsku diskutil eraseDisk <format> <NAME> [APM[Format] | MBR[Format] | GPT[Format]] <device>.

Näide:

diskutil eraseDisk FAT32 RASPBIAN MBRFormat /dev/disk2

Väljund:

Started erase on disk2
Unmounting disk
Creating the partition map
Waiting for partitions to activate
Formatting disk2s1 as MS-DOS (FAT32) with name RASPBIAN
512 bytes per physical sector
/dev/rdisk2s1: 15485368 sectors in 1935671 FAT32 clusters (4096 bytes/cluster)
bps=512 spc=8 res=32 nft=2 mid=0xf8 spt=32 hds=255 hid=8192 drv=0x80 bsec=15515648 bspf=15123 rdcl=2 infs=1 bkbs=6
Mounting disk
Finished erase on disk2

Laeme alla ja pakime lahti Raspbian operatsioonisüsteemi. Lahti pakkimiseks kasutame TAR[ext 19] haldusvahendit ja käsku tar -xf <archive-filename>.

Näide (asukohaks kaust, kus pakk asub):

tar -xf 2017-09-07-raspbian-stretch.zip

Kirjutame lahti pakitud tõmmise mälukaardile dd[ext 20] haldusvahendi käsuga dd [bs=n if=[file] of=[file] conv=[value]].[src 7]

Näide:

Ühendame seadme lahti:

diskutil unmountDisk /dev/disk2

Väljund:

Unmount of all volumes on disk2 was successful

Kirjutame tõmmise kaardile (asukohaks kaust, kus tõmmis asub):

dd bs=1m if=2017-09-07-raspbian-stretch.img of=/dev/disk2 conv=sync

Väljund[11]:

4688+1 records in
4689+0 records out
4916772864 bytes transferred in 1716.593197 secs (2864262 bytes/sec)

Väljastame mälukaardi diskutil haldusvahendiga:

diskutil eject /dev/disk2

Väljund:

Disk /dev/disk2 ejected

Linux

TODO

Windows

Disk-Part haldusvahend

diskpart
list disk
select disk 1
clean
clean all
create partition primary
select partition 1
active
format fs=fat32

VAJAB TÄIENDAMIST

Raspbiani seadistamine

Jätkamise eelduseks on, et eelpaigaldatud mälukaart on sisestatud Raspberry Pi lugejasse, WiFi pulk ühendatud USB pessa[ext 21] ja Raspberry vooluvõrku ühendatud.

NB! Jätkuvalt tuleb käsud sisestada sudo õigustes.

WLAN seadistamine[src 8]

Kõige esimese asjana ühendame Raspberry Pi WiFi võrku.

Kui Raspbian on käima läinud, avame terminali (CTRL+ALT+T) ja skanneerime saadaval olevaid WiFi võrke.

Näide:

iwlist wlan0 scan

Väljund:

wlan0     Scan completed :
          Cell 01 - Address: 84:16:F9:C8:4D:F6
                    Channel:9
                    Frequency:2.452 GHz (Channel 9)
                    Quality=59/70  Signal level=-51 dBm  
                    Encryption key:on
                    ESSID:"WASD"
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
                              9 Mb/s; 12 Mb/s; 18 Mb/s
                    Bit Rates:24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s
                    Mode:Master
                    Extra:tsf=000000f2674b8ed2
                    Extra: Last beacon: 25960ms ago
                    IE: Unknown: 000B6B61726A612D616E747375
                    IE: Unknown: 010882848B960C121824
                    IE: Unknown: 030109
                    IE: Unknown: 2A0100
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    IE: Unknown: 32043048606C
                    IE: Unknown: 2D1AEF111BFFFF000000000000000000000100000000000000000000
                    IE: Unknown: 3D16090F0600000000000000000000000000000000000000
                    IE: Unknown: 7F080000000000000040
                    IE: Unknown: DD180050F2020101800003A4000027A4000042435E0062322F00
                    IE: Unknown: DD0900037F01010000FF7F
                    IE: Unknown: DD930050F204104A0001101044000102103B00010310470010000102030405060708090A0B0C..

Lisame WiFi võrgu üksikasjad nano teksti redaktoriga (või muu meelepärasega) konfiguratsiooni faili:

nano /etc/wpa_supplicant/wpa_supplicant.conf

Lisame faili lõppu read (oma WiFi võrgu nime ja parooliga):

network={
    ssid="WASD"
    psk="WASD_parool"
}

Salvestame faili Ctrl+O kiirklahviga ning väljume failist Ctrl+X kiirklahviga.

Teeme seadistuse üle laadimise:

wpa_cli -i wlan0 reconfigure

Kontrollime, kas saime IP aadressi oma WiFi liidesele:

ifconfig wlan0

Kui inet addr taga on IP, siis on kõik õigesti siiani.

SSH[ext 22]

Lubame SSH. Vajalik, kuna alates november 2016 väljalaskest, on see vaikimisi keelatud[src 9]. Selleks käivitame raspi-config[ext 23] haldusvahendi.

Näide:

raspi-config

Väljund:

raspi-config haldusvahend

Valime "5 Interfacing Options"

Seejärel valime "P2 SSH ..." ja kinnitame valiku "Yes" nupuga.

Väljume haldusvahendist "OK" ja "Finish" nuppudega.

SSH-ga Raspberry Pi-sse ühendumiseks, avame Linux/macOS süsteemis terminali, Windowsis PuTTY , Bitvise vms säärase ssh kliendi ja sisestame käsu ssh [kasutajanimi@ip_address][12].

Näide:

ssh pi@192.168.0.104

Peale parooli sisestamist olemegi Raspberry Pi bashis.

Staatilised võrguaadressid

Järgmisena paneme võrgukaartidele (LAN ja WLAN) staatilise ip. Selleks avame /etc/dhcpcd.conf faili (endale meelepärase teksti redaktoriga) ja lisame faili lõppu read (vastavalt oma ruuteri seadistustele):

interface eth0
static ip_address=192.168.0.110/24
static routers=192.168.0.1  
static domain_name_servers=192.168.0.1 8.8.8.8

interface wlan0
static ip_address=192.168.0.111/24
static routers=192.168.0.1  
static domain_name_servers=192.168.0.1 8.8.8.8

Salvestame muudatused ja väljume failist ning teeme restardi. Peale restarti peaksime saama määratud IP-le SSH ühenduse teha.

Välise andmekandja seadistamine[src 10]

Kasutame käsku blkid, et teada saada seadme asukoht ja uuid, mille alusel me hiljem seadme automaatselt külge haakuma paneme.

Näide:

blkid

Väljund:

/dev/mmcblk0p1: LABEL="boot" UUID="E5B7-FEA1" TYPE="vfat" PARTUUID="fc03679c-01"
/dev/mmcblk0p2: UUID="b4ea8e46-fe87-4ddd-9e94-506c37005ac5" TYPE="ext4" PARTUUID="fc03679c-02"
/dev/sda1: LABEL="1.42.6-15152" UUID="93548308-bfd1-4a12-b767-dbd0c2d7eee0" TYPE="ext4" PARTUUID="21ea6e75-01"

Meid huvitav seade antud juhul on /dev/sda1.

Haagime seadme küljest lahti ja vormindame ext4 failisüsteemiga.

Näide:

umount /dev/sda1
mkfs.ext4 /dev/sda1

Väljund:

mke2fs 1.43.4 (31-Jan-2017)
/dev/sda1 contains a ext4 file system labelled '1.42.6-15152'
	last mounted on Fri Nov  3 09:12:09 2017
Proceed anyway? (y,N) y
Creating filesystem with 1889613 4k blocks and 473280 inodes
Filesystem UUID: 85727527-4526-41fe-91ec-9ff652dad616
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

Loome seadmele haakepunkti, luues kataloogi ja haagime külge.

Näide:

mkdir /mnt/usb_pulk
mount /dev/sda1 /mnt/usb_pulk
ls /mnt/

Väljund:

usb_pulk

Lisame /etc/fstab faili rea, et seade haagitaks külge automaatselt.

Näide:

UUID=93548308-bfd1-4a12-b767-dbd0c2d7eee0 /mnt/usb_pulk ext4 defaults,auto,nofail,umask=000,users,rw 0 0

Saame nüüd soovi korral osa andmeid välisele andmekandjale suunata (nt logifailid ja kaamera meediafailid).

Valve seadistamine[ext 24]

Riistvara tööle panek ja testimine

Kaamera[ext 25]

Käivitada raspi-config haldusvahend ja teha valikud vastavalt piltidele

raspi-config haldusvahend
kaamera lubamine

Testimiseks teeme pildi.

Näide:

raspistill -o pilt.jpg

Bright Pi

Toimida vastavalt piltidele.

raspi-config haldusvahend
i2c lubamine

Testimiseks kasutada käsku i2cdetect -y 1 (kui see annab errorit, võib proovida i2cdetect -y 0).

Näide:

i2cdetect -y 1

Väljund:

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: 70 -- -- -- -- -- -- --

Antud väljund näitab, et meil on üks seade ühendatud, järelikult Bright Pi on õigesti seadistatud.

Testimiseks sisestada käsk i2cset -y 1 0x70 0x00 0xa5, mis pane põlema kõik infrapuna LED'id. Kui nüüd pilti teha käsuga raspistill -o pilt.jpg peaks pilt olema hallides toonides. Alternatiivselt võib suunata LED'id kaamerasse ja peaks näha olema nende helendamist.

Mõned olulisemad koodi näited[src 11]:

  • kõikide valgete LED'ide sisse lülitamine
i2cset -y 1 0x70 0x00 0x5a
  • kõikide infrapuna LED'ide sisse lülitamine
i2cset -y 1 0x70 0x00 0xa5
  • kõikide LED'ide sisse lülitamine
i2cset -y 1 0x70 0x00 0xff
  • intensiivsuse suurendamine
i2cset -y 1 0x70 0x09 0x0f
  • valgete LED'ide ereduse tõstmine
i2cset -y 1 0x70 0x02 0x32
i2cset -y 1 0x70 0x04 0x32
i2cset -y 1 0x70 0x05 0x32
i2cset -y 1 0x70 0x07 0x32
  • infrapuna LED'ide ereduse tõstmine
i2cset -y 1 0x70 0x01 0x32
i2cset -y 1 0x70 0x03 0x32
i2cset -y 1 0x70 0x06 0x32
i2cset -y 1 0x70 0x08 0x32
  • kõikide LED'ide välja lülitamine
i2cset -y 1 0x70 0x00 0x00

Lisame ajastatud toimingu, mis käivitab ühe skripti, kui päike hakkab loojuma (ligikaudne aeg) ja teise skripti, kui tõusma hakkab.[src 12]

Selleks kloonime skriptid GitHubist:

git clone https://github.com/raspberrycoulis/brightpi-control.git

Teeme kõik skriptid käivitatavateks käsuga chmod +x [skript].

Avame croni muutmiseks käsuga sudo crontab -e ja lisame sinna näiteks read:

0 16 * * * /bin/sh /home/pi/brightpi-control/IR-on.sh >> /var/log/cron/bright_pi.log
0 8 * * * /bin/sh /home/pi/brightpi-control/all-off.sh >> /var/log/cron/bright_pi.log

PIR[src 13][src 14][src 15]

Pealt vaates (objektiiv suunatud alla, oranžid potensiomeetrid enda poole) on vasakpoolne potensiomeeter tundlikkuse reguleerimiseks (päripäeva keerates suureneb tundlikkus ~5m-7m) ja parempoolne potensiomeeter aegviite reguleerimiseks (päripäeva keerates suureneb viite aeg 5s-300s). Vasakus servas on jumper, mis positsioonil H (vaikepositsioon) registreerib liikumist seni, kuni liikumine kestab, pikendades aegviidet pidevalt ja positsioonil L registreerib liikumise aegviite jooksul ja lõpetab liikumise registreerimise, kui aegviide on läbi.

Kontrollida, et /etc/modules failis on read i2c-bcm2708 ja i2c-dev.

Kontrollida, et /boot/config.txt failis on read dtparam=i2c1=on ja dtparam=i2c_arm=on.

Testimiseks käivitada skript ning tekitada anduri ees liikumist:

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
PIR_PIN = 24
GPIO.setup(PIR_PIN, GPIO.IN)

def MOTION(PIR_PIN):
               print Motion Detected!”

print PIR Module Test (CTRL+C to exit)
time.sleep(2)
print Ready

try:
               GPIO.add_event_detect(PIR_PIN, GPIO.RISING, callback=MOTION)
               while 1:
                              time.sleep(100)
except KeyboardInterrupt:
               print  Quit
               GPIO.cleanup()

NB!PIR_PIN väärtuseks peab olema, GPIO number, kuhu on ühendatud anduri signaali juhe (mitte pini järjekorra number). Antud juhul on selleks pin järjekorra numbriga 18 programmilise väärtusega GPIO 24.

Skripti väljundiks peaks tulema midagi sellist:

PIR Module Test (CTRL+C to exit)
Ready
Motion Detected!
Motion Detected!

RPi Cam Web Interface paigaldamine[src 16]

RPi Cam Web Interface on valmis veebirakendus, millega saab vähese vaevaga kaamera töövalmis seada, kaamera peenseadistusi teha, teha videosalvestust, jms.

Kloonime tarkvara repositooriumi GitHubist:

git clone https://github.com/silvanmelchior/RPi_Cam_Web_Interface.git

Paigaldamiseks liigume RPi_Cam_Web_Interface kausta ja käivitame paigaldamise skripti:

cd RPi_Cam_Web_Interface
./install.sh

Avanevas aknas on võimalus muuta pildil nähtavaid vaikesätteid:

install.sh

Olulised kohad veebirakenduse sätete muutmisel:

  • /RPi_Cam_Web_Interface kaust <- sisaldab skripte, millega saab rakendust muuta, eemaldada
  • /var/www/ <- veebirakenduse baas
  • /etc/raspimjpeg <- konfiguratsioonifail, mis sisaldab samu sätteid, mis veebiliideski ja kus saab muuta meedia salvestamise sihtkohta
  • /etc/motion <- motioni sätted

Avades nüüd RPi ip aadress (kui paigaldamisel märgitud alamkaust ja pordiks midagi muud kui 80, siis koos alamkausta ja pordiga) peaks avanema kaamera otsevaade.

RPI esileht

Siin saab teha peenseadistusi. Pildidelt näha mõningad neist.

Kaamera sätted
Süsteemi sätted

Välisvõrgust ligipääs

Selleks, et väljaspool sisevõrku otseülekannet näha, tuleb koduruuteris port suunata.

Näide:

raspberry sisevõrgu aadress on: 192.168.0.110
port: 8081
ISP poolt saadud staatiline ip: 12.123.123.123

ruuteris tuleb:

pordi suunamise lehel määrata väline port: nt 80
sisemine port (sama, mis seadistamisel pandud): 8081
sisemine IP (raspberry IP): 192.168.0.110

Peale seda saab välisvõrgust kaamera pilti vaadata aadressil http://staatiline_IP:80.

Turvalisuse lisamine[src 17]

Konto seaded

Muudame "pi" kasutaja vaikimisi parooli:

passwd pi

Paneme "sudo" parooli nõudma:

nano /etc/sudoers.d/010_pi-nopasswd

Muudame faili sisu selliselt:

pi ALL=(ALL) PASSWD: ALL

Ajastatud toimingud[src 18]

Lisame ajastatud toimingu, mis uuendab igapäevaselt SSH-d. Loome esmalt bash skripti /usr/local/bin kausta.

Näide faili sisust:

#!/bin/bash

# Author: Evelin Padjus
# Created: 31.10.2017
#
# Update openssh-server package

export LC_ALL=C	

sudo apt-get install --only-upgrade openssh-server

Me võiks ka otse cron jobi lisada käsu nt apt-get -y install openssh-server, aga me ilmselt soovime seda skripti täiendada aja jooksul.

Avame crontabi muutmiseks käsuga sudo crontab -e ja lisame sinna rea:

00 00 * * * bash /usr/local/bin/daily_update.sh >> /var/log/cron/daily_update.log

See rida tähendab, et käivitatakse /usr/local/bin/daily_update.sh skript iga päev kell 00:00 ja tegevus logitakse /var/log/cron/daily_update.log" logifaili. Logikaust peab olemas olema.

NB! Selle paketi uuendamise eesmärk on hoolitseda selle eest, et SSH võimalikud turvaaugud oleksid paigatud. Kuna meil eraldi testkeskkonda pole, siis ei soovi artikli autor kogu süsteemi uuendamist automatiseerida (nii mõnigi teenus võib sellest töötamast lakata või teenuse seadistus kaduda). Töökeskkonnas siiski sellist üksikpaketi uuendamist ei praktiseerita.

Võtmefailiga SSH ühendus[src 19]

Järgmisena lisame SSH-le võtmefailiga sisselogimise. Selleks loome võtmepaari arvutis, millega ühenduda soovime.

Näide:[src 20]

ssh-keygen -t rsa -b 4096 -C "Evelin Padjus, evelin@...."

-t määrab krüpteerimise algoritmi, -b võtme pikkus bittides, -C lisab kommentaari

Väljund:

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/eve/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/eve/.ssh/id_rsa_evelin.
Your public key has been saved in /Users/eve/.ssh/id_rsa_evelin.pub.
The key fingerprint is:
SHA256:0gYu5M/xdtdOBaFceQiIYcIbX52J83ODDGeQinL3BCA Evelin Padjus, evelin@....
The key's randomart image is:
+---[RSA 4096]----+
|    E.o.oo.*.+oo |
|     .ooo B.*oo..|
|    . .= + Bo... |
|   o..+o+ . = o. |
|    oo+.So   o ..|
|     + =  .  . . |
|      o o . . o  |
|       . . . o   |
|              .  |
+----[SHA256]-----+

Tulemuseks on 2 faili: salajane võti /Users/eve/.ssh/id_rsa_evelin ja avalik võti /Users/eve/.ssh/id_rsa_evelin.pub. Salajane võti peab jääma masinasse, millega ühendutakse ja avalik võti tuleb Raspberry Pi-sse toimetada.

Kopeerime avaliku võtme Raspberry'sse:

ssh-copy-id -i /Users/eve/.ssh/id_rsa_evelin.pub pi@192.168.0.111

Väljund:

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/eve/.ssh/id_rsa_evelin.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
pi@192.168.0.111's password: 

Number of key(s) added:        1

Now try logging into the machine, with:   "ssh 'pi@192.168.0.111'"
and check to make sure that only the key(s) you wanted were added.

Teeme muudatused /etc/ssh/sshd_config failis järgnevalt:

ChallengeResponseAuthentification no
PasswordAuthentification no
UsePAM no

NB! Nende kolme reaga keelatakse ära parooliga autentimine üls SSH. Need on artiklis esitatud selleks, et demonstreerida, kuidas turvalisust tõsta, kuid töökeskkonnas peab see olema läbimõeldud tegevus (kui võtmefailidega midagi juhtub, saab arvutile ligi vaid lokaalselt).

Kui me juba siin failis oleme, siis lisame sinna ka read:

PermitRootLogin no

"root" kasutaja ei saa SSH-ga ühenduda.

AllowUsers pi

Lubame vaid "pi" kasutajale SSH ühenduse.

Viimaks teeme restardi ja peale seda saame SSH ühenduse juba teha võtmefailiga.

Näide:

ssh -i /Users/eve/.ssh/id_rsa_evelin pi@192.168.0.111
Last login: Tue Oct 31 22:25:17 2017 from 192.168.0.122

Võtmepaariga SSH ühenduse loomise tarbeks oleks mõistlik luua klientmasinasse alias.

HTTPS ligipääs

Selleks, et kaamera pildi vaatamine üle võrgu turvalisem oleks, tuleks https seadistada ja http ümber suunata https-i peale.

Loome võtme:

openssl genrsa -out /etc/ssl/root_ca.key 2048

Väljund:

Generating RSA private key, 2048 bit long modulus
......+++
.+++
e is 65537 (0x010001)
openssl req -new -x509 -days 365 -key /etc/ssl/root_ca.key -out /etc/ssl/root_ca.crt

Väljund:

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ee
State or Province Name (full name) [Some-State]:Raplamaa
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:asd.com
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:secam01.asd.com
Email Address []:

Serveri privaatvõtme loomine:

openssl genrsa -out /etc/ssl/server.key 2048

Väljund:

Generating RSA private key, 2048 bit long modulus
.................................+++
.........+++
e is 65537 (0x010001)
openssl req -new -key /etc/ssl/server.key -out /etc/ssl/server.csr

Väljund:

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ee
State or Province Name (full name) [Some-State]:Raplamaa
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:asd.com
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:kaamera.asd.com
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:asd.com
openssl x509 -req -days 365 -in /etc/ssl/server.csr -CA /etc/ssl/root_ca.crt -CAkey /etc/ssl/root_ca.key -set_serial 01 -out /etc/ssl/server.crt
Signature ok
subject=C = ee, ST = Raplamaa, O = padjus.com, CN = kaamera.asd.com
Getting CA Private Key
openssl req -x509 -days 365 -key /etc/ssl/server.key -in /etc/ssl/server.csr -out /etc/ssl/server_ss.crt

Serveri võtmest parooli eemaldamine:

openssl rsa -in /etc/ssl/server.key -out /etc/ssl/server.key.insecure

Väljund:

writing RSA key
mv /etc/ssl/server.key /etc/ssl/server.key.secure
mv /etc/ssl/server.key.insecure /etc/ssl/server.key

Loodud sertifikaadid:

  • server.crt: Iseallkirjastatud serveri sertifikaat
  • server.csr: Serveri sertifikaadi allkirja taotlus
  • server.key: Serveri privaatvõti. (Ei nõua parooli apache käivitamisel)
  • server.key.secure: Serveri privaatvõti. (Nõuab parooli apache käivitamisel)
  • root_ca.crt: CA sertifikaat
  • root_ca.key: Võti millega CA allkirjastab sertifikaadi allkirja taotlusi

SSL mooduli lubamine:

a2enmod ssl
a2enmod rewrite && sudo service apache2 restart

Veedume, et Apache kuulab pordil 443 failis /etc/apache2/sites-available/default-ssl.conf ja lisame sinna sertifikaadi ja privaatvõtme asukoha:

SSLCertificateFile /etc/ssl/server.crt
SSLCertificateKeyFile /etc/ssl/server.key

Taaskäivitame teenuse:

systemctl restart apache2

TÄIENDAMISEL

Varundamine

Tõmmise tegemine[src 21]

Peale seda, kui kõik vajalik on süsteemis ära seadistatud, teeme mälukaardist tõmmise dd haldusvahendiga.

Näide:

sudo dd bs=4m if=/dev/disk2 of=raspbian.img

Väljund:

1895+0 records in
1895+0 records out
7948206080 bytes transferred in 970.554788 secs (8189343 bytes/sec)

Kataloogide varundamine NAS-i[src 22][src 23]

Varundame meile vajalikud kaustad rsynciga NAS seadmesse (käesolevas artiklis tehakse seda Synology NAS-i, aga samalaadselt peaks see ka töötama QNAPis vms NAS seadmes, mis toetab rsynci).

Loome esmalt NAS-i jagatud kausta hierarhia (näide piltidel).

Jagatud kaust NAS-is
Kausta hierarhia

Meil on nüüd NAS-ile samuti võtmepaari vaja. Töökeskkonnas peab lähtuma sellest, kuidas konkreetse ettevõtte IT infrastruktuuris mõistlik oleks hallata SSH võtmeid:

  • kas luus üks globaalne võtmepaar, mille puhul sama privaatne võti pannakse igasse klientmasinasse ja sama avalik võti igasse servermasinasse
  • luua iga serveri jaoks eraldi võtmepaar, kus kõikide serverite privaatne võti pannakse klientmasinasse
  • luua iga klientmasina kohta võtmepaar
  • iga klientmasina ja serveri paaril on oma võtmepaar

Käesolevas artiklis võtame kasutusele variandi, kus serveri privaatne võti pannakse kõikidesse klientmasinatesse. Seega kopeerime juba eespool loodud privaatvõtme NAS-i.

Näide:

scp /Users/eve/.ssh/id_rsa_evelin evelin@nas:/var/services/homes/evelin/.ssh/

Väljund:

evelin@nas's password: 
id_rsa_evelin                                                                          100% 3247   498.5KB/s   00:00

Kui nüüd SSH-d tehes RPI-sse:

ssh -i /var/services/homes/evelin/.ssh/id_rsa_evelin pi@secam01

tuleb NAS-is teade:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/var/services/homes/evelin/.ssh/id_rsa_evelin' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/var/services/homes/evelin/.ssh/id_rsa_evelin": bad permissions
Permission denied (publickey).

Siis muudame õigusi käsuga sudo chmod 700 /var/services/homes/evelin/.ssh/id_rsa_evelin.

Nüüd saame teha SSH-d NAS-ist RPI-sse ilma parooli sisestamata (va juhul, kui võtmepaari loomisel määrasime passphrase'i).

Võtmepaariga SSH ühenduse loomise tarbeks oleks mõistlik luua klientmasinasse alias.

Järgmisena loome bashi skripti, mis hakkab NAS-is ajastatud toiminguna üle SSH varundama määratud kauste ja hoiab tulevikus neid sünkroonis.

Näide bashi skriptist[src 24]:

#!/bin/bash

# Source: http://blog.hekkers.net/2013/05/18/backing-up-raspberry-pi-to-synology-nas/
# Created: 04.11.2017
#
# Backup Raspberry Pi with rsync to Synology NAS

export LC_ALL=C	

/usr/bin/rsync -avz --delete --exclude-from=/volume1/RPI/scripts/rsync-exclude.txt -e "ssh -p 22" pi@192.168.1.110:/ /volume1/RPI/backups/test/ >> /volume1/RPI/backups/logs/test.log 2>&1

Teeme skripti käivitatavaks käsuga chmod +x backup_folders.sh.

Esimene sync võib väga kaua aega võtta, kuna kopeeritakse kõik NAS-i. Edaspidi sünkroniseeritakse vaid muudatused (incremental).

Synology NAS-is ajastatud toimingu loomine näha järgnevatel piltidel:

Galerii

Kokkuvõte

Käesolevas artiklis esitatud peatükkide läbimise tulemusel valmis valvesüsteem, mis:

  • on ühendatud sise- ja välisvõrku
    • omab ligipääsu sisevõgus üle SSH
    • omab ligipääs sise- ja välisvõrgust veebirakendusele RPi Cam Web Interface
  • tuvastab liikumist PIR-iga aga on seadistatav tuvastama liikumist tarkvaraliselt
  • on turvalisuse tõstmise eesmärgil piiratud ligipääsuga
  • sisaldab automatiseeritud tegevusi

Nagu näha, avab Raspberry Pi üha uusi võimalusi koduste erilahenduste väljatöötamiseks.

Vaata lisaks

Välised lingid

Märkused

  1. Käesolevas artiklis on kasutatud Raspberry Pi 1 (Model B), kuid sobivad ka teised mudelid.
  2. Ei sobi öövõtete jaoks.
  3. Vajab infrapuna valgusallikat lisaks. Valgusallikana võib kasutada Raspberry Pi ametlikku öövaatlusmoodulit (night vision board, mis on müügil ka koos kaameraga) või Bright Pi lisakaarti (eelis on see, et on kasutatav nii tavakaameraga, kui ka öökaameraga. Lisaks on see, tänu kaardil oleva kiibi, 100% konfigureeritav. Võib ka ise meisterdada. Erinevaid sobivaid infrapuna kaarte võib teisigi leida, aga tasub eelnevalt juurde uurida voolutarbe ja võimalike probleemide kohta).
  4. Min. 8GB või suurem, kui on soov lokaalselt andmeid talletada.
  5. Raspberry Pi 3 on integreeritud WiFi'ga.
  6. Võimalik on kasutada ka POE jagurit, et vähem juhtmeid oleks.
  7. Sobivaks korpuseks võib kasutada ka pettekaameraid (dummy security camera), mis ebay's jms kohtades on kättesaadavad päris soodsa hinnaga. Pettekaamera puhul on võimalik ka ära kasutada nende infrapuna valgusallikat. Puuduseks on pettekaameratel see, et nad pole enamasti ilmastikukindlad ning valmistatud plastikust, kuid leidub ka kvaliteetsemaid. Kasutada võib ka päris valvekaamerate korpusi (CCTV encloser), mis tihti peale on kütteelemendiga. Kütteelemente müüakse ka eraldi.
  8. Alternatiivine võib kasutada Motion nimelist tarkvara, mis tuvastab liikumist videopildi muutuste põhjal
  9. Peab võimaldama samaaegselt laadimist ja toitmist.
  10. Lisaobjektiiviga BrightPi moodulit kasutada ei saa, kuna see ei mahu objektiivile peale.
  11. Võib üksjagu aega võtta enne, kui terminali aknasse mingit informatsiooni ilmub. Aktiivsuse jälgimiseks avada Activity Monitor, Disk vaheleht, dd protsess. Bytes written ja Bytes read näitab ära kui palju on tõmmisest andmeid kirjutatud ja loetud.
  12. Raspberry Pi vaikimisi kasutajanimi on "pi" ja parool "raspberry".

Kasutatud allikad

Autor

Evelin Padjus, AK31
2017

Versioon Muudatuse kp Muutja Muudatus
1.0 10.11.2017 Evelin Padjus Esimene väljaanne
1.1 20.11.2017 Evelin Padjus Süntaksi ja õigekirja kontroll
1.2 07.12.2017 Evelin Padjus Parandused SSH teemades
1.3 08.12.2017 Evelin Padjus SSL sertifikaadi loomine