Show Posts
Pages: [1]
1  Using Arduino / Project Guidance / Re: Read values from webpage to control relay (Ethernet Shield) on: October 06, 2012, 02:32:56 am
Hi imrobc

As far as i know you can call data in the SD card at any time however I have never done this. But you will surely find something similar in the forum you can alter to suit your needs. What do mean by interface your website with your arduino ? what do u plan to do?
2  Using Arduino / Project Guidance / Re: Read values from webpage to control relay (Ethernet Shield) on: April 28, 2012, 01:42:49 pm
thanks for the reply

 
Quote
The below code refreshes the current page and doesn't have te 204 code included.

which part would be the 204 code, that I have to eliminate ?
3  Using Arduino / Project Guidance / Re: Read values from webpage to control relay (Ethernet Shield) on: April 28, 2012, 10:19:21 am
I finally got some time to continue this project.

Picking up where I left off, the following code is working fine. With one exception when I click the on or off button using google chrome as the browser it only blinks off the led and the turns the led back on. So if anyone knows why this is happening I would be happy to learn about it, but for now I will use explorer and safari as browser when communicating with arduino.

Also if anyone know about a good tutorial on ethernet syntax would be much appreciated.

Code:
//George-Xrik 31-03-12, updated
//zoomkat 12-08-11, combined client and server
//simple button GET with iframe code
//for use with IDE 1.0
//open serial monitor and send an g to test client and
//see what the arduino client/server receives
//web page buttons make pin 4 high/low
//use the \ slash to escape the " in the html
//address will look like http://192.168.1.177 or http://88.203.15.76 when submited
//for use with W5100 based ethernet shields

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

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

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

