element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Arduino
  • Products
  • More
Arduino
Arduino Forum Arduino Yun: rest calls over internet?
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Arduino to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Suggested Answer
  • Replies 9 replies
  • Answers 2 answers
  • Subscribers 392 subscribers
  • Views 871 views
  • Users 0 members are here
  • internet
  • yun
  • rest
  • api
  • arduino
Related

Arduino Yun: rest calls over internet?

Former Member
Former Member over 10 years ago

Hello everyone,

I've used my Arduino Yùn to control pins, to set and read variables from my browser through local area network using REST api.

The goal is to do the same thing from a remote PC over internet. I've got a Public and STATIC IP Address of the Yùn to localize it over the network, but how can I accomplish this task?

There are some examples for CC3000 chip (aREST api), but not written for the Yùn.

Any ideas? Thanks...

  • Sign in to reply
  • Cancel

Top Replies

  • clem57
    clem57 over 10 years ago in reply to Former Member +1 suggested
    Yes alexmawashi If the IP address is public and static (not 192.168 because that is not public or rout-able). Or you have to use IP forwarding/NAT to a valid internet address... Oh you want to use security…
Parents
  • clem57
    0 clem57 over 10 years ago

    Can tefel help this person?

    Thank you sir,

    Clem

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 10 years ago in reply to clem57

    Yes, my Arduino Yùn has a public and routable IP address. But on the internet I haven't found an example of this and in particular those instructions which substitute this:

     

       // Listen for incoming connection only from localhost

       // (no one from the external network could connect)

       server.listenOnLocalhost();

       server.begin();

     

    As you can see, normally rest calls come from localhost and not from an external PC. Thanks everyone for your help!

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Reply
  • Former Member
    0 Former Member over 10 years ago in reply to clem57

    Yes, my Arduino Yùn has a public and routable IP address. But on the internet I haven't found an example of this and in particular those instructions which substitute this:

     

       // Listen for incoming connection only from localhost

       // (no one from the external network could connect)

       server.listenOnLocalhost();

       server.begin();

     

    As you can see, normally rest calls come from localhost and not from an external PC. Thanks everyone for your help!

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Children
  • ravi_butani
    0 ravi_butani over 10 years ago in reply to Former Member

    may be this link will be useful to you..

    My IoT Holiday Lightings...#4: Final Build 1

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
  • Former Member
    0 Former Member over 10 years ago in reply to ravi_butani

    Useful to read, even if there is no sketck inside. Just the desktop app in java. I'm looking for a library or a series of instruction (if they exist) to allow external connection to Yùn. I've tryied to connect from my smartphone browser to the public ip, whose dinamic and temporary IP has been allowed by the firewall of the network in which there is the Yùn with a public and static IP address. Still, the connection fails, maybe because of the sketch that is uploaded on the yùn that i the one used to give restful commands INTO the LAN. The code is this:

     

    // Possible commands are listed here:
    //
    // "digital/13"     -> digitalRead(13)
    // "digital/13/1"   -> digitalWrite(13, HIGH)
    // "analog/2/123"   -> analogWrite(2, 123)
    // "analog/2"       -> analogRead(2)
    // "mode/13/input"  -> pinMode(13, INPUT)
    // "mode/13/output" -> pinMode(13, OUTPUT)
    
    
    #include <Bridge.h>
    #include <YunServer.h>
    #include <YunClient.h>
    
    
    // Listen on default port 5555, the webserver on the Yun
    // will forward there all the HTTP requests for us.
    YunServer server;
    
    
    void setup() {
      Serial.begin(9600);
    
    
      // Bridge startup
      pinMode(13,OUTPUT);
      digitalWrite(13, LOW);
      Bridge.begin();
      digitalWrite(13, HIGH);
    
    
      // Listen for incoming connection only from localhost
      // (no one from the external network could connect)
      server.listenOnLocalhost();
      server.begin();
    }
    
    
    void loop() {
      // Get clients coming from server
      YunClient client = server.accept();
    
    
      // There is a new client?
      if (client) {
        // Process request
        process(client);
    
    
        // Close connection and free resources.
        client.stop();
      }
    
    
      delay(50); // Poll every 50ms
    }
    
    
    void process(YunClient client) {
      // read the command
      String command = client.readStringUntil('/');
    
    
      // is "digital" command?
      if (command == "digital") {
        digitalCommand(client);
      }
    
    
      // is "analog" command?
      if (command == "analog") {
        analogCommand(client);
      }
    
    
      // is "mode" command?
      if (command == "mode") {
        modeCommand(client);
      }
    }
    
    
    void digitalCommand(YunClient client) {
      int pin, value;
    
    
      // Read pin number
      pin = client.parseInt();
    
    
      // If the next character is a '/' it means we have an URL
      // with a value like: "/digital/13/1"
      if (client.read() == '/') {
        value = client.parseInt();
        digitalWrite(pin, value);
      } 
      else {
        value = digitalRead(pin);
      }
    
    
      // Send feedback to client
      client.print(F("Pin D"));
      client.print(pin);
      client.print(F(" set to "));
      client.println(value);
    
    
      // Update datastore key with the current pin value
      String key = "D";
      key += pin;
      Bridge.put(key, String(value));
    }
    
    
    void analogCommand(YunClient client) {
      int pin, value;
    
    
      // Read pin number
      pin = client.parseInt();
    
    
      // If the next character is a '/' it means we have an URL
      // with a value like: "/analog/5/120"
      if (client.read() == '/') {
        // Read value and execute command
        value = client.parseInt();
        analogWrite(pin, value);
    
    
        // Send feedback to client
        client.print(F("Pin D"));
        client.print(pin);
        client.print(F(" set to analog "));
        client.println(value);
    
    
        // Update datastore key with the current pin value
        String key = "D";
        key += pin;
        Bridge.put(key, String(value));
      }
      else {
        // Read analog pin
        value = analogRead(pin);
    
    
        // Send feedback to client
        client.print(F("Pin A"));
        client.print(pin);
        client.print(F(" reads analog "));
        client.println(value);
    
    
        // Update datastore key with the current pin value
        String key = "A";
        key += pin;
        Bridge.put(key, String(value));
      }
    }
    
    
    void modeCommand(YunClient client) {
      int pin;
    
    
      // Read pin number
      pin = client.parseInt();
    
    
      // If the next character is not a '/' we have a malformed URL
      if (client.read() != '/') {
        client.println(F("error"));
        return;
      }
    
    
      String mode = client.readStringUntil('\r');
    
    
      if (mode == "input") {
        pinMode(pin, INPUT);
        // Send feedback to client
        client.print(F("Pin D"));
        client.print(pin);
        client.print(F(" configured as INPUT!"));
        return;
      }
    
    
      if (mode == "output") {
        pinMode(pin, OUTPUT);
        // Send feedback to client
        client.print(F("Pin D"));
        client.print(pin);
        client.print(F(" configured as OUTPUT!"));
        return;
      }
    
    
      client.print(F("error: invalid mode "));
      client.print(mode);
    }

     

    The limitation of this code is that it listen only from localhost and not from external servers as you can see from the instruction below:

               server.listenOnLocalhost();

    I've tryed:

               server.listen();

    but it gives error and doesn't allow me to compile the code.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • neilk
    0 neilk over 10 years ago in reply to Former Member

    alexmawashi Hi Alessandro

     

    I am confused by you having a Yun with a public IP address sitting on your private LAN. I don't know how that can work ??

     

    I would have thought that your Yun should have an address compatible with your private LAN and you should be exposing the Yun address through your firewall as

    clem57 says

    Or you have to use IP forwarding/NAT to a valid internet address...

    You will need to register (for free) with an organisation like https://www.noip.com/ their website is very helpful.

     

    Although I've never used a Yun, I have accessed a Uno acting as a server on my LAN, remotely, over the Internet from a smartphone.

     

    Hope this helps

     

    Neil

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube