Home Assistant #31: Integramos acceso por NFC o RFID

Tutoriales

Hace tiempo que tengo la casa conectada a modo alarma dentro de Home Assistant y una de las cosas que se puede hacer para poder tener acceso, o para cualquier uso que queráis, es hacerlo por medio de tags.

Los tags son pequeños identificadores que van sin pila y que cuando lo acercamos a un lector, es alimentada por el campo de inducción y lanzan el número que los identifica. En el caso del NFC, además, podemos hacerlo por medio de nuestro móvil, si soporta dicha tecnología.

Si os interesa, he integrado en casa un lector RFID/NFC para poder tener el acceso por medio de esta tecnología y, por ejemplo, poner o quitar la alarma.

Integrar NFC o RFID en Home Assistant

Lista de la comprar para poder poner NFC/RFID a Home Assistant

Lo primero que tenemos que hacer es comprar unos pocos elementos para poder tener el punto de identificación donde pondremos el tag o nuestro smartphone, son pocas cosas las que hacen falta y no son caras:

  • Microcontrolador ESP8266: Vale prácticamente cualquier ESP8266, en mi caso recomiendo un Wemos D1 mini, que es el que he usado y es muy completo. Podéis comprarlo aquí (opción que pone ESP12) o aquí. Vale cualquier Wemos D1 mini de los que salen aquí, pero os he puesto uno de ellos.
  • Cable dupond hembra-hembra: Estos cables os harán falta si vais a empezar a hacer cosas de electrónica, si no tenéis, podéis comprar aquí o aquí.
  • Pinchos de codo: Necesarios para poder poner los cables en el lector NFC/RFID. Podéis comprar aquí, seleccionad 10pcs (son 10 barritas de 40 pines) o 5pcs y elegid “Single Row/Bent” en el tipo o comprando aquí y eligiendo el tercer tipo.
  • Lector NFC/RFID: Necesitamos el modelo PN532, que podéis comprar aquí o aquí. Algunos kits incluyen los pines y los cables dupond, por lo que os los podéis evitar, mi consejo es comprarlos (son unos euros y no os quedaréis colgados por un cable o un pin).
  • OPCIONAL: Si queréis más tags, podéis comprar aquí donde pone (5PCS RFID IC KEY).

OPCIONAL

  • Soldador: Por cierto, por si no tienes soldador y quieres comprar algo que esté bien y no cueste mucho, yo el 936H, si queréis, podéis comprarlo aquí o aquí. También podéis comprar puntas para el soldador más finas por poco más de 1€ aquí.
  • Estaño: Necesitaréis algo de estaño para soldar, podéis encontrar aquí, os recomiendo algo fino para estas soldaduras. Podéis encontrarlo aquí.

Es necesario un conversor serial a USB, que puede que lo tengáis, pero si no, podéis comprarlo aquí.

Ahora ya, con la lista de la compra hecha, tocará esperar un tiempo y podemos seguir con los siguientes pasos. En total ronda los 10-14€, incluyendo algún tag para probar.

Flasheo del Wemos D1 mini

Es necesario soldar los pines del Wemos D1 mini para poder flashearlo. Podiamos haber elegido uno con los pines ya soldados, pero, igualmente tendrías que soldar en el PN532 y el Wemos es muy cómodo por tener la posibilidad de alimentarlo por USB.

Una vez que tengas las soldaduras hechas tendremos que flashearlo con la herramienta esptool desde consola o podéis usar la herramienta pyflasher que os mostramos, y, para los pines, podéis ver el tutorial que hizo nuestro compañero Alcar para flashear un sonoff (o cualquier ESP8266).

Deberéis bajar la última versión de la rama 2.0 de ESPEasy, que podéis encontrarla aquí. Una vez descargado el fichero ESPEasy_mega-2019……zip (los puntos suspensivos son la fecha), descomprimimos, y, de entre todos los ficheros, elegiremos el que acaba en “…._normal_ESP8266_4096.bin” (cuidado que también está el del 8285).

Arranque del Wemos D1 mini

Una vez que lo flasheamos, aparemos y encenderemos nuestro Wemos D1 mini para ver la Wifi que nos crea, que debería llamarse ESP_Easy_0, nos conectaríamos con nuestro smartphone o con nuestro portátil para poder configurarlo, la clave de la WiFi será configesp.

Abriendo cualquier web en el navegador, debería mostrar la web de configuración, pero, si no lo hace, podéis acceder a la ip 192.168.4.1, que es donde debería estar nuestro microcontrolador. Ahora, tocaría elegir nuestra WiFi de entre la lista y ponerle la clave de nuestra WiFi.

