If piripicchio {
client.print("<h3><a href='/?A=1'>SU</a></h3>"); // Tenda su
}
else
{
client.print("");
}
Grazie
Ma in questo caso "piripicchio" non e' una condizione?
non dovrei settare una variabile ??
Il mio problema e' che se clicco sul link su che ho creato con href, la stringa rimane dopo l'indirizzo, e se per errore faccio un ricarica della pagina riesegue il comando! o sbaglio??
Grazie
aggiungi un tasto dove onclick fa un load della pagina pulita oppure un autorefresh
pablos:
aggiungi un tasto dove onclick fa un load della pagina pulita oppure un autorefresh
Grazie, potresti indicarmi dove inserire questo script....sono ancora un po niubo....
magari se hai uno sketch di esempio, te ne sarei grato.
Saluti
PaoloP:
If piripicchio {
client.print("
SU
"); // Tenda su}
else
{
client.print("");
}
Purtroppo, così non funziona......
se vuoi sapere dove inserirlo nel tuo sketch mi serve qualcosa di piu' di un if piripicchio
pablos:
se vuoi sapere dove inserirlo nel tuo sketch mi serve qualcosa di piu' di un if piripicchio
Hai ragione e' che non volevo "disturbare" troppo .... questo e' lo sketch
#include <String.h>
#include <SPI.h>
#include <Ethernet.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into pin 2 on the Arduino
#define ONE_WIRE_BUS 6
// Setup a oneWire instance to communicate with any OneWire devices
// (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
///////////////////////////////////////////////////////////////////
byte mac[] = {
0x00, 0xAA, 0xBB, 0xCC, 0xDA, 0x02 }; // mac address
byte ip[] = {
192,168,1,7 }; // ip arduino internet in
byte gateway[] = {
192,168,1,1 }; // internet access via router
byte subnet[] = {
255, 255, 255, 0 }; //subnet mask
EthernetServer server(80); //server port
//definizione attuatori
int outPin = 2; // pin attuatore cancello
int outPin2 = 3; // pin attuatore tenda su
int outPin3 = 4; // pin attuatore tenda giu
int outPin4 = 5; // pin attuatore tenda metà
int outPin5 = 7; // pin controllo canale
int C = 5; // Variabile canale
int D = 0;
int lettura = 0;
String readString; // legge int e assegna l'uscita
void setup()
{
Ethernet.begin(mac, ip, gateway, subnet);
pinMode(outPin, OUTPUT); //definisce che il pin e' un uscita
pinMode(outPin2, OUTPUT);
pinMode(outPin3, OUTPUT);
pinMode(outPin4, OUTPUT);
pinMode(outPin5, OUTPUT);
//pinMode(outPin5, OUTPUT);
Serial.begin(9600);
// start serial port
Serial.begin(9600);
Serial.println("Dallas Temperature IC Control Library Demo");
// Start up the library
sensors.begin();
}
void loop()
{
{
lettura = C;
Serial.println(lettura);
}
// call sensors.requestTemperatures() to issue a global temperature
// request to all devices on the bus
Serial.print(" Requesting temperatures...");
sensors.requestTemperatures(); // Send the command to get temperatures
Serial.println("DONE");
Serial.print("Temperature for Device 1 is: ");
Serial.print(sensors.getTempCByIndex(0)); // Why "byIndex"?
// You can have more than one IC on the same bus.
// 0 refers to the first IC on the wire
/*inizio client*/
EthernetClient client = server.available();
if (client) {
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
readString.concat(c); //store characters to string
//if HTTP request has ended
{
lettura = C;
Serial.println(lettura);
}
if (c == '\n' && currentLineIsBlank) {
if(readString.indexOf("D=1") > 0)
{
C=1; // CONTROLLO CANALE
}
if(readString.indexOf("S=1") > 0)
{
C=2; // CONTROLLO CANALE
}
if(readString.indexOf("E=1") > 0)
{
C=6; // CONTROLLO CANALE
}
if(C==1)
{
digitalWrite(7,HIGH);
delay(500);
digitalWrite(7,LOW);
delay(500);
digitalWrite(7,HIGH);
delay(500);
digitalWrite(7,LOW);
delay(500);
C=7;
D=1;
}
if(C==2)
{
digitalWrite(7,HIGH);
delay(500);
digitalWrite(7,LOW);
delay(500);
digitalWrite(7,HIGH);
delay(500);
digitalWrite(7,LOW);
delay(500);
digitalWrite(7,HIGH);
delay(500);
digitalWrite(7,LOW);
delay(10);
C=8;
D=2;
}
if(C==6)
{
if(D==1)
{
digitalWrite(7,HIGH);
delay(500);
digitalWrite(7,LOW);
delay(500);
digitalWrite(7,HIGH);
delay(500);
digitalWrite(7,LOW);
delay(500);
digitalWrite(7,HIGH);
delay(500);
digitalWrite(7,LOW);
delay(500);
digitalWrite(7,HIGH);
delay(500);
digitalWrite(7,LOW);
delay(500);
digitalWrite(7,HIGH);
delay(500);
digitalWrite(7,LOW);
delay(10);
C=9;
D=3;
}
else
{
digitalWrite(7,HIGH);
delay(500);
digitalWrite(7,LOW);
delay(500);
digitalWrite(7,HIGH);
delay(500);
digitalWrite(7,LOW);
delay(500);
digitalWrite(7,HIGH);
delay(500);
digitalWrite(7,LOW);
delay(500);
digitalWrite(7,HIGH);
delay(500);
digitalWrite(7,LOW);
delay(10);
C=9;
D=3;
}
}
if(readString.indexOf("L=1") > 0)
{
digitalWrite(outPin, HIGH); // CONTROLLO CANCELLO
Serial.println(outPin);
delay(2000);
digitalWrite(outPin, LOW);
}
if(readString.indexOf("A=1") > 0)
{
digitalWrite(outPin2, HIGH); // CONTROLLO TENDE COMANDO SU
Serial.println(outPin2);
delay(500);
digitalWrite(outPin2, LOW);
}
if(readString.indexOf("A=3") > 0)
{
digitalWrite(outPin3, HIGH); // CONTROLLO TENDE COMANDO GIU
Serial.println(outPin3);
delay(500);
digitalWrite(outPin3, LOW);
}
if(readString.indexOf("A=2") > 0)
{ // CONTROLLO TENDE COMANDO INTERMEDIO
digitalWrite(outPin2, HIGH); // Attivo il rele di salita
delay(500); //
digitalWrite(outPin2, LOW); // ------------------------
delay(40000); // Imposto il tempo di salita
digitalWrite(outPin3, HIGH); // Disattivo il rele di discesa
delay(500); //
digitalWrite(outPin3, LOW); // ----------------------------
delay(16000); // Imposto il tempo perche' la tenda arrivi nel mezzo
digitalWrite(outPin4, HIGH); // Attivo il relo di Stop
delay(500); //
digitalWrite(outPin4, LOW); // ----------------------
}
// COSTRUZIONE PAGINA HTML
client.println("HTTP/1.1 200 OK.....");
client.println("Content-Type: text/html");
client.println();
// inizializzo pagina (da togliere se uso ajax)
client.print("<html><head><title>DomusGate</title><meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' ></head><body>");
//inizai il body
client.println("<div style='width:400px; height:600px;'>"); //risoluzione per nokia 5800 640x360
client.println("<h1>CONTROLLO REMOTO</h1>");
client.println("
");
client.println("<hr>");
client.println("
");
client.println("<h2>APRICANCELLO</h2>");
client.print("<h3><a href='/?L=1'>APRI</a></h3>");
client.println("
");
client.println("<hr>");
client.println("<hr>");
client.println("<h2>CONTROLLO TENDE</h2>");
client.print("<h3><a href='/?A=1'>SU</a></h3>");
client.print("<h3><a href='/?A=2'>INTERMEDIO</a></h3>");
client.print("<h3><a href='/?A=3'>GIU</a></h3>");
client.println("
");
client.println("<hr>");
client.println("<hr>");
client.println("<h3><p>Temperatura interna = ");
client.print(sensors.getTempCByIndex(0));
client.println(" C
</p></h3>");
client.println("<hr>");
client.println("<hr>");
client.print("<h4><a href='/?D=1'>DESTRA</a></h4>");
client.print("<h4><a href='/?E=1'>ENTRAMBE</a></h4>");
client.print("<h4><a href='/?S=1'>SINISTRA</a></h4>");
// chiudo il div
client.println("</div>");
// chiudo pagina da togliere se uso ajax
client.println("</body></html>");
// pulisco la stringa per la successiva lettura
readString="";
//fermo il client
client.stop();
} //if c == /n
} // if client available
} // while client connesso
} // FINE if client
} // fine loop
client.print("<h4><a href='/?D=1'>DESTRA</a></h4>");
client.print("<h4><a href='/?E=1'>ENTRAMBE</a></h4>");
client.print("<h4><a href='/?S=1'>SINISTRA</a></h4>");
client.print("<input type=\"button\" style=\"width:120px; height:80px\" value=\"Aggiorna\" onclick =\" location.href='/'\">");
// chiudo il div
client.println("</div>");
Scusate, mi intrometto, se non sbaglio Pablos nella tua soluzione viene creato un pulsante apposito per "pulire" la stringa, vero? Ma non c'è un modo di pulirla inglobandola nei comandi?
Grazie
Ciao
pablos:
client.print("<h4><a href='/?D=1'>DESTRA</a></h4>");
client.print("
ENTRAMBE
");client.print("
SINISTRA
");client.print("<input type="button" style="width:120px; height:80px" value="Aggiorna" onclick =" location.href='/'">");
// chiudo il div
client.println("");
Grazie per la stringa, ti chiedo se non esista per caso un modo automatico per farlo?
in ogni caso grazie ancora
Chiedo, in qualche modo non si può inglobare parte della stringa che avete scritto nella stringa di refresh pagina?
client.print("");
In questo modo sarebbe tutto più semplice e automatico.
Grazie
Ciao
Si , questo dovrebbe fare l'autorefresh ogni secondo, va messo dentro l' HEAD, però così da sola fa il refresh ripetendo la stringa presente nel link, se hai inviato un comando tramite GET lo ripeterà all'infinito
client.print("<HEAD>");
client.print("<meta http-equiv=\"refresh\" content=\"1\">");
client.print("</HEAD>");
Si la stringa fa il refresh, ma io intendevo dire se c'è la possibilità di inserire il "pulisci" stringa all'interno della stringa refresh. Faccio un esempio che me lo invento:
client.print("<meta http-equiv="refresh" content="1" location.href='/'">");
Lo so che non esiste ma è per far capire.
Grazie
Ciao
Rinpe:
Si la stringa fa il refresh, ma io intendevo dire se c'è la possibilità di inserire il "pulisci" stringa all'interno della stringa refresh. Faccio un esempio che me lo invento:client.print("<meta http-equiv="refresh" content="1" location.href='/'">");
Lo so che non esiste ma è per far capire.
Grazie
Ciao
si, direi che si puo' fare qualsiasi cosa con il software
pablos:
Rinpe:
Si la stringa fa il refresh, ma io intendevo dire se c'è la possibilità di inserire il "pulisci" stringa all'interno della stringa refresh. Faccio un esempio che me lo invento:client.print("<meta http-equiv="refresh" content="1" location.href='/'">");
Lo so che non esiste ma è per far capire.
Grazie
Ciaosi, direi che si puo' fare qualsiasi cosa con il software
Ma posso usare questa stringa o siamo a livello teorico? :~
Purtroppo è solo a livello teorico, l'ho scritta solamente per farmi capire sperando che qualche guru ci potesse aiutare
Speriamo.
Ciao
Essendo questa la sintassi
Redirect to http://example.com/ after 5 seconds:
Redirect to http://example.com/ immediately:
presumo che bisogna mettere il link che si deve ricaricare, nel nostro caso l'ip di arduino
es:
client.print("<meta http-equiv="refresh" content="1" url="http:\192.168.1.7">");
se vuoi che l'URL prenda l'ip corrente della scheda bisognerà prendere byte ip[] = { 192,168,1,7 }; convertirla in stringa aggiungendo
http\: + (String)ip[0]+................ ecc ecc
se pensi che l'ip sia sempre quello scrivi l'URL e fai prima, altrimenti in javascript ci sono altre opzioni che però comportano un ulteriore ingombro di memoria che è già limitata.
ciao
pablos:
Essendo questa la sintassiRedirect to http://example.com/ after 5 seconds:
Redirect to http://example.com/ immediately:
presumo che bisogna mettere il link che si deve ricaricare, nel nostro caso l'ip di arduino
es:
client.print("<meta http-equiv="refresh" content="1" url="http:\192.168.1.7">");se vuoi che l'URL prenda l'ip corrente della scheda bisognerà prendere byte ip[] = { 192,168,1,7 }; convertirla in stringa aggiungendo
http\: + (String)ip[0]+................ ecc eccse pensi che l'ip sia sempre quello scrivi l'URL e fai prima, altrimenti in javascript ci sono altre opzioni che però comportano un ulteriore ingombro di memoria che è già limitata.
ciao
Ti ringrazio,
ho inserito la stringa prima di chiudere il div....entra in un loop che mantiene sempre l'ultimo comando inviato
Confermo, purtroppo mantiene sempre l'ultimo comando inviato
Altre idee?
Grazie ciao