-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmainEsp.ino
129 lines (98 loc) · 3.53 KB
/
mainEsp.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include "DHT.h" // Biblioteca DHT
#define DHTPIN 18 // Pino do DHT
#define DHTTYPE DHT11 // DHT 11
#include <WiFi.h> // Biblioteca de WiFi
#include <HTTPClient.h> // Biblioteca de HTTP
#define LED 4
#define CHUVAPIN 19
DHT dht(DHTPIN, DHTTYPE);
const char* ssid = "loginWiFi"; //login WiFi
const char* password = "senhaWiFi"; //senha WiFi
int chuva = 0;
float umidade = 0;
float temperatura = 0;
int statusIrrigacao = 0;
void setup() {
Serial.begin(115200);
pinMode(CHUVAPIN, INPUT);
pinMode(LED, OUTPUT);
dht.begin(); //inicializaçao do sensor DHT
WiFi.begin(ssid, password); //inicialização do WiFi
Serial.println("Conectando ao WiFi...");
while (WiFi.status() != WL_CONNECTED) { // Verificação de conexão
delay(1000);
Serial.println("...");
}
Serial.println("Conectado a rede WiFi!");
Serial.println("-------------------------------------------------------------");
}
void loop() {
//obtem o valor do sensor de chuva
chuva = digitalRead(CHUVAPIN);
//obtem valores de umidade e temperatura
umidade = dht.readHumidity();
temperatura = dht.readTemperature();
if (isnan(temperatura) || isnan(umidade)){ //verifica se o valor de DHT é válido
Serial.println("Esperando um valor valido...");
}else{
imprimeDht(umidade, temperatura);
imprimeSensorChuva(chuva);
if(umidade<40 || temperatura<10 || chuva==0){
statusIrrigacao = 0;
digitalWrite(LED, LOW);
}else{
statusIrrigacao = 1;
digitalWrite(LED, HIGH);
}
if(WiFi.status()==WL_CONNECTED){ //Verifica se o WiFi está conectado
realizaRequisicaoPost(umidade, temperatura, chuva, statusIrrigacao);
}else{
Serial.println("Erro na conexão WiFi :(");
}
}
delay(10000); //Aguarda 10 segundos
}
//void irrigacao(){
// if(statusIrrigacao == 1){
// digitalWrite(LED, HIGH);
// }else if(statusIrrigacao == 0){
// digitalWrite(LED, LOW);
// }
//}
void imprimeDht(float umidade, float temperatura){
Serial.print("Temperatura: ");
Serial.print(temperatura);
Serial.println(" *C");
Serial.print("Umidade: ");
Serial.print(umidade);
Serial.print(" %t");
}
void imprimeSensorChuva(int sensorChuva){
Serial.print("\nSensor de Chuva: ");
Serial.println(sensorChuva);
}
void realizaRequisicaoPost(float umidade, float temperatura, int sensorChuva, int statusIrrigacao){
HTTPClient http;
String urlPrincipal = "https://plantacao.herokuapp.com/info?";
String token = "35287412";
String url = urlPrincipal + "temperatura=" + (String)temperatura+ "&chuva="+(String)sensorChuva+ "&status="+ (String)statusIrrigacao + "&umidadeAr=" +(String)umidade + "&umidadeSolo=80"+"&token="+(String)token;
Serial.println(url);
http.begin(url); //Especifica rota de requisicao
http.addHeader("Content-Type", "multipart/form-data"); //Especifica o cabecalho
int httpResponseCode = http.POST(""); //Envia uma requisicao POST
if(httpResponseCode>0){ //Verifica codigo RESPONSE
//Respostas de informação (100-199),
//Respostas de sucesso (200-299),
//Redirecionamentos (300-399)
//Erros do cliente (400-499)
//Erros do servidor (500-599).
String response = http.getString(); // Recebe o retorno da requisicao
Serial.println("\n-------------------------------------------------------------");
Serial.println("HTTP Response Code:"+(String)httpResponseCode);
Serial.println("Response: "+response);
}else{
Serial.print("Erro na requisicao: ");
Serial.println(httpResponseCode);
}
http.end();
}