Cómo programar macros en Excel que envíen comandos a dispositivos inteligentes

Última actualización: 07/08/2025
Autor: Isaac
  • Excel puede enviar comandos HTTP o MQTT mediante macros en VBA
  • Con Azure IoT Hub y Mosquitto es posible establecer comunicación directa con dispositivos
  • Se pueden crear flujos completos en Excel para enviar y recibir datos de sensores
  • El entorno requiere configuración de librerías, SDKs y scripts para una integración eficaz

Macros en Excel para domótica

¿Alguna vez te has preguntado si es posible controlar dispositivos inteligentes directamente desde Excel? Gracias a las macros de Excel y protocolos como HTTP o MQTT, esta hoja de cálculo puede convertirse en una auténtica consola de control domótico. Esta combinación resulta ideal para pequeñas automatizaciones caseras o empresariales sin necesidad de desarrollar interfaces o software adicional.

Excel, más allá de los cálculos y las tablas dinámicas, puede actuar como punto de control para enviar comandos hacia dispositivos conectados a través de Internet. Utilizando macros en VBA (Visual Basic for Applications) y apoyándose en bibliotecas MQTT o clientes HTTP, es posible establecer comunicación con dispositivos IoT, ya sea para encender luces, regular temperatura o gestionar sensores.

Requisitos previos y configuración básica del entorno

Antes de lanzarnos a escribir una macro funcional, es importante tener a punto el entorno de trabajo. Dependiendo de si trabajas sobre Windows o Linux, los pasos pueden variar ligeramente, aunque en ambos casos necesitarás algunas herramientas específicas.

Entorno Excel MQTT configuración

Primero, asegúrate de tener acceso a Visual Studio y CMake instalados si estás en Windows. Es fundamental que la opción de desarrollo C++ esté activa, ya que compilarás algunos ejemplos. También es importante instalar Mosquitto en su versión x64, pues será la base para el protocolo MQTT.

Para usuarios de Linux, basta con ejecutar unos comandos en la terminal para instalar las herramientas de compilación y la biblioteca cliente de Mosquitto:

sudo apt install cmake g++
sudo apt install libmosquitto-dev

En ambos entornos, contar con una cuenta activa en Azure es recomendable si vas a integrar un IoT Hub como intermediario entre Excel y tus dispositivos.

Configuración del IoT Hub y dispositivos en Azure

El siguiente paso consiste en preparar tu nube para recibir y enviar mensajes desde y hacia los dispositivos. Azure IoT Hub proporciona una infraestructura completa y gratuita a pequeña escala para realizar estas pruebas.

  Cómo integrar Outlook con OneNote: guía completa y mejores trucos

Usando la interfaz de línea de comandos de Azure, puedes crear un grupo de recursos y un hub con los siguientes comandos:

az group create --name mqtt-sample-rg --location eastus
az iot hub create --name my-hub --resource-group mqtt-sample-rg --sku F1

Una vez creado el infraestructura, deberás registrar un dispositivo virtual que actuará como receptor o emisor de los comandos.

az iot hub device-identity create --hub-name my-hub --device-id mqtt-dev-01

Para que la comunicación esté autorizada, es necesario generar un token SAS:

az iot hub generate-sas-token --device-id mqtt-dev-01 --hub-name my-hub --du 7200

Azure IoT con Excel y MQTT

Descarga del repositorio y preparación del código

Azure facilita un repositorio de código con ejemplos listos para usar en C o Python. Puedes clonarlo desde GitHub:

git clone https://github.com/Azure-Samples/IoTMQTTSample.git

Una vez clonado, busca el archivo mosquitto/src/config.h y añade allí las variables con tus datos: nombre del hub, código del dispositivo y tu token SAS. Estos datos son fundamentales para autenticar la conexión.

#define IOTHUBNAME "my-hub"
#define DEVICEID "mqtt-dev-01"
#define SAS_TOKEN "SharedAccessSignature sr=my-hub.azure-devices.net..."

Compilar los ejemplos y probar la conexión

Luego de tener todo listo, es momento de compilar los ejemplos y verificar las comunicaciones. Desde el directorio del proyecto, ejecuta:

cd mosquitto
cmake -Bbuild
cmake --build build

Los binarios se generarán en ./build en Linux o en ./build/Debug en Windows. Desde allí, puedes comenzar a ejecutar los diferentes ejemplos.

Envío de mensajes desde el dispositivo a la nube

El binario mosquitto_telemetry permite enviar mensajes al IoT Hub. Antes, puedes abrir un monitor de eventos con:

az iot hub monitor-events --hub-name my-hub

Luego, ejecuta el binario:

./build/mosquitto_telemetry

Las funciones del código utilizan temas MQTT como «devices/mqtt-dev-01/messages/events/» para enviar datos, simulando una situación real de recolección de datos por un sensor.

Recepción de mensajes desde la nube al dispositivo

También puedes hacer lo contrario: enviar instrucciones desde la nube y capturarlas en el dispositivo. Ejecuta:

./build/mosquitto_subscribe

Luego, desde la CLI, envía un mensaje:

az iot device c2d-message send --hub-name my-hub --device-id mqtt-dev-01 --data "hello world"

El sistema escucha en el tema DEVICEMESSAGE («devices/mqtt-dev-01/messages/#») y muestra el mensaje recibido.

  Cómo conectarse a una instancia EC2 en AWS con SSH

Actualización del dispositivo gemelo (Device Twin)

Un «device twin» funciona como la identidad digital de tu dispositivo. Puedes usarlo para reportar estados o recibir configuraciones. El ejemplo mosquitto_device_twin permite establecer propiedades como «temperature»:

{"temperature": 32}

Tras publicarlas, también puedes recuperarlas desde la nube con otro mensaje. Es útil para mantener una vista sincronizada de la situación física.

Integración con macros en Excel

Hasta ahora hemos visto cómo comunicar dispositivos con Azure usando MQTT. Pero, ¿cómo se vincula esto con Excel? La clave radica en emplear macros con VBA que realicen llamadas HTTP o ejecuten scripts externos (como Python) que se comuniquen vía MQTT.

Un ejemplo simple para enviar datos desde Excel mediante HTTP sería este:

Sub EnviarComando()
    Dim http As Object
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "POST", "https://miapi/mqtt", False
    http.setRequestHeader "Content-Type", "application/json"
    http.Send "{\"mensaje\":\"Encender luz\"}"
End Sub

Otra alternativa es que Excel invoque un script Python con paho-mqtt para enviar mensajes MQTT en segundo plano, lo cual resulta muy flexible y fácil de implementar.

Buenas prácticas, limpieza de recursos y próximos pasos

Al finalizar tus pruebas, es recomendable cerrar los servicios para evitar cargos innecesarios. Puedes eliminar completo tu grupo de recursos con:

az group delete --name mqtt-sample-rg

O solo eliminar el dispositivo registrado si prefieres:

az iot hub device-identity delete --hub-name my-hub --device-id mqtt-dev-01

También puedes eliminar el hub y mantener el grupo:

az iot hub delete --name my-hub

Programar macros en Excel para enviar comandos a dispositivos inteligentes es una estrategia práctica e innovadora para integrar herramientas cotidianas con el IoT. Gracias a protocolos como MQTT y plataformas como Azure, una simple hoja de cálculo puede transformarse en un panel de control real para tus dispositivos; además, con bibliotecas libres como Mosquitto y herramientas como Visual Studio o scripts en Python, las posibilidades son prácticamente ilimitadas sin requerir conocimientos avanzados de programación.

Deja un comentario