Come creare interfaccia web per la Raspberry Pi Camera

Nell’articolo di oggi vedremo come creare una interfaccia web che permette di modificare tutti i parametri e compiere determinate azioni utilizzando la Raspberry Pi Camera.

Cos’è un’interfaccia? L’interfaccia è un elemento di contatto o intermediazione tra due entità, siano esse sistemi, cose o persone e consente l’interazione fra di esse. Forse non ce ne rendiamo conto, ma in una giornata utilizziamo diverse interfacce: telecomandi, i sistemi di guida di un automobile, il computer. Questo in particolare, a sua volta, ha diverse interfacce: dalla tastiera al monitor poi ancora ogni singolo programma ha una sua interfaccia, fino ad arrivare all’interfaccia web che è quella specifica per i siti internet.

Questa interfaccia in particolare permette il controllo della fotocamera e riesce a rilevare determinati tipi di movimento; inoltre è possibile creare animazioni time lapse e scatto di immagini e registrazioni di video.

Nell’articolo di oggi vedremo:

  • Installazioni preliminari
  • Installazione raspberry pi camera
  • cosa installare per utilizzare la interfaccia web
  • utilizzare l’interfaccia web solo dalla board raspberry
  • accedere all’interfaccia web da qualsiasi dispositivo

I materiali da utilizzare sono i seguenti:

INSTALLAZIONI PRELIMINARI

ATTENZIONE: questa procedura è valida solo per la Raspberry Pi Camera, non funzionerà con una webcam USB

Apri il terminale.

Per sicurezza effettuiamo un update:

INSTALLAZIONE RASPBERRY PI CAMERA

Ho scritto una guida approfondito a riguardo, per leggerla potete utilizzare il seguente link: Come installare e configurare la Raspberry Pi Camera

COSA INSTALLARE?

Scarichiamo da GitHub tutto il materiale necessario digitando nel terminale il seguente comando:

Entriamo nella cartella RPi_Cam_Web_Interface con il comando:

e installiamo gli script eseguibili con il comando:

Comparirà questo menù:

Ora possiamo muoverci in due modi diversi. Vediamo il primo modo

MODO N.1: UTILIZZARE L’INTERFACCIA WEB SOLO DALLA BOARD RASPBERRY PI

Se si vuole utilizzare l’interfaccia web solo sulla board Raspberry e non da remoto non è necessario cambiare porta e inserire username e password. Quindi possiamo cliccare su OK

Poi clicchiamo su SI.

Ora l’interfaccia web è pronta, dobbiamo solo accederci, ma come?

Abbiamo bisogno dell’indirizzo IP. 

Vediamo come scoprire l’indirizzo IP della nostra board Raspberry.  Per farlo apriamo il terminale da Raspberry Pi e digitiamo:

il risultato è un qualcosa del genere:

desktop

L’indirizzo IP è quello tra parentesi.

Apriamo il nostro browser e scriviamo nella barra degli indirizzi quanto segue:

http://tuoindirizzoip/html

Ecco il risultato.

MODO N:2: ACCEDERE ALL’INTERFACCIA WEB DA QUALSIASI DISPOSITIVO

La prima cosa che dobbiamo fare? Accedere al menù precedente digitando nel terminale i seguenti comandi:

Entriamo nella cartella RPi_Cam_Web_Interface con il comando:

e accendiamo al menu con il comando:

Dobbiamo modificare alcuni parametri, potrebbero nascere problemi se utilizzate la porta 80 e soprattutto se non utilizzare nessuna credenziale.

Quindi:

  • imposta un nuovo username
  • imposta una password
  • cambia la porta da 80 a 8080

Proviamo se funziona prima a livello locale. Nel momento in cui si lavora nelle reti è consigliato operare dal livello più basso (da local o host) a quello più altro (per esempio a livello del router).

Quindi apriamo il nostro broswer.

Andiamo nella barra degli indirizzi e digitiamo quanto segue:

http://indirizzoip:port/html

Nel mio caso ho digitato:

http://192.168.1.2:8080/html

Ecco qui il risultato

Inserisci l’username e password impostati in precedenza e verifica che funzionino.

Il risultato finale è questo:

