Pages: 1 2 3 [4] 5   Go Down
Author Topic: Ethernet.h e intercettare GET  (Read 3552 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 1
Posts: 166
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

PAblos Lo stavo commentando io,
mi hai preceduto di poco

Logged

Offline Offline
Edison Member
*
Karma: 38
Posts: 1900
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho le orecchie giù...



Eddaje che se no ci metto 6 mesi!

Cmq grazie! smiley-grin
Logged

Offline Offline
Edison Member
*
Karma: 38
Posts: 1900
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

e abbi pazienza e abbi pazienza e abbi pazienza, intanto il tuo home domotic te lo abbiamo fatto noi ... cacchio vai a cercare su internet e capisci come abbiamo fatto noi ... perchè noi siamo informatici? anch'io sono elettronico e non un informatico...


if (query.indexOf("luce") > 0){   // cerca il pezzo LUCE nel totale della stringa che si chiama query!
          String parziale =  query.substring(9,12); //nella stringa ci sono altri valori a seguire il valore on-off composto da 2-3 cifre
char thisChar[query.length() +1]; // preleva i caratteri!
parziale.toCharArray(thisChar, parziale.length()+1) ;
 v = atoi(thisChar);     // lo converte in intero!    
                  analogWrite(5, v); // prende l'intero e lo piazza nel comando analogWrite!

Provalo fai un debug e vedi cosa fa sto pezzo ... cerca atoi e vedi a cosa serve, cerca substring e vedi cosa serve
STUDIA!!!

il C lo conosco bene, quindi atoi non mi è sconosciuto. Mi sono sconosciuti tutti i linguaggi "nuovi".

Quanto all'analog write non è un valore analogico il dimmer, ma un intero che mi determina il ritardo dell'impulso PWM rispetto al passaggio per lo zero della sinuosoide.

Ora faccio una prova conm uno scheletro di Web server fuori dal mio progetto,e vedo cosa succede.
Logged

Genova
Offline Offline
Faraday Member
**
Karma: 17
Posts: 2754
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Scusa Luca, visto che tu sei esperto di php html js, mi chiariresti una cosa?

Arduino può collegarsi a un sito inviando un istruzione a un file.php in ascolto e questo in teoria alla domanda giusta dovrebbe rispondere.... ecco la mia idea era questa, visto che arduino non possiede un orologio interno se non fatto con un millis un po' medioevale, a ogni reset andrebbe reimpostato, oppure con componenti esterni, vorrei prelevare l'ora pubblicata sui siti dell'ora esatta che sono sincronizzati con l'orologio atomico.

Domanda possiamo prelevare l'ora da qualche sito, riusciamo in qualche modo a leggere la pagina  e prelevare solo quei caratteri?
ad esempio da uno di questi
http://www.miniportale.it/miniportale/orologio.htm
http://www.portale.it/orario.htm
http://www.horlogeparlante.com/it/
http://www.inrim.it/ntp/webclock_i.shtml

Conosci qualche sito dove fare una richiesta dato e farsi restituire un date, un time?
ciao
 
« Last Edit: December 04, 2011, 03:39:42 pm by pablos71 » Logged

Meglio imparare dalle cose inutili piuttosto che non imparare niente.   [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]

Offline Offline
Full Member
***
Karma: 1
Posts: 166
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

<OT>
Ciao,
Purtroppo non sono un  esperto ...  smiley-confuse

Si può sincronizzare un pc come dici tu ma come fare con Arduino prorio non saprei
anche perchè php non posso usarlo su arduino, usare un pc per fare questo non mi sembra utile
forse utilizzare Web client e cerca il pezzo giusto boo ...
mi viene in mente  XML e arduino esiste qualche libreria?
</OT>
Rimango ancora molto incerto  su quale librerie usare per interpretare dati senza il Refresh della pagina
« Last Edit: December 04, 2011, 04:38:34 pm by llluca » Logged

Offline Offline
Edison Member
*
Karma: 38
Posts: 1900
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Anchio vorrei sapere come intercettare i dati senza aggiornare la pagina...

Ho bisogno di un suggerimento in HTML:

Ho messo un bottone submit <button type=\"submit\">invia</button> di fianco alla textBox dell'esempio dello slider, ma pur aggiornando la pagina, non mi manda sulla barra degli indirizi la stringa numerica che c'è dentro la TextBox.

Come devo arrangiare un pulsante che mi prenda i valori della TextBox?  smiley-confuse
Logged

Genova
Offline Offline
Faraday Member
**
Karma: 17
Posts: 2754
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@ lluca - va bhe pazienza grazie comunque, vedo se trovo qualcosa sennò mi metto l'animo in pace smiley
Code:
Rimango ancora molto incerto  su quale librerie usare per interpretare dati senza il Refresh della pagina
parli del tinyweb server? pensavo avessi rinunciato a questo.....

Per avere un dato aggiornato sul browser il criterio di base è:
IL client invia ad arduino ogni x ms una stringa ad es "manda_dati" arduino risponde e nella funzione Success ricevi lo status delle porte analog o digit con una stringa che ti strutturi a piacimento, nessuna libreria...... è un comando js
window.setTimeout(funzione del POST, 500, url); // tempo di aggiornamento 500ms, non faccio un reload, ma è come se premessi il tasto invia ogni mezzo secondo dal text box dove scrivi i comandi da inviare ad arduino, non so se mi sono capito smiley ... guarda che è davvero facile


@babbuino - sul tuo come è strutturato credo ci sia poco da fare per avere un aggiornamento automatico, e poi scusa su cosa dovremmo lavorare su uno sketch immaginario? Capita che una modifica ti obbliga a rifare tutto il lavoro, quindi l'hai fatto cosi' e tienilo così, altrimenti butta tutto e rifallo da capo con un sistema diverso.
nel tuo caso avendo una pagina html incorporata la butto li, ma dovresti dire ad arduino di inviare un dato all'ip (che dovrà essere statico) del tuo pc dove c'e' un script in ascolto capace di capire la stringa, lo dovrei fare per dirti di preciso come.


« Last Edit: December 04, 2011, 05:27:59 pm by pablos71 » Logged

Meglio imparare dalle cose inutili piuttosto che non imparare niente.   [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]

Offline Offline
Full Member
***
Karma: 1
Posts: 166
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

parli del tinyweb server? pensavo avessi rinunciato a questo.....
No assolutamente ... 
se posso aprofittare....  (aspetto ancora la II puntata)
Anche se il tuo secondo suggerimento è motooooo + semplice

@babbuino Il forum è per questo con + mani forse  arriviamo alla fine ...
Logged

Genova
Offline Offline
Faraday Member
**
Karma: 17
Posts: 2754
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

se non riesci dimmelo, domani sera modifico il pezzo
Logged

Meglio imparare dalle cose inutili piuttosto che non imparare niente.   [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]

Offline Offline
Edison Member
*
Karma: 38
Posts: 1900
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il refresh automatico non è un problema con un TAG del genere:

<meta http-equiv=refresh content=5 >

che mi aggiorna la pagina ogni 5 sec.

Ora mi servirebbe che il pulsante Submit mi succhi la stringa dentro la textBox e la inviii sulla barra degli indirizzi, e per me il gioco è fatto. Questo per passare il valore dello slider alla variabile dimmer (valore che decide la luminosità della lampada) così vario la luce con il dimmer invece che con dei pulsanti che agiscono su deiu numeri preimpostati (scenari)

Agevolo immagine della pagina di prova dello slider, con pulsante tipo Submit-invia di fianco:

Logged

Offline Offline
Edison Member
*
Karma: 38
Posts: 1900
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

e abbi pazienza e abbi pazienza e abbi pazienza, intanto il tuo home domotic te lo abbiamo fatto noi ... cacchio vai a cercare su internet e capisci come abbiamo fatto noi ... perchè noi siamo informatici? anch'io sono elettronico e non un informatico...


if (query.indexOf("luce") > 0){   // cerca il pezzo LUCE nel totale della stringa che si chiama query!
          String parziale =  query.substring(9,12); //nella stringa ci sono altri valori a seguire il valore on-off composto da 2-3 cifre
char thisChar[query.length() +1]; // preleva i caratteri!
parziale.toCharArray(thisChar, parziale.length()+1) ;
 v = atoi(thisChar);     // lo converte in intero!    
                  analogWrite(5, v); // prende l'intero e lo piazza nel comando analogWrite!

Provalo fai un debug e vedi cosa fa sto pezzo ... cerca atoi e vedi a cosa serve, cerca substring e vedi cosa serve
STUDIA!!!

Allora... questo codice io ce l'ho GIA'!

Nel senso che uso un sistema leggermente diverso per interpretare il comando, ma mi funziona già! E io che subito pensavo fosse una roba in Jquery e non mi sono accorto che era codice C per arduino!! Che niubbo!

Ilproblema (ora) è di catturare quel bel valore che va avanti e indietro con lo slider e che mi compare nella TextBox. Devo recuperarlo con un pulsante che appunto poi lo gestisco con la funzione query.indexOf().

Il codice della slider+TextBox è questo:

Code:
<!DOCTYPE html><html><head>
  <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
  <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script></head>

<style>#demo-frame > div.demo { padding: 10px !important; };</style>

<script>
$(function() { $( "#slider-vertical" ).slider({orientation: "vertical", range: "min", animate: true, min: 0, max: 255, value: 0,
slide: function( event, ui ) { $( "#amount" ).val( ui.value ); }});
$( "#amount" ).val( $( "#slider-vertical" ).slider( "value" ) );});

</script>

<div class="demo"><p><label for="amount">Luce:</label>
<input type="text" id="amount" style="border:1; color:#ff0000; font-weight:bold;" /></p>
<div id="slider-vertical" style="height:200px;"></div></html>
Logged

0
Offline Offline
Edison Member
*
Karma: 20
Posts: 2227
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
ecco la mia idea era questa, visto che arduino non possiede un orologio interno se non fatto con un millis un po' medioevale, a ogni reset andrebbe reimpostato, oppure con componenti esterni, vorrei prelevare l'ora pubblicata sui siti dell'ora esatta che sono sincronizzati con l'orologio atomico.

Domanda possiamo prelevare l'ora da qualche sito, riusciamo in qualche modo a leggere la pagina  e prelevare solo quei caratteri?

io avevo studiato uno dei seguenti metodi da accompagnare alla libreria swRTC sviluppata da Leo (http://arduino.cc/forum/index.php/topic,73496.0.html), poprio per l'inizializzazione della data/ora:
1- recupero della data/ora usando un pagina php che, interrogata, torni proprio data e ora (funzione date() di php);
2- recupero della data/ora usando un sito qualsiasi (o quasi): ogni sito, interrogato con una GET, torna anche data/ora formattata in questo modo: Mon, 14 Nov 2011 16:42:03 GMT
da qui si recupera data e ora informato GMT (da qui la mia richiesta a Leo della feature DST, per una conversione corretta  smiley-razz)
3- recupero della data/ora facendo una chiamata GET ad Arduino specifica, per passare i parametri necessari; per esempio: http://ip_arduino/settime=2011.12.05.10.39.00
questa chiamata viene gestita da una pagina php attraverso curl; se
Quote
demonizzata
,  questa pagina php può aggiornare data e ora in maniera schedulata.

Alla fine avevo optato per l'opzione 3, più che altro perchè la 1 e 2 richiedono un client (che dovevo istanziare appositamente), mentre la 3 richiede un server (che già ho istanziato).

Nulla vieta di utilizzare un metodo come 1 o 2 abbinato ad uno dei siti da te indicati, l'importante è che data/ora siano scritti in HTML e non su applet JAVA / Flash (come nella maggior parte dei casi).

Non ho elencato qui sopra il metodo che sarebbe il più idoneo, ovvero la chiamata ad un NTP server.
http://arduino.cc/en/Tutorial/UdpNtpClient
Logged

Napoli
Offline Offline
Sr. Member
****
Karma: 5
Posts: 349
Post fata resurgo
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@pitusso,

C'è da considerare che l'NTP ha come vantaggio principale la compensazione del tempo di trasmissione del frame dati contenente l'orario e la data.

Senza una compensazione si riesce a sincronizzare con accuratezza di qualche secondo.

Saluti,
Dario.
Logged

Souliss - Open-source Distributed Home Automation with Arduino and Android

http://www.souliss.net
Follow at @soulissteam

@veseotech

Genova
Offline Offline
Faraday Member
**
Karma: 17
Posts: 2754
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

grazie pitusso
infatti sto studiando il servizio NTP server, quello che usa windows vuole delle chiavi di riconoscimento, altri siti ti forniscono il metodo di richiesta e il formato di risposta, l'ho cercato un po' ieri sera poi provo e vi so dire. Per quello che riguarda il ritardo tra richiesta e risposta direi che è irrilevante anche se fosse 30 sec, teniamo conto che non posso chiedere a un server che non è mio una richiesta ogni secondo. Dopo un ora l'amministratore mi banna l'ip. Figuriamoci se tutto il mondo che ha arduino mette lo stesso script e fa richiesta al server di inviare l'ora ogni minuto, inevitabile intasarlo in pochi secondi sbattendoci fuori a tutti.

la richiesta va fatta una volta al gg o ogni due gg (windows la fa 1 volta a settimana) , per il resto va avanti il millis.
« Last Edit: December 05, 2011, 06:29:20 pm by pablos71 » Logged

Meglio imparare dalle cose inutili piuttosto che non imparare niente.   [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]

Offline Offline
Full Member
***
Karma: 1
Posts: 166
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ilproblema (ora) è di catturare quel bel valore che va avanti e indietro con lo slider e che mi compare nella TextBox. Devo recuperarlo con un pulsante che appunto poi lo gestisco con la funzione query.indexOf().

Aggiungi un pulsante :
Code:
client.print("<form><input type=text name='valore' >");
          client.print("<br> <input type=submit name='intensi' value=intensi ></form>");

oppure + bello il pulsante lo nascondi: con input type=hidden e JavaScript

   
Code:
client.print(' onchange='this.form.submit()'  />");
     client.print("<input type=hidden name='intensi' value=intensi ></form>");

ma.....
Stiamo usando jquery  quindi....

..........................................


Luca
Logged

Pages: 1 2 3 [4] 5   Go Up
Jump to: