Germany
Offline
Full Member
Karma: 0
Posts: 184
|
 |
« on: February 02, 2013, 09:53:18 am » |
Hello,
to reach my Arduino webserver in the www without knowing my IP address, I used a dyndns service (no-ip in my case) and I know that my ISP will assign my a new IP regularly when I switch off and then on my router again (reset) because then I reconnect. My question is: Does my ISP also assign me a new IP if I always let my router on? Then I would not need to update my IP with the so called DUC (dynamic update client) tool.
Thank you
|
|
|
|
|
Logged
|
using Arduino Uno Rev 3
|
|
|
|
Seattle, WA USA
Offline
Brattain Member
Karma: 316
Posts: 35532
Seattle, WA USA
|
 |
« Reply #1 on: February 02, 2013, 10:04:41 am » |
Does my ISP also assign me a new IP if I always let my router on? Wouldn't this be better answered by your ISP? Generally, though, the answer is yes. I never turn my router off, and it gets a new IP address about once a week.
|
|
|
|
|
Logged
|
|
|
|
|
Germany
Offline
Full Member
Karma: 0
Posts: 184
|
 |
« Reply #2 on: February 02, 2013, 10:51:34 am » |
Ok, thank you. I will monitor the behaviour as from now. Maybe I have some chanches making the arduino ethernet (as a client ) doing the request to update the new ip. If someone is interested in this, too, there is an API http://www.noip.com/integrate/requestCan the Ethernet be Client and Server on the same time? Will I first have to stop the server then start the client then do the update, then stop the client and restart the server (?)
|
|
|
|
« Last Edit: February 02, 2013, 11:01:25 am by karlok »
|
Logged
|
using Arduino Uno Rev 3
|
|
|
|
Seattle, WA USA
Offline
Brattain Member
Karma: 316
Posts: 35532
Seattle, WA USA
|
 |
« Reply #3 on: February 02, 2013, 11:08:29 am » |
Can the Ethernet be Client and Server on the same time? Yes. Will I first have to stop the server then start the client then do the update, then stop the client and restart the server (?) No.
|
|
|
|
|
Logged
|
|
|
|
|
Germany
Offline
Full Member
Karma: 0
Posts: 184
|
 |
