Raspberry Pi valvekaamera
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 linuxi 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
- Raspberry Pi mikroarvuti[1] (vt pildilt Komponendid)
- Pi kaameramoodul[2] või Pi infrapuna kaameramoodul (Pi NoIR)[3] (vt pildilt Komponendid)
- 10 klass mälukaart[4] (vt pildilt Komponendid)
- Wifi pulk või LAN kaabel[5] [6] (vt pildilt Komponendid)
- Toiteplokk (vt pildilt Komponendid)
- Korpus[7]
- Klaviatuur
- Hiir
- Monitor
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 formaatimise utiliit (nt Windows ja Mac: SD Formatter[ext 5]; Linux: GParted[ext 6])
- Lahti pakkija (nt Windows: 7-Zip[ext 7]; Linux: Unzip[ext 8]; Mac: The Unarchiver[ext 9])
- Tõmmise kirjutamise utiliit (nt Etcher- toetab nii Windowsi, Linuxit kui ka Maci[ext 10])
- SSH klient (Linux ja Mac: 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
- 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]
Ü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 jootmisel sisestada ledid selliselt, et lühem jalg on noole otstes.
Pildilt vaadatuna on juhtmed:
- must - pin 6 (GND)
- valge - pin 4 (5V)
- hall - pin 5 (SDA1/i2c)
- lilla - pin 3 (SCL1/i2c)
- PIR ühendamine[src 3]
Juhtmed ühendatud:
- pin 2 (5V)
- pin 18 (GPIO 24)
- pin 20 (GND)
- Kõik seadmed GPIO küljes pildil
Installeerimine[src 4]
Valmistame ette mälukaardi Raspbiani operatsioonisüsteemiks.[src 5][src 6]
Mac
Kasutame käsurea utiliiti 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 konverteerida 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+
Konverteerime 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] utiliiti 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] utiliidi 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 diskutiliidiga:
diskutil eject /dev/disk2
Väljund:
Disk /dev/disk2 ejected
Linux
TODO
Windows
Disk-Part Utility
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 eelinstalleeritud 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] utiliidi.
Näide:
raspi-config
Väljund:
Valime "5 Interfacing Options"
Seejärel valime "P2 SSH ..." ja kinnitame valiku "Yes" nupuga.
Väljume utiliidist "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 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 konverteerime 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 utiliit ja teha valikud vastavalt piltidele
Testimiseks teeme pildi.
Näide:
raspistill -o pilt.jpg
Bright Pi
Toimida vastavalt piltidele.
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 ledid. Kui nüüd pilti teha käsuga raspistill -o pilt.jpg
peaks pilt olema hallides toonides. Alternatiivselt võib suunata ledid kaamerasse ja peaks näha olema nende helendamist.
Mõned olulisemad koodi näited[src 11]:
- kõikide valgete ledide sisse lülitamine
i2cset -y 1 0x70 0x00 0x5a
- kõikide infrapuna ledide sisse lülitamine
i2cset -y 1 0x70 0x00 0xa5
- kõikide ledide sisse lülitamine
i2cset -y 1 0x70 0x00 0xff
- intensiivsuse suurendamine
i2cset -y 1 0x70 0x09 0x0f
- valgete ledide 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 ledide 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 ledide 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 installeerimine[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
Installeerimiseks liigume RPi_Cam_Web_Interface
kausta ja käivitame installatsiooni skripti:
cd RPi_Cam_Web_Interface
./install.sh
Avanevas aknas on võimalus muuta pildil nähtavaid vaikesätteid:
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 installeerimisel märgitud alamkaust ja pordiks midagi muu kui 80, siis koos alamkausta ja pordiga) peaks avanema kaamera otsevaade.
Siin saab teha peenseadistusi. Pildidelt näha mõningad neist.
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 -y install 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.
Võtmefailiga SSH ühendus[src 19]
Järgmisena lisame SSH-le võtmefailiga sisselogimise. Selleks loome võtmepaari arvutis, millega ühenduda soovime.
Näide:
ssh-keygen -t rsa -a 5 -C "eve-mac"
-t määrab krüpteerimise algoritmi, -a lisab soolab, -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.
Your public key has been saved in /Users/eve/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:0gYu5M/xdtdOBaFceQiIYcIbX52J83ODDGeQinL3BCA eve-mac
The key's randomart image is:
+---[RSA 2048]----+
| 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
ja avalik võti /Users/eve/.ssh/id_rsa
. Salajane võti peab jääma masinasse, millega ühendutakse ja avalik võti tuleb Raspberry Pi-sse toimetada.
Kopeerime avaliku võtme Raspberry'sse:
cat .ssh/id_rsa.pub | ssh pi@192.168.0.111 'cat >> .ssh/authorized_keys'
Kui .ssh/authorized_keys
faili või kataloogi pole, siis võib selle luua.
Muudame .ssh/authorized_keys
faili õigusi:
sudo chmod 644 ~/.ssh/authorized_keys
Teeme muudatused /etc/ssh/sshd_config
failis järgnevalt:
ChallengeResponseAuthentification no
PasswordAuthentification no
UsePAM no
Kuime 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 pi@192.168.0.111
Enter passphrase for key '/Users/eve/.ssh/id_rsa':
Last login: Tue Oct 31 22:25:17 2017
HTTPS ligipääs
Selleks, et kaamera pildi vaatamine üle võrgu turvalisem oleks, tuleks https seadistada ja http ümber suunata https-i peale.
TODO
Varundamine
Kuvatõmmise tegemine[src 20]
Peale seda, kui kõik vajalik on süsteemis ära seadistatud, teeme mälukaardist pildi dd utiliidiga.
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 21][src 22]
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).
Loome võtmepaari NAS-is (kuna antud teema on pikemalt lahti kirjutatud eespool, ei hakka siin üksikasju üle kordama):
ssh-keygen -t rsa -a 5 -C "nas"
Kuna me praegu veel üle SSH NAS-ist RPI-sse ei pääse, siis kopeerime avaliku võtmefaili /var/services/homes/evelin/.ssh/id_rsa.pub
sisu puhvrisse ja lisame selle RPI terminali aknas .ssh/authorized_keys
faili.
Kui nüüd SSH-d tehes RPI-sse tuleb NAS-is teade:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/var/services/homes/evelin/.ssh/id_rsa' 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": bad permissions
Permission denied (publickey).
Siis muudame õigusi käsuga sudo chmod 700 /var/services/homes/evelin/.ssh/id_rsa
.
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 hoiab tulevikus neid sünkroonis.
Näide bashi skriptist[src 23]:
#!/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
.
Antud juhul võttis varundamine kohutavalt palju aega. Skript vajab kindlasti täiendamist.
Synology NAS-is ajastatud toimingu loomine näha järgnevatel piltidel:
Galerii
-
Komponendid
-
NoIR kaamera moodul ühendatud Raspberry Pi-ga
-
Bright Pi ühendatud Raspberry Pi-ga
-
NoIR + BrightPi + PIR
-
Komponendid2
-
Korpuse detailid
-
Korpus ja sisu
-
Korpus ja sisu pealt
-
Korpus ja sisu ees
-
Komplekteeritud sabaga
-
Komplekteeritud kattega
-
Final touch
Kokkuvõte
Käesoleva artiklis esitatud peatükkide läbimise tulemusel valmis valvesüsteem, mis:
- on ühendatud sise- ja välisvõrku
- ligipääs sisevõgus üle SSH
- 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
- Tar kasutamine
- Dd
- Getting started with Raspberry Pi
- Ssh
- Ssh authorized keys fail
- Redaktor nano kasutamine
- Cron ja crontab
- Rsync
Välised lingid
- ↑ Enam levinud vead jootmisel
- ↑ Kuidas joota
- ↑ Tarkvaraline liikumise tuvastamise tarkvara Motion
- ↑ Raspbian allalaadimine
- ↑ SD Formatter allalaadimine
- ↑ GParted allalaadimine
- ↑ 7-Zip allalaadimine
- ↑ Unzip allalaadimine
- ↑ The Unarchiver allalaadimine
- ↑ Etcher allalaadimine
- ↑ PuTTy või Bitvise allalaadimine
- ↑ RPi Cam Web Interface veebikeskkond
- ↑ Simple SMTP
- ↑ Raspberry Pi General Purpose Input/Output
- ↑ Raspberry Pi GPIO Cheat Sheet
- ↑ Raspberry Leaf GPIO-le
- ↑ Raspberry Leaf GPIO-le välja printimiseks
- ↑ Mac OS X diskutil man page
- ↑ Mac OS X TAR man page
- ↑ Mac OS X dd man page
- ↑ Kui Raspberry teeb restarti peale USB seadme külge panemist
- ↑ OpenSSH man page
- ↑ Raspbiani konfiguratsiooni fail RASPI-CONFIG
- ↑ Kiireim, lihtsaim, mugavaim viis kaamera valmis seada.
- ↑ PiCamera dokumentatsioon
Märkused
- ↑ Käesolevas artiklis on kasutatud Raspberry Pi 1 (Model B), kuid sobivad ka teised mudelid.
- ↑ Ei sobi öövõtete jaoks.
- ↑ 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).
- ↑ Min. 8GB või suurem, kui on soov lokaalselt andmeid talletada.
- ↑ Raspberry Pi 3 on integreeritud wifiga.
- ↑ Võimalik on kasutada ka POE jagurit, et vähem juhtmeid oleks.
- ↑ 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.
- ↑ Alternatiivine võib kasutada Motion nimelist tarkvara, mis tuvastab liikumist videopildi muutuste põhjal
- ↑ Peab võimaldama samaaegselt laadimist ja toitmist.
- ↑ Lisaobjektiiviga BrightPi moodulit kasutada ei saa, kuna see ei mahu objektiivile peale.
- ↑ 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.
- ↑ Raspberry Pi vaikimisi kasutajanimi on "pi" ja parool "raspberry".
Kasutatud allikad
- ↑ Kaamera ühendamine ja sisse lülitamine Vaadatud: 28.10.2017
- ↑ Bright Pi kokkupanek, ühendamine ja testimine Vaadatud: 29.10.2017
- ↑ Liikumisanduri juhend Vaadatud: 29.10.2017
- ↑ Raspbiani installeerimine Vaadatud: 25.10.2017
- ↑ SD mahu standardid Vaadatud 25.10.2017
- ↑ SD kaardi konverteerimine Raspberry Pi tarbeks Vaadatud 25.10.2017
- ↑ Raspbiani tõmmise installeerimine Mac OS-is.Vaadatud: 25.10.2017
- ↑ Raspbiani wifi seadistamine üle käsurea Vaadatud 25.10.2017
- ↑ SSH lubamine Raspbianis Vaadatud 25.10.2017
- ↑ Välise andmekandja seadistamine Vaadatud 01.11.2017
- ↑ Bright Pi koodi näited Vaadatud 08.11.2017
- ↑ Automaatne tulede käivitamine Vaadatud 08.11.2017
- ↑ Liikumisanduri seadistamine ja testimine Vaadatud: 29.10.2017
- ↑ i2c seadistamine Vaadatud: 29.10.2017
- ↑ PIR spetsifikatsioon Vaadatud: 29.10.2017
- ↑ RPi Cam Web Interface installeerimine Vaadatud 10.11.2017
- ↑ Turvalisuse lisamine Vaadatud 31.10.2017
- ↑ Ajastatud toimingu lisamine Vaadatud 31.10.2017
- ↑ Paroolita kaughaldus
- ↑ Kuvatõmmise tegemine SD kaardist Vaadatud 02.11.2017
- ↑ rsync Vaadatud 01.11.2017
- ↑ Raspberry Pi rsync Synology NAS-i Vaadatud 01.11.2017
- ↑ Raspberry varundamine Synology NAS-i Vaadatud 01.11.2017
Autor
Evelin Padjus, AK31
2017
Versioon 1.0