MTBlog

Configurazione connessione ad internet per Raspberry PI mediante internet key

All´interno del presente post andremo ad effettuare l´installazione e la relativa configurazione di una internet key su Raspberry PI. Al termine della procedura il tuo Raspberry sarà connesso ad internet.

Hardware necessario


  • Raspberry PI e scheda SD
    Per la presente guida si considera il Raspberry già preconfigurato. Qui puoi trovare la nostra guida su come creare una installazione funzionante di Linux Raspbian sul tuo Raspberry.
  • Internet key
    È necessaria per la connessione internet mediante SIM, ti consigliamo, prima di effettuare l´acquisto, di verificare che la internet key sia compatibile con il Raspberry e con Linux. Qui puoi trovare una breve lista delle internet key compatibili. Se non trovi nessuna delle chiavette elencate in vendita puoi provare a cercare su Google se la internet key che hai identificato è compatibile. Per la scrittura del presente post abbiamo effettuato test con due internet key marca Huawei modelli E173 ed E303.
  • Scheda SIM
    Permette la navigazione internet. Ti consigliamo, prima di effettuare l´acquisto, di verificare che l´operatore scelto garantisca un buon segnale nella zona in cui vorrai utilizzarla. Se devi inviare solo i dati della tua stazione meteo ti consigliamo anche di valutare con attenzione il bundle di GB che effetivamente ti servono, considera che ogni invio erode massimo qualche KB di dati.
  • Connessione internet
    La connessione è necessaria per scaricare i software necessari al funzionamento della internet key. Terminata la procedura potrai procedere a disconnettere il Raspberry dal tuo router di casa.
  • PC Windows
    Essendo il Sistema Operativo più comune abbiamo deciso di scrivere la procedura e selezionare i software da utilizzare per Microsoft Windows.

Software necessario


  • Putty
    Scaricabile da qui. Ti permetterà di accedere al Raspberry mediante linea comando.
  • WinSCP
    Scaricabile da qui. Ti permetterà di copiare file dal tuo PC Windows al Raspberry e viceversa.
  • Advanced IP Scanner
    Scaricabile da qui. Ti permetterà di individuare l´indirizzo IP del Raspberry dopo che l´hai connesso alla tua rete.
  • Script di configurazione Meteotortona
    Scaricabile da qui. Contiene i comandi necessari alla configurazione della connessione internet mediante internet key.

Come procedere


Come prima cosa è necessario scaricare tutti i software presenti nel precedente paragrafo, terminato il download puoi procedere alla estrazione dei file dall´archivio scaricato dal nostro repository ed alla installazione dei software che seguono:
  • Putty
  • WinSCP
Ora è necessario individuare l´indirizzo IP del Rasperry. Se hai appena terminato l´installazione di Linux Raspbian con la nostra guida, l´indirizzo è lo stesso che hai utilizzato prima. Altrimenti, per individuarlo, puoi avviare il programma precedentemente scaricato Advanced IP Scanner, non è necessario installarlo, dopo aver accettato la licenza ti verrà chiesto se eseguire il programma o se installarlo sul tuo PC, puoi semplicemente eseguirlo. Prima di procedere dobbiamo verificare su quale set di indirizzi effettuare la scansione, per fare ciò puoi premere start, digitare "cmd", aprire l´applicazione "Prompt dei Comandi" e digitare il seguente comando seguito da invio:
ipconfig
Nella figura sottostante è stato riportato un esempio di quello che dovresti vedere.
Come puoi vedere nella figura soprastante è evidenziato in rosso l´indirizzo IP del mio PC (il tuo potrebbe essere diverso), è necessario prelevare i primi tre ottetti del tuo indirizzo. Prendendo come esempio il mio indirizzo, i primi tre ottetti sono 192.168.1. Ora, come visibie nell´immagine sottostante andiamo a popolare l´interfaccia di Advanced IP Scanner con i tre ottetti seguiti dalla stringa "1-254", nel mio caso la stringa completa sarà 192.168.1.1-254 (come in figura). Ora puoi premere il bottone "Scansione". Al termine della scansione otterrai la lista di tutti i dispositivi che sono connessi alla tua rete di casa, tra cui anche il Raspberry.
Prendi nota del campo "IP", ci servirà per la prossima fase. Ora possiamo quindi procedere ad effettuare l´accesso al Raspberry per le configurazioni necessarie. Apri il programma Putty (che hai installato in precedenza), inserisci l´indirizzo IP del raspberry nel campo "Hostname (or IP address)" e premi "open". Nella finestra che ti compare è necessario inserire le credenziali di accesso, Username: "pi" (senza apici), come password è invece necessario inserire quella che hai impostato durante la fase di configurazione del tuo Raspberry. Nella figura sottostante abbiamo riportato la finestra che dovresti vedere sul tuo schermo, ciò che vedi è una console a caratteri che ti permette di configurare ed eseguire comandi sul tuo Raspberry.
Ora puoi iconizzare la finestra e procedere a copiare sul Raspberry i file necessari. La copia può essere effettuata mediante WinSCP, che dovresti aver installato nella prima parte del post. Per la copia dei file è necessario configurare "SCP" come protcollo e inserire l´indirizzo IP del Raspberry all´interno del campo "Nome Server". I campi "Nome Utente" e "Password" vanno valorizzati con i rispettivi valori che hai utilizzato precedentemente per la connessione al Raspberry. Infine puoi premere "Accedi". In figura è rappresentata la schermata iniziale del software.
Terminata la fase di connessione troverai nella parte sinistra dello schermo la lista di file e cartelle presenti sul tuo PC e nella parte destra la lista di file presenti nella home del tuo utente sul Raspberry. Per copiare i file dal tuo PC al Raspberry e necessario trascinarli dalla parte sinistra dello schermo alla parte destra. Puoi procedere alla copia del seguente file:
  • Script di configurazione che ha precedentemente scaricato dal nostro repository (configure_internet_connection.sh)
