I have been PM'ed for a modified full version of this code so I am posting it here for others to see. A heavily modified version of SurferTims webserver code and more a proof of concept.
#include <SPI.h>
#include <Ethernet.h>
// uncomment next line if using SD
// #include <SD.h>
// this must be unique
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xEC };
// change to your network settings
IPAddress ip( 192,168,1,33 );
IPAddress gateway( 192,168,1,1 );
IPAddress subnet( 255,255,255,0 );
int pointX, pointY;
int Temp1[] = {-20, -15, 0, 20, 15, 25, 35, 35, 35, 35};
int Humidity[] = {0, 0, 15, 35, 25, 30, 50, 40, 50, 100};
EthernetServer server(80);
void setup()
{
Serial.begin(9600);
// disable w5100 while setting up SD
// uncomment next 5 lines if using a microSD card
// pinMode(10,OUTPUT);
// digitalWrite(10,HIGH);
// Serial.print(F("Starting SD.."));
// if(!SD.begin(4)) Serial.println(F("failed"));
// else Serial.println(F("ok"));
//Ethernet.begin(mac, ip, gateway, gateway, subnet);
//digitalWrite(10,HIGH);
Serial.println("NIC Reset");
digitalWrite(2, LOW);
delay(1000);
digitalWrite(2, HIGH);
delay(2000);
Ethernet.begin(mac, ip, gateway, gateway, subnet);
delay(2000);
server.begin();
delay(1000);
Serial.println(F("Ready"));
Serial.println();
}
void loop()
{
EthernetClient client = server.available();
if(client) {
boolean currentLineIsBlank = true;
boolean currentLineIsGet = true;
int tCount = 0;
char tBuf[64];
int r,t;
char *pch;
Serial.print(F("Client request: "));
// this controls the timeout
int loopCount = 0;
while (client.connected())
{
while(client.available())
{
// if packet, reset loopCount
loopCount = 0;
char c = client.read();
if(currentLineIsGet && tCount < 63)
{
tBuf[tCount] = c;
tCount++;
tBuf[tCount] = 0;
}
if (c == '\n' && currentLineIsBlank)
{
// send a standard http response
Serial.println(tBuf);
Serial.print(F("POST data: "));
while(client.available()) Serial.write(client.read());
Serial.println();
Serial.println(F("Sending response"));
client.print(F("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n<html>"));
//client.print(F("<meta http-equiv=\"refresh\" content=\"5\">"));
client.print(F("<!DOCTYPE html>"));
client.print(F("<html>"));
client.print(F("<body>"));
client.print(F("<canvas id=\"myCanvas\" width=\"1200\" height=\"650\" style=\"border:1px solid #d3d3d3;\">"));
client.print(F("Your browser does not support the HTML5 canvas tag.</canvas>"));
client.print(F("<script>"));
client.print(F("var c=document.getElementById(\"myCanvas\");"));
client.print(F("var ctx=c.getContext(\"2d\");"));
client.print(F("ctx.rect(80,50,1000,500);"));
client.print(F("ctx.font=\"12px Arial\";"));
client.print(F("ctx.fillText(\"Degrees\",5,20);"));
client.print(F("ctx.fillText(\"35 -\",5,94);"));
client.print(F("ctx.fillText(\" 0 -\",5,444);"));
client.print(F("ctx.fillText(\"-20 -\",5,645);"));
client.print(F("ctx.fillText(\"Humidity\",1150,20);"));
client.print(F("ctx.fillText(\"100%\",1150,40);"));
client.print(F("ctx.fillText(\"50%\",1150,345);"));
client.print(F("ctx.fillText(\"0%\",1150,640);"));
//client.print(F("ctx.fillStyle=\"#FF0000\";"));
//client.print(F("ctx.fillRect(0,0,150,75);"));
//client.print(F("ctx.moveTo(0,0);"));
//Paint temperature line
pointX = 50;
pointY = 440 - (Temp1[0] * 10);
client.print(F("ctx.beginPath();"));
client.print(F("ctx.lineWidth=\"1\";"));
client.print(F("ctx.strokeStyle=\"red\";"));
client.print(F("ctx.moveTo("));
client.print(pointX);
client.print(",");
client.print(pointY);
client.print(F(");"));
for(int i = 1; i < 10; i++)
{
pointX = (i * 120) + 50;
pointY = 440 - (Temp1[i] * 10);
client.print(F("ctx.lineTo("));
client.print(pointX);
client.print(",");
client.print(pointY);
client.print(F(");"));
client.print(F("ctx.stroke();"));
}
//Paint humidity line
pointX = 50;
pointY = 640 - (Humidity[0] * 6);
Serial.println(pointY);
client.print(F("ctx.beginPath();"));
client.print(F("ctx.lineWidth=\"1\";"));
client.print(F("ctx.strokeStyle=\"blue\";"));
client.print(F("ctx.moveTo("));
client.print(pointX);
client.print(",");
client.print(pointY);
client.print(F(");"));
for(int i = 1; i < 10; i++)
{
pointX = (i * 120) + 50;
Serial.println(pointY);
pointY = 640 - (Humidity[i] * 6);
client.print(F("ctx.lineTo("));
client.print(pointX);
client.print(",");
client.print(pointY);
client.print(F(");"));
client.print(F("ctx.stroke();"));
}
client.print(F("</script>"));
client.print(F("</body>"));
client.print(F("</html>"));
client.stop();
}
else if (c == '\n') {
currentLineIsBlank = true;
currentLineIsGet = false;
}
else if (c != '\r') {
currentLineIsBlank = false;
}
}
loopCount++;
// if 10000ms has passed since last packet
if(loopCount > 10000) {
// close connection
client.stop();
Serial.println("\r\nTimeout");
}
// delay 1ms for timeout timing
delay(1);
}
Serial.println(F("done"));
}
}