Ir al contenido principal
Todas las coleccionesConecta tus dispositivos
Conectar el Blues Wireless Sparrow a Ubidots
Conectar el Blues Wireless Sparrow a Ubidots

Este artículo explora cómo configurar su kit de desarrollo Sparrow para enviar datos a Ubidots.

Sergio M avatar
Escrito por Sergio M
Actualizado hace más de una semana
Component 1(1).png

El Sparrow, de Blues Wireless, es un kit compuesto por un gateway y un par de nodos que, cada uno, puede comunicarse con el gateway a través de LoRa. Su característica más notable es la facilidad con la que el usuario puede configurar rápidamente un proyecto sin necesidad de codificación.

image 4(2).png

Requisitos

  • Una cuenta de NoteHub de Blues Wireless.

  • Un Sparrow Kit de Blues Wireless.

  • Una cuenta de Ubidots.

Tabla de Contenidos

  1. Configuración del Hardware

  2. Configurar Notehub

  3. Emparejar la Notecard con los Nodos de Referencia

  4. Visualizando los Eventos en Notehub

  5. Crear la Función para recibir los datos de Notehub

  6. Rutar datos de Notehub a Ubidots

  7. Visualizar los datos en Ubidots

  8. Comentarios, sugerencias y artículos relacionados

1. Configuración del Hardware

  • Retire los tornillos de la parte posterior de cada nodo que desee configurar.

  • Inserte dos baterías AAA. Por el momento, deje los nodos sin la carcasa.

image 5.png
  • Conecte su Essentials Board a su Notecarrier-A utilizando el cable Qwiic incluido.

Component 2.png
  • Asegúrese de que el interruptor DIP en el Notecarrier-A esté configurado a 3V3.

image 7.png
  • Asegúrese de que los interruptores DIP en la Essentials Board estén todos apuntando hacia 1,2,3,4.

image 8.png
  • Conecte la placa Notecarrier-A a la PC utilizando el cable de datos micro USB a USB-A proporcionado. Después de hacerlo, debería ver que el LED verde está encendido tanto en el Notecarrier-A como en la Essentials Board.

Component 4(1).png

2. Configurar Notehub

  • Inicie sesión en su cuenta de Notehub.

  • Una vez en su panel de Notehub, haga clic en el botón Crear Proyecto .

  • Complete los siguientes campos de acuerdo a:

    • Cuenta de facturación: Seleccione o cree una cuenta para su facturación.

    • Nombre del proyecto: Establezca cualquier nombre que desee para su proyecto.

    • Prefijo ProductUID: Esto se establecerá por defecto con el nombre de usuario y la organización proporcionados cuando se creó su cuenta de Notehub.

    • ProductUID: Este es el sufijo para su proyecto actual. Puede establecer cualquier nombre que desee, sin embargo, se aconseja que sea el mismo que el nombre de su proyecto.

  • Haga clic en el botón Crear Proyecto para crear el proyecto.

Component 3.png
  • Copie el ProductUID del proyecto.

Component 5.png
  • Dirígete a dev.Blues.

  • Haga clic donde se muestra el mensaje Desconectado .

Component 6.png
  • Haga clic en el botón USB Notecard debajo del mensaje Conectar una Notecard.

  • Seleccione el puerto al que está conectado su dispositivo.

  • Haga clic en el botón Conectar .

Component 7.png
  • Una vez hecho esto, se abrirá un terminal serial en su navegador.

  • Ejecute el siguiente comando asegurándose de reemplazar com.your-company.your-name:your_product por su ProductUID obtenido en los pasos anteriores.

{"req":"hub.set", "product":"com.your-company.your-name:your_product","mode":"continuous"}
  • El dispositivo debe responder con un objeto JSON vacío:

Component 8.png
  • Conecte la Notecard a su Wi-Fi ejecutando el siguiente comando, asegurándose de reemplazar “ssid name” y “password” con sus credenciales correspondientes:

{"req":"card.wifi","ssid":"<ssid name>","password":"<password>"}
Component 9.png

3. Emparejar la Notecard con los Nodos de Referencia

  • Presione y suelte el botón Emparejar en la Essentials Board y luego presione el mismo botón en el Nodo de Referencia.

  • Mientras se emparejan, tanto la Essentials Board como los Nodos de Referencia deben mostrar una luz LED azul sólida, lo que indica que los dispositivos están en modo de emparejamiento.

  • Cuando se complete el proceso de emparejamiento, verá luces LED rojas, verdes y azules parpadeando en la Essentials Board.

image 21.png

Consejo Profesional: El emparejamiento de dispositivos LoRa funciona mejor si están separados entre sí, como en lados opuestos de la mesa.



4. Visualizando los Eventos

  • Regrese a Notehub.

  • Haga clic en la opción Eventos .

Component 10.png
  • En la página de Eventos podrá ver todos los eventos relacionados con cada Nodo de Referencia.

