Ir al contenido principal
Todas las coleccionesConecta tus dispositivos
Conectar el enrutador VPN celular Robustel R1520 Dual-SIM a Ubidots a través de MQTT
Conectar el enrutador VPN celular Robustel R1520 Dual-SIM a Ubidots a través de MQTT

Este artículo explora los pasos de configuración necesarios para configurar y conectar el Robustel R1520 a Ubidots utilizando el protocolo MQTT.

Sergio M avatar
Escrito por Sergio M
Actualizado hace más de 2 meses

El R1520 de Robustel es un gateway de alto rendimiento, de grado industrial, provisto de conectividad de red 4G LTE de doble SIM, lo que permite un acceso a internet rápido y confiable en áreas remotas. Tiene las interfaces necesarias para conectarse a sensores/dispositivos que cuentan con varios protocolos de conexión diferentes, como Modbus Serial RS-485, RS-232, Modbus TCP/IP, Modo AP de Wi-Fi, entrada/salida digital (DI/DO), entrada analógica (AI).

Además de sus amplias características de hardware, el software del R1520 también se destaca: Puedes gestionar y configurar el R1520 accediendo a RobustOS, el sistema operativo de router propietario de Robustel, desde cualquier navegador web. RobustOS facilita al usuario la configuración y gestión de los servicios en el R1520, como MQTT, Modbus, etc., gracias a su enfoque sin código.

Requisitos

1. Configura el R1520 para conectarse a internet

  • Proporciona energía al R1520 conectándolo usando el conector de alimentación incluido como se muestra a continuación:

  • Conecta el puerto Ethernet del router a una PC con un cable Ethernet estándar.

  • Para poder iniciar sesión en el R1520, configura manualmente la PC con una dirección IP estática en la misma subred que la dirección del gateway (192.168.0.1); por lo tanto, la dirección IP estática de tu PC debe estar en la subred 192.168.0.x.

  • Ingresa a la interfaz web del gateway, escribiendo 192.168.0.1 en la barra de búsqueda de tu navegador web:

  • Cuando se te soliciten las credenciales, usa admin en ambos campos y presiona el botón LOGIN.

Nota: Los siguientes pasos están destinados a configurar el R1520 para conectarse a internet utilizando el modo Cliente Wi-Fi. Si necesitas conectarlo a internet usando Ethernet o celular, consulta la documentación oficial.

  • Una vez que se cargue la interfaz web, haz clic en Interface WiFi y establece los siguientes parámetros:

    • Modo: Cliente.

    • Región: establece el código de tu país de acuerdo con ISO 3166-1 alpha-2.

  • Haz clic en Interface Link Manager. Haz clic en el menú desplegable Primary Link y selecciona WLAN. Una vez que hayas hecho esto, la entrada WLAN se mostrará en la sección Link Settings.

  • Haz clic en el botón edit correspondiente a la entrada WLAN .

  • Una vez en la página de configuración de WLAN, edita los siguientes ajustes como se especifica a continuación y luego haz clic en el botón Submit .

    • Tipo de Conexión: DHCP.

    • SSID: Establece el SSID de tu red local.

    • Conectar a SSID Oculto: Establece esta opción de acuerdo a tus requisitos. Sin embargo, en esta guía, estará deshabilitada.

    • Contraseña: Establece la contraseña de tu red local.

    • Habilitar: Habilita esta función de acuerdo a tus requisitos. En esta guía, estará habilitada.

  • Después de hacer clic en el botón Submit , serás llevado a la visualización anterior. Haz clic en el botón Submit de esta página y luego haz clic en Save & Apply. Si este paso se completa con éxito, tu R1520 se conectará a internet.

2. Descarga e instala las aplicaciones E2C requeridas

  • Regístrate en Robustel's RCMS Cloud.

  • Una vez que inicies sesión, haz clic en App Center, selecciona E2C APP y luego utiliza el filtro Series para seleccionar R1520 Series.

  • Descarga tanto la e2c_s_modbus como la e2c_n_mqtt aplicaciones E2C. Estas aplicaciones permiten al usuario manejar la interfaz Modbus y el servicio MQTT respectivamente.

  • Regresa a la interfaz web del R1520.

  • Ve a System App Center.

  • Haz clic en el botón de explorar y selecciona cualquiera de las dos aplicaciones E2C descargadas previamente. Una vez que localices el archivo, haz clic en el botón Install . Repite este paso hasta que hayas instalado ambas E2C Apps y luego haz clic en el botón Save & Apply .

  • Después de instalar las dos aplicaciones, se mostrarán en la sección Installed Apps .

3. Configura el E2C-Modbus