Si todo ha salido bien, debería decirnos cual será la IP que va a tener en nuestra WiFi real y al cabo de unos segundos o minutos, nosotros volveremos a estar en nuestra WiFi, dentro de la configuración del ESPEasy, pero ya dentro de nuestra propia WiFi. Si no os avisara de la IP que va a tener, os tocará ir a la configuración de vuestro router y buscar algún nuevo equipo que se haya conectado, normalmente con el nombre de ESPEasy, ESP0, o similares.

Configurando ESPEasy

Vamos a la pestaña “Config”:

  • Unit name será el nombre del dispositivo, podéis poner lo que queráis, en mi caso he puesto “Acceso”.
  • En las WiFi Settings aparecerá la configuración de la WiFi que pusimos y podemos poner una WiFi de respaldo en caso de que la primera caiga.
  • El resto de parámetros se pueden dejar como salen.
  • Pulsamos en el botón de abajo de Submit

Pestaña “Controllers”

Aquí tenemos que configurar nuestro servidor MQTT, si no tenéis instalado, es necesario, podéis seguir nuestra guía para configurar un servidor MQTT. Pulsamos en el botón primero de Edit y ponemos los datos, podéis usar el Protocolo “OpenHAB MQTT”. Los datos a rellenar son, la IP, os pedirá Max Queue Depth y Max Retries, yo le puse 1, y el usuario y contraseña del servidor MQTT. Le damos a “Enabled” y pulsamos en Submit.

Pestaña “Hardware”

Yo lo tengo así, aunque no le doy uso, es para usar el LED de notificaciones:

Pulsamos en Submit y se guardará.

Pestaña “Devices”

Aquí es donde se configura el lector. Para ello es necesario darle al primer Edit.

Abrimos el desplegable y buscamos “RFID – PN532”

Una vez elegido, nos aparecerán otros campos. En Name podemos poner lo que queramos, saldrá en el MQTT, yo le puse “Tag”, le damos a Enabled, ponemos, por ejemplo el Reset Pin en el GPIO12 (D6) y marcamos “Send to Controller”. Abajo en Values, también podemos poner “Tag”. Pulsamos submit y ya lo tendríamos.

Conectamos el PN532 al Wemos D1 mini

Para poder usarlo, es necesario soldar los pines que van en el lado que tiene 4 (GND, VCC, SDA y SCL), además, en el lado que veréis muchos agujeros más pequeños, es necesario soldar 1 pin, el que va etiquetado con RSTPDN (luego explicaré el motivo)

Una vez soldados, ya solo nos quedaría conectar los cables que serían de esta forma:

PN532Wemos D1 mini
GNDG (El siguiente al pin de 5v)
VCC3V3 (lado opuesto del 5v)
SDAD2
SCLD1
RSTPDND6

El reset lo conectamos, porque, según avisan en ESPEasy, el lector NFC/RFID parece quedarse en algunos casos colgado y, la única manera de poder volverlo a su ser es resetando o quitándole la corriente, de esta forma, lo puede hacer el propio Wemos.

Comprobamos que funciona

Si todo está conectado, el software configurado, debería estar ya funcionando, tenemos varias maneras de hacerlo, o bien miramos en el log del propio Wemos (Pestaña Tools y botón Log). Deberíamos ver algo así:

O bien, por medio de mosquitto, conectando al servidor donde tenemos el servidor MQTT y poniendo este comando:

mosquitto_sub -h localhost -t '#' -u usuariomosquitto -P contraseñamosquitto -v

Debería salirnos algo así:

Configurando Home Assistant para ver el tag

Si todo va según lo previsto, podemos seguir con el último paso, configurar Home Assistant. Para ello, tenemos que recordar todo lo que pusimos o bien hacemos lo del paso anterior para ver el topic del mensaje mqtt para poder ponerle un sensor. Dentro de la sección “Sensor:” pondremos lo siguiente:

  - platform: mqtt
    state_topic: "Acceso/TAG/Tag"
    name: "Lector"
    expire_after: 2
    icon: mdi:nfc-variant
    payload_not_available: 0

Una vez hecho esto, tocaría reiniciar para ver si efectivamente, Home Assistant lo ve. Le he puesto el nombre “Lector” pero podéis poner lo que queráis. En state_topic, será lo que os aparezca en el servidor MQTT, que se compone por el nombre del Wemos que pusierais, el nombre del Device y el Tag que pusimos segundo dentro del “Device”.

Si todo ha salido bien, tendremos nuestro Tag dentro de Home Assistant, así:

Ahora solo nos quedaría una automatización, os pongo un pequeño ejemplo para que veáis como usar el tag como trigger:

