La mitad del equipo barato de casa inteligente en Amazon es Tuya por dentro, en secreto. Los enchufes, los interruptores, los breakers chiquitos, todo. Es hardware genuinamente bueno para lo que cuesta. Lo que pasa cuando aprietas el botón es otra cosa.
De fábrica, cada encendido y cada apagado hace un viaje de ida y vuelta a la nube de Tuya. Tocas tu teléfono, el comando sale volando a un servidor en algún lugar lejano, y ese servidor se da la vuelta y le dice al enchufe de tu sala que se prenda. El enchufe está a tres metros de ti, y la instrucción le dio la vuelta al planeta para llegar. Eso te compra un retraso que de verdad se siente, una dependencia dura de que tu internet siga arriba, y un registrito silencioso de cuándo prendes y apagas las cosas saliendo de tu casa.
Yo no quería nada de eso. Los dispositivos Tuya también hablan un idioma local, ahí mismo en tu propia red, y una vez que les sacas unos cuantos valores secretos, no tienes que volver a tocar la nube nunca más.
Dos tipos de Tuya, dos formas de entrar
El equipo Tuya viene en dos sabores, y hay que tratarlos distinto.
Los de WiFi (la mayoría de los enchufes e interruptores) hablan el protocolo local de Tuya directo por tu red. Los puedes consultar y comandar directamente por IP, sin intermediarios. Mantengo una librería pequeña en C++ y un puente MQTT que hacen exactamente esto, así que los dispositivos caen en Home Assistant como interruptores normales y corrientes.
Los de Bluetooth (muchos de los breakers funcionan así) son los quisquillosos. Se emparejan usando SMP y envuelven sus comandos en cifrado AES-CBC, así que no les puedes simplemente gritar comandos. Para esos uso un ESP32-C3 diminuto como puente: hace el emparejamiento y el handshake una sola vez, y después le entrega a Home Assistant un interruptor limpio y aburrido por MQTT. Desde el panel nunca adivinarías que hay algo raro por debajo.
Conseguir las llaves
Los dos caminos necesitan un puñado de valores de la nube de Tuya, pero una sola
vez, nada más para aprender la identidad de cada dispositivo. La forma más fácil
de sacarlos es una herramienta llamada tinytuya:
pip install tinytuya
python -m tinytuya wizard
El wizard te va guiando y te devuelve el Device ID, la Local Key, el UUID y la MAC. Eso es todo lo que el protocolo local necesita. Después de eso puedes cerrar el app de Tuya y olvidar que existe.
Por qué vale la pena
- Es instantáneo. Sin viaje a la nube, el interruptor cambia a velocidad de red local.
- Es privado. Los comandos y el historial de encendido y apagado nunca salen de tu casa.
- Sigue funcionando. Se cae el internet y tus automatizaciones siguen igual.
- Sin ataduras. Es firmware abierto que puedes leer, cambiar y poseer.
Todo es de código abierto, así que eres muy bienvenido a cablearlo tú mismo:
- nanotuya, la librería en C++ del protocolo local de Tuya por WiFi
- hms-tuya, el puente MQTT que mete esos dispositivos WiFi en Home Assistant
- hms-esp-tuya-ble, el puente BLE a MQTT en ESP32-C3 para los breakers Tuya Y si prefieres saltarte los rompecabezas de emparejamiento y simplemente enchufar un puente que ya funciona, también los construyo. De cualquiera de las dos formas, tu casa inteligente deja de llamar a casa.
