A lo largo de este blog, he dedicado mucho tiempo a un proyecto de domótica, a diferencia de otros ejemplos que se puede encontrar en la web, mi idea es tratar de siempre mantener el control sobre el software que manejan los dispositivos IOT y evitar lo más que se pueda de depender de servidores externos, ya que no tengo certeza de su disponibilidad a futuro, ni de los datos que manejan entre sus dispositivos y mi red.
Por ello es que he quitado el firmware de fabrica de otros dispositivos como el SonOff RF-Bridge, y lo he cambiado recientemente por Tasmota.
- Quitar las restricciones del fabricante para acceder al dispositivo desde la red.
- Registrar en los asistentes (Alexa y Google Home) el dispositivo IOT correctamente; si es una lampara que sea una lampara, si es una TV o Un Ventilador, etc. que los asistentes los reconozcan como tal y no como un conjunto de switch que deben programarse mediante rutinas para obtener un buen resultado.
- Tiempo de respuesta mucho más rápidos; ya que no ahorramos tener que pasar desde los servidores de nuestro asistente hacia los servidores del fabricante y que este luego le comunique la orden a nuestro dispositivo. Al quitar ese servidor extra el tiempo de respuesta es casi instantáneo.
- Eliminar la incertidumbre de que el fabricante mantenga sus servidores operativos y que no deje nuestros dispositivos obsoletos.
Tomando en cuenta estos puntos a favor y en contra dependerá de cada uno si desea seguir con esta guía, para mi, tener control total sobre el dispositivo me parece una opción mucho más llamativa que seguir dependiendo de un tercero.
1.- Soldar un adaptador USB a Serial a nuestro dispositivo.
Al abrir el dispositivo UFO-R1 nos daremos cuenta que tiene disponible una interfaz UART TTL a 3.3v, utilizaremos esos pines para soldar momentáneamente un adaptador USB-Serial y de esta forma acceder directamente al micro-controlador para borrar y reescribir su memoria por un nuevo firmware, en este caso Tasmota.
Trabajar con un adaptador USB-Serial es muy sencillo, para ello sólo se debe considerar aplicar la siguiente conexión de pines:
|
Las lineas TX y RX van intercambiadas, para que el pin de emisión llegue al de recepción y viceversa. |
Ejemplo de mi conexión a mi dispositivo:
2.- Verificar que nuestro PC haya detectado correctamente el adaptador serial USB
Le recomiendo que primero revise la siguiente guía, ya que indica todo lo básico para operar con micro-controladores, en ella encontrará las instrucciones para instalar drivers, herramientas como Homebrew, Python y sus respectivas dependencias, también podrá ver cómo realizar una prueba de conexión:
https://loqueseaqueaprenda.blogspot.com/2021/02/preparar-equipo-para-trabajar-con.html
Para continuar, utilice el siguiente comando para listar los dispositivos USB-Serial:
En caso de tener más de un dispositivo que funcione en serie conectado al computador, les recomiendo que corran el comando sin el adaptador USB-Serial conectado, y que luego lo vuelvan a correr cuando conecten el adaptador, de esta forma podrán identificar el correcto, ejemplo:
3.- Sobre-escribir la memoria del micro controlador (Flashing)
Para acceder al modo lectura/escritura es necesario energizar el micro-controlador manteniendo un puente de "reset" por algunos segundos (no es lo mismo que el "botón de reset" que incluye la tarjeta), para realizar este puente se puede soldar un cable al pin I00 y juntarlo con la tierra GND durante un par de segundos.
Luego de que el micro-controlador encienda puede quitar el puente para continuar con los comandos siguientes que le permitirán cambiar el firmware.
Ejecutaremos el primer comando para verificar la información del chip y conocer la capacidad de su memoria:
esptool.py --port /dev/cu.usbserial-A9KFZXD5 flash_id
Este entregará toda la información importante sobre nuestro micro-controlador:
3.1 Respaldar firmware original
Lo primero a realizar es el respaldo del firmware actual, para ello, haga el puente de "reset" con el cable soldado a I00, energice el dispositivo y luego corra el siguiente comando (como la capacidad del chip es de 2MB el segundo argumento de read_flash es 0x200000, en caso de ser de 4MB sería 0x400000):
esptool.py --port /dev/cu.usbserial-A9KFZXD5 read_flash 0x00000 0x200000 image.bin
3.2 Borrar la memoria
Para borrar la memoria del micro controlador, debe reiniciar nuevamente el dispositivo con el puente de "reset" y ejecutar el siguiente comando:
esptool.py --port /dev/cu.usbserial-A9KFZXD5 erase_flash
3.3 Escribir la imagen de Tasmota
Para este paso estoy usando un equipo con Mac con OSx High Sierra, dado que en mi caso poseo un adaptador a puerto serie (Ft232rl), al ser una interfaz antigua (con casi 60 años de existencia) es muy usada, así que existen variadas formas de escribir el firmware sobre la placa, por lo que para este ejemplo usaré la forma más "compleja", o sea a travez de la terminal, aunque si desean un método más sencillo pueden buscar una guía para actualizar el firmware mediante el IDE de Arduino.
Descargar el archivo binario desde los release de tasmota.
El archivo a descargar es: tasmota-ir.bin
4.- Conectar el dispositivo al Wifi
Luego de escribir la imagen de Tasmota sobre el micro-controlador, debemos reiniciar el aparato, desconectarlo de la energía y volverlo a conectar, no es necesario hacer el puente de "reset", ya que el dispositivo ya se encuentra con el nuevo firmware.
El dispositivo levantará una red Wifi llamada tasmota-xxxxx-xxx (las xxxx variará según el ID de cada dispositivo), conectarse a esta red e ingresar a la IP 192.168.4.1.
Al ingresar a la ip del dispositivo, probablemente la primera pantalla que muestre sea la de configuración Wifi, aquí puede ingresar los datos de su red Wifi como nombre de la red: AP1 SSID y su contraseña AP1 Password.
Presione el botón Save para guardar los datos y se reiniciará el dispositivo.
En caso de que al ingresar a la dirección IP su dispositivo este inicie en la pantalla principal, puede configurar la red Wifi ingresando a "Configuration":
Ingresar a "Configure Wifi":
Agregar el "SSId" y "password" de tu red:
Presionar el botón "Save" y esperar que el dispositivo reinicie.
El siguiente paso requiere tener acceso a su Endpoint Wifi para poder visualizar los aparatos conectados a su red y saber cual es la dirección IP que se le ha otorgado al dispositivo con Tasmota.
Ahora que ya conocemos su dirección IP, podemos ir hacia ella y completar la configuración.
Importante: Si ya logra ver su dispositivo funcionando con Tasmota, puede des-soldar el adaptador serie ya que no será necesario a futuro.
4.1 Establecer una dirección IP fija
Siempre es recomendable manejar un dirección IP fija en el dispositivo, de esta forma evitamos tener que buscar en el endpoint Wifi cada vez que necesitemos entrar para hacer algún cambio.
Tasmota permite establecer un dirección IP fija ingresando un comando en su consola de configuración, acá un ejemplo que yo he usado para configurar mi dispositivo, establezca los datos que se acomoden a su entorno de red:
Para llegar a la consola ingrese a "Console" en el menú principal:
Ejemplo de mi consola de Tasmota al ingresar los comandos para establecer la dirección IP fija.
Comandos:
Ejecute el siguiente comando para ingresar una dirección IP para el dispositivo:
Ejecute el siguiente comando para ingresar la puerta de enlace de su red:
Ejecute el siguiente comando para ingresar la mascara de subred:
Ejecute el siguiente comando para reiniciar el dispositivo:
Luego de reiniciar el dispositivo ya podemos ingresar a la nueva IP establecida:
5.- Configurar el módulo para UFO-R1
Ingresar a "Configure Module":
Seleccionar la opción "YTF IR Bridge (62)":
Presionar el botón "Save" y esperar que el dispositivo reinicie.
6.- Configurar identificación para el dispositivo
Para facilitar la identificación del dispositivo hay dos secciones que ayudan a encontrarlo en la red, la primera se encuentra en la sección de configuración Wifi, cambie el Hostname y presiones el botón "Save".
Y la segunda opción es ir a "Configuration" => "Configure Other":
Defina un nombre en la sección Device Name:
Finalmente presione "Save" para guardar y reiniciar el dispositivo.
7.- Recibir y emitir señales IR
Para probar que disponemos de las mejoras en este dispositivo, primero debemos ir a la consola de Tasmota.
Una vez dentro podremos ver los eventos que genera el sensor de infra-rojos, por ejemplo, si acercamos un control remoto IR y presionamos un botón cerca del dispositivo UFO-R1, este nos mostrará la información del dato emitido:
|
En este ejemplo puede se puede ver los datos que recibió luego de presionar un botón del control remoto de mi aire acondicionado marca Electra. |
|
En este ejemplo puede verse los datos recibidos luego de presionar el botón de volumen + del control remoto de mi equipo de música Sony |
Emitir señales IRPara emitir señales IR, recomiendo revisar esta guía oficial del equipo de Tasmota, ya que explica de forma muy clara como se debe emitir una señal para diferentes tipos de equipos IR-controlados.
https://tasmota.github.io/docs/Tasmota-IR/
La principal diferencia es que los aires acondicionados manejan sus datos en formato JSon, y para el resto de los aparatos electrónicos se debe enviar el dato codificado.
Ejemplo de orden de encendido de mi equipo de música Sony:
IRsend {"Protocol":"SONY","Bits":12,"Data":"0xA81","DataLSB":"0x5081","Repeat":0}
Ejemplo de orden de encendido de mi aire acondicionado mara Electra:
IRsend IRhvac {"Vendor":"ELECTRA_AC", "Power":"On","Mode":"Cool","FanSpeed":"max","Temp":24}
Comentarios
Publicar un comentario