Pages: [1] 2   Go Down
Author Topic: Pachube - EthernetServer EthernetClient  (Read 1059 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
God Member
*****
Karma: 0
Posts: 589
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mi piacerebbe aprire un topic su Pachube, ho cercato un po' in rete, sto leggendo documentazione e le guide ufficiali, guardicchio gli esempi nell'ide ma ho dei dubbi.

IDE 1.0 Arduino2009 con eth shield officiale.
Al momento sull'arduino ho un web server.
Lo inizializzo con la classe EthernetServer server(80);
Tutto ok funziona.

Guardando l'esempio dell'ide per pachube vedo che devo inizializzare il client con EthernetClient client;.
Che faccio li metto entrambi? Oppure basta l'inizializzazione del server?
Logged

Genova
Offline Offline
Faraday Member
**
Karma: 38
Posts: 3283
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao camionista smiley

in che senso le metto entrambi? o fai da client o fai da server ... se fai da client sarà arduino il primo a trasmettere e il server risponderà, se fai da server sarà arduino a rispondere alle richieste

ciao
Logged

no comment

Bergamo
Offline Offline
God Member
*****
Karma: 1
Posts: 663
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao

sia per aggiornare un feed che per ottenere dati da uno esistente, ti basta la ethernetClient: sei tu infatti a collegarti a Pachube.
bye
Logged

lucadentella.it

Offline Offline
God Member
*****
Karma: 0
Posts: 589
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@Pablos ciao ragazza Inesperta smiley-razz

Spettate, mi spiego meglio.

Il mio arduino al momento fa da web server mostrandomi i valori dei sensori su una pagina web locale.
In più mi logga questi valori sulla sd della eth shield. E rende disponibile il file csv del log dalla suddetta pagina locale.

Già che ci sono vorrei, oltre a fargli fare queste cose, fargli mandare i dati dei sensori anche a Pachube.

Primo intoppo, posso usare l'eth shield al tempo stesso come web server e come client?
Logged

Genova
Offline Offline
Faraday Member
**
Karma: 38
Posts: 3283
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si, la ethernet può fare sia da clent che da server, sinceramente ho provato con successo le 2 parti distinte e separate, ma non ho mai messo su entrambe le cose insieme, però ho visto su google parlare di arduino client/server, perchè ti servirebbero entrambe? come vorresti strutturare l'utilizzo della scheda? facci un esempio di quello che ti serve, è raro lo sviluppo di queste opzioni miscelate, ma potrebbe servire.
ciao  
« Last Edit: February 03, 2012, 06:35:43 pm by pablos » Logged

no comment

Offline Offline
God Member
*****
Karma: 0
Posts: 589
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si, la ethernet può fare sia da clent che da server, sinceramente ho provato con successo le 2 parti distinte e separate, ma non ho mai messo su entrambe le cose insieme, però ho visto su google parlare di arduino client/server, perchè ti servirebbero entrambe, come vorresti strutturare l'utilizzo della scheda, facci un esempio di quello che ti serve  

Oddio... Non so bene come farti un esempio O_o
Andiamo con ordine.

Al momento ho già tutto fatto e funzionante, tranne la parte di pachube.
Quello che ho è questo:
Ricezione dati via SOFTSERIAL da un altro arduino ogni minuto
I dati vengono immagazzinati e mostrati su una pagina web generata dinamicamente con le sottoclassi della ethernet.h.
Ogni cinque minuti i dati vengono presi, ponderati (viene fatta una media) e loggati su una sd.
La parte del webserver è strutturata secondo il tutorial di ladyada

Quello che vorrei fare io è inserire all'interno del ciclo di recezione dati softserial (che credo viaggi con un interrupt) l'invio dati a pachube.

Code:
if (receiveData) {
... store data...
send data to pachube }

e poi la parte del web server
Code:
 EthernetClient client = server.available();
if (client) {
Si capisce qualcosa di quello che ho scritto?
Se hai direttamente i link della combinata client/server passameli che me li studio e se poi mi inchiodo torno qui smiley
« Last Edit: February 03, 2012, 06:36:42 pm by DanielaES » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Certo che arduino corredato di Ethernet shield può fare da client e allo stesso tempo da server. Anzi se ti interessa questo è proprio il nuovo  trend tecnologico dei sistemi embedded, prendono il nome di embedded web server. Le applicazioni non sono così "rare": pensa ad un web server come quello che hai realizzato tu che immagino serva ai Client pagine HTML statiche all'interno delle quali visualizzi informazioni circa lo stato dei sensori connessi al sistema e al verificarsi di un certo evento(superamento di una certa soglia ecc) vuoi che il sistema invii una mail d'allarme ad un indirizzo preventivamente memorizzato. Bhè il sistema ora dovrà funzionare da Client perchè dovrà accedere ad un server SMTP, gestire la comunicazione secondo il protocollo SMTP al fine di inviare la mail.
Per la programmazione la risposta è affermativa: dovrai definire un server come hai già fatto, ma anche un Client con il quale potrai effettuare le tue richieste al server Pachube.
Logged

Offline Offline
God Member
*****
Karma: 0
Posts: 589
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok, penso effettivamente di esserci riuscita, tirando un po' all'ugello di canide però...
Piazzando questo codice di prova, all'interno del void loop e nello specifico all'interno di un ciclo if...
effettivamente ottengo "connected".

Code:
   EthernetClient client;
    Serial.println(F("connecting..."));
    // if you get a connection, report back via serial:
    if (client.connect("www.pachube.com", 80)) {
      Serial.println(F("connected"));
      client.stop();
    }
    else {
      // kf you didn't get a connection to the server:
      Serial.println(F("connection failed"));
      client.stop();
    }

Però ho notato che se faccio una richiesta al web server MENTRE il web client sta tentando la connessione il web server non è disponibile.
Confermate ciò o sono io che sbaglio qualcosa?

EDIT: No, no, no.
Questo codice non va. Se metto la connessione offline... comunque ottengo connected.

Manu, suggerimenti su come strutturare questo codice di cui mi dici? :\
« Last Edit: February 03, 2012, 08:28:09 pm by DanielaES » Logged

Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 8
Posts: 2955
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao,
qui :http://community.pachube.com/node/693 c'è un esempio di come far parlare arduino con pachube.
dò per scontato che non ci siano altri problemi di rete ad impedire il corretto funzionamento.
Logged

Naples (IT)
Offline Offline
God Member
*****
Karma: 6
Posts: 714
Andrea E.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sull'ide 1.0 ci sono esempi un pò datati dell'uso di pachube, infatti fanno uso delle vecchie api e gli esempi non sono del tutto compatibili con le nuove api di pachube.
La cosa la segnalai a suo tempo a Massimo Banzi ma.... gli esempi non sono stati aggiornati.
Sul mio blog trovi il codice di come utilizzare pachube con le sue nuove api.

E comunque sia, non mi sento di consigliarti pachube, ho trovato un servizio che fa la stessa cosa ma senza limitazioni ed è open: https://thingspeak.com/
Funziona allo stesso modo di pachube, se non meglio perchè open.
« Last Edit: February 04, 2012, 04:30:16 am by Trisonic » Logged

Arduino, MODs e DIY: blackstufflabs.com

Offline Offline
God Member
*****
Karma: 0
Posts: 589
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

O cavoletti. Ce l'ho fatta. O_o
Ora ho web server su lan interna, sd logging e datastream a thing speak.
Al momento invio solo un valore, non ho ancora lavorato per comporre la stringa definitiva, però funziona tutto O_O
Non pensavo mica di riuscirci.

Per far convivere web client e web server mi è stato molto d'aiuto un post sul forum internazionale con il codice di esempio.
Ethernet client ed Ethernet server possono convivere, a patto di assegnare porte diverse (ho messo il server sulla 84).
Bisogna ricordarsi di stoppare il client alla fine del ciclo if che lo attiva ed aggiungerci un piccolo delay (500);
EDIT: Altrimenti capita che al secondo ciclo non riesca ad effettuare la connessione.
Questa cosa è fondamentale, altrimenti il web client non riesce a convivere con il web server e fallisce tutte connessioni successive alla prima.

Ho dovuto usare l'IDE 22 però.
L'ide 1.0 è troppo dispendioso in termini di ram e di sketch. Le librerie aggiornate sono spesso significativamente più grosse.
Con IDE 22 sembra starci tutto ed ho ancora 380 di FREERAM e 4 k di sketch per comporre la mia stringa finale.

@Trisonic
Alla fine ho usato thingspeak, perché mi sembrava più semplice comporre il codice da inviare.
Però ha il limite di massimo 8 stream, o sbaglio? Pachube da stream illimitati.
Cmq lascio su ad inviare un paio di ore, come test.
Poi inizierò a lavorare alla stringa... e mi sa che vi romperò le scatole perché ho delle float ed un unsigned long :\
« Last Edit: February 04, 2012, 03:14:28 pm by DanielaES » Logged

Offline Offline
God Member
*****
Karma: 0
Posts: 589
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok, sto fisicamente iniziando ad odiare pachube...
I tutorial sono tutti diversi sulla sintassi, c'è confusione, ci capisco poco.
Thinkspeak ha funzionato in due minuti.
@Brain l'esempio del tuo link non sono riuscita a farlo andare.

Btw, questa è la PUT che eseguo ma su pachube non appare nulla.
Segue il Serial.print:
Quote
Connecting to Pachube...
PUT /v2/feeds/46722.csv HTTP/1.1
Host: api.pachube.com
X-PachubeApiKey: la-mia-key
Content-Length: 5
Connection: close

A,600

Su pachube ho un datastream chiamato A. Vedete qualche errore nella sintassi? (dando per scontato che la key sia corretta).
In alternativa qualcuno può passarmi il listato corretto ed aggiornato dei client.print per pachube?
Grazie smiley
Logged

Bergamo
Offline Offline
God Member
*****
Karma: 1
Posts: 663
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

così a occhio sembra ok... prova a stampare il return code di pachube e vedi se ti da codice "200" (= ok):
Logged

lucadentella.it

Naples (IT)
Offline Offline
God Member
*****
Karma: 6
Posts: 714
Andrea E.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok, sto fisicamente iniziando ad odiare pachube...
I tutorial sono tutti diversi sulla sintassi, c'è confusione, ci capisco poco.

non ho usato thingspeak ma so che è una valida alternativa a pachube.

è vero, ci sono molti tutorial, ma la maggior parte di questi usano le VECCHIE api di pachube.... leggi gli esempi sul mio blog che fanno uso delle NUOVE api di pachube... prendi quelli ed usali come riferimento.
Logged

Arduino, MODs e DIY: blackstufflabs.com

Offline Offline
God Member
*****
Karma: 0
Posts: 589
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

è vero, ci sono molti tutorial, ma la maggior parte di questi usano le VECCHIE api di pachube.... leggi gli esempi sul mio blog che fanno uso delle NUOVE api di pachube... prendi quelli ed usali come riferimento.

Volete farvi due risate?
Ero già andata sul sito di trisonic, la prima volta che me lo aveva consigliato qui sul topic, ma mi sono distratta guardando la foto di lui da bambino, ho vagato un po' tra i ricordi della mia infanzia ed ho chiuso il sito dimenticandomi perché lo avevo aperto -______-'
Quando ho riaperto il sito ho detto "ehi ma io questa foto l'ho già vista!"
Oro olimpico storditi 2012 - 2016? smiley-grin
Cmq ho implementato il tuo esempio con un singolo datastream nel mio codice... funziona smiley

Però, cazzarola, è obbligatorio usare un round robin per mandare più datastream??
Primo, il round robin non lo capisco, secondo faccio fatica a programmarlo in PROGMEM.
Non c'è davvero modo di comporre una stringa con pachube e mandare quella?
Leggendo i tutorial del sito su pachube sembra di si ma oramai non capisco più cosa è obsoleto e cosa no...

Logged

Pages: [1] 2   Go Up
Jump to: