El Advantech ECU-1051 es un gateway IoT industrial que publica sus tags de E/S por MQTT. Esta guía lo configura en EdgeLink Studio y envía esos tags a Ubidots, donde cada tag se convierte en una variable del mismo dispositivo.
Requisitos
Una cuenta activa de Ubidots.
Un cable Ethernet.
Una computadora con sistema operativo Windows.
1. Configura el gateway y el entorno de desarrollo
Conecta la ECU-1051 a la fuente de alimentación.
Conecta la ECU-1051 a tu router (LAN) usando un cable Ethernet.
Descarga e instala Advantech EdgeLink Studio desde el enlace proporcionado en la sección de Requisitos.
Consejo: cada puerto LAN en el gateway tiene un LED de estado que confirmará si el dispositivo está correctamente conectado al router y si está correctamente alimentado.
2. Crea el Proyecto
Abre la utilidad Advantech EdgeLink Studio. Busca el ícono que se asemeja a una pantalla de computadora en la parte inferior izquierda de la pantalla, haz clic en él y luego dirígete a la opción "Buscar":
Una vez que el gateway haya sido encontrado, la utilidad la mostrará junto con su dirección IP. Copia esta dirección para usarla más tarde. Se verá así:
Dirígete al ícono que se asemeja a un martillo y luego a la esquina superior izquierda a la opción "Crear Proyecto"; aparecerá una ventana donde debes poner el nombre de tu proyecto, autor y descripción, dejando la ruta en su configuración predeterminada. Cuando hayas terminado de llenar los campos, presiona el botón "OK" para guardar los cambios.
El proyecto se mostrará en la pestaña "Configuración del Proyecto". Haz clic derecho sobre él y luego haz clic en "Agregar Dispositivo".
Luego aparecerá una nueva ventana donde deberás configurar los siguientes parámetros:
Nombre: Nombre del proyecto actual.
Modelo: Selecciona ECU-1051TL-R10A de la lista que se mostrará.
Contraseña: No cambies nada en este campo.
Identidad: Cambia de "Node ID" a "Dirección IP".
Dirección IP: Ingresa la dirección IP que copiaste anteriormente (al buscar el dispositivo).
Zona Horaria: Configura la zona horaria según tu ubicación geográfica.
Descripción (opcional): Establece una descripción significativa para tu proyecto.
Cuando hayas terminado, presiona el botón "Aplicar" para guardar los cambios.
Las dos imágenes siguientes muestran los pasos mencionados anteriormente:
Como notarás, todas las carpetas del proyecto se muestran ahora en la pestaña "Configuración del Proyecto":
3. Crea las etiquetas I/O para enviar datos simulados
Esta guía simulará tres dispositivos diferentes que transmiten datos a el gateway utilizando la funcionalidad "Etiqueta de Usuario": un sensor de temperatura, un sensor de humedad y el estado de un motor.
Para hacerlo, dirígete a "Centro de Datos" → "Etiqueta de Usuario" → "Agregar...". Allí, deberás configurar:
Nombre: boilerTemperature
Tipo de Datos: Analógico.
Valor Inicial: Puedes establecer cualquier valor.
Lectura/Escritura: Deja esta opción como está por defecto.
Descripción: Esto es opcional.
Después de llenar los campos, presiona el botón "Ok" para guardar los cambios.
[Opcional]
Crea las otras dos variables:
Nombre de la variable | Tipo de Datos |
motorStatus | Discreto |
boilerHumidity | Analógico |
Puedes establecer cualquier valor inicial que desees y también dejar "Lectura/Escritura" como está.
4. Envía datos a Ubidots
Es hora de manipular el endpoint al que el gateway está publicando para analizar los datos. Dirígete a tu cuenta de Ubidots → "Dev Center" → "Functions" y crea una nueva UbiFunction haciendo clic en el ícono "+". La ventana debería verse así:
Edita el nombre de la función a "mqttadvantech", establece el "Método" en POST, selecciona "Python 3.14 Lite" como tiempo de ejecución y en la sección de "Token" establece "Token Predeterminado". Finalmente, elimina todo el código y pega el siguiente teniendo en cuenta que debes editar la variable "token" para que coincida con tu Token de Ubidots:
import json
import requests
from datetime import datetime as dt
BASE_URL = "https://industrial.api.ubidots.com"
token = 'PON-TU-TOKEN-AQUÍ'
def main(args: dict = {}):
payload = args["payload"]
if isinstance(payload, str):
payload = json.loads(payload)
data = payload["d"]
date_str = payload["ts"]
timestamp = int(dt.strptime(date_str, "%Y-%m-%dT%H:%M:%S%z").timestamp()*1000)
device_label = args["topic"].split("/")[4]
payload = parse_advantech_data(data)
print(device_label)
res = send_data(device_label, payload, token, **{"timestamp":timestamp})
return {"status": res.status_code, "text": res.text}
def parse_advantech_data(data):
payload = {}
for tag in data:
var_label = tag["tag"]
value = tag["value"]
payload[var_label] = {
"value": value
}
return payload
def send_data(device, payload, token, **params):
url = f"{BASE_URL}/api/v1.6/devices/{device}/"
headers = {"X-Auth-Token": token, "Content-Type": "application/json"}
res = make_request("post", url, headers=headers, params=params, body_json=payload, attempts=5)
return res
def make_request(
method,
url,
params=None,
headers=None,
body=None,
body_json=None,
attempts=1,
timeout=10,
):
"""
Function to make a request with timeout and retries
"""
req_session = requests.Session()
req_adapter = requests.adapters.HTTPAdapter(max_retries=attempts)
req_session.mount("https://", req_adapter)
response = req_session.request(
method=method.upper(),
url=url,
params=params,
headers=headers,
data=body,
json=body_json,
timeout=timeout,
)
req_session.close()
response.raise_for_status()
return response
5. Configura el MQTT
El siguiente paso es configurar los parámetros MQTT y para hacerlo, dirígete a "Cloud" → "SimpleMQTT". Luego aparecerá una nueva pestaña y en ella tendrás que desplazarte hacia abajo y editar los siguientes ajustes:
Habilitar: Marca la casilla para habilitar la configuración de MQTT.
Host: functions.ubidots.com
Nombre de Usuario: El nombre de usuario de tu cuenta de Ubidots.
Contraseña: Tu Token de Ubidots.
Tópico de Datos: /prv/<tu-nombre-de-usuario-ubidots>/mqttadvantech/gatewayadvantech
Período de Publicación: Cualquier período de publicación que desees, ten en cuenta que esta variable se expresa en segundos.
Después de llenar todos los campos mencionados, dirígete a "Nombre de la Etiqueta" y, justo debajo, encontrarás un texto que dice "Haz doble clic para editar". Hazlo y luego aparecerá una pantalla donde deberás seleccionar qué etiquetas se van a publicar a través de MQTT: dirígete a la sección de "Etiquetas de Usuario" y selecciona todas las etiquetas que creaste para este propósito, luego presiona el botón "OK" y luego "Aplicar".
Como se mencionó antes, esta guía emula tres variables diferentes, por lo que esta parte podría diferir un poco de la tuya:
Después de aplicar la configuración de MQTT, puedes colapsar todas las subcarpetas del proyecto mientras dejas seleccionada el gateway. Luego presiona "Guardar", seguido de "Descargar Proyecto" para cargar el firmware en el gateway:
Aparecerá la siguiente ventana. En ella, selecciona "Forzar Descarga", presiona "Descargar" y el firmware comenzará a cargarse en el gateway. Es posible que aparezca un mensaje emergente preguntando sobre la instalación de controladores de hardware adicionales, acéptalo y deja que finalice la carga.
6. Visualiza los datos en Ubidots
Dirígete a la sección de "Dispositivos" en tu cuenta de Ubidots, donde verás un dispositivo etiquetado como "gatewayadvantech" con datos ingresando.
¿Cómo envío datos reales de un PLC o de Modbus en lugar de tags simulados?
Esta guía usa User Tags para que puedas probar sin cableado de campo. En una instalación real, agrega tu PLC o dispositivo Modbus al proyecto en EdgeLink Studio y crea I/O Tags para sus registros. Luego, en la lista Tag Name de SimpleMQTT, selecciona esos I/O Tags en lugar de los User Tags.
La UbiFunction no cambia: cada tag que publica el gateway se convierte en una variable del mismo dispositivo en Ubidots. Para un ejemplo completo con Modbus TCP, consulta Modbus TCP en EdgeLink Studio: ECU-1051 y ADAM-6717.
Solución de problemas: ¿por qué no llegan datos a Ubidots?
El gateway no aparece en la búsqueda de EdgeLink Studio. Revisa el LED de estado del puerto LAN y que el PC y el gateway estén en la misma red.
No aparece ningún dispositivo en Ubidots. Revisa los ajustes de SimpleMQTT: Host functions.ubidots.com, User Name tu nombre de usuario de Ubidots y Password tu token. El Data Topic debe ser /prv/<tu-usuario-de-ubidots>/<label-de-la-funcion>/<label-del-dispositivo>, con el label de la función tal como aparece en la URL del endpoint de tu función. La función toma el label del dispositivo del último nivel del tópico.
La función se ejecuta pero no se guardan valores. Abre los logs de la función. Una respuesta 401 o 403 significa que el token del código está mal. Un error de fecha significa que el reloj o la zona horaria del gateway no están configurados: la función espera el campo ts en un formato como 2024-01-31T12:00:00+0000.
Faltan algunos valores. Revisa que todos los tags que necesitas estén seleccionados en la lista Tag Name de SimpleMQTT. Revisa también el Publish period, que está en segundos.
Otras guías de Advantech













