El Hologram Nova es un módem celular global diseñado para desarrollos de IoT, que nos ofrece un módem USB celular fácil de usar y completamente de código abierto disponible en modelos 2G/3G y 4G LTE Cat-M1.
El Nova se puede usar perfectamente con una Raspberry Pi, BeagleBone y otras computadoras Linux de placa única.
Para información detallada relacionada con el Hologram Nova, consulte aquí.
Siguiendo esta guía, podrás POST datos de temperatura a Ubidots utilizando el Hologram Nova conectado a una Raspberry Pi en solo un par de minutos!
Requisitos
Raspberry Pi (Ya configurada)
Caja transparente - (opcional)
Sensor de temperatura OneWire - DS18B20
1. Configuración de Hardware
Hologram Nova
1. Activa la tarjeta SIM IoT de Hologram. Para activar tu tarjeta, visita hologram.io/start. Una vez activada, inserta la SIM en la parte posterior del Nova.
ADVERTENCIA: No inserte ni retire la SIM mientras el Nova está conectado - de lo contrario, puede dañar o corromper la SIM.
2. Según tu entorno, conecta la antena, si lo deseas. La antena negra más grande proporciona mejor recepción, mientras que la antena amarilla más pequeña tiene la ventaja de caber dentro de las cajas de protección.
3. Si lo deseas, inserta el Nova en la caja transparente. Recuerda insertar la SIM y conectar la antena antes de cerrar el Nova. Ten en cuenta que este paso es puramente opcional y no afectará la funcionalidad del Nova.
4. Conecta el Nova a la Raspberry Pi usando el puerto USB.
Raspberry Pi
Esta guía asume que tu Raspberry Pi ya tiene Raspbian instalado en una tarjeta SD con acceso a través de SSH o acceso usando el terminal de tu computadora. Si estas configuraciones no se han realizado en tu hardware aún, hazlo rápidamente usando esta guía de inicio rápido
1. Sigue la tabla a continuación para conectar el Sensor de Temperatura OneWire a la Raspberry Pi:
NOTA: El sensor de temperatura OneWire se vende con diferentes versiones que contienen resistencias. Consulta el paso "Configuración del cableado" de esta guía para asegurar la conexión correcta de tu versión de sensor.
2. Conecta la Raspberry Pi a su fuente de alimentación y espera hasta que termine de arrancar correctamente.
3. Una vez que la Raspberry Pi arranque correctamente, comenzarás a ver algunos LED en el Nova proporcionando retroalimentación sobre lo que está sucediendo en el módem:
LED azul = el módem está encendido o apagado
LED rojo = estado actual de la red
Consulta la tabla a continuación para obtener detalles adicionales sobre los LED.
2: Configuración de Rutas de Hologram
Cada vez que el módulo SIMCOM envía un mensaje a través de la red celular, su primer destino es la Nube de Hologram, ¡pero el viaje del mensaje no tiene que terminar ahí! Usando el Router de Servicios en la Nube (CSR) puedes reenviar tus datos a Ubidots a través de HTTP(S) para la visualización de datos y análisis adicionales para tu solución IoT.
Rutas en la plataforma Hologram proporcionan métodos convenientes para activar acciones (Almacenamiento de datos, Correo electrónico, SMS, Webhooks, etc.) por la presencia o incluso ausencia del tema del mensaje de un dispositivo. En este caso, vamos a activar una acción de Webhook para reenviar los mensajes del módulo a Ubidots para su cálculo y visualización.
1. Ve a la sección Rutas del Dashboard de Hologram y haz clic en el botón "+ Nueva Ruta".
2. A continuación, asigna los componentes de la ruta como los temas y la acción. Asigna "Plataforma Ubidots" como el apodo para la ruta; este será el identificador para la ruta en tu lista de rutas:
3. A continuación, selecciona los temas sobre los que la ruta actuará. En este caso, selecciona el tema asignado a tu dispositivo "SIMCOM(SIM-ID)" o "_DEVICE_{Device-ID}_":
4. Luego, selecciona la Aplicación de Acción llamada "Constructor de Webhook Avanzado (Tu propia aplicación)" para integrar la Nube de Hologram con Ubidots:
Construyendo tu Webhook
Ahora, debes establecer la configuración requerida para manejar la solicitud. Asigna los parámetros a continuación a los campos específicos:
URL (URL de destino):
https://industrial.api.ubidots.com/api/v1.6/devices/<<device_id>>
PAYLOAD (Carga útil para POST):
<<decdata>>
HEADERS:
X-Auth-Token
-Tu TOKEN de Ubidots
Content-Type
- application/json
NOTA: Si no sabes cómo encontrar tu TOKEN de Ubidots, consulta la siguiente guía.
Una vez que hayas ingresado los parámetros, consulta la imagen a continuación para verificar:
NOTA: Para saber más sobre las variables disponibles para POST y las estructuras, consulta esta guía.
5. Para finalizar, presiona "Agregar ruta. Una vez que la ruta esté agregada, la verás en la lista de rutas:
3: Instalar Dependencias
1. Accede al terminal de la Raspberry Pi a través de SSH o directamente desde la Raspberry. Siéntete libre de elegir la que te resulte más familiar.
2. Actualiza tus bibliotecas de código de Raspberry Pi:
sudo apt-get update
3. Luego, instala la biblioteca requerida:
sudo apt-get install git git-core build-essential python-dev python-openssl python-smbus python3-pip python-pip screen
4. Instala el SDK de Python de Hologram para interactuar con el Nova:
curl -L hologram.io/python-install | bash
5. Verifica que el CLI de Hologram (Interfaz de Línea de Comandos) se haya instalado. Deberá devolver una versión mayor que 0.6.0.
hologram version
Si la versión es inferior a 0.6.0, actualiza a la última versión usando el siguiente comando:
curl -L hologram.io/python-update | bash
4: Configuración de los pines GPIO
1. La Raspberry Pi viene equipada con una variedad de controladores para la interfaz. En este tutorial, para poder cargar el controlador del sensor 1-Wire en los pines GPIO, tenemos que usar los dos controladores a continuación. Estos controladores se almacenan como módulos cargables y el comando modprobe se emplea para cargarlos en el núcleo de Linux cuando sea necesario.
Ejecuta los comandos a continuación:
sudo modprobe w1-gpio
sudo modprobe w1-therm
2. Ahora, necesitamos cambiar el directorio a nuestra carpeta de dispositivos 1-Wire y listar los dispositivos para asegurarnos de que nuestro sensor se haya cargado correctamente. Copia, pega y ejecuta los comandos a continuación en el terminal de pi presionando "enter" después de cada uno para ejecutar los comandos.
$ cd /sys/bus/w1/devices/
$ ls
En este momento, tu sensor ya ha sido ensamblado y conectado y debería aparecer como una serie de números y letras. En nuestro caso, el dispositivo está registrado como 28-0000056915de
, pero en tu caso será una serie diferente de letras y números, así que reemplaza tu número de serie con el tuyo y ejecuta el comando.
$ cd 28-0000056915de
El sensor escribe periódicamente en el archivo w1_slave
, para leer tu sensor de temperatura, ejecuta el siguiente comando:
$ cat w1_slave
Este comando te mostrará dos líneas de texto con la salida t=
mostrando la temperatura (en grados Celsius). Ten en cuenta que se debe colocar un punto decimal después de los primeros dos dígitos (esto se proporciona en el código final; no te preocupes); por ejemplo, la lectura de temperatura que hemos recibido es 25.875
grados Celsius.
¡Ahora que puedes ver las lecturas de temperatura, es hora de publicarlas en Ubidots!
5: Enviando (POST) Datos a Ubidots
El siguiente código envía un mensaje a la nube de Hologram a través del SDK de Python de Hologram, utilizando un módem para establecer una conexión celular, y envía los mensajes a la Nube de Hologram que luego se reenvían a Ubidots. Una vez que el mensaje es recibido en la nube de Hologram, el mensaje será dirigido a Ubidots si la ruta está configurada correctamente desde el Paso 2 de esta guía.
1. Crea y ejecuta un script de Python en el terminal de tu Pi:
nano nova_temperature.py
Luego, pega el código a continuación en el terminal de Pi y reemplaza el número de serie 28-00000830fa90
de la línea temp_sensor = '/sys/bus/w1/devices/28-0000056915de/w1_slave'
con tu propio número de serie.
Una vez que se modifique el número de serie, guarda el código:
from Hologram.HologramCloud import HologramCloudimport osimport timeimport jsonos.system('modprobe w1-gpio')os.system('modprobe w1-therm')temp_sensor = '/sys/bus/w1/devices/28-0000056915de/w1_slave'# Instancia de Hologram Cloudhologram = HologramCloud(dict(), network='cellular')# Conectar a la red celularresult = hologram.network.connect()if result == False: print ' Falló la conexión a la red celular'def temp_raw(): f = open(temp_sensor, 'r') lines = f.readlines() f.close() return lines# Lee los valores del sensor y construye la carga útil a enviardef read_temp(): lines = temp_raw() while lines[0].strip()[-3:] != 'YES': time.sleep(0.2) lines = temp_raw() temp_output = lines[1].find('t=') if temp_output != -1: temp_string = lines[1].strip()[temp_output+2:] temp_c = float(temp_string) / 1000.0 temp_f = temp_c * 9.0 / 5.0 + 32.0 payload = {"temp_celsius": temp_c, "temp_fahrenheit": temp_f} return payloadwhile True: print('Publicando valores de temperatura en la Nube de Hologram') response_code = hologram.sendMessage(json.dumps(read_temp())) # Enviar mensaje a la Nube de Hologram print hologram.getResultString(response_code) # Imprime 'Mensaje enviado con éxito'. hologram.network.disconnect() # Desconectar de la red celular time.sleep(10)
2. Ejecuta el script anterior con el siguiente comando:
python ubidots_nova_temp.py
Si recibes mensajes de error de privilegios, ejecuta el siguiente comando usando sudo:
sudo python ubidots_nova_temp.py
3. Aquí comenzarás a recibir el siguiente mensaje de depuración en el terminal de Pi cada 10 segundos:
Para verificar que el mensaje se ha recibido, consulta el Dashboard de Hologram, específicamente la sección "Consola":
Como puedes ver en la imagen anterior, los mensajes activados se dirigen a la ruta previamente creada llamada "Plataforma Ubidots"
4. Ve a tu cuenta de Ubidots y entra en la sección "Dispositivo" para visualizar el nuevo dispositivo creado con el ID de Dispositivo de tu Dispositivo Hologram. Dentro del dispositivo encontrarás los valores de temperatura enviados por el sensor conectado a través del webhook de Hologram creado.
Pasos Opcionales: Renombrar el Dispositivo y las Variables
Los nombres de las variables creadas son los mismos que las etiquetas de la API, que son los ID utilizados por la API. Esto no significa que sus nombres no puedan ser cambiados, por lo que se recomienda cambiar los nombres de tus dispositivos y variables para hacerlos más amigables con la nomenclatura de tu solución IoT. Haz clic aquí para aprender cómo renombrar los nombres de tu dispositivo y variables.
También puedes agregar y ajustar las unidades de cada variable desde tu lista de opciones:
Como puedes ver a continuación, hemos asignado diferentes unidades a cada variable y también asignado nombres más amigables para adaptarse a la nomenclatura de nuestros proyectos. Esto se recomienda encarecidamente a los usuarios que buscan implementar 10 o más dispositivos.
6. Configuración de Eventos
Un evento (o alerta) es cualquier acción activada cuando los datos cumplen o superan una regla de diseño. Por ejemplo, se puede enviar un correo electrónico o un mensaje SMS cada vez que un sensor deja de enviar datos o una temperatura supera un umbral máximo o mínimo.
7. Resumen
En solo unos minutos has construido un fácil sistema de monitoreo de temperatura celular DIY utilizando un Hologram Nova con una Raspberry Pi. ¡Ahora es el momento de crear Dashboards de Ubidots para comenzar a rastrear las temperaturas de tu dispositivo y desplegar tu solución de monitoreo conectada por celular con facilidad!
¡Feliz hacking :)
Otros lectores también han encontrado útil...