martedì 29 novembre 2016

Giocherellando con Twitter

Oggi mi sono divertito ad installare e far girare un programma Python rimediato su github , TweetMonitor.
Il programma in questione non fa grandi cose, ma crea un canale con Twitter e monitora un (o una serie di) Tag,  che l'utente sceglierà alla partenza dello script.

Ciò che dobbiamo fare per installare il programma è piuttosto semplice, intanto installiamo git:
sudo apt-get install git

e poi facciamo il clone del repository
git clone https://github.com/upgoingstar/TweetMonitor


adesso abbiamo bisogno di installare pip che e' un sistema per l'installazione tipo apt-get, digitiamo quindi il comando:
sudo apt-get install python-pip


e dunque installiamo tweeppy con:
sudo pip install tweepy

Serve ancora la libreria elasticsearch
sudo pip install elasticsearch

entriamo nella cartella del programma con:
cd TweetMonitor/

editiamo con nano il file tweetmonitor.py per inserire i dati di autenticazione ricavati sul sito  https://dev.twitter.com/.

Riporto qui di seguito gli screenshot di come ottenere i dati necessari, ma potete seguire anche la guida di sparkfun a quersto indirizzo:













 e adesso via! chiamando il comando:
sudo python tweetmonitor.py -k ferrari

il parametro -k indica al programma quale Tag seguire, in questo caso "ferrari" ma possiamo scegliere qualsiasi termine vogliamo. Si possono anche monitorare più più termini, basta separarli con la virgola

Ecco cosa accade nella shell:
pi@EasyMeteo01:~/TweetMonitor $ sudo python tweetmonitor.py -k ferrari
----- Twitter bot kicked off ------
>>verZACeee posted: RT @HotFreestyle: Tyler The Creator and A$AP Rocky in the Ferrari https://t.co/XsGGLfdzrV
>>Ferrarinogazou posted: Ferrari画像 フェラーリ 高級車 スーパーカー RT https://t.co/9wYbkZvKtK
>>dannybelkin posted: This looks preposterous https://t.co/qADf8fr6be
>>genfe2 posted: RT @isragus78: Que bestia el Ferrari por detras !!!! Como vamos a disfrutar en los test de Bcn...@genfe2 @JaumeCiurana https://t.co/hLGcDde…
>>Reg_Spotter posted: T777SAT #2004 #Ferrari 360 #Modena  #Rare #uk #car #cars  #us #usa #numberplate #reg_spotter https://t.co/zkRsAmRzEA



Buon divertimento
TecnoGeppetto

Alcuni link interessanti sull'argomento:
https://www.sparkfun.com/news/1320
https://learn.sparkfun.com/tutorials/raspberry-pi-twitter-monitor?_ga=1.122161035.1620156107.1480440805


Rilevare la Temperatura interna di Raspberry Pi

