Pages: 1 [2] 3 4   Go Down
Author Topic: (Port forwarding done) now ipcam and enc28j60  (Read 5074 times)
0 Members and 1 Guest are viewing this topic.
Global Moderator
Offline Offline
Brattain Member
*****
Karma: 502
Posts: 19086
Lua rocks!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

with this change, i can control trough the lan, not over internet.   

OK, well through the internet, bring up the page in question in your web browser (the page that doesn't work). Now right-click and select "view page source" or whatever it is exactly. Copy that source and paste it here, inside code tags (select the text and hit the # button above the edit box in your browser).
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 42
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 
    <head>
        <link rel="stylesheet" type="text/css" href="ErrorPageTemplate.css" >
 
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Internet Explorer ne peut pas afficher cette page Web</title>
 
        <script src="errorPageStrings.js" language="javascript" type="text/javascript">
        </script>
        <script src="httpErrorPagesScripts.js" language="javascript" type="text/javascript">
        </script>
    </head>
 
    <body onLoad="javascript:initMoreInfo('infoBlockID');">
 
        <table width="730" cellpadding="0" cellspacing="0" border="0">
 
        <!-- Error title -->
            <tr>
                <td id="infoIconAlign" width="60" align="left" valign="top" rowspan="2">
                    <img src="noConnect.png" id="infoIcon" alt="Info icon" width="48" height="48">
                </td>
                <td id="mainTitleAlign" valign="middle" align="left" width="*">
                    <h1 id="mainTitle">Internet Explorer ne peut pas afficher cette page Web</h1>
                </td>
            </tr>
 
            <tr>
                <!-- This row is for HTTP status code, as well as the divider-->
                <td id="errorCodeAlign" class="errorCodeAndDivider" align="right">&nbsp;
                    <div class="divider"></div>
                </td>
            </tr>
 
        <!-- What you can do -->
            <tr>
                <td>
                    &nbsp;
                </td>
                <td id="whatToTryAlign" valign="top" align="left">
                    <h2 id="whatToTry">Essayez la chose suivante :</h2>
                </td>
            </tr>
 
        <!-- Check Connection -->
            <tr>
                <td >
                    &nbsp;
                </td>
                <td id="checkConnectionAlign" align="left" valign="middle">
                    <h4>
                        <table>
                            <tr>
                                <td valign="top">
                                </td>
                                <td valign="middle">
                                    <button onclick="javascript:diagnoseConnectionAndRefresh(); return false;" id="diagnose">Diagnostiquer les problèmes de connexion</button>
                                </td>
                            </tr>
                        </table>
                    </h4>
                </td>
            </tr>
 
 
        <!-- InfoBlock -->
            <tr>
                <td id="infoBlockAlign" align="right" valign="top">
                    &nbsp;
                </td>
                <td id="moreInformationAlign" align="left" valign="middle">
                    <h4>
                      <table>
                          <tr>
                              <td valign="top">
                                  <a href="#" onclick="javascript:expandCollapse('infoBlockID', true); return false;"><img src="down.png" id="infoBlockIDImage" border="0" class="actionIcon" alt="Informations"></a>
                              </td>
                              <td valign="top">
                                  <span id="moreInfoContainer"></span>
                                  <noscript><ID id="moreInformation">Informations</ID></noscript>
                              </td>
                          </tr>
                      </table>
                    </h4>
                    <div id="infoBlockID" class="infoBlock" style="display: none">
                        <p>
                            <ID id="errorExpl1">Ce problème peut avoir différentes causes, notamment :</ID>
                            <ul>
                                <li id="errorExpl2">La connexion Internet a été perdue.</li>
                                <li id="errorExpl3">Le site Web est temporairement indisponible.</li>
                                <li id="errorExpl4">Le serveur de noms de domaine (DNS) est inaccessible.</li>
                                <li id="errorExpl5">Le serveur de noms de domaine (DNS) ne contient pas d’entrée pour le domaine du site Web.</li>
                                <li id="errorExpl7">Il se peut que l’adresse contienne une erreur de frappe.</li>
                                <li id="errorExpl6">S’il s’agit d’une adresse HTTPS (sécurisée), cliquez sur Outils, sur Options Internet, puis sur Avancées et vérifiez que les protocoles SSL et TLS sont activés dans la section relative à la sécurité.</li>
                            </ul>
                        </p>
                        <p id="offlineUsers"><b>Pour les utilisateurs hors connexion</b></p>                                     
                        <p id="viewSubscribedFeeds1">
                           Vous pouvez encore afficher les flux auxquels vous êtes abonné et certaines pages Web visitées.<br/>
                           Pour afficher les flux auxquels vous êtes abonné
                           <ol>
                               <li id="viewSubscribedFeeds2">Cliquez sur le bouton Centre des favoris <img src="favcenter.png" border="0">, cliquez sur Flux, puis cliquez sur le flux que vous souhaitez afficher.</li>
                           </ol>
                        </p>
                        <p id="viewRecentWebpages1">Pour afficher les dernières pages Web visitées (peut ne pas fonctionner pour toutes les pages)
                           <ol>
                              <li id="viewRecentWebpages2">Cliquez sur Outils <img src="tools.png" border="0">, puis sur Travailler hors connexion.</li>
                              <li id="viewRecentWebpages3">Cliquez sur le bouton Centre des favoris <img src="favcenter.png" border="0">, cliquez sur Historique, puis cliquez sur la page que vous souhaitez afficher.</li>
                           </ol>
                        </p>
                    </div>
                </td>
            </tr>
 
        </table>
 
    </body>
</html>
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 42
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

In "code" tags, not "quote" tags thanks. It makes it (almost) impossible to read. Edit those posts and change [ quote ] to [ code ] (leaving out the spaces).


sry my bad
Logged

Global Moderator
Offline Offline
Brattain Member
*****
Karma: 502
Posts: 19086
Lua rocks!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

The HTML code you posted above doesn't look the slightest bit like what you are sending in the code:

Code:
plen=es.ES_fill_tcp_data_p(buf,0,PSTR("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n"));
  plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<left>Arduino web server test</LEFT> "));
  plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<body bgcolor=\"#000000\"> "));
  plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<font color=\"#FFFFFF\"><FONT FACE=\"arial\"><RIGHT><I><FONT SIZE=1>BTCAD.<U> V1.0 beta</U></h1></FONT></FONT></I> </RIGHT> "));
  plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<FONT SIZE=3> <font color=\"#00FF00\"></h1><a href=\"http://192.168.1.1\">192.168.1.1<a></FONT></FONT>"));