Si ma è la stessa cosa di prima! Vero, ma ora arriva la parte più importante, aprite bene gli occhi

DI cosa abbiamo bisogno per accedere da remoto da qualsiasi dispositivo?

La risposta è

  • Indirizzo IP del router in cui la board Raspberry Pi è collegato (IP WAN) con il quale si collega alla rete internet esterna
  • Aprire le porte del router

Vi mostrerò la procedura di come scovare queste informazioni utilizzando il modem di default che fornisce la TIM nel momento in cui sottoscrivi un abbonamento per la Fibra 100/200 MB. Questo insomma:

Dobbiamo accedere al panello di controllo del nostro router. Come procedere?

Apriamo il nostro broswer e digitiamo quanto segue:

http:/192.168.1.1

oppure

http://192.168.0.1

Se non compare nessuna schermata di login significa che la rete è stata impostata in modo differente. Vediamo come scovare l’indirizzo Ip del router.

Se sei su WIndows, premi su Start → Scrivi CMD nella barra di ricerca → seleziona Command Prompt → si aprirà una nuova finestra → scrivi “ipconfig” e premi invio. Vedrai un indirizzo IP del router accanto a Default Gateway.

Se sei su Linux, apri un terminale e digita il comando route -n

Apriamo il nostro broswer e digitiamo quanto segue:

http://indirizzo_ip_appena_scoperto

Ed ecco qui che comparirà una schermata di login di questo tipo:

E ma io non conosco la password! Come faccio ad accedere?! Devi sapere che ci sono username e password di default per ogni fornitore.

Username router comuni: admin, root, administrator, user

Password router comuni: admin, password, 1234, 12345, unknown, router, cisco, default, cable, root, telekom

Per una lista più comprensiva di username e password, ti raccomandiamo di visitare Lista Router Password di Default. Il sito mantiene un database comprensivo di router con le relative informazioni di login

Comparirà questo tipo di schermata o qualcosa di simile:

Ma scusa, avevi detto che bastava trovare l’indirizzo ip del router per accedere da remoto, l’ho trovato poco fa, a che serve accedere a questo panello?

Un host su Internet ha un IP pubblico e un MAC address.
Un servizio (un server) ha anche una “porta”, un identificatore TCP al quale viene connessa la “socket”, ovvero lo stream dei pacchetti TCP/IP

I router hanno almeno due schede di rete, una verso l’interno della rete (rete locale, casa) e una all’esterno (rete internet, per esempio FB).

Quindi il router ha (detto in modo molto grossolano) due indirizzi IP. Un indirizzo IP che identifica la rete interna e un altro che identifica la rete esterna.

Ma perché questa scelta?! Non potevamo utilizzare gli indirizzi IP dei nostri dispositivi direttamente nella rete esterna.

A livello teorico è giusto. Ma devi sapere che

L’indirizzo IPv4 è formato da 32 bit, esso è univoco sulla rete di cui fa parte.

Il numero di indirizzi univoci disponibili in IPv4 è {\displaystyle 2^{32}=256^{4}=4.294.967.296\cong 4,3\cdot 10^{9}} ma bisogna tener presente che non vengono usati tutti, perché alcuni sono riservati a un particolare utilizzo (ad esempio gli indirizzi 0.0.0.0, 127.0.0.1, 255.255.255.255, 192.0.34.166 e la classe 192.168.0.1/16)

Ma nel mondo esistono di più di 4 miliardi di dispositivi in grado di collegarsi a internet, come facciamo?

Ma come faccio quindi a navigare su internet? 

Utilizziamo il protocollo NAT. Il protocollo NAT (Network Address Translation) permette di ridurre radicalmente il numero di ip pubblici necessari per far connettere in rete tutti i dispositivi esistenti. Tutti i dispositivi della rete locale vengono mascherati da un unico indirizzo ip (quindi da un router abilitato a nat) così da essere visti come un unico apparecchio all’interno della rete privata del nostro internet provider. In secondo luogo quando un dispositivo della rete locale manda un messaggio al router nat per contattare un server viene registrata una voce in una particolare tabella, detta di traduzione, in cui vengono associati gli IP locali del dispositivo, la porta di uscita del dispositivo, l’ip pubblico di uscita.

