#include <SPI.h>
#include <Ethernet.h>
#include "DHT.h"
#include <Wire.h>
#define DHTPIN 2 // what digital pin we're connected to
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
DHT dht(DHTPIN, DHTTYPE);
int medida = 0;
int temp = 0;
int hum = 0;
int distancia = 0;
char dis[10];
char mensaje1;
char mess[15];
char tem[10];
int estadopin3 = 0;
int estadopin4 = 0;
int estadopin5 = 0;
int estadopin8 = 0;
int estadopin31 = 0;
int estadopin33 = 0;
int estadopin35 = 0;
int alarma = 0;
int estadoalarma = 0;
int voz = 0;
int estadovoz = 0;
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress ip(192, 168, 1, 200);
IPAddress myDns(192,168, 1, 1);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
EthernetServer server(23);
EthernetClient client;
void setup() {
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(8, OUTPUT);
pinMode(31, OUTPUT);
pinMode(33, OUTPUT);
pinMode(22, OUTPUT);
pinMode(33, OUTPUT);
pinMode(35, OUTPUT);
Ethernet.begin(mac, ip, myDns, gateway, subnet);
server.begin();
dht.begin();
Wire.begin(1);
Wire.onReceive(reciboEvent);
}
void loop() {
if(digitalRead(37) == HIGH && alarma == 1)
{
server.print("ala");
alarma = 0;
}
EthernetClient client = server.available();
int h = dht.readHumidity();
int t = dht.readTemperature();
if (client) {
if (client.available() > 0) {
char c = client.read();
//Mandar estados al iniciar app
if(c == '*'){
sprintf(mess,"pin%i%i%i%i%i%i%i%i%i",digitalRead(3),digitalRead(4),digitalRead(5),digitalRead(8),digitalRead(31),digitalRead(33),alarma,voz,digitalRead(35));
server.print(mess);
sprintf(dis,"tin%i ",115 - medida);
server.print(dis);
sprintf(tem,"tem%i %i ",t,h);
server.print(tem);
}
//PIN3
if(c == '1')
digitalWrite(3, HIGH);
if(c == '2')
digitalWrite(3, LOW);
//PIN4
if(c == '3')
digitalWrite(4, HIGH);
if(c == '4')
digitalWrite(4, LOW);
//PIN5
if(c == '5')
digitalWrite(5, HIGH);
if(c == '6')
digitalWrite(5, LOW);
//PIN8
if(c == '7')
digitalWrite(8, HIGH);
if(c == '8')
digitalWrite(8, LOW);
//PIN31
if(c == '9')
digitalWrite(31, HIGH);
if(c == 'm')
digitalWrite(31, LOW);
//PIN33
if(c == 'n')
digitalWrite(33, HIGH);
if(c == 'b')
digitalWrite(33, LOW);
if(c == 'q')
alarma = 1;
if(c == 'w')
alarma = 0;
if(c == 'c')
voz = 1;
if(c == 'v')
voz = 0;
if(c == 'z')
digitalWrite(35, HIGH);
if(c == 'x')
digitalWrite(35, LOW);
}
}
//Cambio de estado de pin3 me manda el aviso
if(estadopin3 != digitalRead(3) || estadopin4 != digitalRead(4) || estadopin5 != digitalRead(5) || estadopin8 != digitalRead(8) || estadopin31 != digitalRead(31) || estadopin33 != digitalRead(33) || alarma != estadoalarma || voz != estadovoz || estadopin35 != digitalRead(35))
{
sprintf(mess,"pin%i%i%i%i%i%i%i%i%i",digitalRead(3),digitalRead(4),digitalRead(5),digitalRead(8),digitalRead(31),digitalRead(33),alarma,voz,digitalRead(35));
server.print(mess);
estadopin3 = digitalRead(3);
estadopin4 = digitalRead(4);
estadopin5 = digitalRead(5);
estadopin8 = digitalRead(8);
estadopin31 = digitalRead(31);
estadopin33 = digitalRead(33);
estadoalarma = alarma;
estadovoz = voz;
estadopin35 = digitalRead(35);
}
//Mando cambio de distancia tanque sensor
if(distancia != medida)
{
sprintf(dis,"tin%i ",115 - medida);
server.print(dis);
distancia = medida;
}
//Mando cambio de temperatura
if(temp != t || hum != h)
{
sprintf(tem,"tem%i %i ",t,h);
server.print(tem);
temp = t;
hum = h;
}
//Fin Loop
}
void reciboEvent(int howMany)
{
while (Wire.available()) { // slave may send less than requested
int c = Wire.read();
if(medida != c)
{
medida = c;
}
}
}