Where is "<left>Arduino web server test</LEFT>" for example?

I want you to post the HTML code (the page) that your sketch generates.

Anyway, these lines:

Code:
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<br><form METHOD=get action=\""));
  plen=es.ES_fill_tcp_data(buf,plen,baseurl);
  plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("\">"));

... are going to generate a "send" to the address in baseurl.

baseurl is:

Code:
static char baseurl[]="http://192.168.1.15/";

That address is a private address, not routable, and thus this will certainly fail.
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 42
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Make a try



http://guillaume.redirectme.net:/         that it is my router 

http://guillaume.redirectme.net:85/      that it is suppose to be my Arduino web server


i will test sometthing
Logged

Global Moderator
Offline Offline
Brattain Member
*****
Karma: 502
Posts: 19086
Lua rocks!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Er, right. Then isn't baseurl supposed to be "http://guillaume.redirectme.net:85/"?
Logged


0
Offline Offline
Tesla Member
***
Karma: 145
Posts: 9696
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Below is a test page I use with my dynamic ip service for outside connections.

Code:
//zoomkat 9-20-11
//form GET code
//for use with IDE 0021
//open serial monitor to see what the arduino receives
//use the \ slash to escape the " in the html
//address will look like http://zoomkat.no-ip.com:84/ when submited
//put http://zoomkat.no-ip.com:84 in your brouser
//for use with W5100 based ethernet shields

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

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

