Go Down

Topic: Ethernet sur réseau non-local ? (Read 3 times) previous topic - next topic

Fabinou30

Salut à tous, je requiert votre aide suite à la réalisation d'un programme avec l'arduino UNO et l'ethernet shield officiel.
J'ai développé un programme permettant la lecture et la mise à l'état HAUT ou BAS des Pin Digital et Analogs grâce à une page HTML.
L'ensemble (page HTML) est hébérgé sur l'arduino ethernet shield mais je me rends compte que je ne peut utiliser l'ip du shield que sur un réseau local (celui de la maison).Ainsi, je vous demande s'il m'est possible de controler l'arduino ethernet shield en dehors du réseaux local.Si oui, comment ??

PS: Gratuitement (et légalement de préférence) bien sûr !! :%
Venez visiter mon site web !!
http://arduino.leforum.eu

Artouste


Salut à tous, je requiert votre aide suite à la réalisation d'un programme avec l'arduino UNO et l'ethernet shield officiel.
J'ai développé un programme permettant la lecture et la mise à l'état HAUT ou BAS des Pin Digital et Analogs grâce à une page HTML.
L'ensemble (page HTML) est hébérgé sur l'arduino ethernet shield mais je me rends compte que je ne peut utiliser l'ip du shield que sur un réseau local (celui de la maison).Ainsi, je vous demande s'il m'est possible de controler l'arduino ethernet shield en dehors du réseaux local.Si oui, comment ??

PS: Gratuitement (et légalement de préférence) bien sûr !! :%

bonjour
je vais présupposer que tu a une box internet ? (free,orange ou autre FAI ? )
perso j'ai fait sur ma livebox (orange) une redirection de port vers l'IP locale du shield ethernet , ça fonctionne sans problemes
ATTENTION neanmoins à une chose , il te faut connaitre ton adresse IP externe si ton FAI ne t'attribue pas une IP fixe

anthology

et pour avoir une adresse fixe au lieu de l'ip tu peux utiliser noip ou dydns
ca marche impeccable chez moi pour un accès a mon nas donc pourquoi pas a un arduino

Artouste


et pour avoir une adresse fixe au lieu de l'ip tu peux utiliser noip ou dydns
ca marche impeccable chez moi pour un accès a mon nas donc pourquoi pas a un arduino


oui, mais avec noip, dydns ou autre "services approchants" tu mets un tiers dans la boucle  8)

Pac2Kro

Pour accéder à ton LAN depuis "n'importe ou dans le monde", c'est "beaucoup de tiers" qu'il faut mettre dans la boucle. Dans le cas, ou son IP n'est pas fixe, il n'est plus à un tiers près.

Artouste


Pour accéder à ton LAN depuis "n'importe ou dans le monde", c'est "beaucoup de tiers" qu'il faut mettre dans la boucle. Dans le cas, ou son IP n'est pas fixe, il n'est plus à un tiers près.

je parle du tiers  qui attribue une adresse IP exploitable vue de l'exterieur
si ton FAI est dans les choux , il est dans les choux  :smiley-mr-green:
les services tiers dynamiques là sont des tiers dont la fiabilité/pérennité/intégrité ne sont pas garanties/certifiées, ça n'empêche pas que l'utilisation soit pratique, 
il faut juste avoir à l'esprit celà  8)

Pac2Kro

#6
May 02, 2013, 03:38 pm Last Edit: May 02, 2013, 07:05 pm by Pac2Kro Reason: 1
Le tiers en question n'attribue pas une adresse IP mais un nom de domaine.
Le service qu'il gère est la diffusion aux serveurs DNS du couple "nom de domaine-adresseIP tournante de ta connexion".
J'ai rarement vu des problèmes sur ces services.

Fabinou30

ok merci de votre aide rapide donc pour résumer :
- j'ouvre le port que je déclare dans la programme sur ma box
- je vais sur dydns et je créé une adresse ip fixe (la même que celle que je déclare dans mon programme ??)

PS: pour la manip avec dydns c'est gratuit ?
Venez visiter mon site web !!
http://arduino.leforum.eu

Fabinou30

donc voici le code pour m'aider :
(celui là c'est un de recup qui fonctionne en local)
Code: [Select]
//simple button GET server code to control servo and arduino pin 5
//for use with IDE 1.0
//open serial monitor to see what the arduino receives
//use the \ slash to escape the " in the html
//for use with W5100 based ethernet shields
//Powering a servo from the arduino usually DOES NOT WORK.
//note that the below bug fix may be required
// http://code.google.com/p/arduino/issues/detail?id=605

#include <SPI.h>
#include <Ethernet.h>

#include <Servo.h>
Servo myservo;  // create servo object to control a servo

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 1, 177 }; // ip in lan
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(80); //server port

