Salve a tutti!
Qualche tempo avevo pubblicato un paio di articoli per la creazione di un sistema di videosorveglianza fatto in casa. Beh.. il tempo della terza parte è dunque giunto!
Nel caso vi foste persi le prime due parti, no problem! Eccole qua:
Oggi invece vediamo due cosette interessanti. La prima consiste nel settare il nostro Raspberry Pi affinché esegua lo script python di videosorveglianza alla sua accensione. In seconda battuta invece vedremo come aggiungere un sensore di movimento direttamente alla nostro dispositivo.
Lanciare script python all'accensione
È chiaro che quando vogliamo installare il sistema di videosorveglianza da qualche parte, non vogliamo metterci a "spippolare" per attivarlo. Per questo è necessario che una volta attaccata la corrente, lo script che abbiamo creato nel precedente tutorial, parta subito!
Per fare questo lanciamo i seguenti semplici passi.
Entrando nella cartella del nostro progettino creiamo uno script bash
cd videosrveglianza
nano launcher.sh
All'interno dello script, scriviamo con le dovute modifiche
1 2 3 4 5 6 7 |
#!/bin/sh # launcher.sh cd / cd home/pi/videosorveglianza sudo python vs.py cd / |
Ctrl + X, poi Y e invio per salvare.
Rendiamo eseguibile lo script in questo modo
chmod 755 launcher.sh
Adesso nella home creiamo una cartella logs nella quale verranno salvati i messaggi che l'esecuzione dello script può generare. Questo sarà molto utile nel caso di errori!
cd && mkdir logs
Adesso creiamo il cron con crontab che è un deamon che ci permette di eseguire script in tempi ben precisi. Lanciando da terminale
sudo crontab -e
Nel caso vi chieda di fare una scelta tra tre editor, scegliete nano (che dovrebbe essere la 2).
Vi apparirà un file con questo contenuto
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# Edit this file to introduce tasks to be run by cron. # # Each task to run has to be defined through a single line # indicating with different fields when the task will be run # and what command to run for the task # # To define the time you can provide concrete values for # minute (m), hour (h), day of month (dom), month (mon), # and day of week (dow) or use '*' in these fields (for 'any').# # Notice that tasks will be started based on the cron's system # daemon's notion of time and timezones. # # Output of the crontab jobs (including errors) is sent through # email to the user the crontab file belongs to (unless redirected). # # For example, you can run a backup of all your user accounts # at 5 a.m every week with: # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # # For more information see the manual pages of crontab(5) and cron(8) # # m h dom mon dow command |
quello che vi basterà fare è aggiungere questa riga in fondo (sempre con le dovute modifiche), salvare e uscire.
@reboot sh /home/pi/videosorveglianza/launcher.sh >/home/pi/logs/cronlog 2>&1
A questo punto se proviamo a riavviare, lo script dovrebbe partire e quindi arrivare il messaggio su telegram di avvio del sistema.
Se non è successo nulla, andate a vedere in logs/cronlog per vedere l'errore.
Sensore di movimento
Pensavo fosse una cosa carina sfruttare l'interfaccia GPIO di Raspberry. Avevo già scritto un articolo sul GPIO di Raspberry pi 2 e 3 proprio nell'ottica di aggiungere un sensore di movimento al nostro sistema di videosorveglianza. Non starò qua a rimettervi il codice dell'articolo precedente ma solo lo script inerente al funzionamento del sensore. Sarà compito vostro integrare il tutto 🙂 (niente di complicato!).
Prima di tutto vediamo il dispositivo. Il piccolo sensore si chiama HC-SR501 ed è un PIR Motion Sensor Module ed è acquistabile anche qua (se non avete fretta xD).
Ha tre pin: GND, l'ouput che ci darà informazioni sul movimento e il VCC. Il pin VCC lo attacchiamo ai 5V, il pin centrale di output lo attacchiamo al pin 21 (che è il primo più esterno dal lato delle porte USB) e GND a al ground.
Lo script è molto semplice e stampa a console se c'è stato un movimento o meno.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import time import RPi.GPIO as io io.setmode(io.BCM) pir_pin = 21 io.setup(pir_pin, io.IN) # activate input i=0 while True: if io.input(pir_pin): print(str(i)+" PIR ALARM!") i=i+1 time.sleep(2) |
Per il momento è tutto. Come sempre se avete consigli o dubbi, lasciateci un commento!
Alla prossima!