With this project you can monitor your energy usage and create real-time stats.
Needed
Code
-
/*
-
*
-
Circuit:
-
* Ethernet shield attached to pins 10, 11, 12, 13
-
* input light sensor to analog pin 0
-
*
-
-
*/
-
-
#include "meterkast.h"
-
#include <SPI.h>
-
#include <Ethernet.h>
-
-
-
-
// Enter a MAC address and IP address for your controller below.
-
// The IP address will be dependent on your local network:
-
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
-
byte ip[] = { 192,168,0,177 };
-
byte gw[] = {192,168,0,254};
-
byte subnet[] = {255,255,255,0};
-
byte server[] = { 192,168,0,254 }; // server
-
-
// Initialize the Ethernet client library
-
// with the IP address and port of the server
-
// that you want to connect to (port 80 is default for HTTP):
-
Client client(server, 80);
-
-
int waitSecondsForSend = 60; //1 minute
-
int cycleSeconds=0;
-
int cycleWait=5;
-
int lightThresshold=600; //minimaal analoge waarde voor licht
-
int lightLowThressholdCounter=1; // vanaf halve seconde flits
-
int lightHighThressholdCounter=3; // tot 1 sec = flits
-
int cycleCounter=0;
-
int pulseCounter=0;
-
int lightCounter=0;//aantal cycles met licht
-
boolean lightActive =false;
-
-
void setup() {
-
-
// start the serial library:
-
Serial.begin(9600);
-
-
// start the Ethernet connection:
-
Ethernet.begin(mac, ip, gw, subnet);
-
// give the Ethernet shield a second to initialize:
-
delay(1000);
-
if (client.connect()) {
-
Serial.println("ethernet connected");
-
} else {
-
// if you didn’t get a connection to the server:
-
Serial.println("ethernet connection failed");
-
}
-
-
-
// if you get a connection, report back via serial:
-
-
}
-
-
void loop() {
-
int sensorValue = analogRead(A0);
-
-
if (sensorValue > lightThresshold){
-
lightCounter++;
-
} else {
-
if(lightCounter > 5 && lightCounter < 10 ){
-
Serial.print("light pulse gevonden ");
-
Serial.println (lightCounter);
-
pulseCounter++;
-
-
if (cycleSeconds >= waitSecondsForSend){
-
if(!client.connected()){
-
client.stop();
-
if (client.connect()) {
-
Serial.println("ethernet connected");
-
} else {
-
// if you didn’t get a connection to the server:
-
Serial.println("ethernet connection failed");
-
}
-
}
-
if (client.connected()) {
-
Serial.print ("Verzenden van data, aantal pulsen: ");
-
Serial.println (pulseCounter);
-
// Make a HTTP request:
-
client.print("GET /arduino/meterkast.php?pulse=");
-
client.print(pulseCounter);
-
client.println(" HTTP/1.0");
-
client.println();
-
} else {
-
Serial.print ("Niet Verzendon van data, aantal pulsen: ");
-
Serial.println (pulseCounter);
-
-
}
-
//altijd resetten
-
cycleSeconds=0;
-
pulseCounter=0;
-
}
-
-
}
-
-
lightCounter=0;
-
lightActive=false;
-
}
-
-
//clear data
-
if (client.available()) {
-
char c = client.read();
-
//Serial.print(c);
-
}
-
-
//debug
-
//Serial.println(sensorValue, DEC);
-
-
//counting
-
cycleCounter = cycleCounter+cycleWait;
-
if (cycleCounter == 1000){
-
cycleSeconds++;
-
cycleCounter=0;
-
-
//debug
-
//if(cycleSeconds==10){
-
//lightCounter=8;
-
//pulseCounter=5;
-
//}
-
//Serial.println (cycleSeconds);
-
}
-
-
//wait a little bit
-
delay(cycleWait);
-
-
-
}
