Bonjour,
cela fait pas mal d'heures que j'essaye de resoudre mon probleme.
J'ai commencé à travailler sur l'ethernet shield. Mon programme fonctionne parfaitement en LAN mais je n'arrive absolument pas a me connecter depuis l'exterieur du reseau.
Je n'y connais pas grand chose en redirections de ports, DMZ etc etc.... et je me dis que le probleme doit se situer là.
Dès que j'essaye de me connecter depuis l'exterieur j'arrive sur le Freebox Server au lieu de tomber sur ma page qui me permet de controller l'arduino.
Pour le moment je teste un code qui me créé une page web. 3 boutons qui : allume, eteint ou fait clignoter une LED.
Sur l'administration du reseau freebox , j'ai activé le mode routeur.
ETAT DU ROUTEUR : Actif
REDIRECTIONS :
Port externe : 80 -- Protocole TCP -- Ip de destination 192.168.0.1 -- port interne 80
Et voici mon code :
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0E, 0xB0, 0x52 }; //physical mac address
byte ip[] = { 192, 168, 0, 177 }; // ip de l'arduino
byte gateway[] = { XX,XXX,XX,XXX }; // adresse publique de la Freebox que je recupere sur la base admin
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(80); //server port
String readString;
int statePin = 0;
//////////////////////
void setup(){
pinMode(6, OUTPUT); // Pin de la Led
//start Ethernet
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
Serial.begin(9600);
Serial.println("server LED test 1.0"); // verification que c'ets loadé.
}
void loop(){
// creation connexion
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
//read char by char HTTP request
if (readString.length() < 100) {
//store characters to string
readString += c;
Serial.print(c);
}
//if HTTP request has ended
if (c == '\n') {
///////////////
Serial.println(readString); //print to serial monitor for debuging
client.println("HTTP/1.1 200 OK"); //send new page
client.println("Content-Type: text/html");
client.println();
client.println("<HTML>");
client.println("<HEAD>");
client.println("<meta name='apple-mobile-web-app-capable' content='yes' />");
client.println("<meta name='apple-mobile-web-app-status-bar-style' content='black-translucent' />");
client.println("<link rel='stylesheet' type='text/css' href='http://homeautocss.net84.net/a.css' />");
client.println("<TITLE>Home Automation</TITLE>");
client.println("</HEAD>");
client.println("<BODY>");
client.println("<H1>Home Automation</H1>");
client.println("<hr />");
client.println("
");
client.println("<a href=\"/?lighton\"\">Turn On Light</a>");
client.println("<a href=\"/?lightoff\"\">Turn Off Light</a>
");
client.println("
");
client.println("<a href=\"/?lightblink\"\">Blink Led</a>
");
client.println("</BODY>");
client.println("</HTML>");
delay(1);
//stopping client
client.stop();
///////////////////// control arduino pin
if(readString.indexOf("?lighton") >0)//checks for on
{
Serial.println("Led On");
statePin = 0;
}
if(readString.indexOf("?lightoff") >0)//checks for off
{
Serial.println("Led Off");
statePin = 1;
}
if(readString.indexOf("?lightblink") >0)//checks for off
{
Serial.println("Led blink");
statePin = 2;
}
//clearing string for next read
readString="";
}
}
}
}
if (statePin == 0)
{ Serial.println ("STATE PIN IS ON");
digitalWrite (6, HIGH);
}
if (statePin == 1)
{
Serial.println ("STATE PIN IS OFF");
digitalWrite (6, LOW);
}
if (statePin == 2)
{
Serial.println ("STATE PIN IS BLINKING");
digitalWrite (6, HIGH);
delay(300);
digitalWrite (6, LOW);
delay(300);
}
}
Pourriez vous me dire ce qui ne va pas. j'ai essayé pas mal de choses mais rien n'y fait.... =(
Merci d'avance
M