Page 1 of 1

salvare stato LED su server online

Posted: Wed Mar 05, 2014 12:14 pm
by francyhacker94
salve a tutti,sono un appassionato di elettronica e ho cominciato ad usare il raspberry pi, ho imparato come far accendere un led alla pressione di un pulsante, il programma l'ho scritto in C...

adesso volevo tentare di salvare lo stato del led in un database che memorizzi se il led è spento o acceso e la data e l'ora di accensione e spegnimento del led, tutto su un server online...

potreste darmi qualche indicazione, tipo da dove iniziare ecc??

grazie a tutti in anticipo

Re: salvare stato LED su server online

Posted: Thu Mar 06, 2014 12:47 pm
by Angelus88
Per prima cosa ti serve un server mysql dove registrare i dati.

Code: Select all

sudo apt-get install mysql mysql-server
Poi se oltre al database vuoi ospitare anche una pagina internet, devi installare anche apache e php:

Code: Select all

sudo apt-get install apache2 php5 libapache2-mod-php5
In questo modo avrai un server web dove potrai ospitare una pagina internet, magari scritta in php, che ti fa la query sul database ovvero recupera dal database lo stato del LED e lo mostra all'interno di una pagina accessibile su Internet o solo sulla rete locale, a tua scelta.

Lo stato del LED sul database lo andrai invece a memorizzare usando il programma stesso che hai scritto in C con il quale accendi il LED.

Nel dettaglio non so dirti come fare perché non conosco C ma semplicemente se in C hai scritto, in via teorica, che alla pressione del pulsante si accende il led, aggiungi che oltre ad accendere il LED ti faccia una insert sul database ovvero ti memorizzi sul database il valore "0" se è spento e "1" se è acceso ed usando la funzione del timestamp dell'sql puoi anche automaticamente inserire data e ora dell'operazione (a patto che la data e l'ora sul raspberry siano corrette).

Installa intanto mysql, apache e php e dopo vediamo il da farsi ;)

Re: salvare stato LED su server online

Posted: Thu Mar 06, 2014 3:46 pm
by francyhacker94
Angelus88 wrote:Per prima cosa ti serve un server mysql dove registrare i dati.

Code: Select all

sudo apt-get install mysql mysql-server
Poi se oltre al database vuoi ospitare anche una pagina internet, devi installare anche apache e php:

Code: Select all

sudo apt-get install apache2 php5 libapache2-mod-php5
In questo modo avrai un server web dove potrai ospitare una pagina internet, magari scritta in php, che ti fa la query sul database ovvero recupera dal database lo stato del LED e lo mostra all'interno di una pagina accessibile su Internet o solo sulla rete locale, a tua scelta.

Lo stato del LED sul database lo andrai invece a memorizzare usando il programma stesso che hai scritto in C con il quale accendi il LED.

Nel dettaglio non so dirti come fare perché non conosco C ma semplicemente se in C hai scritto, in via teorica, che alla pressione del pulsante si accende il led, aggiungi che oltre ad accendere il LED ti faccia una insert sul database ovvero ti memorizzi sul database il valore "0" se è spento e "1" se è acceso ed usando la funzione del timestamp dell'sql puoi anche automaticamente inserire data e ora dell'operazione (a patto che la data e l'ora sul raspberry siano corrette).

Installa intanto mysql, apache e php e dopo vediamo il da farsi ;)
sei stato gentilissimo :)
grazie ma per far fare questo su un server esterno? cioè io vorrei fare che si il raspberry a inviare le informazioni al server online... sai darmi qualche altra delucidazione ?

in un certo senso sul raspberry non devo ospitare database o pagine html,quest'ultimi li dovrei mettere su un dominio, è questo quello a cui punto

Re: salvare stato LED su server online

Posted: Thu Mar 06, 2014 3:53 pm
by Angelus88
Bene, ancora più semplice... Devi solo preoccuparti del programma che hai scritto in C che come ti dicevo, oltre a dover attivare il LED quando premi il pulsante, deve anche collegarsi ad un server mysql dove memorizzare i dati. Il server mysql può essere locale ma può anche essere su internet, non cambia nulla.

Quando creerai l'account o aprirai comunque il dominio, ti forniranno anche l'indirizzo dove gira il server mysql, la porta, username e password e il nome del database. Può anche essere che in base al dominio scelto, il nome del database puoi anche creartelo tu.

Quindi intanto ti consiglio di scegliere su quale sito o dominio vorrai caricare la pagina internet e il database e poi in base a quello impostiamo il programma.

Re: salvare stato LED su server online

Posted: Thu Mar 06, 2014 3:57 pm
by Angelus88
Qui ad esempio c'è un tutorial che spiega come scrivere il codice in modo che il programma possa collegarsi ad un server mysql.

Re: salvare stato LED su server online

Posted: Thu Mar 06, 2014 3:59 pm
by francyhacker94
già fatto il dominio è operativo su altervista :) ma non riesco a capire che istruzione devo includere nel programma che ho fatto in C per fargli trasmettere i dati relativi allo stato del led...è questo quello che mi blocca!!!

Re: salvare stato LED su server online

Posted: Thu Mar 06, 2014 4:02 pm
by francyhacker94
Angelus88 wrote:Qui ad esempio c'è un tutorial che spiega come scrivere il codice in modo che il programma possa collegarsi ad un server mysql.
sei il mio salvatore :') mi sta facendo capire tante cose :) ti ringrazio tantissimo :)

Re: salvare stato LED su server online

Posted: Thu Mar 06, 2014 4:04 pm
by Angelus88
Figurati!! I parametri per collegarti al server mysql li hai? Tipo host, porta, ecc....?

AGGIORNAMENTO

