Instalación del Cliente Vision de Ignition en sistema ARMHF (ARM de 32 bits)
📓

Instalación del Cliente Vision de Ignition en sistema ARMHF (ARM de 32 bits)

1. Introducción

A partir de la versión 8.0, el cliente de Vision no es soportado en su totalidad para los sistemas que corren bajo una arquitectura de 32 bits. Si bien es posible lanzar los clientes desde estos sistemas, el proceso es más largo de lo habitual, y se requiere conocimiento avanzado para instalar los paquetes por separado. El proceso completo de esta implementación puede tardar 1 hora, pero puede alargarse si:

  • Algún paquete de JDK o cURL no se tiene a disposición, lo cual causa que la búsqueda de estos puede tardar varias horas, inclusive un día completo.
  • Cada distribución de Linux es diferente, por lo que pueden surgir errores en el camino que no se detallan en esta guía, incrementando el tiempo total en varios días.

A futuro, se espera que los clientes puedan migrar a Perspective, bajo lo cual el cliente se abriría a través de un navegador web, dejando al cliente de Vision como obsoleto. Otra posibilidad es que se inicie la compatibilidad de Perspective Workstation para sistemas de 32 bits, esto debido a que a través del Perspective Workstation, es posible usar sensores de la PC, como NFC, Bluetooth, etc.


2. Procedimiento Inductive Automation

Inductive Automation tiene un artículo en la web que habla un poco sobre el tema, y expone de forma sencilla cómo se debe realizar el proceso. El artículo se puede encontrar en el siguiente enlace:

Lo que menciona el artículo, es que no es posible correr el Vision Launcher en las computadoras de 32 bits, pero si es posible utilizar el Legacy Launcher para abrir los clientes de Vision.

En la siguiente sección, se usará este artículo como base, pero explicaremos más a detalle cómo se deben instalar las diferentes librerías externas al Ignition.


3. Procedimiento Completo en Linux (Ubuntu 16 ARMHF)

En un esfuerzo por ayudar a las arquitecturas que hacen un uso intensivo del hardware de 32 bits, Ignition 8.0.3+ incluye algunos scripts de procesamiento por lotes y bash que se pueden usar para iniciar clientes de 32 bits. Estos lanzadores no son soportados, pero son útiles en los casos en que los Vision Clients de 32 bits son la única opción.


3.1. Prerrequisitos

Los siguientes pasos deben repetirse en cada pieza de hardware que ejecutará un cliente de 32 bits.


3.1.1. Instalar un JRE

El hardware que ejecutará el cliente Vision debe tener instalado Java 11 JRE de 32 bits. Las versiones anteriores de Java (por ejemplo, Java 8, Java 9, etc.) no funcionarán. A partir de Ignition 8.1.33, debe usar Java 17 JRE de 32 bits.

Puede usar el proveedor de su elección, pero como sugerencia, AdoptOpenJDK tiene algunas versiones de 32 bits (al momento de escribir este artículo). Podrá encontrar estas en la página de adoptium, ya que AdoptOpenJDK está migrando hacia Adoptium.

En muchas ocasiones, los sistemas operativos más recientes permiten simplemente descargar el paquete de java de internet, a través de sudo apt-get. En esta guía vamos a describir el procedimiento para hacer la instalación offline.

    1. Debe ir a la página de Adoptium

    2. Debe seleccionar la opción de “Other platforms and versions”, ya que la versión más reciente no será la versión 11 o la 17


    3. Esto lo llevará a una página donde podrá seleccionar su sistema operativo, arquitectura, tipo de paquete y versión. Seleccione la opción ARM, tipo JDK (con el JDK instalamos el JRE también) y versión 11


    4. Una vez descargamos este archivo, debemos llevarlo a nuestra computadora donde queremos lanzar el cliente de Ignition. En el caso de esta guía, se hizo a través de un RDS, que a su vez tenía una conexión local a través de un VNC.

    5. El archivo solamente se copió y pegó en el RDS, pero para pasarlo del Windows al Linux de la computadora cliente, se tuvo que usar una herramienta llamada WinSCP. Esta herramienta es muy sencilla de usar, solamente colocamos la IP de la computadora cliente, y usamos el protocolo SCP. Saldrán 2 ventanas, una ventana con una carpeta en Windows y otra con una carpeta en el Linux de la computadora cliente.

    6. Una vez se ha movido el jdk, debemos abrir una ventana del Terminal de linux

    7. Dentro del Terminal, debemos navegar a la carpeta donde está el jdk, usando el comando cd. Por ejemplo, si nuestro archivo jdk está en la carpeta Documents, entonces es probable que nuestro comando cd sea así:

            a. cd /home/usuario/Documents

        Donde “usuario” debe sustituirse por el usuario de la computadora cliente en linux.

    8. Al cambiar la dirección del terminal, se debe extraer el archivo jdk. Esto se hace con el siguiente comando:

            a. tar -xvf jdk-11.x.x_linux-x64_bin.tar.gz

        Dónde “jdk-11.x.x_linux-x64_bin.tar.gz” debe sustituirse por el nombre de nuestro archivo, el cual es muy probable que sea diferente dependiendo de dónde lo obtuvimos.

    9. Una vez se ejecuta esta línea, se debe mover la carpeta extraída de la siguiente manera:

            a. sudo mv <carpeta_extraida> /usr/lib/jvm/

        Donde “carpeta_extraida” debe sustituirse por el nombre de la carpeta que extrajimos en el paso anterior, de manera que esta carpeta dejará de estar en nuestro directorio actual, y se moverá al directorio /usr/lib/jvm/