« Reply #4 on: February 02, 2013, 11:34:25 am » |
Ok, thanks. Now I am trying to use the API described here http://www.noip.com/integrate/request// NO-IP, Dynamic Update Client, 02.FEB.13
#include <SPI.h> #include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; char server[] = "dynupdate.no-ip.com";
EthernetClient client;
void setup() { Serial.begin(9600);
Serial.println("[NOIP-DUC]\n"); Serial.println("Getting IP address from DHCP ...");
if (Ethernet.begin(mac) == 0) { Serial.println("Failed to configure Ethernet using DHCP !"); while (1) ; }
Serial.print("My IP address: "); Serial.println(Ethernet.localIP()); Serial.println();
Serial.print("Connecting to "); Serial.print(server); Serial.println(" ..."); client.connect(server, 80); // checking for answer? Serial.println("OK. Sending request...\n"); client.println("GET /nic/update?hostname=mytest.testdomain.com&myip=1.2.3.4 HTTP/1.0"); client.println("Host: dynupdate.no-ip.com"); client.println("Authorization: Basic base64-encoded-auth-string"); client.println("User-Agent: Bobs Update Client WindowsXP/1.2 bob@somedomain.com"); Serial.println("ready?!"); }
void loop() { if (client.available()) { char c = client.read(); Serial.print(c); }
if (Serial.available()) { char c = Serial.read(); client.print(c); }
if (!client.connected()) { Serial.println(); Serial.println("Disconnecting."); client.stop(); while (1); } }
Why don't I get any answer? It just disconnects after ~5 seconds.
|
|
|
|
|
Logged
|
using Arduino Uno Rev 3
|
|
|
|
Seattle, WA USA
Offline
Brattain Member
Karma: 316
Posts: 35532
Seattle, WA USA
|
 |
« Reply #5 on: February 02, 2013, 11:43:54 am » |
You need to show all your serial output.
Your domain isn't mytest.testdomain.com, is it?
Your current IP isn't 1.2.3.4, is it?
Your Base64 encoded authorization string isn't base64-encoded-auth-string, is it?
|
|
|
|
|
Logged
|
|
|
|
|
Germany
Offline
Full Member
Karma: 0
Posts: 184
|
 |
« Reply #6 on: February 02, 2013, 11:50:07 am » |
After having done more debugging, I realized I cannot even connect to dynupdate.no-ip.comI use this to check: if (client.connect(server, 80)) { Serial.println("Connected."); while (client.connected()) { while (client.available()) { char c = client.read(); Serial.print(c); } } client.stop(); } else Serial.println("Error connecting!");
My code: // NO-IP, Dynamic Update Client, 02.FEB.13
#include <SPI.h> #include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; char server[] = "dynupdate.no-ip.com";
EthernetClient client;
void setup() { Serial.begin(9600);
Serial.println("[NOIP-DUC]\n"); Serial.println("Getting IP address from DHCP ...");
if (Ethernet.begin(mac) == 0) { Serial.println("Failed to configure Ethernet using DHCP !"); while (1) ; }
//Give some time to initialize: delay(2000);
Serial.print("My IP address: "); Serial.println(Ethernet.localIP()); Serial.println();
Serial.print("Connecting to "); Serial.print(server); Serial.println(" ...");
if (client.connect(server, 80)) { Serial.println("Connected."); while (client.connected()) { while (client.available()) { char c = client.read(); Serial.print(c); } } client.stop(); } else Serial.println("Error connecting!"); }
void loop() { if (client.available()) // this cannot be reached by now { char c = client.read(); Serial.print(c); }
if (Serial.available()) { char c = Serial.read(); client.print(c); }
if (!client.connected()) { Serial.println(); Serial.println("Disconnecting."); client.stop(); while (1) ; } }
Serial output [NOIP-DUC]
Getting IP address from DHCP ... My IP address: 192.168.2.124
Connecting to dynupdate.no-ip.com ... Error connecting!
Disconnecting.
|
|
|
|
|
Logged
|
using Arduino Uno Rev 3
|
|
|
|
Seattle, WA USA
Offline
Brattain Member
Karma: 316
Posts: 35532
Seattle, WA USA
|
 |
« Reply #7 on: February 02, 2013, 11:51:30 am » |
Can you connect to other servers?
|
|
|
|
|
Logged
|
|
|
|
|
Germany
Offline
Full Member
Karma: 0
Posts: 184
|
 |
« Reply #8 on: February 02, 2013, 11:59:15 am » |
Yes, and I tried using http prefix char server[] = "http://dynupdate.no-ip.com"; and then the output is [NOIP-DUC]
Getting IP address from DHCP ... My IP address: 192.168.2.124
Connecting to http://dynupdate.no-ip.com ... Connected.
Disconnecting.
|
|
|
|
« Last Edit: February 02, 2013, 12:05:05 pm by karlok »
|
Logged
|
using Arduino Uno Rev 3
|
|
|
|
Germany
Offline
Full Member
Karma: 0
Posts: 184
|
 |
« Reply #9 on: February 02, 2013, 12:43:43 pm » |
The prefix http:// should be omitted. And I found on this forums, the issue has been already discussed and here is the solution http://arduino.cc/forum/index.php/topic,95456.msg720162.html#msg720162My problem was that I did not always use the same MAC address so that my router had too many ones to save and it is restricted to grant internet access to only the first 5 ones connected or kind of similiar, so I had to flush this and it worked again.
|
|
|
|
« Last Edit: February 02, 2013, 12:55:01 pm by karlok »
|
Logged
|
using Arduino Uno Rev 3
|
|
|
|
0
Online
Tesla Member
Karma: 50
Posts: 6553
Arduino rocks
|
 |
« Reply #10 on: February 02, 2013, 01:46:52 pm » |
Make sure you use your no-ip email address as the no-ip username and the domain you are using (yourhost.no-ip.org is in the example, but my account is .com instead of .org). I tested the code in the posted link with my changes and got the expected response for my no-ip account.
|
|
|
|
|
Logged
|
|
|
|
|
Germany
Offline
Full Member
Karma: 0
Posts: 184
|
 |
« Reply #11 on: February 02, 2013, 02:05:47 pm » |
Now it works! ( my account was .org ) Both using my email address and my user name worked (as the no-ip username) The answer is "nochg <ipaddr>"
|
|
|
|
|
Logged
|
using Arduino Uno Rev 3
|
|
|
|
Germany
Offline
Full Member
Karma: 0
Posts: 184
|
 |
« Reply #12 on: February 02, 2013, 02:50:49 pm » |
I also implemented parsing the result, i.e. getting the Date and the Message: String buf = ""; String msg = ""; boolean tak = false; while (client.connected()) { while (client.available()) { char c = client.read(); //Serial.print(c); // verbose? buf += c; if (tak) msg = buf; if (c == 10) { buf.trim(); if (buf.indexOf("Date:") == 0) Serial.println("DATE = " + buf); if (buf == "") //empty line -> message tak = true; buf = ""; } } } client.stop(); msg.trim(); Serial.println("MESSAGE = " + msg); Serial.println("Disconnecting.");
|
|
|
|
|
Logged
|
using Arduino Uno Rev 3
|
|
|
|
|