Quando il server verrà contattato dal nostro messaggio in realtà vedrà unicamente l’ip pubblico di uscita dal router, associato alla porta relativa.

Quindi in parole povere ogni dispositivo viene riconosciuto tramite il meccanismo delle porte, ecco il motivo per il quale, nonostante navighiamo in internet con lo stesso indirizzo IP e con diversi dispositivi il messaggio viene ricevuto sempre in modo corretto.

Ricordati: ogni router ha un indirizzo univoco nel mondo quando naviga in internet.

Come identificare facilmente l’IP pubblico?

  1. Ritornando nella pratica, per scoprire questo indirizzo ip pubblico lo devi scovare nel panello di controllo, devi trovare la dicitura IP WAN

Ecco qui un esempio:

raspberry

2) Se non riuscite a trovare l’indirizzo IP WAN dal panello di controllo del router potete utilizzare siti come whatismyipaddress.com che vi permettono di scoprire con un click il vostro indirizzo ip pubblico.

raspberry

Ma quindi a cosa mi serve conoscere questo indirizzo ip pubblico? per poter accedere da qualsiasi dispositivo al nostro router. Ma come faccio ad accedere all’interfaccia web della Raspberry Pi Camera?

Per fare questo bisognerà impostare nel router un port-forwarding, ovvero ‘aprire’ una determinata porta sull’IP interno del dispositivo.

In tal modo basterà digitare (da qualsiasi parte del mondo), IPPubblico:PortaAperta per inoltrare la richiesta di connessione attraverso il nostro router, verso il dispositivo locale.

Che cos’è precisamente una porta?

Una porta ha la funzione di ricevere informazioni che viaggiano da un luogo all’altro. Consente quindi che il tuo computer sia abilitato ad accogliere il flusso di dati e informazioni provenienti da un programma, da internet oppure da un altro dispositivo operante sulla stessa rete.

Le porte sono numerate, per motivi di coerenza e di programmazione. Infatti, è tipico che servizi o funzioni di sistema simili utilizzino gli stessi numeri di porta sui server di ricezione. I numeri di porta e l’indirizzo IP dell’utente generano quelle informazioni identificative conservate da ogni provider di servizi internet; il “chi fa cosa”, per intenderci.