3.1.2. Establezca JAVA_HOME en el JRE

    1. Una vez se ha colocado el JDK en esta carpeta, debemos declarar las variables de Java en el sistema, a esto le llamamos establecer el JAVA_HOME. Para esto, debemos modificar un documento de texto que se encuentra en la ruta  /etc/environment. Para modificar este documento, debemos usar la ventana de Terminal que tenemos abierta, o abrir otra, y escribir el siguiente comando:

            a. sudo nano /etc/environment

        Al escribir este comando, es muy probable que nos solicite la contraseña del usuario.

    2. Una vez hemos abierto este archivo, la misma ventana de Terminal se convertirá en un editor de texto. Sabemos que abrimos el archivo porque este ya tiene un contenido dentro. Si se nos abre un archivo en blanco, es posible que tengamos un error en la escritura del comando, lo que generó que el Terminal creara un archivo. Como este archivo todavía no se ha guardado, podemos presionar las teclas “Ctrl+X” para cerrar el editor y volverlo a intentar.

    3. A través de este editor, debemos añadir una línea al final con lo siguiente:

            a. JAVA_HOME=/usr/lib/jvm/<carpeta_extraida>

        Donde “carpeta_extraida” debe sustituirse por el nombre de la carpeta que extrajimos en el paso 8.

    4. También, en la línea que dice PATH, debemos agregar al final lo siguiente:

            a. Original: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games”

            b. Nuevo: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/<carpeta_extraida>/bin”

        Donde “carpeta_extraida” debe sustituirse por el nombre de la carpeta que extrajimos en el paso 8. Notesé que en este paso la ruta finaliza con un “/bin”

    5. Al efectuar los cambios, debemos presionar las teclas “Ctrl+O” y luego Enter para guardar los cambios.

    6. Luego debemos presionar las teclas “Ctrl+X” para cerrar el editor de texto del Terminal, y volver al ambiente donde estábamos.

    7. Una vez se ha realizado esto, se debe ejecutar el siguiente comando en una ventana de Terminal:

            a. source /etc/environment

    8. Al ejecutar el comando anterior, java debe aparecer como ya instalado. Para validar esto, debemos ejecutar el siguiente comando en una ventana de Terminal:

            a. java -version

        Si todos los pasos anteriores funcionan correctamente, deberá aparecer que el Java está instalado, tanto el JDK como el JRE.


3.1.3. Establecer JAVA_HOME por defecto

En algunos casos, Java no queda guardado por defecto para todas las sesiones del Terminal, lo que causa que cada vez que se cierra y abre el Terminal, debe correrse el comando source nuevamente. Este comportamiento no nos permitirá ejecutar fácilmente el cliente de Vision, ya que cada vez que se cierre, alguien deberá abrir el Terminal y ejecutar el comando source /etc/environment desde ahí.

