Home Tecnica Programmazione Demolinux: l'automazione industriale con Linux

In evidenza

SMAU a Bologna con Research to Business

SMAU a Bologna con Research to Business

Il 6 e 7 giugno il Roadshow Smau Business torna a far tappa al Padiglione 33 della Fiera di Bologna e...
Gli articolisti del Portale

Gli articolisti del Portale

Abbiamo deciso di dare più visibilità a tutti coloro che hanno pubblicato articoli per noi, questo perché...
SMAU festeggia il suo quinto anno nel NordEst a Padova

SMAU festeggia il suo quinto anno nel NordEst a Padova

Il 18 e 19 aprile al padiglione 5 di Padova Fiere si terrà la prossima tappa di SMAU Business Roadshow. All'evento...
SMAU risale l’Italia e arriva a Roma

SMAU risale l’Italia e arriva a Roma

Il 21 e 22 marzo nella Nuova Fiera di Roma si terrà la prossima tappa di SMAU Business Roadshow. L'evento...

Bandi di Concorso

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Avviso per incarico ad ingegnere informatico alla Provincia di Bergamo

Nell'ambito del progetto denominato "SOS badanti: la rete provinciale di sportelli per assistenti e collaboratori familiari” nell'ambito del programma "SAP - Servizi alla Persona" è stato pubblicato la Provincia di Bergamo ha pubblicato l'avviso per il reclutamento di una unità per incarico di...

21 Mag 2012 - Letture:1

Esperto di servizi e tecnologie cloud al Digit PA

Procedura comparativa per il conferimento di un incarico di collaborazione coordinata e continuativa per un profilo senior di “Esperto di servizi e tecnologie cloud”, nell’ambito del progetto europeo “Open Dai” presso l' Ente nazionale per la digitalizzazione della Pubblica Amministrazione...

18 Apr 2012 - Letture:34

Selezione per addetto servizi informatici all'Autorità Portuale di Brindisi

