|
| 1 | +Ci siamo! È arrivato il momento d'installare il progetto software sul |
| 2 | +Raspberry Pi e verificare che tutto funzioni così per com'è stato |
| 3 | +ideato. Il deployment diagram della figura a seguire mostra tutti i |
| 4 | +componenti del nostro sistema di accesso. |
| 5 | + |
| 6 | +[<img |
| 7 | +src="https://www.dontesta.it/wp-content/uploads/2022/03/system_deployment_on_raspberry-1024x891.png" |
| 8 | +class="size-large wp-image-5562" width="1024" height="891" |
| 9 | +alt="Figura 22 - Deployment diagram del sistema di accesso via Smart Card Contactless su Raspberry Pi" />](https://www.dontesta.it/wp-content/uploads/2022/03/system_deployment_on_raspberry.png) |
| 10 | +**Figura 22** - Deployment diagram del sistema di accesso via Smart Card |
| 11 | +Contactless su Raspberry Pi |
| 12 | + |
| 13 | +Assumiamo a questo punto che tutti i requisiti software indicati in |
| 14 | +precedenza siano tutti soddisfatti (fare riferimento a 6. Requisiti |
| 15 | +Software). Per installare il progetto software sul Raspberry Pi occorre |
| 16 | +seguire i seguenti passi: |
| 17 | + |
| 18 | +1. accedere in ssh alla Raspberry Pi; |
| 19 | +2. decidere una locazione dove installare il progetto software. Non ci |
| 20 | + sono restrizioni; nel mio caso ho preferito usare la home del mio |
| 21 | + account; |
| 22 | +3. eseguire il clone del repository del progetto; |
| 23 | +4. eseguire l'installazione delle dipendenze Python. |
| 24 | + |
| 25 | +Per ambienti di sviluppo o test è possibile pensare di fare ricorso alla |
| 26 | +creazione di quella che viene definita nel mondo Python, |
| 27 | +<a href="https://docs.python.org/3/tutorial/venv.html" target="_blank" |
| 28 | +rel="noopener">Virtual Environments</a>. |
| 29 | + |
| 30 | + |
| 31 | +```bash |
| 32 | +# Accesso al Raspberry Pi via SSH |
| 33 | + |
| 34 | + |
| 35 | +# Clone del repository GitHub del progetto |
| 36 | +git clone https://github.com/amusarra/smartcard-contactless-raspberry-pi.git |
| 37 | + |
| 38 | +# Installazione delle dipendenze Python |
| 39 | +cd smartcard-contactless-raspberry-pi |
| 40 | +make |
| 41 | +``` |
| 42 | +**Console 2** - Installazione del progetto software |
| 43 | + |
| 44 | +Il comando `make` non fa altro che procedere con l'installazione delle |
| 45 | +dipendenze Python specificate sul file <a |
| 46 | +href="https://github.com/amusarra/smartcard-contactless-raspberry-pi/blob/master/requirements.txt" |
| 47 | +target="_blank" rel="noopener">requirements.txt</a> utilizzando |
| 48 | +<a href="https://pypi.org/project/pip/" target="_blank" |
| 49 | +rel="noopener">pip</a>. La figura 23 mostra il processo d'installazione |
| 50 | +delle dipendenze Python sul Raspberry Pi. Ultimata l'installazione, è |
| 51 | +possibile eseguire il test vero e proprio del software. Prima di |
| 52 | +eseguire il test occorre accertarsi che dal punto di vista hardware sia |
| 53 | +tutto regolare controllando tutti i collegamenti (vedi schema |
| 54 | +elettrico), compreso il collegamento del lettore di Smart Card via USB. |
| 55 | + |
| 56 | +[<img |
| 57 | +src="https://www.dontesta.it/wp-content/uploads/2022/03/install_rpi_access_system_via_smart_card_1-1024x626.png" |
| 58 | +class="size-large wp-image-5568" width="1024" height="626" |
| 59 | +alt="Figura 23 - Installazione delle dipendenze Python tramite il comando make" />](https://www.dontesta.it/wp-content/uploads/2022/03/install_rpi_access_system_via_smart_card_1.png) |
| 60 | +**Figura 23** - Installazione delle dipendenze Python tramite il comando |
| 61 | +make |
| 62 | + |
| 63 | +Ormai dovremmo sapere quali sono gli entry point da utilizzare, sia |
| 64 | +quello per il setup della Smart Card, sia quello che avvia il controllo |
| 65 | +degli accessi. Entrambi gli entry point, quindi gli script Python, |
| 66 | +devono essere avviati specificando una serie di parametri. Le due |
| 67 | +tabelle a seguire mostrano i parametri d'input dei due script: |
| 68 | +`setup_smart_card.py` e `access_via_smart_card.py`. |
| 69 | + |
| 70 | +[<img |
| 71 | +src="https://www.dontesta.it/wp-content/uploads/2022/03/mind_map_script_setup_smart_card-1024x582.png" |
| 72 | +class="size-large wp-image-5572" width="1024" height="582" |
| 73 | +alt="Figura 24 - Tabella dei parametri d'input per lo script Python setup_smart_card.py" />](https://www.dontesta.it/wp-content/uploads/2022/03/mind_map_script_setup_smart_card.png) |
| 74 | +**Figura 24** - Tabella dei parametri d'input per lo script Python |
| 75 | +setup_smart_card.py |
| 76 | + |
| 77 | +[<img |
| 78 | +src="https://www.dontesta.it/wp-content/uploads/2022/03/mind_map_script_access_via_smart_card-1024x265.png" |
| 79 | +title="Figura 25 - Tabella dei parametri d'input per lo script Python access_via_smart_card.py" |
| 80 | +class="wp-image-5573 size-large" width="1024" height="265" |
| 81 | +alt="Figura 25 - Tabella dei parametri d'input per lo script Python access_via_smart_card.py" />](https://www.dontesta.it/wp-content/uploads/2022/03/mind_map_script_access_via_smart_card.png) |
| 82 | +**Figura 25** - Tabella dei parametri d'input per lo script Python |
| 83 | +access_via_smart_card.py |
| 84 | + |
| 85 | +La figura 26 mostra un esempio di come si presenta l'help in linea dello |
| 86 | +script `setup_smart_card.py` attivato utilizzando l'opzione `--help` (o |
| 87 | +`-h`). |
| 88 | + |
| 89 | +[<img |
| 90 | +src="https://www.dontesta.it/wp-content/uploads/2022/03/setup_smart_card.py_help_option-1024x618.png" |
| 91 | +class="size-large wp-image-5574" width="1024" height="618" |
| 92 | +alt="Figura 26 - Come si presenta l'help in line dello script setup_smart_card.py" />](https://www.dontesta.it/wp-content/uploads/2022/03/setup_smart_card.py_help_option.png) |
| 93 | +**Figura 26** - Come si presenta l'help in linea dello script |
| 94 | +setup_smart_card.py |
| 95 | + |
| 96 | +A questo punto siamo davvero pronti. Il primo step è la registrazione |
| 97 | +della Smart Card per il nuovo ospite Mario Rossi il cui documento |
| 98 | +d'identità ha il numero MU589876XD e al quale assegnamo la stanza numero |
| 99 | +due. |
| 100 | + |
| 101 | +Prima di avviare la registrazione, prendiamo la Smart Card poggiandola |
| 102 | +sul lettore. Il comando da avviare per la registrazione è: |
| 103 | +`./setup_smart_card.py -a FFFFFFFFFFFF -i MU589876XD -s --firstname Mario --lastname Rossi -r 2` |
| 104 | + |
| 105 | +Se tutto va per il verso giusto, l'output ottenuto in console dovrebbe |
| 106 | +essere quello mostrato dalla figura a seguire. |
| 107 | + |
| 108 | +[<img |
| 109 | +src="https://www.dontesta.it/wp-content/uploads/2022/03/setup_smart_card_run_1-1024x511.png" |
| 110 | +class="size-large wp-image-5576" width="1024" height="511" |
| 111 | +alt="Figura 27 - Registrazione Smart Card MIFARE Classic 1K con i dati dell'ospite " />](https://www.dontesta.it/wp-content/uploads/2022/03/setup_smart_card_run_1.png) |
| 112 | +**Figura 27** - Registrazione Smart Card MIFARE Classic 1K con i dati |
| 113 | +dell'ospite |
| 114 | + |
| 115 | +Dopo la registrazione della Smart Card e la consegna all'ospite, |
| 116 | +quest'ultimo può usare la Smart Card per accedere alla propria stanza |
| 117 | +assegnata in fase di registrazione, che ricordo essere la numero due. |
| 118 | + |
| 119 | +[<img |
| 120 | +src="https://www.dontesta.it/wp-content/uploads/2022/03/smart_card_registration_data_on_mongodb_1-1024x974.png" |
| 121 | +class="size-large wp-image-5577" width="1024" height="974" |
| 122 | +alt="Figura 28 - Documento registrato su MongoDB a fronte del processo di registrazione Smart Card" />](https://www.dontesta.it/wp-content/uploads/2022/03/smart_card_registration_data_on_mongodb_1.png) |
| 123 | +**Figura 28** - Documento registrato su MongoDB a fronte del processo di |
| 124 | +registrazione Smart Card |
| 125 | + |
| 126 | +Avviamo adesso il programma del controllo degli accessi utilizzando il |
| 127 | +comando: `./access_via_smart_card.py -a FFFFFFFFFFFF`. Avviato il |
| 128 | +programma, questo resta in attesa di leggere la Smart Card. Poggiando la |
| 129 | +Smart Card registrata poc'anzi, l'ospite dovrebbe riuscire ad accedere |
| 130 | +alla sua stanza, così come mostra la figura a seguire. |
| 131 | + |
| 132 | +[<img |
| 133 | +src="https://www.dontesta.it/wp-content/uploads/2022/03/smart_card_access_control_1-1024x570.png" |
| 134 | +class="size-large wp-image-5578" width="1024" height="570" |
| 135 | +alt="Figura 29 - Richiesta di accesso via Smart Card MIFARE Classic 1K" />](https://www.dontesta.it/wp-content/uploads/2022/03/smart_card_access_control_1.png) |
| 136 | +**Figura 29** - Richiesta di accesso via Smart Card MIFARE Classic 1K |
| 137 | + |
| 138 | +L'output mostrato dalla figura 29 evidenzia anche un accesso non |
| 139 | +riuscito perché in questo caso la Smart Card presentata non è registrata |
| 140 | +sul sistema. Gli screencast a seguire mostrano i due entry point in |
| 141 | +azione: setup_smart_card.py e access_via_smart_card.py. |
| 142 | + |
| 143 | +<a href="https://asciinema.org/a/475795" target="_blank" |
| 144 | +rel="noopener"><img src="https://asciinema.org/a/475795.svg" |
| 145 | +title="Screencast 1 - Processo di registrazione Smart Card in azione" |
| 146 | +width="1223" height="784" |
| 147 | +alt="Screencast 1 - Processo di registrazione Smart Card in azione" /></a> |
| 148 | +**Screencast 1** - Processo di registrazione Smart Card in azione |
| 149 | + |
| 150 | +<a href="https://asciinema.org/a/475797" target="_blank" |
| 151 | +rel="noopener"><img src="https://asciinema.org/a/475797.svg" |
| 152 | +title="Screencast 2 - Processo di accesso alla stanza via Smart Card in azione" |
| 153 | +width="1223" height="784" |
| 154 | +alt="Screencast 2 - Processo di accesso alla stanza via Smart Card in azione" /></a> |
| 155 | +**Screencast 2** - Processo di accesso alla stanza via Smart Card in azione |
| 156 | + |
| 157 | +Dopo i due screencast che mostrano il sistema di accesso in azione, |
| 158 | +possiamo affermare che il nostro lavoro di analisi, progettazione e |
| 159 | +implementazione sia arrivato al termine, raggiungendo anche l'obiettivo |
| 160 | +prefissato. |
0 commit comments