Como enviar y recibir mensajes entre su dispositivo y el concentrador de IoT de Azure


Una  vez que tenemos   un   dispositivo compatible con Azure Iot  (  como por ejemplo una Raspberry pi  3 como vimos   , o  desde un ESP8266   como vimos también recientemente  ) , los hemos  configurado  y   hemos  implementado una aplicación de ejemplo para ejecutar en el dispositivo que envié envíe datos que   los sensores recogen a su hub de IoT , puede  que  queramos intentar gestionar la mensajería en la nube del  dispositivo IoT  

Precisamente  en este contexto  surge  iothub-explorer que pone a  nuestra disposición  varios  comandos para  facilitar la gestión de centro de IoT  permitiéndonos   supervisar mensajes de dispositivo a nube y enviar mensajes de dispositivo de nube.

Los mensajes de dispositivo a nube podrían ser datos de sensores de  un dispositivo  que recolecta y envía a su hub de IoT (   como por ejemplo una Raspberry pi  3 como vimos  en este post , o  desde un ESP8266   como vimos recientemente  en este post )   o   bien los mensajes hacia ese  dispositivo de nube  que  podría ser comandos que IoT hub envía al dispositivo como por ejemplo hacer  parpadear un LED conectado a ese dispositivo.

Resumidamente  hay pues dos usos  muy diferentes del explorador de iothub :

  • Para supervisar mensajes de dispositivo a nube.
  • Para enviar mensajes de dispositivo de nube.

Para ello necesitamos haber completado dos fases:

  1. Haber  configurado el dispositivo , configuración completa que cubre los siguientes requisitos:
    • Haber registrado una cuenta de suscripción a Azure ( la gratuita nos sirve) .
    • Haber registrado un centro de Azure IoT ( una vez mas  también existe una modalidad gratuita para probar el  servicio).
    • Una aplicación de cliente que envíe mensajes a su hub de IoT de Azure.
  2. Haber instalado el  explorador de iothub. (Instalar explorer iothub)

Instalación de iothub-explorer

Iothub Explorer es pues una herramienta CLI para administrar las identidades de los dispositivos en su registro de IoT hub, enviar y recibir mensajes y archivos desde sus dispositivos, y monitorear sus operaciones de centros de IoT. Ademas iothub-explorer también permite simular un dispositivo conectado a su hub de IoT.

En post  anteriores  vimos  como con  una Raspberry pi  3 , o  desde un ESP8266    los   configurábamos   e  implementamos sendas aplicaciones para ejecutar en esos dispositivos procesos para enviar datos de telemetria  procedente de sus  sensores a un  hub de IoT en la nube de Azure Iot Edge

Bien, tenemos nuestra aplicación corriendo en el dispositivo de Iot , por lo que necesitamos ahora instalar el  explorador de iothub. Desgraciadamente no esta disponible para ambiente windows , es decir solo lo podemos ejecutar por el momento en equipos con Linux instalado. Ademas esta herramienta requiere la versión 4.x o superior de Node.js para que funcionen todas las características.

Para instalar la última versión de la herramienta iothub-explorer, ejecute el siguiente comando en su entorno de línea de comandos:

npm install -g iothub-explorer

En caso de querer instalar esta utilidad en una Raspberry pi  desde Raspbian, al no estar disponible el comando npm  instalarlo siguiendo estos pasos:

cd ~
git clone https://github.com/azure/iothub-explorer

gitclone

Manejo de iothub-explorer

Una vez isntalada esta utilidad ,puede usar el siguiente comando para obtener ayuda adicional sobre todos los comandos de ihotub-explorer:

$ iothub-explorer help
Usage: iothub-explorer [options] <command> [command-options] [command-args]


  Commands:

    login                           start a session on your IoT hub
    logout                          terminate the current session on your IoT hub
    list                            list the device identities currently in your IoT hub device registry
    create <device-id|device-json>  create a device identity in your IoT hub device registry
    delete <device-id>              delete a device identity from your IoT hub device registry
    get <device-id>                 get a device identity from your IoT hub device registry
    import-devices                  import device identities in bulk: local file -> Azure blob storage -> IoT hub
    export-devices                  export device identities in bulk: IoT hub -> Azure blob storage -> local file
    send <device-id> <message>      send a message to the device (cloud-to-device/C2D)
    monitor-feedback                monitor feedback sent by devices to acknowledge cloud-to-device (C2D) messages
    monitor-events [device-id]      listen to events coming from devices (or one in particular)
    monitor-uploads                 monitor the file upload notifications endpoint
    monitor-ops                     listen to the operations monitoring endpoint of your IoT hub instance
    sas-token <device-id>           generate a SAS Token for the given device
    simulate-device <device-id>     simulate a device with the specified id
    help [cmd]                      display help for [cmd]

  Options:

    -h, --help     output usage information
    -V, --version  output the version number

Cada comando iothub-explorer tiene su propia ayuda ,la cual  se puede ver pasanDdo el argumento -help (ayuda)  al nombre del comando:

$ iothub-explorer help create

  Usage: iothub-explorer create [options] [device-id|device-json]
  
  Create a device identity in your IoT hub device registry, either using the specified device id or JSON description.

  Options:

    -h, --help                       output usage information
    -a, --auto                       create a device with an auto-generated device id
    -cs, --connection-string         show the connection string for the newly created device
    -d, --display <property-filter>  comma-separated list of device properties that should be displayed
    -l, --login <connection-string>  connection string to use to authenticate with your IoT Hub instance
    -k1, --key1 <key>                specify the primary key for newly created device
    -k2, --key2 <key>                specify the secondary key for newly created device
    -r, --raw                        use this flag to return raw JSON instead of pretty-printed output
    -x, --x509                       generate an x509 certificate to authenticate the device
    -dv, --daysValid                 number of days the x509 certificate should be valid for
    -t1, --thumbprint1 <thumbprint>  specify the primary thumbprint of the x509 certificate
    -t2, --thumbprint2 <thumbprint>  specify the secondary thumbprint of the x509 certificate

 

Puede obtener mas  información en  https://github.com/azure/iothub-explorer

Monitor dispositivo a nube mensajes

Para supervisar los mensajes que se envían desde el dispositivo a su hub de IoT, siga estos pasos:

  1. Abra una ventana de consola.
  2. Ejecute el siguiente comando:iothub-explorer monitor-events <device-id> --login "<IoTHubConnectionString>"
  3. Obtener y de su hub de IoT. Asegúrese de que haya terminado el tutorial anterior. O puedes probar a utilizar si tienes, y.<device-id><IoTHubConnectionString>iothub-explorer monitor-events <device-id> --login "HostName=<my-hub>.azure-devices.net;SharedAccessKeyName=<my-policy>;SharedAccessKey=<my-policy-key>"HostNameSharedAccessKeyNameSharedAccessKey

Enviar mensajes de dispositivo de nube

Para enviar un mensaje desde su hub de IoT en el dispositivo, siga estos pasos:

  1. Abra una ventana de consola.
  2. Iniciar una sesión en su hub de IoT ejecutando el siguiente comando:
    Bash Copia
    iothub-explorer login `<IoTHubConnectionString>`
    
  3. Enviar un mensaje a su dispositivo ejecutando el siguiente comando:
    Bash Copia
    iothub-explorer send <device-id> <message>
    

El comando hace parpadear el LED que está conectado a su dispositivo y envía el mensaje al dispositivo.

Nota:No es necesario para el dispositivo envie un comando ack separado a su hub de IoT al recibir el mensaje.

 

Construya su propia consola de juegos con Orange Pi



RetrOrange Pi es es un sistema operativo completo que funciona sobre las placas Orange Pi sin fines de lucro.
Consiste en una configuración básica del Retropie con más núcleos Libretro encima previamente instalada una versión de Jessie Desktop Armbian incluye ademas una horquilla OpenELEC 
Esta distribución se  ha  desarrollado y mantenido por Stevie Whyte y Alerino Reis con colaboración de Wang Matt.
RetrOrangePi es compatible con placas  equipados con CPU H3 y GPU Mali 400, es decir la mayoría Orange Pi, Banana Pi M2 +, Beelink X 2 y NanoPi M1. Se basa, como comentabamos en Armbian (Linux Debian 8) y RetroPie.

Además, a esta distribución de Linux , se incorporan otras herramientas orientadas a la emulación de videojuegos y entretenimiento  que  son realmente la potencia de este paquete.

RetroPie y Kodi son pues los núcleos del proyecto que seguramente llenarán las horas de entretenimiento a muchos usuarios de Orange Pi.

 

En cuanto a consolas emuladas, los usuarios de RetrOrange Pi podrán jugar a videojuegos de PlayStation, MAME, Nintendo NES, SNES, Dreamcast, PSP, Atari, Sega, Nintendo 64 o ScummVM entre otras muchas (unas 64  en total).

Para tener RetrOrange Pi, necesitamos una placa Orange Pi, una tarjeta microsd de al menos 16 Gb de capacidad y el sistema operativo RetrOrange Pi

Gran parte del software incluido en la imagen tienen licencias no comerciales. Debido a esto, vender una imagen preinstalada de RetrOrange no es legal, ni por supuesto  incluirlo en  un  producto comercial
retropie.PNG

Componentes  necesarios

Los componentes que necesitaremos para llevar a cabo este proyecto son los siguientes:

  • Orange Pi PC
  • Caja para Orange Pi
  • Alimentador  de 5V DC
  • Microsd de al menos  8Gb
  • Cable hdmi a hdmi
  • Mando  USB  o en su defecto teclado USB