Ho un dubbio.... Sono entrato su altervista con un account creato anni fa... Ho visto che nella sezione dedicata alla gestione del database scrivono le credenziali ovvero:
Hostname/server: localhost
Username: <mionickname>
Password: Facoltativa (puoi lasciare il campo vuoto)
Database: my_<mionickname>
Questo mi fa pensare che il server mysql sia accessibile solo se la connessione al server avvenga dal server stesso dato che come host indicano localhost.

Quando carichi una pagina php che si collega al server mysql, la pagina php è caricata su altervista e anche il server mysql si trova su altervista quindi l'host è localhost.

Ma ho paura che se la connessione al server mysql proviene dall'esterno, non possiamo usare ovviamente localhost ma forse andrebbe usato altervista.org o <nickname>.altervista.org ma la password? Se davvero è facoltativa significherebbe che tutti potrebbero collegarsi al server mysql a patto di conoscere solo la username!!

Quindi questo mi fa pensare che non puoi usare altervista se vuoi ospitare mysql...

Re: salvare stato LED su server online

Posted: Thu Mar 06, 2014 4:14 pm
by francyhacker94
Angelus88 wrote:Figurati!! I parametri per collegarti al server mysql li hai? Tipo host, porta, ecc....?
si ho tutto :) quindi per connettermi al database c'è la libreria mysql.h che mi permette di scrivere i dati relativi al led sul database e qui ci siamo... l'altro passo da fare è stamparli a video su una pagina html...

Re: salvare stato LED su server online

Posted: Thu Mar 06, 2014 4:19 pm
by Angelus88
Leggi su! Ho aggiornato il post

Re: salvare stato LED su server online

Posted: Thu Mar 06, 2014 4:32 pm
by francyhacker94
il progetto reale è quello di fare una raccolta punti... praticamente al raspberry viene collegato un lettore di badge che comunica con il raspberry tramite porta seriale, al passaggio della scheda nel lettore di badge il raspberry leggeva l'id della carta e deve memorizzare nel database online i punti associati a quel utente con quella scheda... è questo in sostanza quello che devo fare... mi è stato affidato dalla scuola il raspberry da poco tempo per questo chiedo molto aiuto, ma purtroppo non ho trovato molti esempi in giro che mi spiegano come fare una raccolta punti da memorizzare su un database online

Re: salvare stato LED su server online

Posted: Thu Mar 06, 2014 4:37 pm
by Angelus88
Nessun problema, quello che hai fatto fin'ora va bene come partenza. La parte di stampare i dati su una pagina internet è la più semplice. Fai una pagina in php che tramite una semplice query recupera il valore che hai precedentemente scritto con il programma in C ;)

Re: salvare stato LED su server online

Posted: Thu Mar 06, 2014 4:49 pm
by francyhacker94
va bene ti ringrazio per le delucidazioni :) grazie di tutto :D

Re: salvare stato LED su server online

Posted: Thu Mar 06, 2014 4:54 pm
by Angelus88
Mettiti al lavoro e se ci sono problemi ci risentiamo qui :D

Re: salvare stato LED su server online

Posted: Fri Mar 07, 2014 4:51 pm
by francyhacker94
ciao ieri oggi ho provato un po a cercare l'istruzione in C che mi faccia connettere alla pagina php, ma non l'ho trovata :(

Re: salvare stato LED su server online

Posted: Mon Mar 10, 2014 7:33 am
by Angelus88
Aspetta non ho capito... Che intendi per "istruzione in C per connetterti alla pagina php"?

Con il programma scritto in C devi solo limitarti ad accendere e spegnere il led e a scrivere quindi il valore sul database mysql.

Con la pagina scritta invece in PHP salvata su altervista che aprirai normalmente dal browser devi invece fare la query ovvero recuperare il valore sul database e in base a quello mostrare quello che desideri.

Re: salvare stato LED su server online

Posted: Thu Mar 13, 2014 2:15 pm
by francyhacker94
ciao scusa per l'imprecisione... avevo visto questo sketch per arduino: http://gaedc2.altervista.org/wp-content ... ete_01.pdf che si collegava alla pagina php, pensavo che si potesse fare anche così anche con il raspberry

Re: salvare stato LED su server online

Posted: Thu Mar 13, 2014 2:40 pm
by Angelus88
Ok, ho capito cos'ha fatto...

Quel programma invece di salvare le informazioni su un database, le invia ad una pagina PHP usando il GET.

In parole povere se su un browser scrivi il link:

Code: Select all

http://www.prova.it/index.php?id=ciao
stai praticamente mandando il valore "ciao" inserendolo in un'array alla posizione "id".

Dall'altro lato, la pagina PHP si occuperà di recuperare quel valore usando la variabile $_GET[id].

E' indifferente quindi... O il valore lo scrivi sul database usando direttamente il programma scritto in C oppure il programma può inviare il valore ad una pagina php e sarà poi la pagina php a scrivere il valore recuperato sul database.

Cambia l'approccio e il modo con cui dovrai scrivere la pagina in PHP ma è la stessa cosa! Il risultato sarà uguale in entrambi i casi.

In termini di semplicità, è più semplice usare il metodo che ha usato quel ragazzo in quanto non hai bisogno di avere direttamente accesso al database a patto che tu sappia poi PHP.

Re: salvare stato LED su server online

Posted: Thu Mar 13, 2014 10:45 pm
by francyhacker94
ecco come ti dicevo prima non so come far comunicare il programma con la pagina php, non trovo esempi oltre a questo che è per arduino

Re: salvare stato LED su server online

Posted: Fri Mar 14, 2014 8:00 am
by Angelus88
Piuttosto usa allora l'esempio che ti ho pubblicato prima io! Ovvero invece di usare il programma per comunicare con la pagina PHP, usa il programma per scrivere sul database mysql!