Ora possiamo tornare alla finestra di Putty e procedere alla installazione ed alla configurazione. Come prima cosa è necessario assicurarsi che lo script sia eseguibile, digita pertanto il seguente comando seguito da invio:
chmod +x /home/pi/configure_internet_connection.sh
Ora puoi procedere ad inserire la internet key all'interno di uno degli USB del Raspberry, attendi qualche secondo e verifica che sia riconosciuta digitando il seguente comando seguito da invio:
lsusb
Se la internet key è riconosciuta dal Raspberry dovresti vedere un output simile a quello visibile nell´immagine sottostante. Nel tuo caso potrebbe essere leggermente differente, dipende dalla chiavetta. In ogni caso è importante verificare che venga riconociuta come "Modem" o "Network card".
Se la chiavetta è riconosciuta possiamo procedere alla configurazione, digita quindi il seguente comando seguito da invio:
sudo /home/pi/configure_internet_connection.sh
Ti verrà richiesto a quale operatore appartiene la SIM che hai inserito nella chiavetta, a seguito della tua scelta verrà confgurato l´APN per permettere la connessione mediante il tuo operatore. Nella figura sottostante è mostrato ciò che dovresti vedere:
Digita il numero corrispondente all´operatore e premi invio. Lo script provvederà ad installare tutti i software necessari ed alla relativa configurazione, infine ti chiederà di scegliere quale è il dispositivo da utilizzare come internet key. Nella figura sottostante è mostrato ciò che dovresti vedere:
Digita il numero corrispondente al dispositivo e premi invio. Al termine dell´elaborazione, se non si sono presentati errori, la configurazione è terminata ed il tuo Raspberry è connesso ad internet mediante la internet key. Se la procedura è andata a buon fine lo script stampa a schermo il seguente messaggio:

[OK] La configurazione della chiavetta è andata a buon fine
				
In caso contrario puoi consultare l´area "Verifica problemi" visibile al termine del presente post. Durante l´esecuzione, lo script ha provveduto ad effettuare le seguenti operazioni:
  • Installazione software wvdial, necessario per la gestione della internet key
  • Installazione software ppp, necessario per la gestione della connessione internet
  • Configurazione dei parametri di connessione alla rete dell´operatore che hai scelto
  • Configurazione della internet key come interfaccia di default verso la rete internet
  • Creazione di un demone per la gestione dei programmi soprastanti
  • Creazione di una regola che avvia automaticamente la connessione nel momento in cui viene collegata la internet key. Ciò permette di avviare la connessione automaticamente anche all´avvio del Raspberry
  • Creazione di uno script per il controllo della connessione (check_internet_connection.sh), al momento lo script non viene eseguito, se sei interessato all´utilizzo puoi procedere nella lettura del presente post.
  • Installazione software fping, necesario per l´esecuzione dello script sopra citato
Probabilmente, se utilizzi una internet key, il Raspberry è posizionato in una zona non molto comoda da raggiungere o comunque distante da casa. Per garantire che anche in caso di problemi la connessione venga riavviata in automatico è possibile utilizzare lo script "check_internet_connection.sh". Quando avviato effettua una connessione verso Google e se non riesce a raggiungerlo effettua il riavvio della chiavetta. Per l'utilizzo è necessario schedulare l´esecuzione tramite cronjob Linux. Digita il seguente comando seguito da invio:
crontab -e
Se è la prima volta che accedi alla configurazione del crontab ti verrà richiesto quale editor di testo utilizzare, seleziona "nano" (premendo il numero corrispondente) e premi invio. Ora posizionati in fondo al file ed inserisci la seguente riga di testo:

29,59 * * * * sudo /home/pi/check_internet_connection.sh
				