Montaje

Dada la dificultad obtener una carcasa a media , lo mas sencillo es imprimir  en 3D la caja que contendrá la Orange Pi. Un diseño muy sencillo y rápido es el siguiente  que podemos obtener de thinginverse   el cual esta adaptado perfectamente a la Orange Pi PC.

Este es el link correspondiente:https://www.thingiverse.com/thing:1565411

Otra vía  si no se dispone de impresora 3D es usar una caja de platico  y practicar los agujeros correspondientes para el modelo de orange pi  que vayamos a usar

 

IMG_20180325_123125[1]

Mandos

Para que la experiencia sea  completa  necesitaremos un mando compatible  Retropi System ,es decir un Mando genérico USB donde solo necesita conectarse a un puerto USB y este listo para funcionar.
Los mandos genéricos funcionan con la mayoría de emuladores pues los controladores son compatibles  con el original de SNES.

Por ejemplo este modelo funciona igual que el original tanto con la Raspberry Pi como la Orange Pi . El cable proporcionados  USB es de 1,5 metros y  sus botones son súper sensitivos y de alta precisión.
Las botones que incluye estos mandos   son :

  • Un botón «Start»
  • Un botón «Select»
  • Cruz de control de movimiento.
  • Cuatro botones A,,B,X,Y
  • Dos botones laterales de disparo

El modelo   descrito  tiene  un clásico diseño retro pero se adapta perfectamente a la mano y es relativamente económico ( dos mandos por menos de 9€).

 

 

El mando descrito (el  de las fotos) se puede conseguir en Amazon por unos 8€

Instalación  sistema  operativo

  1.  Debe descargar la imagen más reciente desde el sitio RetrOrangePi  la versión más reciente: RetrOrangePi 4.1  segun su placa :  Plátano Pi M2 + BeeLink X2 OrangePi Lite OrangePi uno OrangePi PC PC OrangePi + OrangePi + 2e OrangePi Plus/Plus2 Versión PAL de cero OrangePi Versión NTSC de cero OrangePi OrangePi cero Plus 2 H3 NanoPi M1(coming soon) OrangePi 2 (próximamente)VERSIÓN COMPLETA – SERVIDOR DE EUROPAPlátano Pi M2 +BeeLink X2OrangePi LiteOrangePi unoOrangePi PCPC OrangePi +OrangePi + 2eOrangePi Plus/Plus2Versión PAL de cero OrangePiVersión NTSC de cero OrangePiOrangePi cero Plus 2 H3OrangePi 2 (próximamente)NanoPi M1 (próximamente) (Debe descargar  de servidores mas cercanos al sitio de la descarga  y acorde  con la placa Orange Pi exacta que se tenga )
  2. Descomprimir la imagen  descargada  en el paso anterior . Idealmente lo mejor es  usar con el programa   7-Zip .
  3. Asegúrese de obtener un archivo con extensión .img. El tamaño del archivo es ~ 5GB por lo que se requiere una tarjeta SD de 8GB mínimo(idealmente al menos de 16GB).
  4. Formatear la microsd si es  que contiene otra versión o imagen antigua de sistema operativo por ejemplo con el programa SC Card Formatter
  5. Incorporar  la imagen flash obtenida al descomprimir en una tarjeta SD  usando el programa  Win32DiskImager

 

 

 

Configuración

 

  1. . Insertar  la tarjeta  en su  placa Orange Pi
  2. Conecte al menos un teclado usb o  un mando usb ( no es necesario conectar un teclado si va a insertar al menos un  mando USB)
  3. Conecte  mediante hdmi desde la Raspberry Pi a un TV o monitor 
  4. Finalmente proporcione alimentación de 5v DC  a la   placa .Atencion!  ! tenga mucho cuidado con este punto !, porque algunos modelos no se alimentan mediante el microusb sino por un conector propietario  o bien desde el conector de expansión , eso sí también a 5V DC.
  5. Necesitamos obtener la dirección IP de la Orange Pi , por lo que dado que el comando ifconfig   puede fallar en esta distribución , lo más sencillo es  usar el programa Fing desde su smartphone o tableta.
  6. Tenga en cuenta que el terminal   y la OrangePi deben estar conectados a la misma red. Esta app , como se puede ver en la imagen de mas abajo , al actualizar el estado nos devuelve la IP de la RETRORANGEPI directamente:                                                                                                                                                                              Screenshot_2018-03-22-22-33-10-808_com.overlook.android.fing[1]
  7. Conociendo ya la dirección IP, y manteniendo encendido nuestra OrangePi, necesitamos un programa cliente FTP para conectar nuestro ordenador, donde tenemos nuestras ROMs listas para copiar, a RetrOrangepie. Existen numerosas aplicaciones para ello, como por ejemplo FileZilla,Winscp, etc