Avviso di selezione pubblica per titoli e prova orale per l’assunzione di n. 1 “addetto ai servizi informatici”, a tempo pieno ed determinato triennale, previo periodo di prova, da inquadrare nell’Area Amministrativa. (Inquadramento al III Livello del C.C.N.L. dei Lavoratori...

12 Feb 2012 - Letture:435

Concorso pubblico per informatico alla Corte dei Conti

E' indetto un concorso pubblico, per   esami,   per   il reclutamento di tre unità di informatici da inquadrare nella III area, fascia retributiva F1, da destinare agli Uffici della Corte dei Conti con sede in Roma. Requisiti: laurea triennale in scienze e...

05 Feb 2012 - Letture:306

Istruttore informatico L.68/1999 al Comune di Potenza

Concorso pubblico, per esami, per la copertura di n. 2 posti di Istruttore Informatico, categoria C, posizione economica C1, a tempo pieno e indeterminato, con riserva assoluta alle categorie dilavoratori di cui all'art. 1 della legge n. 68/1999 (norme per...

21 Gen 2012 - Letture:244

Senior Business Consultant presso Lombardia Informatica

Selezione per figura Senior Business Consultant presso Lombardia Informatica. Il collaboratore dovrà fornire consulenza strategica e di business sulle tematiche verticali della Socio-Sanità. Requisiti di ammissione: Laurea in Ingegneria, Economia e Commercio o Scienze dell’Informazione; Percorsi di formazione professionale in ambito sanitario e socio-sanitario, su...

11 Gen 2012 - Letture:284

Bando progetto TAG (Toscana Area Giovani) per giovani talenti digitali

UPI Toscana ha indetto un avviso pubblico per la selezione di 20 giovani (2 per ciascuna delle 10 province della Toscana), da impiegare come formatori all'interno del Progetto TAG (Toscana Area Giovani). Il bando è finalizzato a valorizzare al meglio i...

03 Gen 2012 - Letture:271

I più attivi

Dati e punteggi dell'ultimo anno

Giovanna Casamassima Giovanna Casamassima
47 articoli
16,501 punti totali
Rodolfo Giometti Rodolfo Giometti
49 articoli
5,153 punti totali
Vittorio D'Aversa Vittorio D'Aversa
33 articoli
3,445 punti totali
Fulvio Lucchetti Fulvio Lucchetti
9 articoli
0,279 punti totali
Luigi Carbone Luigi Carbone
10 articoli
0,262 punti totali

Ci hanno visitato

Oggi:1292
Ieri:2110
Totali (14/04/09):1170467

I nostri numeri

Articoli pubblicati: 552
Iscritti al portale: 768
Iscritti all'Elenco: 184
Iscritti ML Discussioni: 351
Iscritti ML Articoli: 30
Iscritti ML Lavoro: 166
 

Grep e Strings due giganti di Linux

Il tempo libero serve anche a sperimentare e quando si ha la passione per la com...

Linaro, la no-profit che produce distribuzioni Linux/ARM

Il progetto Linaro presentato nel 2010 da colossi del calibro di Freescale Semic...

Git in Eclipse

Chi mi conosce sa la mia avversione (del tutto personale, ci tengo a sottolinear...

XMount finalmente liberi di virtualizzare!

Cosa succede dopo che abbiamo acquisito un disco in bitstream su file immagine? ...

OpenWRT: la distribuzione piccola e versatile

In queste ultime settimane ho avuto modo di vedere da vicino OpenWRT, una distri...

Snom 870: il telefono con Linux

Definirlo solo telefono è sicuramente riduttivo, infatti lo Snom 870 è sicuramen...

WODE, l'emulatore DVD per la Wii

Qualche giorno fa mi è capitato di sfidare mio cognato ad una partitella a tenni...

L'SMS autoprodotto!

Tempo fa sulla mailing list di CFI ho provato a lanciare l'idea di effettuare un...

Implementare una LIM con Linux

Come promesso rieccomi qui per illustrare come realizzare una LIM (che ricordo s...

Perché cross compilare quando si può compilare nativamente?

Lavorando con architetture diverse mi trovo spesso a dover utilzzare uno stesso ...

Gimp, OpenOffice & C. su N900? Semplice con Debian!

Che Maemo fosse versatile me ne sono accorto subito, ma l'idea di poter installa...

Installazioni di Linux su sistemi non convenzionali

Un'ottica convenzionale vede l'informatica come un insieme di applicazioni e sis...

F-Droid, e il FOSS su Android è servito!

Come Software Libre Evangelist mi son spesso trovato ad incoraggiare l'uso del s...

IPhone recupero file: un gioco di squadra!

Un giorno l'amico Armando Buzzanca mi chiama perchè deve recuperare una no...

SL4A e il drone parla più lingue

Chi come me non ama Java si sentirà a disagio volendo programmare una qualsiasi ...

Compilare un programma C per Android

Essendo un programmatore C (uso anche altri linguaggi, ma il C e quello che uso ...

ettercap: il man-in-the-middle facile

Troppo spesso mi rendo conto che molti considerano la rete aziendale o quella ...

Architettura di una trading room

La trading room o sala mercati è il luogo dove vengono effettuate le operazioni ...

Code Smells

Sempre più spesso il codice ha un cattivo odore. Sei sicuro di non scrivere cod...

Generare un file pieno di 0xff

Per generare in file da 16Kbyte pieno di zeri su di un sistema UNIX/GNU-Linux si...

Backup mail server: quando il mail server non è raggiungibile

Se avete il mail server in proprio potrebbe succedere che questo non sia raggiun...

Come saltare il proxy «blocca-tutto» aziendale

Mi capita spesso, ma non sempre, di andare da dei miei clienti e non potermi con...

Android-x86: quando il drone sbarca sui PC

Chi pensa che Andoird abbia vita bere farà bene a ricredersi perché, oltre alle ...

Maemo extras: ancora più applicazioni per l'N900

Finalmente, grazie a Nokia, abbiamo a disposizione un esemplare dell'N900 su c...

Tenere i servizi sotto controllo con Monit

In questi giorni mi è capitato di dover risolvere un problema per un mio cliente...

Sicurezza informatica: safety, dependability, security

La sempre maggiore diffusione delle tecnologie ha profondamente rivoluzionato la...

Cifratura wireless: TKIP vs AES

Una delle domande più frequenti di chi intende implementare una rete Wireless è...

Sabayon Linux 5.4 (32 e 64 bit)

E' stata rilasciata online la nuova versione 5.4 di Sabayon Linux, una tra ...

LIM: la lavagna multimediale con il wiimote

LIM sta per Lavagna Interattiva Multimediale, ed è un progetto che, tramite l'...

Programmare in C sull'N900

In questo articolo vedremo come sia semplice programmare in C sull'N900. In part...

Socat: quando i dati passano via rete

Lavorando coi sistemi embedded molte volte mi capita di dovermi arrangiare su di...

Generare un file da 10GB in 2 millisecondi!

Chi ha a che fare con le macchine virtuali o deve generare delle immagini di fil...

Universal USB Installer 1.8.04 e Ubuntu Linux 10.10

Rilasciata il 10.10(.2010) la nuova versione di Ubuntu Linux (la data corrispond...

Integrazione Webmaster Tool. Google Analytics, le ultime novità

Google non finisce mai di stupirci, ma soprattutto è inarrestabile sull'implemen...

PyGTK su N900

Come programmatore avere un cellulare che in pratica è un computer (oramai il 10...

Mageia 1 alpha1 è tra noi

Finalmente è stata rilasciata la tanto attesa versione alpha1 principalmente riv...

AccessPoint: la scelta ottimale del canale di trasmissione

Realizzare una rete Wireless outdoor (ma anche indoor) pone il problema della sc...

busybox & Android: la command line facile

Nei precedenti articoli abbiamo visto due tecniche per aggiungere nuovi programm...

Intervista esclusiva a Mageia Linux

La Presidente dell'Associazione MAGEIA.ORG, Anne Nicolas, in questa intervi...

Linutop4 PC

Il produttore francese Linutop, con sede a Parigi, ha annunciato il nuovo modell...

Kameleon: oltre i limiti della virtualizzazione

Negli ultimi anni la potenza dei computer e la loro capacità è aumentata in modo...

Sviluppare codice per Arduino dalla command line

Arduino Uno è un micro controllore basato su CPU ATmega328; si alimenta via alim...

munin: come ti controllo il server aziendale

In questi ultimi tempi il server che mantiene il nostro portale è sottoposto ad ...

Multistrap: come ti creo un rootfs Debian dal nulla

Una volta c'era debootstrap, un tool fantastico che permetteva di creare un root...

Il NAS D-Link DNS-343

Grazie alla D-Link azienda produttrice di apparecchiature di rete e non solo v...

"Impronte digitali" anche per le macchine fotografiche

Da www.hwupgrade.it: Una ricerca della Binghamton University ha messo a punto u...

Installare Linux su una USB key: ecco come!

L’installazione  e l'avvio di una distribuzione Linux Live da un supporto U...

Clonare una macchina vera in 30 minuti con VirtualBox

Essendo uno sviluppatore mi son reso conto che la virtualizzazione di una macchi...

AVG Live CD Rescue: l'antivirus live!

Qualche giorno fa mi sono reso conto che in azienda sta per scadere la licenza d...

TurnKey Linux: accendi e vai!

Quanto tempo occorre per installare e configurare una macchina LAMP (Linux, Apac...

Google +1: il «nemico» del «mi piace» di Facebook

Il tanto atteso nemico del "mi piace" targato Facebook è arrivato, il colosso de...

ASUS U36SD il notebook in soli 19mm

La concorrenza al più blasonato della “mela” si fa agguerrita specie nell'ultimo...

Come gestire una presentazione con il Wiimote

Capitandomi spesso si tenere conferenze e workshop mi trovo sempre il problema d...

(in)sicurezza informatica

L'incremento nell'uso del computer ha portato con se una diversa concezione di s...

Disattivare il controllo account utente in Windows 7 e Vista

Il controllo account utente è quel particolare servizio progettato per aumentare...

GNU readline: un tool indispensabile per la linea di comando

Chiunque di voi abbia avuto a che fare con la linea di comando avrà senz'altro a...

Come creare un NFS server ridondante

Quelli che mi conoscono sanno che il mio ambito lavorativo è nei sistemi embedde...

Il settore danneggiato e l'acquisizione forense

Se si deve acquisire un hard disk in maniera forense, ossia con tutti i crismi n...

Come ti controllo i tassi di interesse con Linux

In questi giorni sto cercando di fare una surruga per il mutuo di casa mia. Tra ...

Cluster VMWARE

In questo articolo vediamo come realizzare un cluster di macchine virtuali con u...

Demolinux: l'automazione industriale con Linux Stampa E-mail
(0 voti, media 0 di 5)
Area Tecnica - Programmazione
Scritto da Rodolfo Giometti   
Lunedì 12 Ottobre 2009 09:25
Articolo letto 2395 volte

Qualche tempo fa il mio ex istituto superiore mi aveva chiesto di fare una piccola lezione presso i loro studenti sulle potenzialità del sistema GNU/Linux. Io ho subito accettato ed ho creato per loro, insieme al mio «socio» Massimiliano Rossi, anche lui ex studente, una piccola demo su come poter realizzare un semplice ma funzionante sistema di monitoraggio remoto di una stazione di rilevazione; il quale permetta poi di controllare l'evoluzione delle grandezze trattate via Web.

Tutta la catena veniva realizzata intieramente con prodotti liberi e girava naturalmente su di un sistema GNU/Linux. In più, ogni applicazione veniva scritta con un linguaggio sempre diverso in modo da poter presentare le diverse possibilità di programmazione che una macchina GNU/Linux offre.

Spero però che questo lavoro sia utile se non altro come punto di partenza per realizzare piccoli progetti a livello scolastico e non. In tal caso mi piacerebbe avere dei feedback!

Prima di proseguire dico subito che i codici che verranno riportati nel seguito sono pubblicati, insieme ad un po' di documentazione, all'indirizzo http://www.enneenne.com/projects/demolinux.

Rimango poi a disposizione di chiunque abbia bisogno di chiarimenti al mio solito indirizzo di posta Questo indirizzo e-mail è protetto dallo spam bot. Abilita Javascript per vederlo. .

La struttura

La struttura di tutto il sistema di monitoraggio è molto semplice e può essere rappresentata in figura.

Figura 1

nello specifico abbiamo:

  • Un embedded satellite il quale si occupa di rilevare direttamente nell'ambiente le grandezze da monitorare (temperatura e peso nel nostro caso) e quindi di trasferirle ai successivi sistemi di elaborazione.
    In un sistema di monitoraggio complesso di queste macchine, generalmente, ce ne sono più di una e sono dislocate spazialmente in prossimità delle grandezze che vogliamo tenere sotto controllo, da questo il nome di embedded (“incassato”, in Italiano).
  • Un data base main server che si occupa di organizzare in un data base (MySQL nel nostro caso) tutte le grandezze che vengono rilevate dall'embedded satellite.
    Nel nostro esempio abbiamo un solo sistema ma, anche in questo caso, di queste macchine ve ne può essere più di una, infatti è importante che, globalmente, essa sia sufficientemente potente da gestire una molteplicità di richieste in istanti anche molto ravvicinati.
    Questa macchina inoltre deve essere in grado di soddisfare le richieste di analisi dei dati che arrivano dai vari querying system i quali richiedo spesso delle elaborazioni ulteriori dei dati immagazzinati, come ad esempio aggregazioni e/o selezioni dei dati immagazzinati.
  • Un querying system che permetta agli utenti del sistema di monitoraggio di richiedere le informazioni notevoli raccolte. Questo permette di avere una visualizzazione particolare dei dati che ci aiuta meglio a capire se il sistema monitorato sta funzionando come deve o meno (generalmente questo viene fatto creando dei grafici o con degli indicatori/allarmi).

Sempre dalla figura 1 su riportata si evidenziano quali sono le applicazioni notevoli che girano su ogniuno dei tre sistemi e quali sono i vari tipi di collegamento fra di esse.

Nei paragrafi che seguono cercherò, da un lato, di illustrare come queste applicazioni funzionino e come sia possibile installarle su di una macchina di prova. Quindi farò vedere come sia possibile verificare che tutti i sistemi siano correttamente attivi semplicemente utilizzando i normali tool che ogni sistema GNU/Linux ci mette a disposizione.

Purtroppo non ho spazio per riportare il codice, ma esso è ben documentato e semplice, che sono sicuro non presenti alcuna difficoltà a chi ha già progranmato almeno un poco.

Prima di tutto però vediamo come si compila il tutto. Una volta scaricato il tarball esplodiamolo e quindi usiamo il solito:

giometti@zaigor:~/demolinux$ make
make -C sensor all
make[1]: Entering directory `/home/giometti/demolinux/sensor'
make -C /lib/modules/2.6.22-rc4/build SUBDIRS=/home/giometti/demolinux/sensor modules
make[2]: Entering directory `/usr/src/linux-2.6.22-rc4'
Building modules, stage 2.
MODPOST 1 modules
make[2]: Leaving directory `/usr/src/linux-2.6.22-rc4'
make[1]: Leaving directory `/home/giometti/demolinux/sensor'
make -C reader all
make[1]: Entering directory `/home/giometti/demolinux/reader'
cc -Wall -O2 -D_GNU_SOURCE reader.c -o reader
make[1]: Leaving directory `/home/giometti/demolinux/reader'

Nell'esempio qui riportato il driver per i sensori, denominato sensor, è stato compilato per la versione 2.6 di Linux, se voi avete la 2.4 dovete specificare KERNELVER=2.4 nella linea di comando di make. In quel caso otterrete però il file sensor.o.

Ricordo anche, che per compilare il driver occorrono i sorgenti di Linux, i quali possono anche essere specificati direttamente a make aggiungendo KERNELDIR=/path/to/source sempre alla linea di comando.

L'embedded satellite

Vediamo ora come installare l'embedded satellite e verificare che questo funzioni correttamente.

Come già detto su questo sistema sono presenti un driver, che interfaccia i sensori verso lo spazio utente, e due applicazioni, che esportano le informazioni lette dai sensori verso l'esterno.

Il driver è riportato nella directory sensor, mentre le altre applicazioni sono il superserver inetd ed un programmino chiamato reader, riportato nella directory omonima.

Il compito dell'embedded satellite è quello di rilevare le nostre grandezze notevoli (temperatura e peso) interrogando il driver sensor, quindi le formatta opportunamente, grazie all'applicazione reader, e trasferisce il tutto al data base main server utilizzando il superserver inetd.

Il driver sensor

Non sto qua ad entrare nel dettaglio di come questo driver sia realizzato (il lettore curioso veda come si scriver un driver) ma voglio solo accennare ai principi di funzionamento.

Il driver si presenta al sistema come due semplici char device ogniuno dei quali è collegato ad un sensore. Nello specifico il sensore 0 è il sensore di temperatura mentre il sensore 1 è quello di peso.

Poiché non abbiamo fisicamente tali sensori ho optato per simulare tali dispositivi con un generatore di numeri casuali. La scelta non è delle più felici ma raggiunge lo scopo; in pratica ogni volta che si legge in uno dei due sensori si ottiene un valore che può essere associato a grandezze di peso e/o temperatura.

Per installare tale driver e verificare che funzioni correttamente possiamo usare i seguenti comandi:

giometti@zaigor:~/demolinux/sensor$ sudo ./load
Password:
Loading sensor device driver (./sensor.ko)......... done

che carica nel sistema il driver e crea i file associati nella directory `/dev/':

giometti@zaigor:~/demolinux/sensor$ ls -l /dev/sensor?
crw-rw-rw- 1 root root 254, 0 Aug 5 18:33 /dev/sensor0
crw-rw-rw- 1 root root 254, 1 Aug 5 18:33 /dev/sensor1

A questo punto per verificare che i sensori ci restituiscano qualcosa possiamo utilizzare i seguenti comandi:

giometti@zaigor:~/demolinux/sensor$ od -v -tx1 -N16 < /dev/sensor0
0000000 35 34 33 33 34 33 35 37 36 34 33 35 35 36 35 37
0000020
giometti@zaigor:~/demolinux/sensor$ od -v -tx1 -N16 < /dev/sensor1
0000000 17 3d 48 4d 27 2d 1c 40 23 33 3c 42 30 3a 20 44
0000020

ognuno dei due comandi legge 16 valori (byte) dai dispositivi e ne ritorna la codifica esadecimale.

Il programma reader

Questa applicazione non fa altro che rendere un po' più semplice interrogare i sensori, non solo, si preoccupa anche di applicare una marca temporale alle grandezze rilevate.

Questa operazione di applicare la marca temporale al dato letto è molto importante in tutti i sistemi di monitoraggio perché è fondamentale sapere in che istante una certa grandezza ha assunto un determinato valore. Poichè, di solito, non è compito del driver restituire una marca temporale ai dati che esso restituisce questo deve essere fatto da una applicazione esterna.

Per verificare che reader funziona correttamente basta lanciarlo ed impartire alcuni semplici comandi come segue:

giometti@zaigor:~/demolinux/reader$ ./reader
Remote sensor manager v1.00. Please submit a command.
help
Valid commands are: help temperature weigh exit
Current time is: 2007/08/05 18:38:24
temperature
Current temperature is 27.5C at time 2007/08/05
18:38:30
weigh
Current weigh is 32.5Kg at time 2007/08/05 18:38:33

Come si vede, ogni volta che viene letto un valore da un sensore questo viene anche formattato e gli viene applicata la marca temporale. Il risultato è una stringa che per noi esseri umani è molto più comprensibile che del dato grezzo ottenibile dal driver (come visto sopra).

Esportiamo il tutto via rete

A questo punto è il momento di rendere la nostra applicazione disponibile in rete.

L'embedded satellite è collegato via rete con il data base main server e quindi occorre poter creare un collegamento fra di essi.

Il problema che di per se potrebbe risultare complesso in realtà ha una soluzione abbastanza banale, a patto di utilizzare il superserver inetd!

Questo server è molto importante perché permette di remotizzare in maniera molto banale una qualsiasi applicazione che di per se i socket non sa nemmeno cosa sono!

Si faccia riferimento alla figura.

Figura 2

In pratica egli non fa altro che mettersi in ascolto su una porta TCP/IP ed ogni qual volta gli arriva una richiesta di connessione la gestisce e quindi manda in esecuzione la applicazione da remotizzare, con l'accortezza però di collegare lo stdin e lo stdout dell'applicazione stessa con il socket in questione. In questo modo l'applicazione pensa sempre di riceve ed inviare dati in locale ma, in realtà, questi viaggiano via rete!

Vediamo come questo si traduce con il comando reader.

Innanzi tuto scegliamo una porta TCP/IP da utilizzare per la connessione remota, ad esempio possiamo usare la porta 12346 (verificate che sul vostro sistema questa porta sia libera), quindi occorre aggiungere la linea:

sensor 12346/tcp # demolinux remote sensor

al file /etc/services. Quindi aggiungiamo questa linea al file di configurazione di inetd che è /etc/inetd.conf:

sensor stream tcp nowait root /usr/sbin/tcpd /usr/local/bin/reader

Quello che abbiamo fatto in questo modo è di dire al superserver che ogni qual volta abbiamo una connessione alla porta TCP/IP 12346 (servizio sensor) egli deve invocare il programma /usr/local/bin/reader; è chiaro allora che occorre anche copiare il nostro programmino reader in tale posizione:

giometti@zaigor:~/demolinux/reader$ cp reader
/usr/local/bin/reader

una volta fatto ripartire il superserver se tutto è andato bene dovremmo avere:

giometti@zaigor:~/demolinux/reader$ netstat -ln | grep 12346
tcp 0 0 0.0.0.0:12346 0.0.0.0:* LISTEN

Ecco che inetd sta ascoltando (LISTEN) una richiesta di connessione alla porta 12346.

Per verificare però che il tutto funziona correttamente possiamo utilizzare il programma telnet in questo modo:

giometti@zaigor:~/demolinux/reader$ telnet 127.0.0.1 12346
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
Remote sensor manager v1.00. Please submit a command.
help
Valid commands are: help temperature weigh exit
Current time is: 2007/08/05 18:59:15
temperature
Current temperature is 26.0C at time 2007/08/05 18:59:18
weigh
Current weigh is 33.5Kg at time 2007/08/05 18:59:21
exit
Bye
Connection closed by foreign host.

Io ho utilizzato l'indirizzo dell'interfaccia di loopback (127.0.0.1) ma il tutto funziona anche specificando un indirizzo IP di una macchina remota.

Come allora potete vedere il tutto funziona come prima quando avevamo lanciato reader in locale!

Il data base main server

Bene, passiamo ora a configurare il data base main server. Questo sistema generalmente è una macchina diversa dell'embedded satellite ma nel nostro esempio possiamo anche semplificare la cosa utilizzando sempre la stessa macchina.

Il data base main server ha diversi compiti: da un lato deve interrogare l'embedded satellite per acquisire i valori letti dai sensori, mentre dall'altro deve rispondere alle richieste dei querying system.

Il primo compito è espletato dal programma collector e dal database MySQL, mentre per il secondo compito il tutto è rimandato sempre a MySQL ma con l'aiuto del web server Apache.

Configuriamo dapprima il database MySQL.

Una volta che avete installato MySQL (il che dipende dalla distribuzione che utilizzate) utilizzate il seguente comando per creare le tabelle che verranno popolate dai dati acquisiti:

giometti@zaigor:~/demolinux/database$ mysql -u root < created

A questo punto installiamo i file per Apache che creano il nostro sito Web che dovrà poi mostrarci i dati che abbiamo acquisito, dovrà cioè creare i così detti «report».

giometti@zaigor:~/demolinux/repgen$ sudo mkdir /var/www/demolinux
Password:
giometti@zaigor:~/demolinux/repgen$ sudo cp *.php /var/www/demolinux/

Sul mio sistema ho installato Apache in modo tale che la directory radice esportata sul Web corrisponda alla directory /var/www/, quindi ho installato i file per i report nella directory /var/www/demolinux/.

Per verificare che sia i file di report sia il Web server Apache siano correttamente configurati basta puntare il vostro browser preferito all'URL http://localhost/demolinux/test.php. Se tutto funziona come si deve otterrete quanto riportato in figura.

Figura 3

Se non ottenete questo risultato (o uno similare) verificate di aver correttamente copiato i file e di aver scritto l'indirizzo giusto (io ho sempre usato come indirizzo il nome dell'interfaccia di loopback). Altra verifica da fare è quella di controllare che il vostro server Apache supporti correttamente le pagine di tipo PHP.

Bene, ora il nostro database e il server Web stanno funzionando correttamente e quindi è il momento di popolare il nostro database con i dati che leggiamo dai sensori. Per fare ciò utilizziamo l'applicativo collector.

Questo applicativo è scritto in TCL ed utilizza il plugin mysqltcl che ne estende le funzionalità per accedere ad un data base MySQL (occorre perciò che installiate pure quello). Vediamo come funziona:

giometti@zaigor:~/demolinux/collector$ ./collector
usage: ./collector host port interval

Lanciandolo senza parametri egli ci dice che occorre specificare un host e una porta (port). Come avrete intuito questi parametri servono per indicare a collector le specifiche di connessione verso l'embedded satellite da interrogare; nel nostro caso quindi utilizzeremo i parametri localhost e 12346. Per quanto riguarda il parametro interval esso specifica ogni quanto tempo, in secondi, interrogare lembedded satellite.

Un comando possibile per eseguire il programma è quindi:

giometti@zaigor:~/demolinux/collector$ ./collector localhost 12346 5
./collector: submitting command "temperature"
./collector: got replay "Current temperature is 26.5C at time 2007/08/05 20:13:20"
./collector: submitting temperature data on DB
./collector: submitting command "weigh"
./collector: got replay "Current weigh is 21.0Kg at time 2007/08/05 20:13:20"
./collector: submitting weigh data on DB
./collector: sleep at time Tue Apr 05 20:13:20 CEST 2005
./collector: submitting command "temperature"
./collector: got replay "Current temperature is 26.5C at time 2007/08/05 20:13:25"
./collector: submitting temperature data on DB
./collector: submitting command "weigh"
./collector: got replay "Current weigh is 23.5Kg at time 2007/08/05 20:13:25"
./collector: submitting weigh data on DB

Come si vede allora il programma collector inizia subito ad interrogare l'embedded satellite specificato e quindi salva i dati rilevati nel database. Il tutto si ripete ogni 5 secondi.

Visualizzare i dati

Bene, siamo quasi in fondo, ora passiamo alla visualizzazione dei dati rilevati. Per fare ciò basta puntare il vostro browser preferito all'URL http://localhost/demolinux/repgen.php dal vostro querying system.

Oramai avrete capito che anche in questo caso il querying system non è una macchina remota ma è sempre la stessa macchina su cui gira tutto il resto del nostro sistema di monitoraggio.

Se tutto va come deve otterrete quanto riportato in figura.

Figura 4

Il report che genereremo è molto semplice e si basa essenzialmente sul visualizzare le grandezze rilevate in un certo intervallo di tempo. Ad esempio se impostiamo l'intervallo "2005-04-05 20:00:00","2005-04-05 21:00:00" si ottiene quanto riportato in figura.

Figura 5

I valori sono molto ballerini a causa del fatto che sono stati generati con dei numeri casuali, è ovvio che se i sensori fossero stati reali questo non sarebbe accaduto.

Bene, a questo punto non vi resta che creare un data base vostro e quindi divertirvi a provare la visualizzazione di diversi intervalli temporali.

Da parte mia spero solo di aver stuzzicato la vostra immaginazione! ;)

 
 

In primo piano

Simons Voss: un mondo senza chiavi

Simons Voss: un mondo senza chiavi

Il sistema di gestione e di controllo degli accessi 3060 si presenta come un’alternativa con enormi vantaggi...
Pubblicità mirata dei prodotti

Pubblicità mirata dei prodotti

Hai un prodotto o un servizio da pubblicizzare? Fallo su consulenti-ict.it! Pubblicizzare un prodotto...
Recensioni sul Portale

Recensioni sul Portale

Hai un prodotto hardware/software o un libro riguardante uno dei temi dell'ICT? Vuoi farlo conoscere...

Offerte di lavoro

Visualizza Topic »

Eventi

Non ci sono eventi in programma
Maggio 2012
D L M M G V S
29 30 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
Giugno 2012
D L M M G V S
27 28 29 30 31 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Sondaggi

busyCaricamento Sondaggio...