String readString;

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

void setup(){

  pinMode(4, OUTPUT); //pin selected to control
  //start Ethernet
  Ethernet.begin(mac, ip, gateway, subnet);
  server.begin();

  //enable serial data print
  Serial.begin(9600);
  Serial.println("servertest1"); // so I can keep track of what is loaded
}

void loop(){
  // Create a client connection
  Client 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);

          //now output HTML data header

          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();

          client.println("<HTML>");
          client.println("<HEAD>");
          client.println("<TITLE>Arduino GET test page</TITLE>");
          client.println("</HEAD>");
          client.println("<BODY>");

          client.println("<H1>HTML form GET example</H1>");

          client.println("<FORM ACTION=\"http://zoomkat.no-ip.com:84\" method=get >");

          client.println("Pin 4 \"on\" or \"off\": <INPUT TYPE=TEXT NAME=\"LED\" VALUE=\"\" SIZE=\"25\" MAXLENGTH=\"50\"><BR>");

          client.println("<INPUT TYPE=SUBMIT NAME=\"submit\" VALUE=\"Change Pin 4!\">");

          client.println("</FORM>");

          client.println("<BR>");

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

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

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

        }
      }
    }
  }
}

Logged

Consider the daffodil. And while you're doing that, I'll be over here, looking through your stuff.   smiley-cool

0
Offline Offline
Tesla Member
***
Karma: 145
Posts: 9696
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

one more chunk of test cod. Note the use of http://zoomkat.no-ip.com:84/ as the internet URL to get the page, and the use of the shortened URL for the buttons (href=\"/?on\") as the button URL is the same server as the page server.

Code:
//zoomkat 11-25-11
//simple button GET with iframe code
//for use with IDE 0021
//open serial monitor to see what the arduino receives
//use the \ slash to escape the " in the html
//address will look like http://192.168.1.102:84/ when submited
//or http://zoomkat.no-ip.com:84/ from the internet
//for use with W5100 based ethernet shields

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

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 1, 102 }; // ip in lan
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
byte myserver[] = { 208, 104, 2, 86 }; // zoomkat web page
Server server(84); //server port
Client client(myserver, 80);
String readString;

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

void setup(){

  pinMode(4, OUTPUT); //pin selected to control
  Ethernet.begin(mac, ip, gateway, subnet);
  server.begin();
  Serial.begin(9600);
  Serial.println("server/client test 11/25/11"); // so I can keep track of what is loaded
}

void loop(){
  // check for serial input
  if (Serial.available() > 0)
  {
    byte inChar;
    inChar = Serial.read();
    if(inChar == 'e')
    {
      sendGET(); // call sendGET function
    }
  } 

  Client 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

            //now output HTML data header
          if(readString.indexOf('?') >=0) { //don't send new page
            client.println("HTTP/1.1 204 Zoomkat");
            client.println();
            client.println(); 
          }
          else {
            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("<TITLE>Arduino GET test page</TITLE>");
            client.println("</HEAD>");
            client.println("<BODY>");

            client.println("<H1>Zoomkat's simple Arduino button</H1>");

            client.println("<a href=\"/?on\" target=\"inlineframe\">ON</a>");
            client.println("<a href=\"/?off\" target=\"inlineframe\">OFF</a>");

            //client.println("<IFRAME name=inlineframe src=\"res://D:/WINDOWS/dnserror.htm\" width=1 height=1\">");
            client.println("<IFRAME name=inlineframe style=\"display:none\" >");         
            client.println("</IFRAME>");

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

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

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

        }
      }
    }
  }
}