Notas :

  • La contraseña para conectar por FTP es usuario: root contraseña: orangepi
  • Atajos de teclado (excepto Dreamcast PPSSPP, LinApple, Commodore…)

    · Select + Start → salida juego
    · Select + derecha hombro → Guardar estado
    · Select + izquierda hombro → carga estado
    · Select + derecha → guardar ranura aumento
    · Select + izquierda → guardar disminución de ranura
    · Menú de SELECT + X → RetroArch
    · Select + B → reiniciar juego

Copiar ROMs a RetroOrangepie

Una vez la Orange PI tenga  el sw de RetroOrangepie funcionando  necesitamos instalar alguna ROM  de algún juego para  disfrutar de esta .

Las ROMs(es decir volcados de memoria de los juegos )    a pesar  de tener bastantes años y no tener un valor comercial concreto , al estar sujetas a derechos de autor , no deberíamos publicar las  urls’s para su descarga , pero si se ha comprado con alguno  de estos juegos se supone podríamos hacer  uso de estas debido a los años transcurridos. Dada su gran popularidad estos volcados son  muy fácil  obtenerlos  con una sencilla búsqueda en Google  (por ejemplo emuparadise es una referencia) .

Conociendo la dirección IP  obtenida con el Fing,  la manera mas sencilla  de copiar esas ROMs  es  manteniendo encendida nuestra placa  y  por supuesto teniendo la placa conectada a la red  , usar  un programa cliente FTP para conectar desde nuestro ordenador ( donde tenemos nuestras ROMs listas para copiar)  a la OrangePIe. Existen numerosas aplicaciones para ello, como por ejemplo FileZilla,WinScp, etc

Una vez abierta nuestra aplicación de FTP, necesitamos indicar una serie de parámetros para realizar la conexión:

  • Dirección del servidor (Server Address o Host Name): La dirección IP que hemos averiguado anteriormente  con el programa Fing.
  • Nombre de usuario (UserName): root
  • Contraseña (Password): orangepi
  • Puerto (Port Number): 22

Conectamos y aparecerá un árbol de directorios que comienza desde la ruta /home/pi. Desde ahí accedemos al directorio Retropie y después a roms. Aquí se encuentran todos los directorios disponibles para copiar ROMs. Simplemente debemos copiarlas desde nuestro ordenador al directorio que corresponda y listo.

Cada emulador busca sus ROMs en un directorio específico, por lo que el único secreto aquí es saber a qué destino debe ir cada ROM. Para saberlo, lo mejor es consultar la página correspondiente a cada sistema en el wiki de Retropie,pero en general es bastante sencillo pues  colgara de /home/pi/retropi/roms/ .

Así, por ejemplo, si deseamos copiar ROMs de Megadrive, entramos en su página del wiki y vemos que la ruta que corresponde es /home/pi/RetroPie/roms/megadrive, aunque en este caso también se puede usar la ruta /home/pi/RetroPie/roms/genesis.

En caso de ROMs para la Nintendo64 por ejemplo ,  la  ruta es /home/pi/retropi/roms/n64

 

IMG_20180325_123115[1].jpg

PROBLEMAS :

  • En caso que la placa no parece arrancar, intente formatear su sd tarjeta con SDFormatter 4.0  (con ajuste de tamaño sobre) o, probar una fuente de alimentación diferente (real 2A) y una nueva sd (class10 original, recomendado), y por último pero no menos importante, asegúrese de conectarse su  TV es compatible con HDMI 720 (sin los adaptadores DVI)
  • En el primer arranque automáticamente se instala el sistema, cambia el tamaño de la tarjeta sd y en ocasiones se reinicia otra vez, asi que por favor sea paciente
  • Por defecto el nombre de usuario y contraseñas son: pi de usuario / contraseña pi / superusuario root / contraseña orangepi
  • Los emuladores ya están instalados, pero sólo aparecen en EmulationStation al agregar roms.
  • Para agregar ROMs, simplemente soltar archivos en la carpeta de la consola de /home/pi/RetroPie/roms/$, donde $CONSOLE es el nombre de la consola de destino, por ejemplo snes o arcade. Puede lanzar el escritorio de EmulationStation y enchufe una unidad USB con tus ROMs. Carpetas roms son también acciones de samba.
  • Debido a nuestra configuración personalizada, por favor no ejecutar ‘sudo apt-get upgrade’. Se pueden romper algunas cosas.
  • Las ROMs   a pesar  de tener bastantes años y no tener valor comercial al estar sujetas a derechos de autor , no podemos  publicar las  urls’s para su descarga , pero dado su gran popularidad es muy fácil obtenerlas  con una sencilla búsqueda en Google (por ejemplo emuparadise es una referencia) .