Para que esto no ocurra, y se cargue el Java por defecto siempre al abrir el Terminal, debemos hacer lo siguiente:

    1. Abrir una ventana de Terminal

    2. Abrir el archivo bashrc con el editor de texto del Terminal a través del siguiente comando:

            a. sudo nano ~/.bashrc

        Al ejecutar este comando, se debe abrir un archivo de texto en la ventana de Terminal, que podemos editar ahí mismo.

    3. Una vez hemos abierto este archivo, la misma ventana de Terminal se convertirá en un editor de texto. Sabemos que abrimos el archivo porque este ya tiene un contenido dentro. Si se nos abre un archivo en blanco, es posible que tengamos un error en la escritura del comando, lo que generó que el Terminal creara un archivo nuevo. Como este archivo todavía no se ha guardado, podemos simplemente presionar las teclas “Ctrl+X” para cerrar el editor y volverlo a intentar.

    4. Dentro de este archivo, debemos ir al final, y agregar lo siguiente como una línea nueva y como última línea:

            a. source /etc/environment

    5. Al efectuar los cambios, debemos presionar las teclas “Ctrl+O” y luego Enter para guardar los cambios.

    6. Luego debemos presionar las teclas “Ctrl+X” para cerrar el editor de texto del Terminal, y volver al ambiente donde estábamos.

    7. Para comprobar que realizamos los pasos correctamente, debemos cerrar el Terminal que tenemos abierto, y abrir otro. Dentro de ese nuevo Terminal, debemos escribir el comando:

            a. java -version

    8. Si todo salió correctamente, el sistema debe mostrar que el Java está correctamente instalado.


3.1.4. Instalar cURL

El Ignition cuenta con unos scripts que ejecutan los clientes. Estos scripts se conectan al servidor y extraen de este algunos archivos. Esto lo hacen a través de un paquete llamado cURL. Sin este paquete, no será posible ejecutar el Vision en nuestro sistema de 32 bits. Para instalarlo, podemos hacerlo a través de wget. Pero en esta guía, explicaremos el método offline:

    1. Descargar el paquete de cURL correcto. Dependiendo del sistema operativo que tengamos, el paquete puede variar. En el caso de Ubuntu, podemos encontrar este paquete en la página llamada launchpad.net. Lo que hacemos es escribir en el buscador algo como:

            a. launchpad cURL Ubuntu 16 ARMHF

Siendo ARMHF (ARM Hard Float) el término para un sistema con procesador ARM y de arquitectura 32bits. También se puede buscar como ARM 32 bits.



        En esta página, el correcto sería el siguiente:


        Esta librería tiene dependencias, por lo que al tratar de instalarlo, es posible que nuestro sistema operativo tenga instaladas estas dependencias pero con versiones menores. En el caso del dispositivo de esta guía, se tuvo que usar la versión curl_7.47.0-1ubuntu2.14_armhf.deb, la cual se puede encontrar buscando en launchpad como: launchpad cURL Ubuntu 16 2.14 ARMHF

    2. Una vez tenemos este archivo debemos llevarlo a la computadora. En este caso, se movió el archivo de la misma manera que se conversó en la sección 3.1, a través de un RDS, y luego a través de WinSCP hacia la computadora con Linux.

    3. Una vez tenemos el archivo en la computadora cliente de Linux, debemos abrir una ventana de Terminal.

    4. En esta ventana de Terminal, debemos navegar a la ruta donde se encuentra nuestro archivo de cURL. Si nuestro archivo se encuentra en la carpeta Documents, entonces el comando para navegar sería:

            a. cd /home/usuario/Documents

        Donde “usuario” debe sustituirse por el usuario actual de la computadora.

    5. Una vez estamos en la misma ruta del archivo, ejecutamos el siguiente comando:

            a. sudo dpkg -i curl_7.47.0-1ubuntu2.14_armhf.deb

        Donde “curl_7.47.0-1ubuntu2.14_armhf.deb” se debe sustituir por el nombre de nuestro archivo, en el caso de que no sea exactamente el mismo de esta guía.

    6. Este comando instalará el el cURL. Para verificar que se ha instalado correctamente, debemos ejecutar el comando:

            a. curl –version

        El cual deberá mostrar la versión actual instalada de cURL.


3.2. Legacy Launchers Linux y Mac

El uso de Legacy Launchers implica recuperar un archivo "legacyClient" a través de uno de los medios enumerados a continuación (según el sistema operativo de la computadora que ejecutará el cliente)

3.2.1. Descargar el legacyClient.sh

    1. En la computadora cliente de Linux, abra una ventana de Terminal y navegue a un directorio donde va a tener los archivos de lanzamiento del cliente. En este ejemplo, usaremos la dirección /home/usuario/Documents, la cual se puede llegar a través del comando:

            a. cd /home/usuario/Documents

        Donde debe reemplazarse “usuario” con el usuario real de la computadora.

    2. Ejecute uno de los siguientes comandos en la ventana de Terminal para descargar el archivo legacyClient.sh, reemplazando "localhost:8088" con la dirección de la puerta de enlace que aloja el proyecto Vision que desea iniciar.

            • curl -o legacyClient.sh "http://localhost:8088/system/nativelaunch?type=legacy&os=linux"

            • wget -O legacyClient.sh "http://localhost:8088/system/nativelaunch?type=legacy&os=linux"

        Por ejemplo, si la IP del servidor es 192.168.0.50, entonces deberíamos usar el comando curl -o legacyClient.sh "http://192.168.0.50:8088/system/nativelaunch?type=legacy&os=linux”; o el equivalente en wget.