Nota: Esta guía asume que tu sensor ya está conectado a la interfaz Modbus RS485 del R1520. Si ese no es el caso, consulta la documentación de hardware del dispositivo para saber más sobre su interfaz Modbus.

  • En la interfaz web del R1520, ve a Edge2Cloud E2C Modbus y edita los siguientes ajustes en la pestaña General Settings :

    • Habilitar: Habilita esta opción haciendo clic en el control deslizante y asegurándote de que esté en la posición ON .

    • Configurar Etiquetas en GUI: Habilita esta opción haciendo clic en el control deslizante y asegurándote de que esté en la posición ON . Esto te permitirá configurar qué esclavo Modbus y qué dirección deseas leer, así como asignar Etiquetas a ello; todo desde la interfaz gráfica.

    • Todos los demás ajustes que no se mencionaron quedan a criterio del usuario para configurarlos de acuerdo a sus requisitos.

  • En la sección Serial Port Settings edita los siguientes ajustes:

    • Puerto del Dispositivo: Selecciona COM2 del menú desplegable. Este es el puerto virtual encargado de la interfaz Serial RS485.

    • Baud Rate, Data Bits, Stop Bits, Parity: Selecciona estos ajustes de acuerdo a la configuración de tu sensor.

  • En la sección Channels , haz clic en el ícono "+" para agregar las Etiquetas:

  • Una vez que hagas clic en el ícono "+" , se mostrará la siguiente visualización. Allí, edita los ajustes de la siguiente manera:

    • Etiqueta: Esta es la etiqueta asociada a esta variable. Es decir, en el archivo JSON de salida, esta variable aparecerá como

      {"xy-md02-temperature" : <some numerical value>}
    • Tipo: Esta es la interfaz a través de la cual se ejecutará el protocolo Modbus. En esta guía, se utiliza RTU ya que el sensor está conectado a través del puerto serial al R1520. No obstante, debes seleccionar esto de acuerdo a tu implementación particular.

    • Slave ID: Esta es la dirección del dispositivo esclavo del que deseas leer.

    • Código de Función: Debes seleccionar esto de acuerdo a lo que deseas leer del sensor. En este caso, tanto la temperatura como la humedad son input register, sin embargo, selecciona esto de acuerdo a tus requisitos.

    • Dirección: Esta es la dirección del input register que se requiere leer. Ajusta este valor de acuerdo a tus requisitos.

    • Haz clic en el botón Submit para guardar los cambios.

  • Repite el proceso anterior para cada sensor/register/coil que necesites. Al final, debería verse como se muestra a continuación. Haz clic en el botón Submit y luego presiona Save & Apply.

Nota: En este ejemplo particular, se requieren enviar los valores de dos diferentes input register a Ubidots: temperatura y humedad, por eso se muestran dos diferentes Channels arriba.

  • Si todo se configuró correctamente, las lecturas del sensor pueden visualizarse en la pestaña Status como se muestra a continuación:

4. Configura el E2C-Broker

  • Ve a Edge2Cloud E2C Broker. Haz clic en la pestaña General

  • Edita los ajustes de la siguiente manera:

    • Habilitar: Establece el control deslizante en ON para habilitar el Broker.

    • Guardar mensaje en la base de datos: Establece el control deslizante en ON.

    • Habilitar Acceso Remoto: Establece el control deslizante en ON.

    • Otros parámetros no mencionados deben configurarse de acuerdo a los requisitos del usuario.

  • Haz clic en el botón Submit y luego presiona Save & Apply.

5. Configura el E2C-MQTT

  • Ve a tu cuenta de Ubidots Devices Functions.

  • Crea una nueva Function y edita su código. Pega el siguiente, pero primero, realiza los siguientes cambios:

    • Establece el token de Ubidots que deseas usar para esta aplicación en la variable token en la línea 7.

    • Edita el diccionario operations_on_data para que sus claves coincidan con las Etiquetas que estás asignando a cada registro Modbus en la E2C Modbus App del R1520.

    • Edita el diccionario operations_on_data para que sus valores coincidan con las operaciones requeridas en cada variable.

  • Por ejemplo, si usaste "xyz-sensor-reading-1" y "xyz-sensor-reading-2" como nombres de Etiquetas en la E2C Modbus App, entonces las claves del diccionario operations_on_data deberían ser "xyz-sensor-reading-1" y "xyz-sensor-reading-2".

  • Además, debes editar la función lambda de acuerdo a las operaciones requeridas en los datos según la hoja de datos de tu sensor. Por ejemplo, el sensor utilizado en esta guía reporta los valores de temperatura y humedad, ambos multiplicados por un factor de 10, por lo que para obtener la medición real, es necesario dividir el valor obtenido por 10.

