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;
Lenguaje del código: Arduino (arduino)

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"; //########################################################################
Lenguaje del código: Arduino (arduino)

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 } };
Lenguaje del código: Arduino (arduino)

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