Nota: A pesar de que en este paso es posible usar wget para extraer el LegacyLauncher, es necesario el cURL para ejecutar el archivo legacyClient.sh.


3.2.2. Ejecutar el legacyClient.sh

    1. Una vez descargado el archivo, podemos verificarlo navegando a la dirección usada, a través del File Manager. Dentro de la carpeta Documents, debe aparecer un archivo llamado legacyClient.sh.

    2. A continuación, debemos ejecutar el siguiente comando para abrir finalmente nuestro cliente. Esto se hará a través de la ventana de Terminal, pero en la siguiente sección veremos cómo hacerlo desde un acceso directo. La forma genérica del comando es:

            a. legacyClient.sh address=GATEWAY_ADDRESS scope=SCOPE windowmode=WINDOW_MODE project=PROJECT certificate=CERTIFICATE

               Donde:

                    i. GATEWAY_ADDRESS: la dirección completa de la puerta de enlace

                    ii. SCOPE: El alcance para lanzar, 'D' para Designer, 'C' para Vision Client (Nota: sin comillas simples)

                    iii. WINDOW_MODE: el modo de ventana a usar, 'W' para ventana, 'F' para pantalla completa.

                    iv. PROJECT: El Nombre del Proyecto a Lanzar. Debe existir un proyecto con el nombre especificado aquí en la puerta de enlace antes de intentar iniciar el cliente.

                    v. CERTIFICATE: el archivo de certificado PEM para usar con curl o wget. (Primero se intenta curl, wget si curl no está instalado)

                    vi. SKIP_CERT_CHECK: si se proporciona este argumento, no se realizará la verificación del certificado por curl o wget

                    vii. JAVA ARGS: cualquier argumento de Java. (NOTA: no se comprueba la validez antes de intentar el lanzamiento)

                ​Ejemplo: si tenemos un servidor con dirección IP 192.168.0.50, un proyecto llamado ProyectoIgnition, y queremos lanza un cliente en pantalla completa, entonces nuestro comando debe ser.

            a. legacyClient.sh address=http://192.168.0.50:8088 scope=C windowmode=F project=ProyectoIgnition

        Hay ciertos argumentos que son opcionales, como CERTIFICATE, SKIP_CERT_CHECK y JAVA ARGS.

    3. Este comando debe ejecutarse desde una ventana de Terminal, que esté en la ruta del legacyClient.sh.

    4. Si el comando se ejecutó correctamente, lo que sucederá es que se iniciará el cliente de VIsion bajo el proyecto seleccionado.


3.3. Acceso al cliente a través de un acceso directo

A pesar de que logramos iniciar el cliente a través de la ventana de Terminal, hay muchas razones por las cuales un usuario no quisiera hacerlo de esta forma:

        • No cuenta con los conocimientos necesarios

        • Espera una herramienta robusta que le permita ejecutar el Cliente con un click y sin complicaciones

Es por eso que a continuación describiremos cómo crear un acceso directo de escritorio en Ubuntu para ejecutar este archivo.


3.3.1. Crear un archivo con la ejecución del acceso directo

    1. Debemos ir a una ruta cualquiera y crear un archivo plano de texto. Este archivo debe tener el siguiente contenido:


​[Desktop Entry]

​Name=NombreAccesoDirecto

​Comment=Comentario sobre la aplicacion

​Exec=env PATH=/path/to/java/bin:\$PATH /path/to/application

​Terminal=false

​Icon=/path/to/icon/icon.png

​Path=/path/to/folder

​Type=Application

​Categories=Utility;


De este texto, debemos adaptar lo que está subrayado de la siguiente manera:

        • NombreAccesoDirecto: Es solamente un nombre para el acceso directo, puede ser el que queramos

        • Comentario sobre la aplicacion: Es solamente un comentario para el acceso directo. El mismo se leerá al dejar el mouse encima del acceso directo.

        • /path/to/java/bin: Es la ruta a la carpeta bin donde instalamos el Java en el paso 4.1. Tiene una forma similar a /usr/lib/jvm/<carpeta_extraida>, dónde carpeta_extraida es el nombre de la carpeta que extrajimos de Java (usualmente tiene un nombre similar a este: jdk-11.x.x)

        • /path/to/application: es el comando que usamos para ejecutar el legacyClient.sh, con la diferencia de que debemos especificar la ruta exacta donde se encuentra.

        • /path/to/icon/icon.png: Es la ruta donde podemos colocar una imagen de Vision para que el acceso directo se vea igual al normal.

        • /path/to/folder: Es la ruta hacia la carpeta donde está el legacyClient.sh


Usando todos los ejemplos de este documento, un texto ejemplo sería el siguiente:


​[Desktop Entry]

​Name=ProyectoIgnition

​Comment=Este es el lanzador del ProyectoIgnition

​Exec=env PATH=/usr/lib/jvm/jdk-11.0.18/bin:\$PATH legacyClient.sh address=http://192.168.0.50:8088 scope=C windowmode=F project=ProyectoIgnition

​Terminal=false

​Icon=/home/usuario/Documents/VisionIcon.png

​Path=/home/usuario/Documents

​Type=Application

​Categories=Utility;


Nota: El Terminal se puede colocar en true para visualizar cualquier error que surja durante la ejecución, aunque en algunos casos el Terminal solamente se logra visualizar por un segundo o menos.


En este acceso directo, estamos colocando la ruta de Java para que el legacyClient.sh pueda ejecutar el Java correctamente, ya que a veces no lo detecta por defecto. Se recomienda hacerlo así desde un inicio, a menos de que se tenga certeza de que no es necesario.


Si el legacyClient.sh detecta el Java sin problema, podemos sustituir el texto anterior por uno más sencillo:


​[Desktop Entry]

​Name=NombreAccesoDirecto

​Comment=Comentario sobre la aplicacion

​Exec=/path/to/application

​Terminal=false

​Icon=/path/to/icon/icon.png

​Path=/path/to/folder

​Type=Application

​Categories=Utility;


El cual se ve así con el ejemplo:


​[Desktop Entry]

​Name=ProyectoIgnition

​Comment=Este es el lanzador del ProyectoIgnition

Exec=legacyClient.sh address=http://192.168.0.50:8088 scope=C windowmode=F project=ProyectoIgnition

​Terminal=false

​Icon=/home/usuario/Documents/VisionIcon.png

​Path=/home/usuario/Documents

​Type=Application

​Categories=Utility;


    2. Una vez tenemos este archivo de texto ya configurado, debemos guardarlo con el nombre que queramos (usualmente el mismo del proyecto), y ponerle la extensión .desktop al final.


3.3.2. Crear el acceso directo a través del archivo .desktop

    1. Debemos mover este archivo hacia la carpeta /usr/share/applications/ usando el siguiente comando en una ventana de Terminal:

            a. sudo mv /path/to/shortcut.desktop /usr/share/applications

        En este comando, debemos sustituir “/path/to/shortcut.desktop” por la ruta donde guardamos nuestro archivo. Si tuviéramos un usuario llamado usuario, y guardaramos este archivo en la carpeta de Documents, y nuestro proyecto se llamara ProyectoIgnition, entonces el comando sería así:

            b. sudo mv /home/usuario/Documents/ProyectoIgnition.desktop /usr/share/applications

    2. Una vez hemos movido el archivo, debemos abrir el File Manager y navegar hacia la carpeta donde colocamos ese archivo, es decir, a /usr/share/applications.

    3. Dentro de esta carpeta, debemos darle click derecho y dar click en la opción Properties

    4. Se nos abrirá una ventana, en la cual daremos click en la pestaña de Permissions.

    5. En esta pestaña, debemos activar el check que permite que este archivo se pueda ejecutar, para que al darle click podamos correrlo sin problema.

    6. Una vez hecho esto, podemos ir al menú de Inicio, y buscar nuestro acceso directo ahí, darle click y revisar si funciona correctamente.

    7. Si queremos que aparezca en el escritorio, debemos darle click derecho al acceso directo en el menú de Inicio, y decirle que cree un acceso directo en el escritorio u otros.

    8. Si el acceso directo no nos funciona, debemos abrir una ventana de Terminal, y navegar a la ruta /usr/share/applications a través del siguiente comando:

            a. cd /usr/share/applications

    9. Una vez en esta ruta, debemos ejecutar el siguiente comando:

            a. desktop-file-validate shortcut.desktop

          Donde debemos sustituir la palabra “shortcut” por el nombre que le colocamos a nuestro archivo. Esto validará si lo que escribimos dentro del archivo tiene el formato correcto.

    10. También podemos ejecutar el siguiente comando:

            a. xdg-open /usr/share/applications/shortcut.desktop

          Donde debemos sustituir la palabra “shortcut” por el nombre real de nuestro archivo. Este comando lo que hará es que ejecutará el archivo pero desde la línea de comandos y desde la raíz, lo que nos permitirá ver de mejor manera cualquier error que arroje.