- id: '123456789'
  alias: Mandamos mensaje por Telegram
  trigger:
  - platform: state
    entity_id: sensor.lector
    to: XXXXXXXXX (vuestro número de tag)
  action:
  - service: notify.TelegramGrupo
    data:
      message: 'Tag leído'

El ejemplo necesita que tengáis algún servicio de Telegram de notificaciones funcionando, pero, podéis hacer cualquier cosa, apagar una luz, encender, etc.

Y con esto, ya podéis usar los tags, o vuestros móviles para poder hacer cosas dentro de Home Assistant.

¿Habéis podido hacerlo? Ya sabéis, si tenéis dudas, abajo tenéis los enlaces del foro y del grupo de Telegram.

¿Quieres montarte tu propio sistema Smart Home?

¿Te gustaría empezar poco a poco teniendo Google Home, Alexa o Home Assistant para controlar las luces, calefacción y otros electrodomésticos de la casa? ¡Te ayudamos! Entra en nuestro Grupo de Telégram de Domótica y también puedes entrar a nuestro Foro de Domótica donde podrás empezar a leer y preguntar tus dudas. Además, si quieres estar al tanto de las ofertas de domótica que salen a diario para poder hacerte un sistema de domótica low cost, entra a nuestro Canal de ofertas de domótica y no te perderás ni una o si lo prefieres y no tienes Telegram, puedes entrar a nuestra página de ofertas de domótica o Smart Home en Facebook. ¡Síguenos también en nuestro Facebook, Twitter o Instagram! ¡Te esperamos!

Si también buscas otro tipo de ofertas, puedes echar un ojo a nuestros otros canales:
* Tecnología en general *
* Juguetes / consolas / Juegos de mesa *
* Manualidades *
Si no tienes Telegram puedes consultar todas las ofertas en Megabazar.es

15 Comentarios

  1. djdanip

    hola, muchas gracias por el tuto, tengo una duda, tengo aquí parado un nodemcu y el pn532, son los mismos pines de conexión en el nodemcu que en el wemos mini d1, es decir el d1 d2 y d6????????????

    Reply
    • eduardo

      En principio si, D1 y D2 son los del I2C y el D6 si no recuerdo mal puede ser cualquiera, por lo que si, te vale.

      Reply
  2. Djdanip

    Hola de nuevo, lo tengo funcionando perfectamente, pero ahora me ocurre un problema, cuando pasan unas horas que no hay movimiento en el sensor, deja de leer los tags, y tengo que reiniciar desde espeasy o quitándole la corriente para que vuelva a funcionar, y es un problema por que lo tengo para la alarma con lo cual cuando llego a casa no puedo desconectarla por que no me lee el sensor, alguna idea de que puede ser o como podría hacer para que cada cierto tiempo se reiniciara solo.

    Reply
    • eduardo

      Hola, tienes el pin de reset puesto y configurado en ESPEasy?

      Reply
      • djanip

        si, lo tengo todo como en el tutorial lo explicas,

        Reply
  3. Osvaldo

    Hola muy bueno el tutorial! Estoy por hacer una reforma en una cerradura onity y queria saber si puedo alimentar este sistema con pilas? y que pin puedo usar para enviar un pulso que accione el mecanismo de la cerradura?

    Reply
  4. Emilio

    hola, siguiendo el tutorial me ocurre un problema que debe ser algo de configuración:
    La segunda vez que leo el mismo tag, no se emite el evento al server mqtt. En el log de ESP Easy Mega pone lo siguiente:

    Primera Lectura del tag -> se emite evento al server mqtt:
    3162206: PN532: New Tag: 3941987391 202
    3162438: PN532: Read error: 1
    3162738: PN532: Read error: 2
    3163038: PN532: Read error: 3
    3163038: PN532: Reset on pin: 12
    3163213: PN532: Found chip PN532 FW: 1.6

    Cuando vuelvo a leer el mismo tag una segunda vez -> no se emite evento:
    3168206: PN532: Old Tag: 3941987391 203
    3168505: PN532: Old Tag: 3941987391 204
    3168806: PN532: Old Tag: 3941987391 205
    3169105: PN532: Old Tag: 3941987391 206
    3169405: PN532: Old Tag: 3941987391 207
    3169706: PN532: Old Tag: 3941987391 208

    Es como que el ESP Easy Mega guarda el último valor del tag y detecta que es el mismo.

    ¿Alguna sugerencia/solución?

    Muchas gracias

    Reply

Contestar

Tu e-mail no será publicadoRequired fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*


El periodo de verificación de reCAPTCHA ha caducado. Por favor, recarga la página.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Lost Password

Registro