Está en la página 1de 16

#include <Ethernet.

h>
#include <SPI.h>
#include <EEPROM.h>
#include <avr/io.h>
#include <avr/interrupt.h>
String PostData = "realname=";
String nombre="arduino";
String PostData1="&nick=";
String nombre2="2";
String PostData2="&pass=";
String pass1="124578";
int alarma=0;
String PostData13="&rpass=";
String pass2="124578";
String PIN22="1NA&";
String PIN24="2NA&";
String PIN26="3NA&";
String PIN28="4NA&";
String PIN30="5NA&";
String PIN31="6NA&";
String PIN32="7NA&";
String PIN33="8NA&";
String PIN34="9NA&";
String PIN35="10NA&";
String PIN36="11NA&";
String PIN37="12NA&";
String PIN38="13NA&";
String PIN39="14NA&";
String PIN22C="1NC&";
String PIN24C="2NC&";
String PIN26C="3NC&";
String PIN28C="4NC&";
String PIN30C="5NC&";
String PIN31C="6NC&";
String PIN32C="7NC&";
String PIN33C="8NC&";
String PIN34C="9NC&";
String PIN35C="10NC&";
String PIN36C="11NC&";
String PIN37C="12NC&";
String PIN38C="13NC&";
String PIN39C="14NC&";
String PostData14="&submit=Registrarme";
String email1="asunto=arduino&mensaje=hola&submit=Registrarme";
String
numm[20]={"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15
","16","17","18","19","20"};
int i=0,d=0;
long resetint=0;
int Numdiv[14]={0,0,0,0,0,0,0,0,0,0,0,0,0,0};
byte server[] = { 192,168,2,177}; //ip Address of the server you will connect to
String location1 = "/html/toarduino.php HTTP/1.0";
String location = "/html/ARDUINOTOMYSQL.php HTTP/1.0";
String location3 = "/email/enviar_c.php HTTP/1.0";
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
char server2[] = "www.mcrenox.com.ar";
IPAddress ip(192,168,2,120); //IP
IPAddress dnServer(192, 168, 0, 1);
IPAddress gateway(192, 168, 2, 254);
IPAddress subnet(255, 255, 255, 0);
EthernetClient client;
char inString[60];
int b[15]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int s[15]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int a[15]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int stringPos = 0;
char inString2[20];
boolean startRead = false;
unsigned long lastConnectionTime = 0;
const unsigned long postingInterval = 10*1000;
String enviodestring;

long tstart;
void setup(){
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
// no point in carrying on, so do nothing forevermore:
// try to congifure using IP address instead of DHCP:
Ethernet.begin(mac, ip, dnServer, gateway, subnet);
}

cli();

TCCR4A=0;
TCCR4B=0;
OCR4A=15624;///PARA CALCULAR LA RESOLIUCION ((TIEMPO EN SEG)/64us)-1
TCCR4B |= (1<<WGM42);
TCCR4B |= (1<<CS40);
TCCR4B |= (1<<CS42);
TIMSK4=(1<<OCIE4A);

TCCR5A=0;
TCCR5B=0;
OCR5A=16000;
TCCR5B |= (1<<WGM52);
TCCR5B |= (1<<CS50);
// TCCR5B |= (1<<CS52);
TIMSK5=(1<<OCIE5A);
sei();

tstart=millis();
Serial.begin(9600);
delay(1000);
pinMode(31, OUTPUT);
pinMode(22,INPUT);
pinMode(24,INPUT);
pinMode(26,INPUT);
pinMode(28,INPUT);
pinMode(30,INPUT);
pinMode(31,INPUT);
pinMode(32,INPUT);
pinMode(33,INPUT);
pinMode(34,INPUT);
pinMode(35,INPUT);
pinMode(36,INPUT);
pinMode(37,INPUT);
pinMode(38,INPUT);
pinMode(39,INPUT);
pinMode(41,OUTPUT);
pinMode(42,OUTPUT);
pinMode(43,OUTPUT);
pinMode(44,OUTPUT);
pinMode(45,OUTPUT);
pinMode(46,OUTPUT);
pinMode(47,OUTPUT);
pinMode(48,OUTPUT);
pinMode(49,OUTPUT);
pinMode(50,OUTPUT);
pinMode(51,OUTPUT);
pinMode(52,OUTPUT);
pinMode(53,OUTPUT);

for(int i=1;i<=14;i++){
b[i]=EEPROM.read(i);
}

for(int i=1;i<=14;i++){
a[i]=EEPROM.read(i+100);
}
}
void loop(){
//gets2();
//email();
gets();//lee configuracion de mysql
leerdeservidor();//con los datos del servidor lee la configuracion y determina si
hay o no alarma
//if(alarma==1){
enviodestring="";
for(int i=1;i<=14;i++){

if(a[i]==1){
enviodestring=enviodestring+(i);
enviodestring=enviodestring+"=ON";
enviodestring=enviodestring+'&';
}
else{
enviodestring=enviodestring+(i);
enviodestring=enviodestring+"=OFF";
enviodestring=enviodestring+'&';
}

}
enviodestring=enviodestring+"submit=OK";
// Serial.println(enviodestring);
// Serial.println(enviodestring.length());
connectAndRead();
alarma=0;
//}
//Serial.println(" ");
delay(1000);

}
void connectAndRead(){
if (client.connect(server, 80)) {
client.print("POST ");
client.println(location);
client.println("Host: 192.168.2.177");
client.print("Content-Length: ");
client.println(enviodestring.length());
client.println("Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,**;q=0.8 ");
client.println("User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36");
client.println("Content-Type: application/x-www-form-urlencoded");
client.println();
client.print(enviodestring);
client.stop();
client.flush();
}else{
Serial.println("connection failed");
}
}
void readPage(){
stringPos = 0;
d=0;
memset( &inString, 0, 60 );

while(true){
if (client.available()) {
char c = client.read();
if (c == '*' ) {
startRead = true;
}else if(startRead){
if(c != '@'){
inString[stringPos] = c;
stringPos ++;
if(c=='&'){
if(d<=13){////////leer parametro
Numdiv[d]=stringPos;
//Serial.print(stringPos);
d++;}
}

}else{
startRead = false;
client.stop();
client.flush();
break;
}
}
}
}
}
void gets(){
if (client.connect(server, 80)) {
client.print("GET ");
client.println(location1);
client.println("Host: 192.168.2.177");
client.println("Connection: close");
client.println("Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,**;q=0.8 ");
client.println("User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36");
client.println("Content-Type: application/x-www-form-urlencoded");
client.println();
client.println();
readPage();
}else{
Serial.println("connection failed");
}
}
void email(){
if (client.connect(server, 80)) {
client.print("POST ");
client.println(location3);
client.println("Host: 192.168.2.177");
client.print("Content-Length: ");
client.println(email1.length());
client.println("Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,**;q=0.8 ");
client.println("User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36");
client.println("Content-Type: application/x-www-form-urlencoded");
client.println();
client.print(email1);
client.stop();
client.flush();
}else{
Serial.println("connection failed");
}
}
void sensado(){
s[1]=digitalRead(22);
s[2]=digitalRead(24);
s[3]=digitalRead(26);
s[4]=digitalRead(28);
s[5]=digitalRead(30);
s[6]=digitalRead(31);
s[7]=digitalRead(32);
s[8]=digitalRead(33);
s[9]=digitalRead(34);
s[10]=digitalRead(35);
s[11]=digitalRead(36);
s[12]=digitalRead(37);
s[13]=digitalRead(38);
s[14]=digitalRead(39);
for(int i=1;i<=14;i++){

if(b[i]==3&&s[i]==HIGH){////N/A
a[i]=1;

if(EEPROM.read(i+100)!=1){

EEPROM.write(i+100, 1);
digitalWrite(i+39,HIGH);
alarma=1;
}
}
else if(b[i]==2&&s[i]==LOW){
a[i]=1;
alarma=1;
if(EEPROM.read(i+100)!=1){
EEPROM.write(i+100, 1);
digitalWrite(i+39,HIGH);
alarma=1;
}
}
else if(b[i]==1){
a[i]=0;
//Serial.println("borrado");
if(EEPROM.read(i+100)!=0){
EEPROM.write(i+100, 0);
digitalWrite(i+39,LOW);
alarma=1;
}
}
}
}
void gets2(){
if (client.connect(server2, 80)) {
client.println("GET /arduino/test.php HTTP/1.1");
client.println("Host: www.mcrenox.com.ar");
client.println("Connection: close");

client.println("Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,**;q=0.8 ");
client.println("User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36");
client.println("Content-Type: application/x-www-form-urlencoded");
client.println();
// Serial.println("on");
// do{
//
// }while(!client.connected());
// Serial.println("off");
client.stop();

}else{
Serial.println("connection failed");
}
}
void leerdeservidor(){
int u=0;

////pin 22
i=0;
for(int t=0;t<=(Numdiv[0]-1);t++){
if(inString[t]==PIN22[i]){
if(t==(Numdiv[0]-1)){
// Serial.println("pin 22 NA");
b[1]=3;
alarma=1;
if(EEPROM.read(1)!=3){
EEPROM.write(1, 3);
//Serial.println("EEPROM 22");
}
}
}

else{
i=0;
for(int t=0;t<=(Numdiv[0]-1);t++){
if(inString[t]==PIN22C[i]){
if(t==(Numdiv[0]-1)){
//Serial.println("pin 22 NC");
b[1]=2;
if(EEPROM.read(1)!=2){
EEPROM.write(1, 2);
}
}
}
else{
//Serial.println("pin 22 apagado");
b[1]=1;
if(EEPROM.read(1)!=1){
EEPROM.write(1, 1);
}
break;
}
i++;
}

break;
}
i++;

//pin 24
i=0;
for(int t=Numdiv[0];t<=(Numdiv[1]-1);t++){
if(inString[t]==PIN24[i]){
if(t==(Numdiv[1]-1)){
//Serial.println("pin 24 NA");
b[2]=3;
if(EEPROM.read(2)!=3){
EEPROM.write(2, 3);
}
}
}

else{
i=0;
for(int t=Numdiv[0];t<=(Numdiv[1]-1);t++){
if(inString[t]==PIN24C[i]){
if(t==(Numdiv[1]-1)){
// Serial.println("pin 24 NC");
b[2]=2;
if(EEPROM.read(2)!=2){
EEPROM.write(2, 2);
}
}
}
else{
//Serial.println("pin 24 apagado");
b[2]=1;
if(EEPROM.read(2)!=1){
EEPROM.write(2, 1);
}
break;
}
i++;
}

break;
}
i++;

}
//pin 26
i=0;
for(int t=Numdiv[1];t<=(Numdiv[2]-1);t++){
if(inString[t]==PIN26[i]){
if(t==(Numdiv[2]-1)){
//Serial.println("pin 26 NA");
b[3]=3;
if(EEPROM.read(3)!=3){
EEPROM.write(3, 3);
}
}
}

else{
i=0;
for(int t=Numdiv[1];t<=(Numdiv[2]-1);t++){
if(inString[t]==PIN26C[i]){
if(t==(Numdiv[2]-1)){
// Serial.println("pin 26 NC");
b[3]=2;
if(EEPROM.read(3)!=2){
EEPROM.write(3, 2);
}
}
}
else{
//Serial.println("pin 26 apagado");
b[3]=1;
if(EEPROM.read(3)!=1){
EEPROM.write(3, 1);
}
break;
}
i++;
}

break;
}
i++;

}
//pin 28
i=0;
for(int t=Numdiv[2];t<=(Numdiv[3]-1);t++){
if(inString[t]==PIN28[i]){
if(t==(Numdiv[3]-1)){
//Serial.println("pin 28 NA");
b[4]=3;
if(EEPROM.read(4)!=3){
EEPROM.write(4, 3);
}
}
}

else{
i=0;
for(int t=Numdiv[2];t<=(Numdiv[3]-1);t++){
if(inString[t]==PIN28C[i]){
if(t==(Numdiv[3]-1)){
// Serial.println("pin 28 NC");
b[4]=2;
if(EEPROM.read(4)!=2){
EEPROM.write(4, 2);
}
}
}
else{
//Serial.println("pin 28 apagado");
b[4]=1;
if(EEPROM.read(4)!=1){
EEPROM.write(4, 1);
}
break;
}
i++;
}

break;

}
i++;

}
//pin 30
i=0;
for(int t=Numdiv[3];t<=(Numdiv[4]-1);t++){
if(inString[t]==PIN30[i]){
if(t==(Numdiv[4]-1)){
//Serial.println("pin 30 NA");
b[5]=3;
if(EEPROM.read(5)!=3){
EEPROM.write(5, 3);
}
}
}

else{
i=0;
for(int t=Numdiv[3];t<=(Numdiv[4]-1);t++){
if(inString[t]==PIN30C[i]){
if(t==(Numdiv[4]-1)){
//Serial.println("pin 30 NC");
b[5]=2;
if(EEPROM.read(5)!=2){
EEPROM.write(5, 2);
}
}
}
else{
//Serial.println("pin 30 apagado");
b[5]=1;
if(EEPROM.read(5)!=1){
EEPROM.write(5,1);
}
break;
}
i++;
}

break;
}
i++;

}
//pin 31
i=0;
for(int t=Numdiv[4];t<=(Numdiv[5]-1);t++){
if(inString[t]==PIN31[i]){
if(t==(Numdiv[5]-1)){
//Serial.println("pin 31 NA");
b[6]=3;
if(EEPROM.read(6)!=3){
EEPROM.write(6, 3);
}
}
}

else{
i=0;
for(int t=Numdiv[4];t<=(Numdiv[5]-1);t++){
if(inString[t]==PIN31C[i]){
if(t==(Numdiv[5]-1)){
//Serial.println("pin 31 NC");
b[6]=2;
if(EEPROM.read(6)!=2){
EEPROM.write(6, 2);
}
}
}
else{
//Serial.println("pin 31 apagado");
b[6]=1;
if(EEPROM.read(6)!=1){
EEPROM.write(6, 1);
}
break;
}
i++;
}

break;
}
i++;

}
//pin 32
i=0;
for(int t=Numdiv[5];t<=(Numdiv[6]-1);t++){
if(inString[t]==PIN32[i]){
if(t==(Numdiv[6]-1)){
//Serial.println("pin 32 NA");
b[7]=3;
if(EEPROM.read(7)!=3){
EEPROM.write(7, 3);
}
}
}

else{
i=0;
for(int t=Numdiv[5];t<=(Numdiv[6]-1);t++){
if(inString[t]==PIN32C[i]){
if(t==(Numdiv[6]-1)){
//Serial.println("pin 32 NC");
b[7]=2;
if(EEPROM.read(7)!=2){
EEPROM.write(7, 2);
}
}
}
else{
// Serial.println("pin 32 apagado");
b[7]=1;
if(EEPROM.read(7)!=1){
EEPROM.write(7, 1);
}
break;
}
i++;
}

break;
}
i++;

}
//pin 33
i=0;
for(int t=Numdiv[6];t<=(Numdiv[7]-1);t++){
if(inString[t]==PIN33[i]){
if(t==(Numdiv[7]-1)){
// Serial.println("pin 33 NA");
b[8]=3;
if(EEPROM.read(8)!=3){
EEPROM.write(8, 3);
}
}
}

else{
i=0;
for(int t=Numdiv[6];t<=(Numdiv[7]-1);t++){
if(inString[t]==PIN33C[i]){
if(t==(Numdiv[7]-1)){
// Serial.println("pin 33 NC");
b[8]=2;
if(EEPROM.read(8)!=2){
EEPROM.write(8, 2);
}
}
}
else{
//Serial.println("pin 33 apagado");
b[8]=1;
if(EEPROM.read(8)!=1){
EEPROM.write(8, 1);
}
break;
}
i++;
}

break;
}
i++;

//pin 34
i=0;
for(int t=Numdiv[7];t<=(Numdiv[8]-1);t++){
if(inString[t]==PIN34[i]){
if(t==(Numdiv[8]-1)){
//Serial.println("pin 34 NA");
b[9]=3;
if(EEPROM.read(9)!=3){
EEPROM.write(9, 3);
}
}
}

else{
i=0;
for(int t=Numdiv[7];t<=(Numdiv[8]-1);t++){
if(inString[t]==PIN34C[i]){
if(t==(Numdiv[8]-1)){
//Serial.println("pin 34 NC");
b[9]=2;
if(EEPROM.read(9)!=2){
EEPROM.write(9, 2);
}
}
}
else{
//Serial.println("pin 34 apagado");
b[9]=1;

if(EEPROM.read(9)!=1){
EEPROM.write(9, 1);
}
break;
}
i++;
}
break;
}
i++;

//pin 35
i=0;
for(int t=Numdiv[8];t<=(Numdiv[9]-1);t++){
if(inString[t]==PIN35[i]){
if(t==(Numdiv[9]-1)){
//Serial.println("pin 35 NA");
b[10]=3;
if(EEPROM.read(10)!=3){
EEPROM.write(10, 3);
}
}
}

else{
i=0;
for(int t=Numdiv[8];t<=(Numdiv[9]-1);t++){
if(inString[t]==PIN35C[i]){
if(t==(Numdiv[9]-1)){
// Serial.println("pin 35 NC");
b[10]=2;
if(EEPROM.read(10)!=2){
EEPROM.write(10, 2);
}
}
}
else{
//Serial.println("pin 35 apagado");
b[10]=1;
if(EEPROM.read(10)!=1){
EEPROM.write(10, 1);
}
break;
}
i++;
}

break;
}
i++;

}
//pin 36
i=0;
for(int t=Numdiv[9];t<=(Numdiv[10]-1);t++){
if(inString[t]==PIN36[i]){
if(t==(Numdiv[10]-1)){
//Serial.println("pin 36 NA");
b[11]=3;
if(EEPROM.read(11)!=3){
EEPROM.write(11, 3);
}
}
}
else{
i=0;
for(int t=Numdiv[9];t<=(Numdiv[10]-1);t++){
if(inString[t]==PIN36C[i]){
if(t==(Numdiv[10]-1)){
//Serial.println("pin 36 NC");
b[11]=2;
if(EEPROM.read(11)!=2){
EEPROM.write(11, 2);
}
}
}
else{
// Serial.println("pin 36 apagado");
b[11]=1;
if(EEPROM.read(11)!=1){
EEPROM.write(11, 1);
}
break;
}
i++;
}

break;
}
i++;

}
//pin 37
i=0;
for(int t=Numdiv[10];t<=(Numdiv[11]-1);t++){
if(inString[t]==PIN37[i]){
if(t==(Numdiv[11]-1)){
//Serial.println("pin 37 NA");
b[12]=3;
if(EEPROM.read(12)!=3){
EEPROM.write(12, 3);
}
}
}

else{
i=0;
for(int t=Numdiv[10];t<=(Numdiv[11]-1);t++){
if(inString[t]==PIN37C[i]){
if(t==(Numdiv[11]-1)){
//Serial.println("pin 37 NC");

b[12]=2;
if(EEPROM.read(12)!=2){
EEPROM.write(12, 2);
}
}
}
else{
// Serial.println("pin 37 apagado");
b[12]=1;
if(EEPROM.read(12)!=1){
EEPROM.write(12, 1);
}
break;

}
i++;
}

break;
}
i++;

//pin 38
i=0;
for(int t=Numdiv[11];t<=(Numdiv[12]-1);t++){
if(inString[t]==PIN38[i]){
if(t==(Numdiv[12]-1)){
//Serial.println("pin 38 NA");
b[13]=3;
if(EEPROM.read(13)!=3){
EEPROM.write(13, 3);
}
}
}

else{
i=0;
for(int t=Numdiv[11];t<=(Numdiv[12]-1);t++){
if(inString[t]==PIN38C[i]){
if(t==(Numdiv[12]-1)){
//Serial.println("pin 38 NC");

b[13]=2;
if(EEPROM.read(13)!=2){
EEPROM.write(13, 2);
}
}
}
else{
// Serial.println("pin 38 apagado");
b[13]=1;

if(EEPROM.read(13)!=1){
EEPROM.write(13, 1);
}
break;
}
i++;
}
break;
}
i++;
}
}
ISR(TIMER5_COMPA_vect){
sensado();//1ms
}
ISR(TIMER4_COMPA_vect){
//1seg

resetint++;
Serial.println(resetint);
if(resetint==120){
Serial.println("Un segundo! Reseteando");

resetint=0;
asm("jmp 0x0000");
}
}

También podría gustarte