Ir al contenido principal
Todas las coleccionesGuías de desarrollador
Simula datos en Ubidots usando Python
Simula datos en Ubidots usando Python

Envía una simple solicitud de Python desde la terminal de tu computadora para probar e interactuar con la API REST de Ubidots.

Sergio M avatar
Escrito por Sergio M
Actualizado hace más de una semana

Si tienes una Raspberry Pi, Onion Omega, Beaglebone u otro dispositivo basado en Linux, o si solo deseas crear un script en tu PC para interactuar con Ubidots, aquí tienes un breve ejemplo para comenzar.

Requests: HTTP para humanos

Requests es una popular biblioteca de Python que simplifica la realización de solicitudes HTTP desde cualquier script de Python que se pueda ejecutar en la terminal de tu computadora o en cualquier dispositivo Linux incrustado. Si no tienes Python configurado en tu computadora o dispositivo, consulta esta documentación oficial de Python para comenzar.

Con tu computadora configurada correctamente con Python, ejecuta el paquete pip en la terminal de tu computadora o dispositivo para instalar la biblioteca correcta.

$ pip install requests

Con Python instalado correctamente, ahora necesitaremos crear un script de Python. Ejecuta el siguiente comando en la terminal de tu computadora para crear un script.

$ nano

Teoría del script en Python

Primero, veamos cómo la API de Ubidots espera una solicitud HTTP para procesar datos:

  • Método: HTTP permite varios métodos (GET, POST, PUT, DELETE, etc). Para crear un valor en Ubidots usamos una solicitud POST.

  • URL: La URL del recurso al que deseas acceder (industrial.api.ubidots.com/api/v1.6/your-device-label/?token=your-token).

  • Encabezados HTTP: La API de Ubidots usa JSON como tipo de datos, por lo que el encabezado sería "Content-Type:application/json".

  • Cuerpo: Una cadena JSON que contiene la etiqueta de la(s) variable(s) y sus valores. Por ejemplo: {"temperature":23, "humidity":98}.

Enviando datos con tu código

Copia y pega el siguiente código en tu terminal; asigna tu TOKEN de Ubidots donde se indica en el código. Para obtener más información, consulta la Referencia de la API REST de Ubidots.

import timeimport requestsimport mathimport randomTOKEN = "..."  # Pon tu TOKEN aquíDEVICE_LABEL = "machine"  # Pon la etiqueta de tu dispositivo aquí VARIABLE_LABEL_1 = "temperature"  # Pon la etiqueta de tu primera variable aquíVARIABLE_LABEL_2 = "humidity"  # Pon la etiqueta de tu segunda variable aquíVARIABLE_LABEL_3 = "position"  # Pon la etiqueta de tu tercera variable aquídef build_payload(variable_1, variable_2, variable_3):    # Crea dos valores aleatorios para enviar datos    value_1 = random.randint(-10, 50)    value_2 = random.randint(0, 85)    # Crea coordenadas GPS aleatorias    lat = random.randrange(34, 36, 1) + \        random.randrange(1, 1000, 1) / 1000.0    lng = random.randrange(-83, -87, -1) + \        random.randrange(1, 1000, 1) / 1000.0    payload = {variable_1: value_1,               variable_2: value_2,               variable_3: {"value": 1, "context": {"lat": lat, "lng": lng}}}    return payloaddef post_request(payload):    # Crea los encabezados para las solicitudes HTTP    url = "http://industrial.api.ubidots.com"    url = "{}/api/v1.6/devices/{}".format(url, DEVICE_LABEL)    headers = {"X-Auth-Token": TOKEN, "Content-Type": "application/json"}    # Realiza las solicitudes HTTP    status = 400    attempts = 0    while status >= 400 and attempts <= 5:        req = requests.post(url=url, headers=headers, json=payload)        status = req.status_code        attempts += 1        time.sleep(1)    # Procesa los resultados    print(req.status_code, req.json())    if status >= 400:        print("[ERROR] No se pudieron enviar los datos después de 5 intentos, por favor verifica \            tus credenciales de token y conexión a internet")        return False    print("[INFO] Solicitud realizada correctamente, tu dispositivo está actualizado")    return Truedef main():    payload = build_payload(        VARIABLE_LABEL_1, VARIABLE_LABEL_2, VARIABLE_LABEL_3)    print("[INFO] Intentando enviar datos")    post_request(payload)    print("[INFO] Finalizado")if __name__ == '__main__':    while (True):        main()        time.sleep(1)

Una vez que el código se haya compilado con tu TOKEN de Ubidots, presiona CONTROL + O y ENTER para guardar el archivo - asignando un nombre al guardarlo (asegúrate de recordar el ".py" en el nombre del archivo). Una vez que el script esté guardado, sal del editor de Python presionando CONTROL + X y vuelve a la terminal de la computadora.

Ejecuta tu script

Desde la terminal de tu computadora, ejecuta el script (incluido el script guardado desde el editor de Python) con el siguiente comando.

$ python [nombre_del_script_guardado].py

Visualiza tus resultados

Ejecuta el código en tu computadora o terminal del dispositivo para comenzar a simular datos y visualizar tu trabajo iniciando sesión en tu cuenta de Ubidots.

¿Ha quedado contestada tu pregunta?