void setup(){

  pinMode(8, OUTPUT); //pin selected to control
  Ethernet.begin(mac, ip, subnet, gateway);
  server.begin();
  Serial.begin(9600);
  Serial.println("server/client 1.0 test 31/03/12"); // keep track of what is loaded
  Serial.println("Send g in serial monitor to test client"); // what to do to test client
}

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

  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

            //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 1.0 button</H1>");
            client.println("<H1>George's simple Arduino 1.0 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(8, HIGH);    // set pin 4 high
            Serial.println("Led On");
          }
          if(readString.indexOf("off") >0)//checks for off
          {
            digitalWrite(8, 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(myserver, 80)) {
    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();

}


the following is the serial communication
server/client 1.0 test 31/03/12
Send g in serial monitor to test client
connected
HTTP/1.1 200 OK
Date: Sat, 28 Apr 2012 15:03:54 GMT
Server: Apache
Last-Modified: Sat, 13 Nov 2010 16:31:40 GMT
Accept-Ranges: bytes
Content-Length: 51
Connection: close
Content-Type: text/plain; charset=UTF-8

Woohoo! Your arduino ethernet client works!
zoomkat
disconnecting.
==================

GET /?on HTTP/1.1                 >>> from Safari (iphone)

Led On                                  >>> from Safari (iphone)
GET /?off HTTP/1.1                >>> from Safari (iphone)

Led Off                                 >>> from Safari (iphone)
GET /?on HTTP/1.1                 >>> from explorer

Led On                                  >>> from explorer
GET /?off HTTP/1.1                >>> from explorer

Led Off                                 >>> from explorer
GET /?on HTTP/1.1                 >>> from chrome

Led On                                 >>> from chrome
GET /favicon.ico HTTP/1.1     >>> from chrome

Led On                                >>> from chrome
GET /?off HTTP/1.1              >>> from chrome

Led Off                               >>> from chrome
GET /favicon.ico HTTP/1.1     >>> from chrome

Led On                                >>> from chrome


What should be noted is that i only click on and than off once on each browser, chrome acts strangely and turns the led back on.
4  Using Arduino / Project Guidance / Re: Read values from webpage to control relay (Ethernet Shield) on: April 28, 2012, 10:07:17 am
I finally got some time to continue this project.

Picking up where I left off, the following code is working fine. With one exception when I click the on or off button using google chrome as the browser it only blinks off the led and the turns the led back on. So if anyone knows why this is happening I would be happy to learn about it, but for now I will use explorer and safari as browser when communicating with arduino.

Also if anyone know about a good tutorial on ethernet syntax would be much appreciated.

Code:
//George-Xrik 31-03-12, updated
//zoomkat 12-08-11, combined client and server
//simple button GET with iframe code
//for use with IDE 1.0
//open serial monitor and send an g to test client and
//see what the arduino client/server receives
//web page buttons make pin 4 high/low
//use the \ slash to escape the " in the html
//address will look like http://192.168.1.177 or http://88.203.15.76 when submited
//for use with W5100 based ethernet shields

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

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

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

void setup(){

  pinMode(8, OUTPUT); //pin selected to control
  Ethernet.begin(mac, ip, subnet, gateway);
  server.begin();
  Serial.begin(9600);
  Serial.println("server/client 1.0 test 31/03/12"); // keep track of what is loaded
  Serial.println("Send g in serial monitor to test client"); // what to do to test client
}

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

  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

            //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 1.0 button</H1>");
            client.println("<H1>George's simple Arduino 1.0 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(8, HIGH);    // set pin 4 high
            Serial.println("Led On");
          }
          if(readString.indexOf("off") >0)//checks for off
          {
            digitalWrite(8, 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(myserver, 80)) {
    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();

}


the following is the serial communication
server/client 1.0 test 31/03/12
Send g in serial monitor to test client
connected
HTTP/1.1 200 OK
Date: Sat, 28 Apr 2012 15:03:54 GMT
Server: Apache
Last-Modified: Sat, 13 Nov 2010 16:31:40 GMT
Accept-Ranges: bytes
Content-Length: 51
Connection: close
Content-Type: text/plain; charset=UTF-8

Woohoo! Your arduino ethernet client works!
zoomkat
disconnecting.
==================

GET /?on HTTP/1.1 >>> from Safari (iphone)

Led On
GET /?off HTTP/1.1

Led Off
GET /?on HTTP/1.1

Led On
GET /?off HTTP/1.1

Led Off
GET /?on HTTP/1.1

Led On
GET /favicon.ico HTTP/1.1

Led On
GET /?off HTTP/1.1

Led Off
GET /favicon.ico HTTP/1.1

Led On


5  Using Arduino / Project Guidance / Re: Read values from webpage to control relay (Ethernet Shield) on: April 04, 2012, 06:55:10 am
Quote
This is the client part of the code. It sends a request to a server for the arduino.txt file.

can you explain further the arduino.txt !

Quote
Does the target page have a RSS feed or does the website provide an API? Otherwise you need to look at scraping the value from the site/page

no neither an RSS feed nor an API, so will look into scrapping the values.
6  Using Arduino / Project Guidance / Re: Read values from webpage to control relay (Ethernet Shield) on: March 31, 2012, 06:08:04 am
@ PaulS
Quote
That site requires a password to access. What happens when you enter a password?

It directs you to a new page that gives a more detailed account of the Kwh production form a PV plant, i.e Current and Voltage measurement values are stored in this data base.

I am trying set up the ardunio to get this values and show them on the web page and also use them to actuate the relay.
7  Using Arduino / Project Guidance / Re: Read values from webpage to control relay (Ethernet Shield) on: March 31, 2012, 05:19:27 am
First of all thanks for the help.

I have managed to get the code zoomkat posted working, thanks again it worked fine with minor alterations of the ip in lan and server port [I have set the sever to 80].

I have some questions regarding the code:

Should the led (pin4) remain off(low) once the off button in the web page has been clicked?
....as it is only going off for a moment and back on, i.e one blink.

what is this part of the code doing?

Code:
//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();

Also this part of the code is confusing me,

Code:
void sendGET() //client function to send/receie GET request data.
{
  if (client.connect(myserver, 80)) {
    Serial.println("connected");
    client.println("GET /~shb/arduino.txt HTTP/1.0");
    client.println();

....I am assuming the
Code:
client.println("GET /~shb/arduino.txt HTTP/1.0")
; is calling something and this is returned and printed to the serial port as

Code:
HTTP/1.1 200 OK
Date: Sat, 31 Mar 2012 10:11:40 GMT
Server: Apache
Last-Modified: Sat, 13 Nov 2010 16:31:40 GMT
Accept-Ranges: bytes
Content-Length: 51
Connection: close
Content-Type: text/plain; charset=UTF-8

Woohoo! Your arduino ethernet client works!
zoomkat
disconnecting.
==================

is that correct ?
8  Using Arduino / Project Guidance / Re: Read values from webpage to control relay (Ethernet Shield) on: March 26, 2012, 12:07:38 pm
The web site is http://80.85.104.41/ its a sunny webbox, say I would like to get the total yield value.

Quote
Is the Arduino supposed to to get data mining in addition to serving up a page?

I have no idea, that`s why I am posting here to see if anyone has done it before or if it is even possible. If its not possible, I would have to settle for getting the values and activating the relay only (would still need help to do this).
9  Using Arduino / Project Guidance / Read values from webpage to control relay (Ethernet Shield) on: March 26, 2012, 07:18:09 am
Hi,

What I am trying to do is with arduino get values from a web site, and from the values close or open a relay (turn a digital pin high or low). While at the same time host a simple HTML page that displays the current position of the relay and the values I am reading from the website.

I am using an arduino mega (ATmega1280) board and an Ethernet shield.

I have managed to set up a simple HTML page that can be viewed on the local network and externally over internet, using the web server example. In other words I have set up the port forwarding for the arduino.

I need help or suggestions (even feasibility) on how to get values from a web site and displaying them on the html page hosted by the arduino.

Thanks
Pages: [1]