String readString;

//////////////////////

void setup(){

  pinMode(6, OUTPUT); //pin selected to control
  //start Ethernet
  Ethernet.begin(mac, ip, gateway, subnet);
  server.begin();
  //the pin for the servo co
  //enable serial data print
  Serial.begin(9600);
  Serial.println("server LED test 1.0"); // so I can keep track of what is loaded
}

void loop(){
  // Create a client connection
  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("<br />");
         
          client.println("<a href=\"/?lighton\"\">Turn On Light</a>");
          client.println("<a href=\"/?lightoff\"\">Turn Off Light</a><br />");       

          client.println("</BODY>");
          client.println("</HTML>");

          delay(1);
          //stopping client
          client.stop();

          ///////////////////// control arduino pin
          if(readString.indexOf("?lighton") >0)//checks for on
          {
            digitalWrite(6, HIGH);    // set pin 4 high
            Serial.println("Led On");
          }
          else{
          if(readString.indexOf("?lightoff") >0)//checks for off
          {
            digitalWrite(6, LOW);    // set pin 4 low
            Serial.println("Led Off");
          }
          }
          //clearing string for next read
          readString="";

        }
      }
    }
  }
}


Et là, c'est le blanc...
En faite, je souhaite acceder à cette page (généré parfaitement sur mon réseaux local de livebox) mais au niveau mondial (au moins international).
J'imagine qu'il me faut une adresse IP qui n'existe pas et donc quelque chose pour la générer, j'imagine aussi qu'il faut ouvrir des ports sur la livebox et/ou modifier ceux du programme arduino.Mais comment faire ? quels ports ouvrir ? comment avoir une adresse IP statique non existante qui redirige vers l'arduino ? C'est pour ces questions que je demande votre aide.En plus (pour être un peu plus... chiant :smiley-roll-blue:) j'aimerai le faire gratuitement.

Merci de votre aide future
Venez visiter mon site web !!
http://arduino.leforum.eu

Pac2Kro

Tu n'as rien à modifier dans ton sketch.
Tout se passe au niveau de ta box.
Tu dois diriger les requêtes entrantes vers l'ip de ton arduino.
Seulement, j'espère que tu as prévu un contrôle d'accès du type "login/MDP", sinon tout le monde pourra se connecter sur ton arduino. 

Fabinou30

j'ai pas prévu de système de login mais tu pourrais être plus précis sur les manips que j'ai à faire voir me guider s'il te plait ?
Car je n'ai jamais fait cela et je n'ai vraiment aucune idée de ce que je dois faire.

Merci ;)
Venez visiter mon site web !!
http://arduino.leforum.eu

Pac2Kro

Pour des redirections de port, nous allons être ici un peu hors sujet.
Par contre, tu trouveras une foultitude de tutos sur google.

Pour comprendre le NAT : http://fr.wikipedia.org/wiki/Network_address_translation

Si ton FAI ne te fourni pas une IP fixe, regardes du coté de "dyndns" ou ses homologues.

Pour comprendre le DNS : http://fr.wikipedia.org/wiki/Domain_Name_System

De la même manière, il faudra que tu configures ta box (qui a un client dyndns) pour qu'elle fournisse la nouvelle IP à chaque changement de ton FAI, dyndns se chargera de faire la correspondance entre le nom de domaine que tu auras choisie et la nouvelle ip.

Depuis l'extérieur, tu n'auras juste qu'à taper dans ton navigateur : http://monadressedyndns

Rovhell

Si tu as une freebox, il y a un service à activer pour avoir gratuitement une ip fixe, sans tiers!

Pac2Kro


En faite, je souhaite acceder à cette page (généré parfaitement sur mon réseaux local de livebox) mais au niveau mondial (au moins international).


C'est une livebox.

Artouste


j'ai pas prévu de système de login mais tu pourrais être plus précis sur les manips que j'ai à faire voir me guider s'il te plait ?
Car je n'ai jamais fait cela et je n'ai vraiment aucune idée de ce que je dois faire.

Merci ;)

de toutes façons dans un premier temps, IP fixe ou pas (externe), pour faire un test il faut que tu crée ta regle dans ta livebox

port entrée ----> adresse locale:port
ça se trouve dans les options avancées de ta livebox (règles NAT/PAT)

Go Up