In questi giorni sto mettendo le basi per la costruzione di una Stazione Meteo (l'ennesima, ma prima o poi verrà fuori qualcosa di molto buono).
Una delle impostazioni del sistema operativo Debian consente di controllare la temperatura del microprocessore.
Questa informazione è importante per poter mettere in campo delle contromisure in caso di surriscaldamenti del sistema.
Se la nostra Stazione Meteo verrà posizionata all'esterno sotto al sole, potrebbe subirne l'effetto riscaldante, soprattutto nella bella stagione, e raggiungere delle temperature tali che potrebbero danneggiare il sistema.

Con questa semplice istruzione, possiamo leggere il valore della temperatura interna e decidere per esempio di far partire la ventilazione forzata per refrigerare la scatola ed il suo contenuto.

Direttamente da shell digitare:

cat /sys/class/thermal/thermal_zone0/temp | cut -c1-2

Otterremo questo:
pi@EasyMeteo01:~ $ cat /sys/class/thermal/thermal_zone0/temp | cut -c1-2
33
pi@EasyMeteo01:~ $

Infatti nel momento in cui sto scrivendo la mia Raspberry Pi ha una temperatura interna di 33 gradi centigradi.
L'istruzione cut -c1-2  consente di leggere solamente i primi due caratteri di ciò che rende il comando, se omettiamo questa istruzione, otteniamo:
pi@EasyMeteo01:~ $ cat /sys/class/thermal/thermal_zone0/temp
33628
pi@EasyMeteo01:~ $

Numero che rappresenta la lettura della temperatura interna in millesimi di grado.

Stay Tuned
TecnoGeppetto

domenica 27 novembre 2016

Installare client VPN su distribuzione debian Lite per Raspberry Pi

L'avventura di oggi e' stata quella di installare il Client VPN su una distribuzione fresca fresca di Debian-Lite appena scaricata dal sito originale .
L'operazione è molto semplice, ma come sempre, c'è sempre qualcosa da sapere per portarla a termine con esito positivo.
La distribuzione Lite distribuita dal sito originale infatti non contiene tutti i pacchetti necessari perchè tutto funzioni subito, ma per ottenere il risultato dobbiamo installare alcuni pacchetti indispensabili.
Dopo i classici:
    1  sudo apt-get update
    2  sudo apt-get upgrade
Installiamo il programma principale OpenVpn che sarà quello che gestisce l'operazione:
    3  sudo apt-get install openvpn

Nella distribuzione completa già questa operazione e' sufficiente per far partire tutto, ma nella Lite, manca un componente essenziale, il Driver per Tun/Tap.
Per andare verso il buon fine il comando precedente deve essere sostituito da questo più completo che installa tutto il necessario ed anche qualcosa di più che ci servirà in seguito per proseguire nel progetto (git e zip)

    4  sudo apt-get install openvpn openssl module-init-tools zip dos2unix git
Poi con facciamo partire il driver necessario
    5  command modprobe tun
 
A questo punto un bel reboot che non guasta!

    6  sudo reboot
Poi ci spostiamo nella cartella che contiene le chiavi per la registrazione corretta in rete. (queste chiavi devono essere state preventivamente fornite dal server VPN, si tratta di 4 file che contengono le chiavi crittografate ed il file di configurazione di OpenVpn in questo caso le mie sono contenute in una cartella dal nome "client15"
    7  cd client15/

Con il comando successivo facciamo partire il programma OpenVpn in modo che vada a leggere il file di configurazione e con quello assuma le chiavi necessarie, con l'aggiunta del comando "&" , mandiamo l'operazione in back ground, in maniera da non occupare la finestra di terminale ed essere costretti ad aprirne un'altra.
    8  sudo openvpn --config client.ovpn &
A questo punto, se le chiavi sono state riconosciute dal sistema e tutto è  andato nel verso giusto, siamo entrati nella VPN di cui avevamo le chiavi.
Conoscendo alcuni indirizzi interniu della rete sara' facile vedere se tutto e' OK, anche soltanto pingando il server, per esempio
    9  ping 10.8.0.1

Con ifconfig  possiamo vedere tutte le caratteristiche della nostra configurzione di rete
   10 ifconfig


Questo è quello che mi risponde il comando sulla mia Raspberry Pi che sto utilizzando per gli esperimenti:
pi@EasyMeteo01:~ $ ifconfig
eth0      Link encap:Ethernet  HWaddr XXXXXXXXXXXXX
          inet addr:192.168.22.160  Bcast:192.168.22.255  Mask:255.255.255.0
          inet6 addr: fe80::cf20:4124:4cb8:cb7f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:25261 errors:0 dropped:8 overruns:0 frame:0
          TX packets:11598 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:20997554 (20.0 MiB)  TX bytes:1178247 (1.1 MiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.8.0.58  P-t-P:10.8.0.57  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:1000 errors:0 dropped:0 overruns:0 frame:0
          TX packets:813 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:68543 (66.9 KiB)  TX bytes:110167 (107.5 KiB)

pi@EasyMeteo01:~ $

In grassetto ho evidenziato la nuova configurazione che ho creato con l'operazione descritta sopra, il server mi ha assegnato l'IP  inet addr:10.8.0.58 

Per far partire la connessione alla accenzione del pc, possiamo aggiungere il comando sopra nel file rc.local che viene letto ad ogni boot del sistema
Quindi editiamo il file con :
   11  sudo vi /etc/rc.local

Ed aggiungiamo in fondo prima del comando  exit 0 , i comandi necessari, nel mio caso (che ho chiamato la cartella client15):

#dati per impostazione VPN
cd /home/pi/client15
sudo openvpn --config client.ovpn &

In questo modo alla prossima accensione del sistema la Raspberry Pi sarà connessa ad internet nella rete locale ed anche loggata nella rete VPN privata in automatico.

Primi passi per la costruzione di una Stazione Meteo

Preparare il sistema alla lettura dei sensori


Dopo aver installato il Client VPN  sulla nostra distribuzione Debian-Lite scelta per l'occasione, il passo successivo per ottenere una Stazione Meteo, e' quello di collegare i primi sensori alla Raspberry Pi e cominciare ad ottenere le prime letture dei dati.

Per fare questo ci sono da fare alcune operazioni hardware e software. La parte hardware la tratterò successivamente, adesso mi concentro su che cosa ho fatto per poter leggere i dati dal lato sofware.
Alla distribuzione scelta per il progetto, mancano alcune istruzioni necessarie per far funzionare il sistema, dobbiamo installare un paio di pacchetti e configurarli perchè la Raspberry Pi  si accorga del sensore che intanto ho collegato alla GPIO disponibile sulla scheda.


    1  sudo apt-get install -y python-smbus
    2  sudo apt-get install -y i2c-tools
    3  sudo raspi-config

Con il comando raspi-config abbiamo fatto partire il programma di configurazione interno di Raspberry.  Qui dobbiamo abilitare la porta I2C, che di default non e' abilitata,
Dal menù principale scegliere 8 Advanced Option,
Quindi scegliere la I2C come evidenziato in figura.

Quindi modificare manualmente con un editor di testo il file modules:
    4  sudo nano /etc/modules

Per inserire prima della fine del file questi due parametri:
i2c-bcm2708 i2c-dev

Chiudere e salvare il file.
Adesso manca ancora una operazione, dobbiamo modificareil file:
    5  sudo nano /boot/config.txt

Al quale dobbiamo aggiungere due parametri, in fondo al file scrivere:
dtparam=i2c1=on
dtparam=i2c_arm=on


Chiudere e salvare il file.

Comunicare col sensore

Adesso siamo pronti per partire e finalmente leggere i primi dati. Rebootiamo la Raspberry.
    6  sudo reboot
 
Con il comando successivo possiamo controllare se il dispositivo collegato alla porta I2C è regolarmente ricevuto dalla macchina
     7  sudo sudo i2cdetect -y 1   
(SOLO nel caso si stia usando una Raspberry Pi modello A, l'ultimo parametro dovrà essere 0 -zero-  quindi: sudo sudo i2cdetect -y 0 )

Nel caso del sensore BMP180, che ho scelto di utilizzare come sensore di temperatura e pressione, se correttamente collegato, il sistema risponderà con l'indirizzo 0x77


Preparare il Software

   Per installare il pacchetto messo a disposizione da Adafruit, che contiene una serie di esempi di utilizzo del sensore BMP180 che ho utilizzato, è necessario aggiungere una serie di pacchetti aggiuntivi non presenti nella distribuzione, quindi  digitare:
    1  sudo apt-get install git build-essential python-dev python-smbus
Poi scaricare il Software di Adafruit
    2  git clone https://github.com/adafruit/Adafruit_Python_BMP.git

Entrare nella cartella
    3  cd Adafruit_Python_BMP/

Installare il programma Adafruit, ed allo scopo Adafruit ha preparato un file auto installante che partirà col comando:
    4  sudo python setup.py install

Al termine delle operazioni automatiche, entrare nella cartella degli esempi e far partire il programma di test:
    5  cd examples/
    6  sudo python simpletest.py

Questo programma renderà a video  la lettura del sensore BMP180 collegato, formattando il testo in modo che possa essere facilmente letto dall'utente

Abbiamo finalmente ricevuto la prima lettura dei dati disponibili sul sensore scelto.