Controlar un enchufe inteligente Tuya desde la línea de comandos

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.

2 responde a “Controlling a tuya smart plug from the command line”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *