TRACKER Wifi MQTT con ESP8266

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