You are on page 1of 4

/*

testni arduino server


*/

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

int led = 13; // the pin that the LED is atteched to


int sensor = 2; // the pin that the sensor is atteched to
int state = LOW; // by default, no motion detected
int val = 0; // variable to store the sensor status (value)

// this must be unique


byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x59, 0x67 };
// change network settings to yours
IPAddress ip( 192, 168, 0, 176 );
IPAddress gateway( 192, 168, 0, 1 );
IPAddress subnet( 255, 255, 255, 0 );

char mailServer[] = "smtpcorp.com";


int port = 2525;

EthernetClient mailClient;

void setup() {
pinMode(4,OUTPUT);
digitalWrite(4,HIGH);
Ethernet.begin(mac, ip, gateway, gateway, subnet);
delay(2000);

pinMode(led, OUTPUT); // initalize LED as an output


pinMode(sensor, INPUT); // initialize sensor as an input
Serial.begin(9600); // initialize serial
}

void loop(){
val = digitalRead(sensor); // read sensor value
if (val == HIGH) { // check if the sensor is HIGH
digitalWrite(led, HIGH); // turn LED ON
if(sendEmail()) Serial.println(F("Email sent"));
else Serial.println(F("Email failed"));
delay(100); // delay 100 milliseconds

if (state == LOW) {
Serial.println("Motion detected!");
state = HIGH; // update variable state to HIGH
}
}
else {
digitalWrite(led, LOW); // turn LED OFF
delay(200); // delay 200 milliseconds

if (state == HIGH){
Serial.println("Motion stopped!");
state = LOW; // update variable state to LOW
}
}
}
byte sendEmail()
{
byte thisByte = 0;
byte respCode;

if(mailClient.connect(mailServer,port) == 1) {
Serial.println(F("connected"));
} else {
Serial.println(F("connection failed"));
return 0;
}

if(!eRcv()) return 0;

Serial.println(F("Sending hello"));
// replace 1.2.3.4 with your Arduino's ip
mailClient.println("EHLO 192.168.0.176");
if(!eRcv()) return 0;

Serial.println(F("Sending auth login"));


mailClient.println("auth login");
if(!eRcv()) return 0;

Serial.println(F("Sending User"));
// Change to your base64 encoded user
mailClient.println("aHVsaW8ua3VsaW83MUBnbWFpbC5jb20=");

if(!eRcv()) return 0;

Serial.println(F("Sending Password"));
// change to your base64 encoded password
mailClient.println("eGh1bGlvMTEx");

if(!eRcv()) return 0;

// change to your email address (sender)


Serial.println(F("Sending From"));
mailClient.println("MAIL From: <hulio.kulio71@gmail.com>");
if(!eRcv()) return 0;

// change to recipient address


Serial.println(F("Sending To"));
mailClient.println("RCPT To: <hulioko@gmail.com>");
if(!eRcv()) return 0;

Serial.println(F("Sending DATA"));
mailClient.println("DATA");
if(!eRcv()) return 0;

Serial.println(F("Sending email"));

// change to recipient address


mailClient.println("To: You <hulioko@gmail.com>");

// change to your address


mailClient.println("From: Me <hulio.kulio71@gmail.com>");

mailClient.println("Subject: Arduino PIR and email test\r\n");


mailClient.println("This is from my Arduino!");
mailClient.println("PIR senzor detektovao kretanje!");
Serial.println("PIR senzor detektovao kretanje!");

mailClient.println(".");

if(!eRcv()) return 0;

Serial.println(F("Sending QUIT"));
mailClient.println("QUIT");
if(!eRcv()) return 0;

mailClient.stop();

Serial.println(F("disconnected"));

return 1;
}

byte eRcv()
{
byte respCode;
byte thisByte;
int loopCount = 0;

while(!mailClient.available()) {
delay(1);
loopCount++;

// if nothing received for 10 seconds, timeout


if(loopCount > 10000) {
mailClient.stop();
Serial.println(F("\r\nTimeout"));
return 0;
}
}

respCode = mailClient.peek();

while(mailClient.available())
{
thisByte = mailClient.read();
Serial.write(thisByte);
}

if(respCode >= '4')


{
efail();
return 0;
}

return 1;
}

void efail()
{
byte thisByte = 0;
int loopCount = 0;

mailClient.println(F("QUIT"));

while(!mailClient.available()) {
delay(1);
loopCount++;

// if nothing received for 10 seconds, timeout


if(loopCount > 10000) {
mailClient.stop();
Serial.println(F("\r\nTimeout"));
return;
}
}

while(mailClient.available())
{
thisByte = mailClient.read();
Serial.write(thisByte);
}

mailClient.stop();

Serial.println(F("disconnected"));
}

You might also like