/* Project: default */
#if defined(ESP8266)
#define HARDWARE "ESP8266"
#include "ESP8266WiFi.h"
#elif defined(ESP32)
#define HARDWARE "ESP32"
#include "WiFi.h"
#endif
#include "PubSubClient.h"
String Gigavidfint1;
#include "DHT.h";
const char espwifi_ssid[]= "Wokwi-GUEST";
const char espwifi_pass[]= "";
void espwifi_setup(){
WiFi.mode(WIFI_STA);
WiFi.begin(espwifi_ssid,espwifi_pass);
Serial.println("Conectando a la red Wifi");
while (WiFi.status() != WL_CONNECTED){
Serial.print(".");
delay(100);}
Serial.println("");
Serial.println("conexión realizada con éxito");
Serial.print("Dirección IP: ");
Serial.println(WiFi.localIP());
}
bool conectado;
unsigned long impr_conect_mqtt=0;
const char espmqtt_broker[]= "io.adafruit.com";
const int espmqtt_port= 1883;
const char espmqtt_user[]= "Gigavid";
const char espmqtt_pass[]= "aio_gAwJ08zfpks3FZHwAkSWk8Rk36LR";
const char espmqtt_clientid[]= "Medicion";
WiFiClient espmqtt_wifiClient;
PubSubClient espmqtt_client(espmqtt_wifiClient);
String espmqtt_topic="";
String espmqtt_msg_str="";
double espmqtt_msg_number=0;
char espmqtt_payload[128];
void espmqtt_onreceive(){};
void espmqtt_setup(){
delay(10);
randomSeed(micros());
espmqtt_client.setServer(espmqtt_broker, espmqtt_port);
espmqtt_client.setCallback(espmqtt_callback);
espmqtt_subscribe();
}
void espmqtt_loop(){
if (!espmqtt_client.connected()) {
espmqtt_client.connect(espmqtt_clientid,espmqtt_user,espmqtt_pass);
if((millis()-impr_conect_mqtt)>=1000){
Serial.println("Conectando al servidor mqtt");
impr_conect_mqtt=millis();}
conectado = false;
espmqtt_subscribe();}
if (espmqtt_client.connected()) {
if (!conectado) {
Serial.println("Conectado con éxito");
conectado = true;}
espmqtt_client.loop();}
}
double espmqtt_payload2double(unsigned char *_payload, int _length){
int i;
for (i = 0; i<_length && i<128; i++){
espmqtt_payload[i] = _payload[i];}
espmqtt_payload[i] = 0;
return atof(espmqtt_payload);
}
String espmqtt_payload2string(unsigned char *_payload, int _length){
int i;
for (i = 0; i<_length && i<128; i++){
espmqtt_payload[i] = _payload[i];}
espmqtt_payload[i] = 0;
return String(espmqtt_payload);
}
boolean Gigavidfint1_fun(){
boolean Gigavidfint1_loc;
if(Gigavidfint1 == ""){Gigavidfint1_loc = 0;}
if(Gigavidfint1 == "true"){Gigavidfint1_loc = 1;}
if(Gigavidfint1 == "TRUE"){Gigavidfint1_loc = 1;}
if(Gigavidfint1 == "ON"){Gigavidfint1_loc = 1;}
if(Gigavidfint1 == "on"){Gigavidfint1_loc = 1;}
if(Gigavidfint1 == "1"){Gigavidfint1_loc = 1;}
if(Gigavidfint1 == "false"){Gigavidfint1_loc = 0;}
if(Gigavidfint1 == "FALSE"){Gigavidfint1_loc = 0;}
if(Gigavidfint1 == "off"){Gigavidfint1_loc = 0;}
if(Gigavidfint1 == "OFF"){Gigavidfint1_loc = 0;}
if(Gigavidfint1 == "0"){Gigavidfint1_loc = 0;}
return Gigavidfint1_loc;}
DHT dht22(22,DHT22);
unsigned long frecuenciaPubl_ = 0;
void espmqtt_subscribe()
{
espmqtt_client.subscribe(String("Gigavid/f/int1").c_str());
}
void espmqtt_callback(char* _topic, unsigned char* _payload, unsigned int _payloadlength)
{
espmqtt_topic=String(_topic);
espmqtt_msg_str=espmqtt_payload2string(_payload,_payloadlength);
espmqtt_msg_number=espmqtt_payload2double(_payload,_payloadlength);
if(espmqtt_topic==String("Gigavid/f/int1"))Gigavidfint1 = espmqtt_msg_str;
espmqtt_onreceive();
}
void setup()
{
Serial.begin(115200);
espwifi_setup();
espmqtt_setup();
pinMode(2, OUTPUT);
pinMode(22, INPUT);
dht22.begin();
}
void loop()
{
yield();
espmqtt_loop();
if((Gigavidfint1_fun())){
digitalWrite(2,HIGH);
}
else{
digitalWrite(2,LOW);
}
if(millis() - frecuenciaPubl_ > 4000){
frecuenciaPubl_ = millis();
espmqtt_client.publish(String("Gigavid/f/SenT").c_str(),String(((dht22.readTemperature()))).c_str());}
}