Internet Temperature Station
A fun project that allows you to monitor the temperature from anywhere in your home.
Components and supplies
1
USB-A to B Cable
1
Arduino UNO
1
Arduino Ethernet Rev. 3
1
Breadboard (generic)
1
Jumper wires (generic)
1
Temperature Sensor
Apps and platforms
1
Arduino IDE
Project description
Code
The code
arduino
1#include <SPI.h> 2#include <Ethernet.h> 3#include <OneWire.h> 4#include <DallasTemperature.h> 5 6#define ONE_WIRE_BUS 2 7// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs) 8OneWire oneWire(ONE_WIRE_BUS); 9// Pass our oneWire reference to Dallas Temperature. 10DallasTemperature sensors(&oneWire); 11// MAC address for shield 12byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; 13EthernetServer server(80); // Using port 80 14 15void setup(void) { 16 sensors.begin(); 17 18 Ethernet.begin(mac); // Start the Ethernet shield 19 server.begin(); 20 Serial.begin(9600); // Start serial communication 21 Serial.println("Server address:"); // Print server address 22 // (Arduino shield) 23 Serial.println(Ethernet.localIP()); 24} 25void loop(void) { 26 sensors.begin(); 27 sensors.requestTemperatures(); // Send the command to get temperatures 28 EthernetClient client = server.available(); 29 if (client) { 30 boolean currentLineIsBlank = true; 31 String buffer = ""; 32 while (client.connected()) { 33 if (client.available()) { 34 char c = client.read(); // Read from the Ethernet shield 35 buffer += c; // Add character to string buffer 36 // Client sent request, now waiting for response 37 if (c == '\ 38' && currentLineIsBlank) { 39 sensors.requestTemperatures(); // Send the command to get temperatures 40 client.println("HTTP/1.1 200 OK"); // HTTP response 41 client.println("Content-Type: text/html"); 42 client.println(); // HTML code 43 client.print("<center><br><h1>Current room temperature: "); 44 client.print(sensors.getTempCByIndex(0)); 45 client.print(" C </h1><br><br><br><FORM>"); 46 client.print("<P> <INPUT type=\\"submit\\" name=\\"status\\" value=\\"Update temeprature\\">"); 47 client.print("</FORM></center>"); 48 49 break; 50 } 51 if (c == '\ 52') { 53 currentLineIsBlank = true; 54 buffer = ""; 55 } 56 else if (c == '\ ') { // Command from webpage 57 // Did the on button get pressed 58 if (buffer.indexOf("GET /?status=Update temprature") >= 0) 59 sensors.requestTemperatures(); // Send the command to get temperatures 60 61 } 62 else { 63 currentLineIsBlank = false; 64 } 65 } 66 } 67 client.stop(); // End server 68 } 69}
The code
arduino
1#include <SPI.h> 2#include <Ethernet.h> 3#include <OneWire.h> 4#include <DallasTemperature.h> 5 6#define ONE_WIRE_BUS 2 7// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs) 8OneWire oneWire(ONE_WIRE_BUS); 9// Pass our oneWire reference to Dallas Temperature. 10DallasTemperature sensors(&oneWire); 11// MAC address for shield 12byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; 13EthernetServer server(80); // Using port 80 14 15void setup(void) { 16 sensors.begin(); 17 18 Ethernet.begin(mac); // Start the Ethernet shield 19 server.begin(); 20 Serial.begin(9600); // Start serial communication 21 Serial.println("Server address:"); // Print server address 22 // (Arduino shield) 23 Serial.println(Ethernet.localIP()); 24} 25void loop(void) { 26 sensors.begin(); 27 sensors.requestTemperatures(); // Send the command to get temperatures 28 EthernetClient client = server.available(); 29 if (client) { 30 boolean currentLineIsBlank = true; 31 String buffer = ""; 32 while (client.connected()) { 33 if (client.available()) { 34 char c = client.read(); // Read from the Ethernet shield 35 buffer += c; // Add character to string buffer 36 // Client sent request, now waiting for response 37 if (c == '\n' && currentLineIsBlank) { 38 sensors.requestTemperatures(); // Send the command to get temperatures 39 client.println("HTTP/1.1 200 OK"); // HTTP response 40 client.println("Content-Type: text/html"); 41 client.println(); // HTML code 42 client.print("<center><br><h1>Current room temperature: "); 43 client.print(sensors.getTempCByIndex(0)); 44 client.print(" C </h1><br><br><br><FORM>"); 45 client.print("<P> <INPUT type=\\"submit\\" name=\\"status\\" value=\\"Update temeprature\\">"); 46 client.print("</FORM></center>"); 47 48 break; 49 } 50 if (c == '\n') { 51 currentLineIsBlank = true; 52 buffer = ""; 53 } 54 else if (c == '\r') { // Command from webpage 55 // Did the on button get pressed 56 if (buffer.indexOf("GET /?status=Update temprature") >= 0) 57 sensors.requestTemperatures(); // Send the command to get temperatures 58 59 } 60 else { 61 currentLineIsBlank = false; 62 } 63 } 64 } 65 client.stop(); // End server 66 } 67}
Downloadable files
The schematic
The schematic

Comments
Only logged in users can leave comments