Fala galera, tudo beleza?
O post de hoje, veio com intuito de exemplificar uma aplicação básica e simplória da IoT, partindo de um principio para automatizar sua casa, empresa, laboratório ou apenas por diversão mesmo.
Caso a seu modem, roteador apresente algum problema( travamento), o que nos garantiria que ele voltaria a funcionar sem aquele reset fundamental?
Com isso, através de componentes simples e baratos, que todo maker deve ter, automatizar o reset de seu modem/roteador para resolver aquele velho problema de travamento.
Vamos aos trabalhos!
Materiais Utilizados:
Montagem:
Não podemos esquecer que, para o roteador iniciar ligado devemos conectar o pino NC(Normally Closed) – Normalmente Fechado , em tradução livre.
Para saber mais sobre o módulo relé, dê uma olhadinha nesse post aqui.
Código Comentado:
#include <ESP8266WiFi.h>
float id = 1; // Declaração de uma variavel de identificação
const char* ssid = "sua-rede"; // Nome e senha da sua rede wifi
const char* password = "sua-senha";
WiFiServer server(80);
IPAddress ip(192,168,x,x); //Configuração de IPFixo no seu dispositivo ESP8266
IPAddress gw(192,168,x,x);
IPAddress sub(255,255,xxx,x);
//IPAddress dns(123,456,xxx,x);
int rele = 2; //GPI02 // Declaração da porta digital do relé
void setup() {
Serial.begin(9600);
pinMode(rele, OUTPUT); // Declara o relé como uma saída
delay(10);
Serial.println();
Serial.println();
Serial.print("Conectando à ");
Serial.println(ssid);
WiFi.begin(ssid, password);
WiFi.mode(WIFI_STA); // torna o ESP8266 apenas um ponto "Station"(Sem acesso à conexões)
WiFi.config(ip,gw,sub);
Serial.println(WiFi.localIP());
while (WiFi.status() != WL_CONNECTED) {
for(int i = 0 ; i<=20 ; i++);
delay(500);
Serial.println(".");
if(i>=20){
digitalWrite(rele, !digitalRead(rele)); // caso o laço, ultrapasse o limite de 20, entra na condição de resetar, através do "desarme" do relé(desligando o roteador)
delay(30000);
digitalWrite(rele, !digitalRead(rele)); // Aguarda 30s, e "arma" o relé, ligando o modem/roteador
}
}
Serial.println("");
Serial.println("WiFi conectado");
server.begin();
Serial.println("Server iniciou");
Serial.println(WiFi.localIP());
}
void loop() {
if (!client) {
return;
}
Serial.println("NOVO CLIENTE");
while(!client.available()){
for(int i = 0 ; i<10 ; i++);
delay(1500);
Serial.println(".");
if(i>=10){
digitalWrite(rele, !digitalRead(rele));
delay(30000);
digitalWrite(rele, !digitalRead(rele));
}
}
String req = client.readStringUntil('\r');
Serial.println(req);
//client.flush();
String buf = "";
buf += id; // envia o menor caracter possivel, para um webserver para fins de verificação de conexão.
client.print(buf);
//client.flush();
Serial.println("Cliente desconectado");
delay(10000); //Espera 10s para que todo o ciclo se repita.
}
Conclusão:
Uma introdução básica à IoT, facilitando para quem deseja reiniciar o roteador, sem ter que colocar a mão rs.
É interessante sua aplicação, à modem WiFi/3G que necessitam ser reinciados, praticamente todos os modelos, à cada 24h.
O que acharam? Legal? Divertido? Um tédio?
Deixe seu comentário ai embaixo, seu joinha no nosso Facebook – e não perca o nosso próximo post.
CYA :D.
