SWPI LAMP Ovvero, una completa meteo station con : SWPi + Webserver Apache2 + MYSQL + PHP + FTP + WEBMIN! Questo tutorial nasce dalla esigenza di avere una stazione meteo completa e capace di visualizzare autonomamente i dati SENZA L’ESIGENZA DI AVERE NECESSARIAMENTE UN SITO SU INTERNET O UNO SPAZIO WEB dotato di supporto php e mysql. L’abbinamento meteo + RASPBERRY sopperisce in toto a questa richiesta, mettendo a disposizione una completa struttura WEB pronta da essere pubblicata in INTERNET oppure visualizzata anche in locale. Ho scritto questa miniguida, per aiutare chi come me ha passione sia per il computer che per il meteo e per i dispositivi elettronici, spero di non aver commesso errori, se nel caso ve ne fossero mi scuso anticipatamente. Ringraziamento particolare a Tony Tarsi che ha speso tempo creando una ottimo software per Raspberry. Le istruzioni vi guideranno passo passo alla realizzazione, è necessario solo un minimo di conoscenza informatica, niente di particolarmente complicato. Questa guida deve essere presa così come è, ognuno è responsabile di ciò che fa e declino ogni responsabilità. Retorica … lo so … ma necessaria a volte !!! ☺ ALLORA INIZIAMO SUBITO………. Scricare l’immagine dopo esservi registrati al forum di www.vololiberomontecucco.it da qui: https://www.dropbox.com/s/1b2xbllismd2hbw/swpi.rar Scompattate dove voleteil file zippato fino ad ottenere l’immagine chiamata swpi_xxx (dove xxx è la versione corrente pubblicata) Scaricare il file win32diskimager-v0.7-binary.zip da http://sourceforge.net/projects/win32diskimager/ e scompattarlo . Preparare una sd da 4 o 8 Gb inserirla nel lettore SD lanciare il file Win32DiskImager.exe in modalità amministrativa (tasto DX esegui come amministratore) e si aprirà una schermata come questa: Aprire la cartella e cercare il percorso della immagine scaricata ed estratta precedentemente: swpi_XXX Selezionare sulla tendina “device” la lettera assegnata alla scheda SD. Così: Premere Write ed attendere il completamento della scrittura della immagine. Scaricare il programma putty.exe da : http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe Collegare al Raspberry la scheda SD poi la rete ed infine accendere il dispositivo. La distribuzione Linux del PI partirà automaticamente ed anche l’SSH server in essa contenuto. Lanciare Putty.exe appena scaricato e impostare l’indirizzo ip del PI e la porta 22 (per conoscere l’indirizzo ip del PI basta eseguire una scansione sulla rete locale con programmi tipo Superscan.exe sulla porta 22 oppure consultare i dispositivi collegati al router o la tabella del DHCP del server etc.) Impostare Putty e premere ‘open’ Apparira la richesta di un certificato… accettarla . Alla richesta di login inserire: pi Alla richiesta di password inserire : raspberry Se dovesse partire il conto alla rovescia per il programma SWPI premere immediatamente la combinazione di tasti CTRL+C in modo da bloccarla. Aggiorniamo immediatamente la versione di SWPI tramite il comando: swpi-update il programma si aggiornerà automaticamente. Spostiamo la porta di amministrazione HTML di SWPI editando il il file SWPI.cfg con il comando Sudo nano swpi.cfg E modifichiamo la riga config_web_server_port = 80 impostando per esempio: config_web_server_port = 8999 in questo caso la porta 8999 verrà utilizzata per amministrare da browser il programma SWPI tramite: http://indirizzo-ip-raspberry:8999 Assegniamo ora un indirizzo ip statico al PI con i seguenti comandi: cd /etc/network sudo nano interfaces Rimpiazzare la riga : iface eth0 inet dhcp Con: iface eth0 inet static address 192.168.1.4 netmask 255.255.255.0 gateway 192.168.1.1 Ovviamente bisogna mettere gli indirizzo che si desidera ed un gateway coerente. Salvare con CTRL+x Modificare il DNS con questo comando Sudo nano /etc/resolv.conf Impostando così: nameserver 8.8.8.8 Salvare con CTRL+x Riavviare il raspberry con: sudo nano reboot attendere che il sistema venga ricaricato (qualche decina di secondi) e rientrare lanciando di nuovo putty con il nuovo indirizzo ip. INSTALLIAMO ORA TUTTO L’AMBIENTE LAMP APACHE2 +MYSQL+PHP I seguenti comandi aggiorneranno i packages, installeranno APACHE2, MYSQL ed infine il PHP con supporto per MYSQL Eseguire da terminale SSH sudo apt-get update sudo apt-get install apache2 sudo apt-get install mysql-server sudo apt-get install php5 sudo apt-get install php5-mysql Durante l’installazione di MYSQL verrà richiesto l’inserimento della password, inserirla e prenderne nota. Per permettere ad un client esterno di gestire mysql si deve fare in modo che un utente e la classe di indirizzi o l'indirizzo del client sia abilitato a interagire con il server. Editate il file /etc/mysql/my.cnf per modificare la chiave bind-address. Solitamente si troverà una riga bind-address = 127.0.0.1 questo significa che il servizio e` in ascolto solo per connessioni che avvengono in locale. Si ha la possibilità di commentare questa riga e permettere a qualsiasi classe di indirizzi di accedere linea oppure mettere ip dal quale sia possibile accedere. Si commenta la linea mettendo in prima posizione il carattere # bind-address = IP_Esterno dove IP_Esterno e` quello tramite il quale l'host e` raggiungibile da altri computer. Inoltre deve essere commentata la linea "skip network" (se presente): #skip network E` poi necessario riavviare MySQL: sudo /etc/init.d/mysql restart Ora .. bisogna dire a Mysql che un determinato utente, su una determinata classe di indirizzi, e' abilitato ad accedere. Vediamo come: entriamo in mysql mysql -u root -p per uscire Quit Allora entriamo .. mysql -u root -p il sistema chiedera' la password di mysql ora creiamo un utente che da qualsiasi classe di indirizzi o segmento abbia la facolta' di accedere ad db di mysql e pieni poteri di azione. Creiamo l'utente: mysql> CREATE USER 'nome_utente'@'%' IDENTIFIED BY 'setta_password'; se notate dopo 'nome_utente'@ c'e' '%' bene in questo modo si dice che l'utente puo' provenire da qualsiasi dominio o classe di indirizzi. mysql> GRANT ALL PRIVILEGES ON *.* TO 'nome_utente'@'%' WITH GRANT OPTION; abbiamo impostato la regola che l'utente creato ha "pieni poteri" su tutti i DB. Vediamo ora i Database creati di default da MYSQL con il comando: SHOW DATABASES; Questa istruzione dice al nostro DBMS di mostrare Avendo appena installato MySQL dovreste avere solo 2 database: Creiamo ora il database per SWPI con il comando: CREATE DATABASE SWPIDB; Utilizziamo il DB appena creato con: USE SWPIDB; Creiamo ora la tabella meteo con le colonne di servizio con: (FATE UN COPIA ED INCOLLA DI TUTTO) tutti i database esistenti. CREATE TABLE IF NOT EXISTS `METEO` ( `TIMESTAMP_LOCAL` datetime NOT NULL, `TIMESTAMP_IDX` datetime default NULL, `WINDIR_CODE` text, `WIND_DIR` smallint(6) default NULL, `WIND_AVE` double default NULL, `WIND_GUST` double default NULL, `TEMP` double default NULL, `PRESSURE` double default NULL, `HUM` double default NULL, `RAIN` double default NULL, `RAIN_RATE` double default NULL, `TEMPINT` double default NULL, `HUMINT` double default NULL, `WIND_CHILL` double default NULL, `TEMP_APPARENT` double default NULL, `DEW_POINT` double default NULL, `UV_INDEX` double default NULL, `SOLAR_RAD` double default NULL, `WIND_DAY_MIN` double default NULL, `WIND_DAY_MAX` double default NULL, `WIND_DAY_GUST_MIN` double default NULL, `WIND_DAY_GUST_MAX` double default NULL, `TEMP_OUT_DAY_MIN` double default NULL, `TEMP_OUT_DAY_MAX` double default NULL, `TEMP_IN_DAY_MIN` double default NULL, `TEMP_IN_DAY_MAX` double default NULL, `HUM_OUT_DAY_MIN` double default NULL, `HUM_OUT_DAY_MAX` double default NULL, `HUM_IN_DAY_MIN` double default NULL, `HUM_IN_DAY_MAX` double default NULL, `PRESSURE_DAY_MIN` double default NULL, `PRESSURE_DAY_MAX` double default NULL, `WIND_DIR_AVE` double default NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1; Verifichiamo la corretta creazione con: SHOW TABLES; dovrebbe visualizzare una cosa di questo tipo: +------------------+ -> | Tables_in_SWPIDB | -> +------------------+ -> | METEO | -> +------------------+ -> 1 row in set (0.00 sec) Digitare EXIT per uscire. Installiamo ora WEBMIN un programma di utilità che permette di amministrare in remoto tramite browser MYSQL , APACHE2, PHP, e tutta la distribuzione linux installata nel PI. Eseguire nell’ordine i seguenti comandi: sudo groupadd -f -g33 www-data sudo apt-get update sudo apt-get install apache2 php5 libapache2-mod-php5 sudo apt-get install mysql-server mysql-client php5-mysql sudo apt-get install phpmyadmin sudo apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-ptyperl apt-show-versions python Durante l’installazione verrà richiesta l’inserimento di nome utente e password per l’amministrazione e qualche impostazione che potete lasciare di default. Prendete nota del nome utente e la password che avete inserito e conservatele. Procedere ancora con : mkdir webmin cd webmin wget http://prdownloads.sourceforge.net/webadmin/webmin-1.580.tar.gz gunzip webmin-1.580.tar.gz tar xf webmin-1.580.tar cd webmin-1.580 sudo ./setup.sh /usr/local/webmin al termine potrete amministrare in remoto tramite: http://indirizzo-ip-raspberry:10000 Installiamo ora il servizio FTP SERVER (VSFTPD) per consentire il trasferimento dei file da e verso il Raspberry Pi. Assumiamo la proprietà del web root: sudo chown -R pi /var/www Poi, installiamo vsftpd: sudo apt-get install vsftpd Configuriamo il servizio FTP con la modifica il file vsftpd.conf, editiamolo con sudo nano /etc/vsftpd.conf Modifichiamo anonymous_enable=YES con anonymous_enable=NO, leviamo il commento local_enable=YES e write_enable=YES, poi vai alla fine del file e aggiungiamo force_dot_files=YES. Salviamo con CTRL+x eriavviamo VSFTPD sudo service vsftpd restart Fare il download del file server.zip che contiene tutti i template html e php da : da https://www.dropbox.com/s/y61r5eyvffumzkj/Server.zip?m scompattarlo e fare l’upload del contenuto con un client ftp verso il raspberry nella cartella: /var/www Se non si conosce nessun client ftp scaricare questo: http://sourceforge.net/projects/filezilla/files/FileZilla_Client/3.7.0.1/FileZilla_3.7.0.1_win32.zip/download e connettersi configurandolo così: I campi rossi sono quelli che servono ovviamente dovete usare i vostriparametri impostati precedentemente. Premendo il tasto destro sulla cartella www (\var\www) impostare i permessi in questa maniera: Collegarsi ora alla interfaccia http di SWPI con: http://indirizzo-ip-raspberry:8999 dove la porta 8999 è quella che abbiamo modificato inizialmente nella configurazione del file swpi.cfg. apparira questo: Inserite la password admin e premete ENTER. Impostiamo i valori che ci interessa modificare (password - sensori – webcam – radio – etc.) Per la configurazione SWPI vi rimando alla guida di Tony Tarsi pubblicata sul sito ufficiale. Tenendo presente le esigenze impostiamo questi campi così: Dove si vede l’indirizzo ip 192.168.1.240 deve essere sostituito con il vostro ip e la password con la vostra password del raspberry. Apriamo con un editor di testo il file config.php nella situato nella cartella \var\www con il comando Sudo nano /var/www/config.php Modifichiamolo così: <?php $server = "Vostro_ip"; indirizzo raspberry $user = "User_sql"; creato durante l’installazione di MYSQL $pwd = "pass_mysql"; creata durante l’installazione di MYSQL $db = "SWPIDB"; creato in SQL $swpipwd = "vostra_pass_impostata_in_SWPI"; vostra password inserita nella interfaccia html di SWPI Salviamo con CTRL+x Riavviamo tutto con Sudo reboot Attendiamo il riavvio e se tutto è impostato bene collegandosi a : http://ip-raspberry/swpi_dashboard.php visualizzeremo: Tutto Funziona.