import requestsimport timeREQUESTS_FUNCTIONS = {"get": requests.get, "post": requests.post}BASE_URL = "https://industrial.api.ubidots.com"excluded_keys = ["deviceType", "subDeviceId", "timestamp"]token = '<your-ubidots-token>'operations_on_data = {    "xy-md02-temperature": lambda x: x / 10,    "xy-md02-humidity" : lambda x:  x / 10,}def main(args):      #Print arguments for debugging purpose     print(args)    incoming_payload_list = args['payload']['payload']    device_label = args['topic'].rsplit('/')[-1]    payload = {}           for each_device_json in incoming_payload_list:        for each_device_key, each_device_value in each_device_json.items():            if each_device_key in excluded_keys:                continue            if isinstance(each_device_json[each_device_key], dict):                if each_device_key in excluded_keys:                    continue                inner_json = each_device_json[each_device_key]                for inner_key,inner_value in inner_json.items():                    if not inner_key in excluded_keys:                        payload[inner_key] = {"value" : operations_on_data[inner_key](inner_value), "timestamp" :inner_json['timestamp'] }            else:                payload[each_device_key] = each_device_value        # Use the remaining parameters as payload    req = update_device(device_label, payload, token)    # Prints the request result    print("[INFO] Request result:")    print(req.text)    return {"status": "Ok", "result": req.json()}  def update_device(device, payload, token):    """    updates a variable with a single dot    """    url = "{}/api/v1.6/devices/{}".format(BASE_URL, device)    headers = {"X-Auth-Token": token, "Content-Type": "application/json"}    req = create_request(url, headers, payload, attempts=5, request_type="post")        return reqdef create_request(url, headers, data, attempts, request_type):    """    Function to create a request to the server    """    request_func = REQUESTS_FUNCTIONS.get(request_type)    kwargs = {"url": url, "headers": headers}    if request_type == "post":        kwargs["json"] = data    try:        req = request_func(**kwargs)        print("[INFO] Request result: {}".format(req.text))        status_code = req.status_code        time.sleep(1)        while status_code >= 400 and attempts < 5:            req = request_func(**kwargs)            print("[INFO] Request result: {}".format(req.text))            status_code = req.status_code            attempts += 1            time.sleep(1)        return req    except Exception as e:        print("[ERROR] There was an error with the request, details:")        print(e)        return None
  • Después de editar el código, haz clic en el botón Make it live .

  • Copia la HTTPs Endpoint URL correspondiente a esta función. Será algo como:

    https://parse.ubidots.com/prv/<your-ubidots-username>/<your-ubifunction-name>
  • Regresa a la interfaz web del R1520.

  • Haz clic en la pestaña Status y desplázate hacia abajo hasta la sección LAN Status. Copia la dirección MAC de tu R1520. Esto se utilizará como un identificador único en Ubidots.

  • Ve a Edge2Cloud E2C MQTT. Allí, selecciona la pestaña MQTT .

  • En la pestaña General Settings edita los siguientes ajustes:

    • Habilitar: Establece el control deslizante en la posición ON para habilitar el servicio MQTT.

    • MQTT TLS Habilitar: Desactiva esta opción. Este tutorial no utilizará cifrado. Si necesitas TLS, consulta la documentación para configurarlo.

    • Servidor Remoto: functions.ubidots.com. Este es el endpoint dedicado de Ubidots para UbiFunctions.

    • Puerto Remoto: 1883. Este es el puerto para conexión no asegurada.

    • Nombre de Usuario: Tu nombre de usuario de Ubidots.

    • Contraseña: Tu Token de Ubidots.

    • ID de Cliente: Cualquier cadena de caracteres aleatoria y única de 15 caracteres de longitud.

  • Todos los demás ajustes no mencionados quedan a criterio del usuario para ser configurados.

  • En la pestaña Topic Settings , establece el Publish Topic, Response Topic y Subscribe Topic a:

/prv/<your-ubidots-username>/<your-ubifunction-name>/<your-r1520-mac-address>
  • Por ejemplo, si tu nombre de usuario de Ubidots es JohnDoe, el nombre de la función es Robustel App, y la dirección MAC de tu dispositivo es F1:AB:7D:C1:56:AF, entonces el tema es:

/prv/johndoe/robustel-app/f1ab7dc156af
  • Haz clic en el botón Submit y luego presiona Save & Apply.

  • Si todo se configuró correctamente, al dirigirte a la pestaña Status en la aplicación E2C MQTT debería mostrarse el estado Connected .

  • Además, en este punto, deberías poder ver un dispositivo recién creado en tu cuenta de Ubidots, cuyo nombre es precisamente la dirección MAC del R1520 y sus variables son las Etiquetas establecidas en la E2C Modbus App en la interfaz web del R1520.

¿Ha quedado contestada tu pregunta?