Discussione:Applicazioni di Raspberry PI

Da raspibo.
Versione del 13 dic 2015 alle 11:56 di Msystem (discussione | contributi) (NCID Network Caller Id)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)
Jump to navigation Jump to search

Network Caller Id è un software nato inizialmente per visualizzare il numero telefonico di chi ci sta chiamando. Il software supporta diversi tipi di chiamata e di device, il caso più classico che andremo a utilizzare in questa guida è quello della linea Pots tradizionale, sono supportate anche la chiamate voip anche se al momento non è disponibile la funzionalità che andremo ad utilizzare noi.

Oltre a presentare in generale ncid, vedremo come utilizzarlo per filtrare le chiamate in arrivo ad esempio possiamo

decidere di ricevere le chiamate solo da una lista di numeri oppure al contrario bloccare un solo chiamante.

Ncid è costituito da un processo demone che gira in background e fa da server per ricevere ed inviare informazioni, si occupa infatti di recepire informazioni dal modem collegato alla linea telefonica per mandare la notifica di una chiamata ad un dispositivo Android oppure ad un client su PC. I prerequisiti per il nostro setup sono:

- linea Pots (o uscita analogica)
- modem analogico USB con riconoscimento del l'identificativo del numero chiamante 
- raspberry pi (non è obbligatorio, la procedura può essere fatta anche con un pc, ma poi il server deve rimanere sempre 
  acceso e quindi meglio sfruttare un sistema a basso consumo)

Partiamo dalla configurazione del modem che senza dubbio è quello che richiede qualche prova in più. Abbiamo detto che il modem deve supportare il riconoscimento dei toni multifrequenza che codificano l'identità della linea chiamante. Probabilmente non tutti i modem hanno questa caratteristica, ma sul sito di ncid ne potete trovare una lista assieme anche ai comandi AT di configurazione dei chipset più diffusi. La lista dei modelli non è completa, perciò se avete un modem in casa vi conviene fare qualche test e magari siete fortunati. Innanzitutto cerchiamo il device associato al modem. Apriamo un terminale e lanciamo il comando:

dmesg

Vedremo scorrere i messaggi del kernel. Ora inseriamo il modem nella porta USB e lanciamo di nuovo il comando

dmesg.

Se il modem è stato riconosciuto vedremo alcune righe in più rispetto alla prima volta con l'indicazione del device assegnato al modem ad esempio ACM0 oppure AMA0 infine USB0 si tratta di device seriali come quelli utilizzati da Arduino. Ora possiamo dare il comando

ls -lrt /dev

E vedere che effettivamente è presente un device con il nome ricavato con il comando dmesg In questo esempio supponiamo che il device del nostro modem sia /dev/ttyACM0 Ora proviamo a vedere se il modem supporta il riconoscimento del numero chiamante. Installiamo un programma di comunicazione seriale ad esempio picchiamante

sudo apt-get install picocom

E connettiamoci al modem

picocom /dev/ttyACM0

Ora per controllare se siamo veramente connessi al modem e se la velocità di comunicazione è corretta digitiamo il comando

AT

Se è tutto ok il modem risponde

OK

Ora proviamo a dare il comando che attiva il riconoscimento della linea chiamante

AT+VCID=1

Se il modem risponde OK è il momento di provare a chiamare e vedere se il risultato è quello atteso.

“
RING
DATE = 0908
TIME = 2025
NMBR = xxxxxxxxx //Apparità il numero del chiamante 
NAME = O
“

Ora possiamo procedere all'installazione del software che si trova susourceforge.net, per raspberry sono già pronti i files .deb perciò basta scaricarli con il comando wget, per installare il programma abbiamo bisogno di installare la libreria libpcap 0.8 per installarla con apt-get

sudo apt-get install libpcap0.8
di seguito il comando dell'ultima versione disponibile, consiglio di controllare nel sito per scaricare l'ultimo aggiornamento disponibile.

wget http://downloads.sourceforge.net/ncid/ncid_1.2-1_armhf.deb

E lanciare l'installazione

dpkg -i ncid_1.2-1_armhf.deb

Ora che il programma è installato andiamo a configurare le impostazioni del processo demone

 sudo nano /etc/ncid/ncidd.conf

Nel nostro caso decommentiamo le righe

set hangup = 1
set ttyport = /dev/ttyACM0
set ttyspeed = velocità della seriale  
set lockfile = /var/lock/LCK..ttyACM0
Ora possiamo chiudere il file di configurazione e rilanciare il demone, 

Se abbiamo fatto tutto correttamente il demone dovrebbe essere in funzione, ma meglio controllare con comando di debug che ci permetterà anche di capire meglio come funziona il tutto

ncidd -Dv3

Lanciato il comando di debug vediamo il programma che parte e riconosce il modem e resta in attesa della chiamta.

Modem supports Data Mode
Modem supports FAX Mode 1
Modem supports FAX Mode 2
Modem supports VOICE Mode
Hangup option = 1: hangup on a blacklisted call
Sent Modem 11 of 11 characters:
AT+VCID=1
Modem response: 17 characters in 1 read:
T+VCID=1
OK
Modem set for CallerID.
Modem used for CallerID and to terminate calls
Using simple expressions in blacklist/whitelist files
Network Port: 3333
Debug Mode
Not using PID file, there was no '-P' option.
Modem is fd 3
NCID connection socket is sd 4 pos 1

Ora possiamo fermare il debug e proviamo a mettere il nostro numero di cellulare in blacklist

sudo nano /etc/ncid/ncidd.blacklist

Aggiungiamo in fondo al file una riga che potra iniziare con * o ^ questo significa che il numero dovrà corrispondere, altri indicatori sono già commentati nel file, tra le funzionalità possiamo identificare un numero o una serie per identificare un prefisso.

^3330046738

Ora proviamo a chiamare dopo aver rilanciato il processo in debug

HUP: *DATE*12122015*TIME*2120*LINE*-*NMBR*”numero del chiamante”*MESG*NONE*NAME*OUT-OF-AREA*

Nel log si vedrà il numero del chiamante, usando la ncidd.blacklist o ncidd.whitelist possiamo bloccare d ei numeri o una serie di numeri e abilitarne altri, lavorando con queste due liste si può configurare il programma per filtrare le chiamate.

By Msystem & Dicast78