Terminate le modifiche puoi premere CTRL + x per uscire, durante l´uscita è necessario premere "y" ed il tasto invio per salvare il file. Con la configurazione sopra indicata stiamo dicendo di eseguire lo script check_internet_connection.sh (quindi di effettuare il check della connessione) ogni 30 minuti, ai minuti 29 e 59. Abbiamo scelto i minuti di esecuzione basandoci sul post di installazione di Weewx, in modo da garantire il minor disservizio possibile alla tua stazione meteo.

Verifica problemi

Di seguito i problemi più comuni e le possibili soluzioni proposte:
  • Al termine dell´esecuzione dello script è comparso il seguente messaggio:
    
    [WARN] Non è stato possibile configurare l´APN corretto per il tuo operatore, visualizza l´area "Verifica problemi" del post per ulteriori dettagli
    						

    L´errore indica che durante la selezione dell´operatore hai scelto "Altro operatore". È quindi necessario che tu imposti manualmente l´APN dell´operatore che hai scelto. Per fare ciò accedi al Raspberry (per effettuare l´accesso come indicato sopra è necessario che sia connesso alla tua rete di casa) e digita il seguente comando:
    sudo nano /etc/wvdial.conf
    Di seguito è mostrato ciò che dovresti vedere:
    Ora dovrai sostituire la stringa "<inserisci APN qui>" con l´APN che ti ha fornito l´operatore. Dovrai inoltre sostituire la stringa "<inserisci numero da comporre qui>" con il numero da comporre per la connessione. Se non riesci ad indentificare questo parametro puoi provare ad inserire *99#. Terminate le modifiche puoi premere CTRL + x per uscire, durante l´uscita è necessario premere "y" ed il tasto invio per salvare il file.
    Ora è necessario verificare quale è il tuo indirizzo IP pubblico, digita il seguente comando seguito da invio e prendi nota del risultato:
    curl -s http://whatismyip.akamai.com/
    Ora puoi provare ad avviare la connessione, digita il seguente comando seguito da invio:
    sudo systemctl start internetkey.service
    Attendi qualche secondo e riesegui il comando seguito da invio:
    curl -s http://whatismyip.akamai.com/
    Se il risultato ottenuto è diverso da quello ottenuto in precedenza la connessione è andata a buon fine e non sono necessarie ulteriori operazioni. Se il risultato invece è lo stesso, prova a seguire le istruzioni al punto successivo.

  • Al termine dell´esecuzione dello script è comparso il seguente messaggio:
    
    [FAIL] La configurazione della chiavetta non è andata a buon fine, visualizza l´area "Verifica problemi" del post per ulteriori dettagli
    						

    Il messaggio indica che la connessione ad internet mediante la internet key non è andata a buon fine. Tutti passi relativi alla configurazione sono invece andati a buon fine. Come prima cosa è possibile verificare se il servizio ha avuto problemi durante l´avvio. Per fare ciò digita il seguente comando seguito da invio:
    sudo systemctl status internetkey.service
    All´interno dell´immagine sottostante puoi vedere come dovrebbe essere l´output del comando se non sono presenti problemi:
    Se l´output che ottieni è diverso puoi digitare il seguente comando per verificare l´errore che si è presentato:
    sudo journalctl -u internetkey.service
    Muoviti verso la fine dell´output con le freccette e quando hai terminato digita CTRL + c per uscire. All´interno dell´output potrebbe essere visualizzato l´errore che ha portato alla mancata connessione.
    Come seconda opzione puoi verificare che l´APN impostato dallo script sia corretto. Per la scrittura del presente post sono stati effettuati test solo con l´operatore TIM, per i restanti operatori sono stati utilizzati i parametri di connessione reperiti sui rispettivi siti web ma non è stato possibile effettuare un test esaustivo. Per effettuare un check dell´APN accedi al Raspberry e digita il seguente comando:
    sudo nano /etc/wvdial.conf
    Di seguito ciò che dovresti vedere, la parte di file relativa all´APN è evidenziata in rosso:
    Verifica che l´APN corrisponda a quello che ti ha fornito l´operatore scelto. Se ti risulta diverso puoi sostituirlo. Terminata la modifica puoi premere CTRL + x per uscire, durante l´uscita è necessario premere "y" ed il tasto invio per salvare il file.

  • La internet key continua a disconnettersi e non permette l´invio dei dati regolarmente
    Verifica la copertura da parte dell´operatore che hai scelto sulla zona in cui è posizionato il Raspberry. È molto pobabile che non sia adeguata a mantenere una connessione stabile.

  • La internet key si disconnette periodicamente
    Se non hai ancora schedulato l´esecuzione dello script check_internet_connection.sh, rileggi l´ultima parte del post e provvedi ad effettuare le modifiche suggerite. Solitamente le internet key non sono costruite per mantenere connessioni stabili per lunghi periodi. Effettuando un controllo di connessione ogni mezz´ora ed un eventuale riavvio il problema non dovrebbe più presentarsi.