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.