//////////////////////////
void sendGET() //client function to send/receie GET request data.
{
  if (client.connect()) {
    Serial.println("connected");
    client.println("GET /~shb/arduino.txt HTTP/1.0");
    client.println();
  }
  else {
    Serial.println("connection failed");
    Serial.println();
  }

  while(client.connected() && !client.available()) delay(1); //waits for data
  while (client.connected() || client.available()) { //connected or data available
    char c = client.read();
    Serial.print(c);
  }

  Serial.println();
  Serial.println("disconnecting.");
  Serial.println("==================");
  Serial.println();
  client.stop();

}
Logged

Consider the daffodil. And while you're doing that, I'll be over here, looking through your stuff.   smiley-cool

Offline Offline
God Member
*****
Karma: 4
Posts: 813
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Did you try using simply "/" as baseurl? All references are relative, so it should "just work" at that point.
Logged

Global Moderator
Offline Offline
Brattain Member
*****
Karma: 502
Posts: 19086
Lua rocks!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

one more chunk of test cod.

I clicked the on/off buttons but nothing appeared to happen. Did the cat get fed or something?
Logged


0
Offline Offline
Tesla Member
***
Karma: 145
Posts: 9696
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
I clicked the on/off buttons but nothing appeared to happen. Did the cat get fed or something?

The page doesn't update by design so I could possibly embed a video feed like the page below using a javascript frame refresh. If you actually accessed my arduino (laptop goes into sleep mode after 20 min, shutting off the USB power to the arduino), you made pin 4 go high/low.

http://web.comporium.net/~shb/wc2000-PT-script.htm
Logged

Consider the daffodil. And while you're doing that, I'll be over here, looking through your stuff.   smiley-cool

Offline Offline
Newbie
*
Karma: 0
Posts: 42
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi guys, i'm about 40 km from my house and i just tried http://guillaume.redirectme.net:85/ and it's work perfectly, and my 3 push boutons works. I don't understand why it's do not work at home through the internet but the lan.

This afternoon i will test another things at home

BTW thanks all for your reply and helps. I'm canadian and i speak french, i'm not realy good in english and you still help me. I realy appreciate!   I try to explain my problems to the French forum but they don't give help. I don't know why. Btw thanks all , i realy appreciate.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 42
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
I clicked the on/off buttons but nothing appeared to happen. Did the cat get fed or something?

The page doesn't update by design so I could possibly embed a video feed like the page below using a javascript frame refresh. If you actually accessed my arduino (laptop goes into sleep mode after 20 min, shutting off the USB power to the arduino), you made pin 4 go high/low.

http://web.comporium.net/~shb/wc2000-PT-script.htm



work perfectly. wow!


Is it possible to merge live video from ip camera to an arduino ''webserver'' I mean  put video of my ip camera to the webserver i creates ? Also, Is it possible control the camera with it own (pan/tilt) ?    Something like you do?


duemilanove + enc28j60 ( it's what i use)



thx
Logged

0
Offline Offline
Tesla Member
***
Karma: 145
Posts: 9696
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Is it possible to merge live video from ip camera to an arduino ''webserver'' I mean  put video of my ip camera to the webserver i creates ? Also, Is it possible control the camera with it own (pan/tilt) ?    Something like you do?

You probably could put the javascript code in a web page served by the arduino that would request the frames from the ip cam. The pan/tilt servo commands sould also put in the served page.
Logged

Consider the daffodil. And while you're doing that, I'll be over here, looking through your stuff.   smiley-cool

Offline Offline
Newbie
*
Karma: 0
Posts: 42
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

GREAT!

How should I proceed? I realy don't know how do javascrypt.

More questions:


-Is there a difference between duemilanove and uno board ?
-Wich board is better, enc28j60 or w5100 ?
-Is it possible to merge more that 1 ip camera with their pan/tilt?
-Is it possible to set timer for the 3 buttons I create? I mean #1 on/off with timer,  #2 on/off with timer #3   on/off with timer?   Timer should be time schedule


Thx !
Logged

Pages: 1 [2] 3 4   Go Up
Jump to: