Ejemplos de MicroPython para Digi XBee Parte 2: Edge Computing

Rob Faludi Rob Faludi, IoT Consultor, Faludi.com
13 de noviembre de 2018
En nuestro primer post de la serie de programación MicroPython para el bordehablamos de cómo recoger las lecturas de los sensores y darles sentido utilizando el Digi XBee 3 Kit celular LTE-Masí como el software de configuración gratuito de Digi, Digi XCTUy algo de código simple de MicroPython. Bienvenido a la segunda parte de esta serie.

La inteligencia de borde proporcionada en la línea de módulos RF integrados Digis XBee 3 hace que el envío de datos a la nube sea un juego de niños. En nuestro segundo proyecto de esta serie práctica, mostramos cómo cargar las lecturas de temperatura medidas desde un módulo Digi XBee 3 Cellular LTE-M a "flujos de datos" en Digi Remote Manager® (Digi RM).

Los desarrolladores pueden utilizar esta plataforma de gestión de datos y dispositivos de forma gratuita. La línea Digi XBee 3 Cellular soporta estándares de comunicación abiertos, por lo que también puede compartir datos con Amazons IoT Platform, Microsoft Azure, Adafruit.io, Google Cloud IoT, ThingSpeak, IBM Watson y muchos otros. Busca tutoriales prácticos o varios de ellos en futuros proyectos. 

Los lectores de nuestro primer proyecto recordarán que MicroPython es un lenguaje de programación de código abierto basado en Python 3, modificado para adaptarse a dispositivos pequeños y optimizado para microcontroladores. Utilizando MicroPython puedes crear rápidamente conexiones a servicios en la nube desde los bordes de tu red.

Enviar datos a Digi Remote Manager

Muchos sistemas de IoT envían datos a plataformas en la nube en Internet. Suelen tomar muestras de algún valor a nivel local, como la temperatura, y luego envían las lecturas a cualquiera de un número vertiginoso de aplicaciones en línea para el registro, el procesamiento y la visualización de datos. En este proyecto, tomaremos algunas mediciones de temperatura utilizando un simple sensor, y luego las enviaremos a Digi Remote Manager como un "flujo de datos" que puede ser visualizado de diferentes maneras, accedido a través de una API abierta o almacenado para su uso posterior.

Comenzamos con la misma configuración de hardware utilizada en el proyecto "Detectar, transformar y enviar un valor", incluyendo el sensor de temperatura TMP36.

Configurar el hardware

 

Si se perdió nuestra primera publicación, visite Ejemplos prácticos de programación en MicroPython para Edge Computing: Parte 1 y trabajar en los siguientes puntos para preparar este segundo proyecto:
  1. Cómo empezar: Demuestra cómo configurar el hardware y el software que necesitará.
  2. Ejemplo de Hola Mundo: Enseña cómo subir el código a Digi XBee 3.
  3. Detectar, transformar y enviar un valor: Muestra cómo tomar una lectura de temperatura y enviarla como un mensaje de texto.
Una vez que has configurado el hardware de Digi XBee 3, has conectado el sensor de temperatura TMP36, lo has conectado al software de configuración y has abierto el terminal MicroPython en XCTU, estás listo para empezar. Tu configuración debería ser similar a esta:

XBee3 XCTU TMP36 TMP36, Digi XBee 3 Cellular, XBIB conectado al Terminal MicroPython en XCTU

Acerca de Digi Remote Manager

 

Digi Remote Manager permite configurar y gestionar redes de dispositivos dinámicos, con una gama de desarrollo de aplicaciones, herramientas de gestión de dispositivos y API. Una de las características más importantes de Digi Remote Manager es la posibilidad de actualizar los dispositivos por vía aérea (OTA), en cualquier lugar del campo. Esto es especialmente importante si está creando una aplicación con módulos remotos, muy dispersos o de difícil acceso, o si está construyendo un gran despliegue. Visite shop.digi.com para empezar con Digi Remote Manager. 

Digi Remote Manager Configuración de la cuenta

Si necesita ayuda para configurar o utilizar su cuenta, consulte el Digi Remote Manager Guía del usuario.

El nombre de usuario y la contraseña de su cuenta de Remote Manager le permitirán a su Digi XBee 3 Cellular cargar flujos de datos, en este caso mediciones de temperatura. Proporciona una capa de seguridad que es apropiada para este sencillo ejemplo. Hay muchas capas adicionales de seguridad y autenticación disponibles para proporcionar una mayor protección para las aplicaciones de producción, aunque no vamos a verlas ahora para centrarnos en lo básico.

Cargas de la biblioteca

 

Para que nuestro código sea más sencillo y legible, nos apoyamos en dos bibliotecas cargado en el sistema de archivos dentro del módulo Digi XBee 3 Cellular. Estas bibliotecas son colecciones de código pre-escrito. Proporcionan formas sencillas de llamar a rutinas complejas sin que las propias rutinas saturen tu programa. Para este ejemplo usaremos la biblioteca remotemanager, y la biblioteca urequests que remotemanager requiere.
  1. Localiza las bibliotecas remotemanager.py y urequests.py en esta página de GitHub: https://github.com/digidotcom/xbee-micropython/tree/master/lib.
  2. Haz clic con el botón derecho del ratón en cada nombre de archivo y selecciona Descargar para crear una copia local de cada uno en tu ordenador. (Los usuarios de GitHub también pueden clonar o descargar todo el repositorio aquí: https://github.com/digidotcom/xbee-micropython).
  3. Con su Digi XBee 3 y la placa XBIB añadidos a XCTU, abra el menú Herramientas y seleccione Administrador del Sistema de Archivos.
  4. Haga clic en Abrir para conectar el Administrador del Sistema de Archivos a su sistema de archivos Digi XBee 3s.
  5. Navegue por las carpetas "Local Path" en la columna de la izquierda para encontrar los archivos remotemanager.py y urequests.py que acaba de descargar.
  6. Utilice las carpetas "Remote Path" de la columna de la derecha para abrir el directorio "lib" ("/flash/lib").
  7. Arrastra los archivos remotemanager.py y urequests.py desde tu directorio local y colócalos en el directorio remoto "lib" para almacenarlos en el XBee 3.
  8. Cuando haya terminado, cierre la ventana del Administrador del Sistema de Archivos.
Actualmente el programa MicroPython pegado en el prompt Ctrl-F en el REPL es la única forma de ejecutar un programa al inicio. Una vez que este programa pegado se ejecuta, puede importar módulos del sistema de archivos, así como escribir archivos en él. El lanzamiento desde un archivo del sistema de archivos está en la hoja de ruta de desarrollo de Digis, así que busque esta característica en el futuro firmware.

Configurar el XBee

 

El módulo está configurado de forma idéntica a nuestro primer Detectar, transformar y enviar un valor proyecto. Si algo ha cambiado, monte el Digi XBee 3 Cellular en la placa XBIB y conectado a su ordenador por USB, lance el programa XCTU.
  • Añade un módulo de radio y haz clic en ese dispositivo de la lista para configurarlo.
  • La tasa de baudiosde la BD debe establecerse en 115200 [7] y la habilitación de la API de la AP en MicroPython REPL [4].
  • Escriba estos ajustes en el módulo, utilizando el icono del lápiz en la parte superior.

Cargar el código

Copie el siguiente código en un editor de texto como el Bloc de notas. Asegúrese de introducir su propio nombre de usuario y contraseña, sustituyendo "su_nombre_de_usuario_aquí" y "su_contraseña_aquí" antes de subir el código. Por defecto, este programa envía una lectura de temperatura a Digi Remote Manager una vez por minuto, durante 24 horas (1440 muestras). Puede personalizarlo cambiando las variables wait_time o cycles según desee.
 
Recuerda que este código de ejemplo debe ser editado antes de subirlo.

 1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

# Digi XBee3 Cellular Digi Remote Manager Ejemplo

# utiliza un TMP36 para medir la temperatura y enviarla a Digi Remote Manager

# por defecto repitiendo una vez por minuto, 1440 veces en total, parando después de un día

# Introduzca su nombre de usuario y contraseña de Digi RM, REEMPLAZANDO "su_nombre_de_usuario_aquí" etc. ANTES DE SUBIR ESTE CÓDIGO!

importar RemoteManagerConnection

importar ADC

importar el sueño

importar atcmd

ciclos # número de repeticiones

wait_time # segundos entre mediciones

nombre de usuario #introduce tu nombre de usuario

contraseña #introduce tu contraseña

# Información de conexión a la nube del dispositivo

stream_id temperatura

stream_type FLOAT

stream_units grados F

descripción "ejemplo de temperatura"

# Preparar la conexión

credenciales contraseña: contraseña}

stream_info "descripción": descripción,

"id": stream_id,

"tipo": stream_type,

"unidades": stream_units}

ai_desc = {

CONECTADO,

REGISTRO_EN_LA_RED,

CONECTANDO_A_INTERNET,

RECUPERACIÓN_NECESARIA,

NETWORK_REG_FAILURE,

AIRPLANE_MODE,

USB_DIRECT,

PSM_DORMANT,

BYPASS_MODE_ACTIVE,

MODEM_INITIALIZING,

}

watch_ai():

old_ai -1

0x00:

new_ai AI)

!= old_ai:

UNKNOWN))

old_ai = new_ai

Si no:

dormir(0.01)

# Programa principal

# crear una conexión

rm =credenciales)

# Actualizar la información de la fuente de datos

"")

Inténtalo:

rm.update_datastream(stream_id, stream_info)

"hecho")

como e:

estado str(e)

\

\

excepción:, e)

Es cierto:

"comprobando la conexión...")

watch_ai()

"conectado")

rango(ciclos):

# lee el valor de la temperatura e imprime en la depuración

temp_pin "D0")

temp_raw .read()

% temp_raw)

# Convertir la temperatura a las unidades adecuadas

temperaturaC 10)

% de temperaturaC)

temperaturaF 32,0);

temperaturaF)

# enviar puntos de datos a Digi RM

"")

Inténtalo:

estado # enviar datos a la Nube de Dispositivos

"hecho")

.código_estado)

como e:

\

\

excepción:, e)

# espera entre ciclos

sleep(tiempo_de_espera)

Utilizarlo

Con el ejemplo de Data to Digi Remote Manager ejecutado, se cargará una nueva medición de temperatura a un flujo de datos Digi RM cada minuto. Si deja la configuración por defecto, recibirá 1440 cargas, con un minuto de diferencia, o 24 horas. Para supervisar el flujo de datos:
  1. Entrar en el sistema a Digi Remote Manager y seleccione el Servicios de datos ficha.

  2. Haga clic en el flujo denominado "temperatura" para seleccionarlo.
  3. Localice el área de Gráficos y Datos Brutos que aparece a continuación. Puede ser útil arrastrar la línea de separación hacia arriba para ampliar esta área.
  4. Haga clic en Datos en bruto para ver los puntos de datos que se han cargado

  5. Haga clic en Gráficos para ver los gráficos de líneas de los datos de temperatura. Se pueden generar gráficos de resumen diarios, semanales, mensuales y anuales.


Libro blanco relacionado: 5 razones por las que debería considerar la conectividad celular integrada.


Digi Remote Manager dispone de una completa API para compartir sus datos con otros sistemas en línea. Gracias a su interfaz RESTful, puede aceptar peticiones estándar (mediante HTTP GET) desde un navegador web. Utilice este enlace para ver sus datos de temperatura. Se le pedirá que introduzca su nombre de usuario y contraseña.

La salida estará en formato XML, y tendrá el siguiente aspecto:

Digi Remote Manager Respuesta XML
Digi Remote Manager Respuesta XML

Resumen

Este ejemplo de Digi Remote Manager demuestra una forma de centralizar la carga de datos de sus sistemas IoT . Ahora puede crear múltiples sensores que transfieran todos los datos a una ubicación central en línea. Usted creó su primera cuenta Digi RM, localizó sus datos y los visualizó. También cubrimos la carga de bibliotecas a Digi XBee 3 celular utilizando el Administrador del Sistema de Archivos en XCTU. El Administrador del Sistema de Archivos también puede gestionar los archivos de claves y los certificados de seguridad que requieren muchas plataformas en línea IoT . En futuros posts, veremos la subida de datos a otras aplicaciones en la nube, la activación de alertas, la mejora de la vida de la batería, la reducción de los costes de ancho de banda y mucho más.
Su opinión sobre esta serie es bienvenida. Por favor, publique cualquier pregunta o sugerencia en los comentarios a continuación.

>>> Obtenga más información sobre el ecosistema de módulos inalámbricos deDigi XBee , o póngase en contacto con nosotros para hablar de sus necesidades.
Conozca la línea de productos Digi Embedded
Conozca las soluciones de desarrollo para OEMs