Fondo
Tengo un sistema híbrido de domótica que incluye algunos dispositivos X10 antiguos, dispositivos Philips Hue, dispositivos Wemo y dispositivos TP-Link. Parte del sistema consiste en un software que emula un puente Philips Hue (HA-Bridge) que me permite controlar dispositivos mediante la ejecución de programas y scripts de Linux. Esto me permite usar controladores de radiofrecuencia X10 antiguos y detectores de movimiento en mi domótica. Hasta ahora ha funcionado de maravilla.
Encontré un artículo sobre cómo actualizar dispositivos Tuya con Tuya-Convert y pensé que sería una buena idea. Así que fui a Amazon y compré unos enchufes inteligentes Tuya económicos.
Desafortunadamente, los programas de conversión de Tuya fallaron en mis sistemas. Después de intentar depurarlos un tiempo, me di por vencido y dije "¡Al diablo!". Busqué una interfaz de línea de comandos que controlara los enchufes. Encontré varias, pero, una vez más, ninguna parecía funcionar de forma sencilla. Así que, una vez más, me di por vencido y dije "¡Al diablo!".
Solución
Como parte de las iniciativas mencionadas, visité el sitio web para desarrolladores de Tuya IoT para obtener claves de autorización. Al regresar, encontré una demostración que mostraba el control de un dispositivo, escrita en Python. Puedes ver la página aquí: https://developer.tuya.com/en/demo/python-iot-development-practice
Esta página documentó claramente los pasos necesarios y el código Python. Descargué el código Python y lo abrí en un editor.
Las líneas 3 y 4 requirieron reemplazar el ID y el secreto del cliente de demostración con los que obtuve de Tuya.
La línea 13 debía cambiarse para apuntar a la región de EE. UU.
La línea 85 necesitaba ser editada reemplazando el ID del dispositivo con el ID de mi dispositivo.
En ese momento, ejecuté el código y encontró mi dispositivo, pero no logró controlarlo. Aunque estuve tentado de tirar la toalla y decir "¡Al diablo!", observé atentamente el resultado, que mostraba el conjunto de instrucciones que usaba el enchufe inteligente:
conjunto de instrucciones del dispositivo { "resultado": { "categoría": "cz", "funciones": [ { "código": "interruptor_1", "desc": "interruptor 1", "nombre": "interruptor 1", "tipo": "booleano", "valores": "{}" }, { "código": "cuenta regresiva_1", "desc": "cuenta regresiva 1", "nombre": "cuenta regresiva 1", "tipo": "entero", "valores": "{\"unidad\":\"s\",\"mín\":0,\"máx\":86400,\"escala\":0,\"paso\":1}" } ] }
Al ver que el "código" se llamaba "switch_1", miré el código de Python y vi que la cadena que se enviaba al dispositivo era:
d = {“comandos”:[{“código”:”cambiar”,”valor”:s},]}
Cambié el “switch” a “switch_1” ¡y funcionó!
Ahora tengo una plantilla disponible. Estoy modificando la demo de Python para usar un archivo de configuración JSON que contenga las claves, los ID y los nombres de los dispositivos. Con esto, puedo ejecutar el comando python smartplug.py name on|off desde la línea de comandos.
¡¿No hay ningún código Python en esa página?!
Las instrucciones para obtener el código Python están en el enlace de la publicación: https://developer.tuya.com/en/demo/python-iot-development-practice.
Busca la línea "Import code: pip3 install tuya-connector-python". Ese es el comando pip para descargar el código.
Chelín