image 23.png

5. Crear la Función para recibir los datos de Notehub

  • Vaya a su cuenta de Ubidots.

  • Haga clic en Dispositivos → Funciones.

  • Cree una nueva Función con los siguientes parámetros:

    • Nombre: establezca cualquier nombre que desee

    • Método: POST

    • Runtime: Para este ejemplo, se eligió Python 3.7, sin embargo, puede seleccionar el que le resulte más cómodo

    • Token: Seleccione el token de Ubidots que desea usar para esta aplicación en particular

  • Edite el código de la Función. Elimine todo y pegue lo siguiente:

import requestsBASE_URL = "https://industrial.api.ubidots.com"TOKEN = 'BBFF-WEplLU79KGBNVrLUt3lGEFIuOviAOg'def main(args):        print(args)        device_label_map = {        "203733583236500300360033":"reference-node-1",        "203733583236500300260033":"reference-node-2",    }        functions_map = {         "air.qo": air,        "motion.qo": motion,        "sensors.db": sensors,        "_health.qo":health    }            file_data = args["file"]    payload_type = ""        if(file_data == "_health.qo"):        device_label = args["body"]["text"].split(" ")[0]        device_label = device_label_map[device_label]        payload_type = file_data            elif(file_data == "sensors.db"):        device_label = device_label_map[args["note"]]        payload_type = file_data        elif(file_data == "_session.qo"):        return {"status":200, "text":"session.qo report cotinuous connectio mode report"}           else:        file_number_index = 0        payload_type_index = 1        file_data = args["file"].split("#")        device_label = device_label_map[file_data[file_number_index]]        payload_type = file_data[payload_type_index]         # Get the timestamp     timestamp = args.get("when", None)    timestamp = timestamp * 1000 if timestamp is not None else None        payload = functions_map[payload_type](args)        res = send_data(device_label, payload, TOKEN, **{"timestamp":timestamp})    return {"status": res.status_code, "text": res.text}    def health(args):    args = args["body"]    ret = {"button-status":             {                "value":1,                "context":"pressed"            }    }    return retdef air(args):    args = args["body"]    ret = { "humidity": args["humidity"],            "pressure": args["pressure"],            "temperature": args["temperature"],            "voltage": args["voltage"]        }    return ret    def motion(args):    args = args["body"]    ret = { "motion-count": args["count"],            "motion-total": args["total"]        }    return ret    def sensors(args):    args = args["body"]    ret = { "voltage":             {                "value":args["voltage"],                "context":                    {                        "gateway_rssi": args["gateway_rssi"],                        "gateway_snr": args["gateway_snr"],                        "lost": args["lost"],                        "received": args["received"],                        "sensor_ltp": args["sensor_ltp"],                        "sensor_rssi": args["sensor_rssi"],                        "sensor_snr": args["sensor_snr"],                        "sensor_txp": args["sensor_txp"],                    }            }    }    return retdef 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,):    """    Función para hacer una solicitud con tiempo de espera y reintentos    """    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
  • Copie la URL del Endpoint HTTPs de la Función en su portapapeles. Esto será necesario más adelante.

6. Rutar datos de Notehub a Ubidots

  • Vaya a Notehub.

  • Haga clic en la opción Rutas .

  • Haga clic en Crear Ruta.

Component 11.png
  • Haga clic en el botón Seleccionar para la opción Solicitud/Respuesta HTTP/HTTPS General .

Component 12.png

Complete el siguiente campo de acuerdo a:

  • Nombre de la ruta: cualquier nombre que desee usar para esta ruta

  • URL: la URL del Endpoint HTTPs de su Función obtenida en la sección anterior

  • Encabezados HTTP: seleccione Encabezados Adicionales. Luego:

    • Establezca el Nombre del encabezado en “X-Auth-Token”

    • Establezca el Valor del encabezado en su token de Ubidots que desea usar para esta aplicación. Debe ser el mismo que el que seleccionó para la Función en la sección anterior.

Otras configuraciones como Límite de tasa, Tiempo de espera, y Filtros se dejaron en sus valores predeterminados, sin embargo, puede cambiar estas configuraciones de acuerdo a sus requisitos.

  • Haga clic en el botón Crear Ruta para guardar estas configuraciones y crear la ruta.

Component 13.png

7. Visualizar los datos en Ubidots

  • Regrese a su cuenta de Ubidots → Dispositivos.

  • Si ha estado siguiendo la nomenclatura de este artículo, debería poder ver dos nuevos dispositivos, “reference-node-1” y “reference-node-2”.

image 28.png

8. Comentarios, sugerencias y artículos relacionados

No dude en publicar preguntas o sugerencias en nuestro portal comunitario, o contáctenos a través de support@ubidots.com.

Otros usuarios también encontraron útil...

¿Ha quedado contestada tu pregunta?