Alcune porte (sino alla 1024) sono di solito riservate a servizi specifici di Internet (FTP, HTTP, SSH, Telnet, RPC) altre invece sono libere e possono essere utilizzate per application server (ad esempio un server cambiavalute, o un server che risponde ad una determinata richiesta di traduzione metrica, può avere una porta determinata.

A complicare ulteriormente le cose, possiamo avere più server virtuali sullo stesso server fisico: ad esempio sul Raspberry di casa mia posso aver installato un webserver, un FTP server e un SSH server. Ovviamente la macchina risponde allo stesso indirizzo IP.

Come faccio allora a determinare quale tipo di servizio chiamare sul mio server (raspberry) fisico?
Semplice: ogni servizio ha una su specifica porta TCP/IP

Quindi posso chiamare l’IP 192.168.1.110:80 per il web, il 192.168.1.110:21 per l’FTP, il 192.168.1.110:22 per il server SSH, e il mio server virtuale saprà ogni volta con quale protocollo rispondere

Cosa vuol dire Port Forwarding?

Nelle reti informatiche il port forwarding è l’operazione che permette il trasferimento dei dati (forwarding) da un computer ad un altro tramite una specifica porta di comunicazione. Questa tecnica può essere usata per permettere ad un utente esterno di raggiungere un host con indirizzo IP privato (all’interno di una LAN) mediante una porta dell’IP pubblico dello stesso. Per eseguire questa operazione si ha bisogno di un router in grado di eseguire una traduzione automatica degli indirizzi di rete, detta NAT.

Eseguire un port forwarding attraverso il router significa dire al router:
“Se arriva un pacchetto per l’indirizzo 192.168.1.110:80 passalo al server interno, è un pacchetto http e va al sito web. Se invece arriva un pacchetto per l’indirizzo 192.168.1.110:23, si tratta di un tentativo di telnet (pericolosissimo!) quindi, PRIMA di collegarlo alla porta relativa, voglio farlo passare attraverso un server proxy o un firewall, nel quale ho definito tutti e soli i servizi e gli utenti abilitati.

Come “aprire” le porte del nostro router?

Per quanto riguarda il modem TIM.

Andiamo nel panello di controllo del router.

Andiamo su servizi wan.

raspberry

Vai su “Mostra Opzioni Avanzate”

raspberry

Vai su “Aggiungere un nuovo port mapping ipv4”

raspberry

 

Ora andiamo nello spazio vuoto e aggiungiamo la porta impostata in precedenza (8080) e poi inseriamo l’indirizzo ip del nostro Raspberry Pi. Per modificare la porta wan clicchiamo sul rettangolo e andiamo in fondo su personalizza.

raspberry

Come aprire le porte di altri router?

Linea Generale:

l’opzione da individuare può chiamarsi in modo diverso in base al modello di router in nostro possesso; possiamo trovare Port Forwarding, Inoltro/attivazione delle porte, Forwarding / Virtual Server, Port mapping o Abilitazione porte. Questa opzione la troviamo spesso nelle impostazioni Avanzate o Advanced della configurazione WAN o Internet.

Una volta cliccato sull’opzione per configurare nuove porte, otterremo un pannello dove è possibile dare un nome alla nuova regola, indicare quale porta o intervallo di porte aprire e verso quale indirizzo IP assegnare l’inoltro tra i dispositivi della nostra rete domestica.

Si dovrà specificare la porta TCP, la porta UDP o entrambi, a seconda del programma e inserire correttamente l’IP assegnato al dispositivo dove è presente il programma su cui aprire le porte: se per esempio la porta da aprire è 1456 di tipo TCP e l’indirizzo IP del dispositivo è 192.168.1.4, assicuriamoci che la porta 1456 TCP venga aperta verso 192.168.1.4 (i router più moderni vi permetteranno di inoltrare direttamente verso i nomi dei dispositivi).

Vuoi sapere step by step come aprire le porte del tuo router? Puoi leggere questo articolo nel quale viene riportata la procedura passo-passo per ogni router.

Ed ecco qui che siamo pronti ad accedere da un altro dispositivo.

Apriamo il broswer e digitiamo nella barra degli indirizzi quanto segue:

http://IPPubblico:PortaAperta /html

Il risultato è il seguente:

raspberry

Inserisci l’username e password impostati in precedenza e verifica che funzionano.

Il risultato finale è questo:

raspberry

P.S dell’autore dell’articolo:

Scrivere di sicurezza senza averne masticata per anni è rischioso: si rischia di scrivere errori. Voglio dire a voi lettori che nonostante possa aver studiato bene da autodidatta questi argomenti per me potrebbe essere facile fare errori. Il mondo delle reti è un argomento ostico, soprattutto per un ragazzo di 18 anni che non ha avuto modo di fare pratica.  Ho fatto il possibile per offrire ai lettori i motivi dietro certi meccanismi, e non far effettuare dei semplici copia incolla dei passaggi senza capire quello che facevano.

Voglio ringraziare AZ-Delivery per avermi dato la possibilità di avere la rpicam.

Preferireste aspettare 8 settimane per l’autoimportazione dalla Cina, incerti se le merci arriveranno mai, le terre alla dogana o semplicemente saranno rispedite indietro? O acquistare in Germania ad un prezzo totalmente gonfiato da un rivenditore specializzato? Preferisci acquistare il prodotto a buon mercato in Cina senza essere sicuro di quale versione del prodotto riceverai, o ordinarlo dal rivenditore tedesco incl. istruzioni e scheda dati?

Nel seguente link è presente il sito ufficiale AZdelivery

Per chi fosse interessato può acquistare la rpicam nel seguente link.

Iscriviti ai nostri gruppi Telegram

Link utili

Seguici per non perdere le prossime novità!

Simone Candido è un ragazzo appassionato del mondo tech nella sua totalità. Simone ama immedesimarsi in nuove esperienze, la sua filosofia si basa sulla irrefrenabile voglia di ampliare a 360° le sue conoscenze abbracciando tutti i campi del sapere, in quanto ritiene che il sapere umano sia il connubio perfetto tra cultura umanistica e scientifica.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.