Aquí os dejo el código para poder construiros un tracker wifi con conexión a MQTT para que escanee vuestra red wifi de forma totalmente autónoma , tiene cuatro modos de funcionamiento diferenciados:
const byte IP_MODE_ALL= 1;
const byte IP_MODE_ONLY_ACTIVE = 2;
const byte IP_MODE_ONLY_KNOWN = 3;
const byte IP_MODE_ALTERNATE = 4;
IP_MODE_ALL , en este modo hace un escaneo a los equipos seleccionados , luego un escaneo a toda la red , luego un par de escaneos a solo los equipos conectados y finaliza con un escaneo a los equipos seleccionado para volver a empezar
IP_MODE_ONLY_ACTIVE ,en este modo hace un escaneo a toda la red , luego un escaneo solo los equipos conectados para volver a empezar
IP_MODE_ONLY_KNOWN, en este modo hace un escaneo solamente a los equipos seleccionados constantemente
IP_MODE_ALTERNATE, en este modo hace cinco escaneos solamente a los equipos seleccionados , luego subdivide la red en 32 trozos y en cada ciclo va preguntando a (i8,(i8)+7)
Tendréis que configurar la aplicación según vuestras características
//########################################################################
//Configuracion global
// WiFi
const char* ssid_wifi = "xxxxxxxxxxxxxx";// ssid
const char* password_wifi = "xxxxxxxxxxxxxx";// password
const char* ssid2_wifi = "xxxxxxxxxxxxxx";
const char* password2_wifi = "xxxxxxxxxxxxxx";
const char* ssid3_wifi = "xxxxxxxxxxxxxx";
const char* password3_wifi = "xxxxxxxxxxxxxx";
String password_wifi_seleccionado;
String ssid_wifi_seleccionado;
IPAddress ip(192, 168, 1, 71);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress dns(8, 8, 8, 8);
// MQTT
String mqtt_server_1 = "192.168.1.XXX";
int BROKER_PORT_1 = 1883;
String mqtt_server_2 = "xxxxxxxxxxxxxx.duckdns.org";
int BROKER_PORT_2 = 1883;
String mqtt_server_sel = mqtt_server_1;
int BROKER_PORT = BROKER_PORT_1;
const char* mqtt_user_sel = "xxxxxxxxxxxxxx";
const char* mqtt_password_sel = "xxxxxxxxxxxxxx";
//########################################################################
Como podéis ver permite hasta conectarse a tres redes diferentes, y poder configurar la IP por DHCP o por IP estática , también permite dos servidores MQTT
byte ip_prioritarias_1[][4] =
{
{ 192, 168, 1, 21 }
, { 192, 168, 1, 24 }
, { 192, 168, 1, 28 }
};
byte ip_prioritarias_2[][4] =
{
{ 192, 168, 3, 1 }
, { 192, 168, 3, 101 }
, { 192, 168, 3, 140 }
};
byte ip_prioritarias[][4] =
{
{ 192, 168, 1, 21 }
, { 192, 168, 1, 24 }
, { 192, 168, 1, 28 }
};
En este bloque podéis definir las IP llamadas “prioritarias” que serán las que ira a buscar cuando en el modo de funcionamiento se de esa opción
El ESP lleva una placa que se conecta directamente a USB por lo que no hace falta una fuente de alimentación externa , lo podéis encontrar en este enlace
Una vez puesto en marcha si todo es correcto deberíais ver en vuestro servidor MQTT algo similar a esto
- platform: mqtt state_topic: 'multi_tracker/IP_192.168.1.24/status' name: 'tracker_ip_antonio' payload_on: "1" payload_off: "0" device_class: occupancy
En HA tenemos que crear los sensores adecuados para recibir dichos datos