#include <WiFi.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
#define IDWifi "Wokwi-GUEST"
#define pass ""
#define led 22
#define AIO_SERVIDOR "io.adafruit.com"
#define AIO_PUERTOSERVIDOR 1883
#define AIO_USUARIO "david0518"//su usuario tiene un espacio al final que esta mal
#define AIO_KEY "aio_ryPl708CousIvh9mPULSZAhKpaoo"
int espacio = 0;
int Eco=12;
int Gatillo=13;
WiFiClient client;
Adafruit_MQTT_Client mqtt(&client, AIO_SERVIDOR, AIO_PUERTOSERVIDOR, AIO_USUARIO, AIO_KEY);
Adafruit_MQTT_Subscribe uno = Adafruit_MQTT_Subscribe(&mqtt, AIO_USUARIO"/feeds/int");
Adafruit_MQTT_Subscribe uno1 = Adafruit_MQTT_Subscribe(&mqtt, AIO_USUARIO"/feeds/int");
void MQTT_connect();// metodo mal creado
long readUltrasonicDistance(int boton, int micro)
{
//sale señal
pinMode(boton, OUTPUT);
//apaga
digitalWrite(boton, LOW);
//detener
delayMicroseconds(2);
//encender
digitalWrite (boton, HIGH);
//se detiene
delayMicroseconds(10);
digitalWrite(boton, LOW);
//apago y activo el esco para recibir info
pinMode(micro, INPUT);
//regresamos el valor al read
return pulseIn(micro, HIGH);
}
void setup() {
Serial.begin(9600);
pinMode(led, OUTPUT);
pinMode(LED_BUILTIN, OUTPUT);
Serial.print("intentando conectar a wifi");
WiFi.begin(IDWifi, pass, 6);//fatla el puerto
while(WiFi.status() !=WL_CONNECTED){
delay(100);
Serial.print(".");
}
Serial.println("conectando a la red wifi");//este mensaje se debe imprimir solo cuando sale delmetodo que no a conseguido conectar
mqtt.subscribe(&uno);
mqtt.subscribe(&uno1);//fatlaba inicializar este otro feed
}
void loop() {
MQTT_connect();
Adafruit_MQTT_Subscribe *subscription;
while ((subscription = mqtt.readSubscription(20000))){//el numero correcto es 20000
if (subscription == &uno){
Serial.print(F("llega el dato: "));
Serial.println((char *) uno.lastread);//sobre un parentesis
int uno_State = atoi((char *) uno.lastread);
digitalWrite(LED_BUILTIN, uno_State);
}
if (subscription == &uno1){//el if no tenía llaves y estaba fuera del while
Serial.println(F("llega el dato"));
Serial.println(((char *) uno1.lastread));
int uno1_State = atoi((char *) uno1.lastread);
digitalWrite(led, uno1_State);
}
}
}
void MQTT_connect(){
int8_t ret;
if (mqtt.connected()){
return;
}
Serial.print("conectando a MQTT...");
uint8_t retries = 3;
while ((ret = mqtt.connect()) != 0){
Serial.println(mqtt.connectErrorString(ret));
Serial.println("Reintendo la conexion MQTT en 5 segundos...");
mqtt.disconnect();
delay (5000);
//retries--;//
if(retries == 0){
while(1);
}
}
Serial.println("MQTT conectado");
espacio = 0.01723 * readUltrasonicDistance(Gatillo, Eco);
Serial.println(espacio);
if (espacio < 20) {
digitalWrite(led, HIGH);
}
else {
digitalWrite(led, LOW);
}
delay(10);
}