Guía de Instalación de HMICEOS1
Release 4.7.4-SNAPSHOT, año 2024.
Contenido
b) Con resource (Despliegue inicial) y layout (oper.mememto) |
HMICEOS1 es una solución para monitorear y operar sistemas de control industrial en tiempo real, la cual puede instalarse en cualquier plataforma que soporte JAVA, integrada por CEOS Automatización CA. Combina los avances de aplicaciones de código abierto como "Phoebus" variante actual de Control System Studio (CS-Studio) y Apache PLC4X en su característica “Merlot”.
CS-Studio "Phoebus" permite generar los despliegues o pantallas requeridas para supervisar y controlar las variables digitales y analógicas, tales como estado del motor, válvulas, niveles del tanque, presión, vibración, temperatura, entre otros parámetros del proceso. Se utilizará la versión 4.7.4, año 2024.
Apache PLC4X característica “Melot” es el intermediario de comunicación entre “Phoebus” y el Sistema de Control, Controlador Lógico Programable (PLC) u otro dispositivo industrial presente en la Planta a integrar que utilice protocolos de comunicación industrial, tales como: Modbus, S7, OPC, entre otros. La versión actual es merlot-0.13.0, año 2024.
El objetivo final de Apache PLC4X, https://plc4x.apache.org/, es crear un conjunto de bibliotecas en código abierto que permitan comunicarse con cualquier tipo de controlador lógico programable (PLC) de grado industrial.
CEOS Automatización C.A. participa activamente en las mejoras de “Merlot”, ofreciendo soluciones reales en la actualidad con HMICEOS1 y trabajando en otros requerimientos con mayores grados de complejidad referidos como HMICEOS2 y HMICEOS3, según el avance y fechas de entrega.
A continuación se muestra el flujo de los datos vistos y controlados desde los Despliegues en el Monitor del HMI hasta el proceso de fabricación.
Phoebus hace uso de PV Access JAVA API, para comunicarse con “Merlot”. Por lo cual todos los datos en los despliegues que supervisan o controlan alguna variable de proceso, comenzarán con pva:// y luego el nombre de la variable, sin importar el protocolo de comunicación que utilice el PLC de campo. (Ejemplos: pva://UXTAG01/value, pva://UZTAG39/alarm)
La característica “Merlot” de Apache PLC4X, es desarrollada sobre el contenedor de aplicaciones Apache Karaf, que le permite ejecutarse de manera aislada e independiente, en caliente, con acceso remoto, entre otras bondades que brindan robustez, seguridad y posibilidad de enfrentar retos de incluir nuevos protocolos y funcionalidades.
Es por ello que puede implementarse el driver de comunicación del protocolo S7 de Siemens hoy en HMICEOS1 y mañana dependiendo de los requerimientos de la planta, pasar a Modbus u otro nuevo protocolo por ejemplo sin afectar los Despliegues o Pantallas realizados en Phoebus.
La instalación del programa Phoebus en Linux puede funcionar todo en una sola carpeta (por ejemplo: /home/user/git/forks/phoebus), sin embargo, implementarlo en un ambiente de producción en las instalaciones de Cliente amerita aplicar restricciones de acceso tanto al sistema operativo como a las aplicaciones dentro de Phoebus que puedan comprometer la funcionalidad del aplicativo o la seguridad de la Planta.
Se utilizará los directorios /opt, /usr/share y /usr/bin de la siguiente manera:
(/opt): Carpeta del sistema operativo donde se colocarán los archivos del aplicativo Phoebus; para HMICEOS1 el resultado generado de la versión 4.7.4-SNAPSHOT se descargará en la subcarpeta /opt/Phoebus-App.
/opt
└── Phoebus-App
/opt/Phoebus-App/lib$ pwd
/opt/Phoebus-App/lib
$ tree /opt
/opt
└── Phoebus-App
├── lib
│ ├── activation-1.1.jar
│ ├── activemq-client-5.18.4.jar
. . .
│ ├── xmlgraphics-commons-2.4.jar
│ └── zstd-jni-1.5.5-1.jar
├── phoebus.bat
├── phoebus.desktop
├── phoebus.sh
├── product-4.7.4-SNAPSHOT.jar
├── README.md
└── site_splash.png -> /usr/share/Phoebus-Files/Proyecto/Imagenes/site_splash.png
3 directories, 274 files
administrador@elmorro:~$
__________________________________________________________________________________
(/usr/share): dentro de esta carpeta del sistema operativo, se colocaran los archivos de configuraciones y despliegues particulares desarrollados para el Cliente; para HMICEOS1 las configuraciones (authorization.conf, oper.memento, phoebus-HMICeos01-start.sh y settings.ini) van en /usr/share/Phoebus-Files/ y los despliegues (000_INICIO.bob, 100-ModoOperacion.bob,... ) en /usr/share/Phoebus-Files/Proyecto.
__________________________________________________________________________________
$ tree /usr/share/Phoebus-Files/
/usr/share/Phoebus-Files/
├── authorization.conf
├── oper.memento
├── phoebus-HMICeos01-start.sh
├── Proyecto
│ ├── 000_INICIO.bob
│ ├── 000-Menu.bob
│ ├── 000-PanelLateralDer.bob
│ ├── 000-PanelV2.bob
│ ├── 100-ModoOperacion.bob
│ ├── 110-ControlLavadora.bob
…
│ ├── 600-SeleccionLDeLineaOpciones.bob
│ ├── Imagenes
│ │ └── morro.png
│ ├── PanelMenus.py
│ ├── Visualizacion454.py
│ ├── visualizacionfondo.py
│ └── VisualizacionMensajeFlotante.py
└── settings.ini
3 directories, 70 files
administrador@elmorro:/usr/share/Phoebus-Files$
__________________________________________________________________________________
(/usr/bin): dentro de esta carpeta del sistema operativo, se colocará el enlace “phoebus” a “/usr/share/Phoebus-Files/phoebus-HMICeos01-start.sh” que levantara el aplicativo Phoebus con las configuraciones iniciales para todos los usuarios definidas para HMICEOS1. También puede conservarse un enlace “phoebus.sh” al archivo original “/opt/Phoebus-App/phoebus.sh” para uso del administrador del sistema operativo.
__________________________________________________________________________________
:/usr/bin$ tree /usr/bin/ | more
/usr/bin/
├── [
├── 7z
├── pgrep
├── phoebus -> /usr/share/Phoebus-Files/phoebus-HMICeos01-start.sh
├── phoebus.sh -> /opt/Phoebus-App/phoebus.sh
. . .
├── printf
├── printscreen_hmi
├── zstdless
└── zstdmt -> zstd
2 directories, 1579 files
:/usr/bin$
__________________________________________________________________________________
__________________________________________________________________________________
sudo apt install openjdk-17-jre
Si esta descargado el paquete, instalar de la siguiente manera:
sudo dpkg -i ca-certificates-java_20230710~deb12u1_all.deb java-common_0.74_all.deb libatk-wrapper-java_0.40.0-3_all.deb libatk-wrapper-java-jni_0.40.0-3_amd64.deb libgif7_5.2.1-2.5_amd64.deb openjdk-17-jre_17.0.12+7-2~deb12u1_amd64.deb openjdk-17-jre-headless_17.0.12+7-2~deb12u1_amd64.deb
__________________________________________________________________________________
Para simular clic del ratón desde el teclado a explicar en la sección de Accesos Rápidos.
__________________________________________________________________________________
sudo apt install xdotool
Si esta descargado el paquete, instalar de la siguiente manera:
sudo dpkg -i libxdo3_1%3a3.20160805.1-5_amd64.deb xdotool_1%3a3.20160805.1-5_amd64.deb
Se esta usando la versión 4.7.4-SNAPSHOT, fecha octubre 2024.
El código fuente en JAVA en constante evolución del programa está en la ruta:
__________________________________________________________________________________
https://github.com/ControlSystemStudio/phoebus.git
__________________________________________________________________________________
En caso de requerir generar generar un producto más reciente, clonar desde git en local y realizar el procedimiento de compilación con el aplicativo maven, ejemplo:
__________________________________________________________________________________
mvn clean install -DskipTests
__________________________________________________________________________________
Luego copiar el producto “target” resultante en la PC HMICEOS1 en “/opt/Phoebus-App/” como se describe anteriormente en el apartado Estructura de Archivos:
Se utilizaran como base los despliegues proyecto El Morro elaborados hasta el 2024 sep 08, en el cual se utilizó: 000-PanelV2.bob como Principal o inicial.
Para facilitar el reconocimiento y arranque automático del despliegue inicial de este proyecto y otros a futuro, se copia a 000_INICIO.bob y a partir de ahora se establece este último como el despliegue que el HMICEOS abrirá al encender el equipo.
En resumen:
•Debe existir un archivo llamado 000_INICIO.bob en el mismo directorio “Proyecto” donde van los archivos de las pantallas o despliegues, /usr/share/Phoebus-Files/Proyecto/000_INICIO.bob.
•La ruta donde se almacenaran todos los despliegues y sus respectivos scripts e imágenes:
__________________________________________________________________________________
/usr/share/Phoebus-Files/Proyecto/
__________________________________________________________________________________
Para facilitar las labores de mantenimiento y edición de despliegues por el administrador de Sistema, y No del Operador, asignar la permisología correspondiente a la carpeta donde se alojarán los despliegues de HMICEOS1.
___________________________________________________________________________________
sudo chmod 775 -R /usr/share/Phoebus-Files/Proyecto/
___________________________________________________________________________________
__________________________________________________________________________________
sudo useradd -m operador
sudo passwd operador
New password:
Retype new password:
passwd: password updated successfully
Repetir para administrador
sudo useradd -m administrador
sudo passwd administrador
__________________________________________________________________________________
Puede crearse un script para generar el usuario operador sin clave (Si luego se requiere el administrador puede colocarle una clave)
Para establecer que el usuario operador ingrese automáticamente “autologin” al encender la HMI sin solicitarse clave, se realiza la modificación del siguiente archivo:
/etc/lightdm/lightdm.conf
__________________________________________________________________________________
sudo nano /etc/lightdm/lightdm.conf
Para XFCE debe estar descomentado ”sin #” y con el nombre operador el siguiente campo.
#
[Seat:*]
#type=local
user-session=xfce
autologin-user=operador
__________________________________________________________________________________
Al navegar dentro del aplicativo Phoebus, se detectan algunas vulnerabilidades que han sido superadas, como:
•Con el botón derecho cualquier usuario puede acceder desde algún botón de un despliegue X
y acceder a
app-filebrowser
app-probe
app-pvtable
app-pvtree
desde el cual puede saltar la seguridad configurada en el despliegue.
Se recomienda quitar permisos de ejecución a esas aplicaciones en HMICEOS1.
Se ha solventado / ejecutado de la siguiente manera:
a) Quitar permisos de lectura a otros (sudo chmod o-r AplicativoX) en /opt/Phoebus-App/lib
__________________________________________________________________________________
/opt/Phoebus-App/lib$ sudo chmod o-r app-filebrowser-4.7.4-SNAPSHOT.jar app-probe-4.7.4-SNAPSHOT.jar app-pvtable-4.7.4-SNAPSHOT.jar app-pvtree-4.7.4-SNAPSHOT.jar
luego quedan con permisos que solo le permiten ser usados por el usuario o grupo root.
-rw-r----- 1 root root 64946
__________________________________________________________________________________
b) Asignar permisos al administrador de pertenecer al grupo root
__________________________________________________________________________________
usermod -a -G root administrador
__________________________________________________________________________________
Se definen dos usuarios principales, “administrador” y “operador”. Para el usuario operador se describen una serie de pasos como medidas de protección del Sistema, Aplicativo y correcciones de vulnerabilidades detectadas en la implementación de la actual versión.
Total privilegios para efectuar cambios del sistema operativo y accesos directos. Instalación, despliegues y aplicaciones Phoebus.
Solo tiene permisos para navegar dentro del aplicativo Phoebus, al cual se le quitará acceso a programas o llamadas desde Phoebus como app-filebrowser, app-probe, app-pvtable y app-pvtree por motivos de seguridad que se han detectado en la actual versión.
Adicional a levantar el aplicativo Phoebus de manera automática al inicio de sesión también automático del usuario operador, se ejecutan otros programas personalizados a crear que limitan el acceso de este usuario a cualquier parte del Sistema Operativo, e incluso el uso de teclas y programas que atenten contra la continuidad operativa del HMICEOS, como por ejemplo la combinación de teclas ALT+F4 y el paquete Phoebus Pvtable.
Estructura de archivos del entorno gráfico XFCE para Inicio automático (AutoStart) de aplicaciones.
__________________________________________________________________________________
/home/operador/.config
├── autostart
│ ├── at-spi-dbus-bus.desktop
│ ├── Desactivar_panel.desktop
│ ├── Desactivar_Tecla_ALT.desktop
│ ├── phoebus.desktop
...
│ └── xiccd.desktop
├── dconf
__________________________________________________________________________________
El cierre del panel y la barra de herramientas puede lograrse ejecutando el siguiente comando:
__________________________________________________________________________________
xfce4-panel && xfce4-panel -q
__________________________________________________________________________________
O incluirlo en un programa de autostart a nombrar “Desactivar_panel”
Ejemplo de AutoStart activo:
__________________________________________________________________________________
[Desktop Entry]
Encoding=UTF-8
Version=0.9.4
Type=Application
Name=Desactivar_panel
Comment=Desactivar Panel XFCE
Exec=pgrep xfce4-panel && xfce4-panel -q
OnlyShowIn=XFCE;
RunHook=0
StartupNotify=false
Terminal=false
Hidden=true
__________________________________________________________________________________
Y guardar en la ruta
__________________________________________________________________________________
/home/operador/.config/autostart/Desactivar_panel.desktop
__________________________________________________________________________________
De igual manera proceder con deshabilitar la tecla ALT mediante el siguiente comando:
___________________________________________________________________________________
xmodmap -e 'keycode 64= '
___________________________________________________________________________________
en un programa a nombrar “Desactivar_Tecla_ALT”
Ejemplo de AutoStart activo:
___________________________________________________________________________________
[Desktop Entry]
Encoding=UTF-8
Version=0.9.4
Type=Application
Name=Desactivar_Tecla_ALT
Comment=Desactivar Tecla ALT
Exec=xmodmap -e 'keycode 64= '
OnlyShowIn=XFCE;
RunHook=0
StartupNotify=false
Terminal=false
Hidden=false
__________________________________________________________________________________
Y guardar en la ruta
__________________________________________________________________________________
/home/operador/.config/autostart/Desactivar_Tecla_ALT.desktop
__________________________________________________________________________________
Mediante el uso de una o varias teclas, presionadas al mismo tiempo, pueden activarse programas o scripts desarrollados por el administrador del sistema que permitan entre otras cosas, simular el clic del ratón sobre los botones F1 al F14 de los despliegues Phoebus.
En XFCE se puede realizar gráficamente mediante la configuración del entorno de cada usuario; sin embargo el administrador del sistema puede incluirlos mediante la manipulación del siguiente archivo.
__________________________________________________________________________________
/home/operador/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml
__________________________________________________________________________________
Estructura de archivos del entorno gráfico XFCE para Accesos Rápidos o Directos.
__________________________________________________________________________________
/home/operador/.config
├── autostart
├── dconf
├── xfce4
├── xfconf
│ └── xfce-perchannel-xml
│ ├── displays.xml
│ ├── keyboards.xml
│ ├── xfce4-desktop.xml
│ ├── xfce4-keyboard-shortcuts.xml
│ ├── xfce4-notifyd.xml
│ ├── xfce4-panel.xml
│ ├── xfce4-panel.xml.new
│ ├── xfce4-power-manager.xml
│ ├── xfce4-session.xml
│ ├── xfce4-settings-manager.xml
│ └── xfwm4.xml
└── xfwm4
__________________________________________________________________________________
Primero deben crearse los programas y se guardados por el usuario “root” en el directorio usr/bin que permitan simular el clic del ratón con los botones F1, F2,.. hasta F12 desde las correspondientes teclas F1, F2,.. hasta F12 del teclado.
La pantalla debe tener resolución de 1280x1024 para que el clic se haga en la coordenada del botón correctamente. Esto, mientras se logra acceder directamente desde el teclado a las variables pva:// y loc:// mediante los métodos vistos en connet2.py de los ejemplos de Phoebus, lo cual no dependerá de coordenadas.”
Debido a que en la primera implementación del HMICEOS1, utiliza botones llamados F13 y F14 y el teclado no posee esas teclas, se utiliza y etiqueta en el teclado las dos teclas siguientes luego de PrintScreen; SCROLL y PAUSE como F13 y F14 respectivamente.
Ejemplo de programa “F13” a ubicar en /usr/bin que se ejecuta al presionar la tecla “SCROLL” etiquetada en HMICEOS1 como F13.
__________________________________________________________________________________
#!/bin/sh
# KEYCODE SCROLL como F13
# F13
xdotool mousemove 790 790 click 1
__________________________________________________________________________________
Las coordenadas para las teclas F1 a F14, vistas en el ejemplo de Programa a colocar en /usr/bin para la tecla F1, son las siguientes:
__________________________________________________________________________________
#!/bin/sh
# Tecla SCROLL como F13 y tecla PAUSE como F14
# Coordenadas para monitor con resolución 1280x1024
## Panel Central Inferior
# F14
xdotool mousemove 903 790 click 1
# F13
#xdotool mousemove 790 790 click 1
# F12
#xdotool mousemove 681 790 click 1
# F11
#xdotool mousemove 574 790 click 1
# F10
#xdotool mousemove 462 790 click 1
# F9
#xdotool mousemove 350 790 click 1
## Panel Derecho
# F8
#xdotool mousemove 1070 485 click 1
# F6
#xdotool mousemove 1070 401 click 1
# F4
#xdotool mousemove 1070 315 click 1
# F2
#xdotool mousemove 1070 230 click 1
## Panel Izquierdo
# F7
#xdotool mousemove 200 471 click 1
# F5
#xdotool mousemove 200 386 click 1
# F3
#xdotool mousemove 200 301 click 1
# F1
#xdotool mousemove 200 218 click 1
__________________________________________________________________________________
Es importante también conocer que si queremos desactivar por razones de seguridad, combinaciones de teclas del Sistema Operativo muy usadas como ALT+F4, sencillamente debemos apuntarlas/suplantarlas hacia un nuevo programa, por ejemplo “phoebus” (que no puede levantarse dos veces en el mismo PC).
Luego verificar que el archivo resultante de los accesos directos del usuario, tenga declarados los comandos personalizados F1 al F14 debajo de las propiedades comands, custom:
/home/operador/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml
__________________________________________________________________________________
<channel name="xfce4-keyboard-shortcuts" version="1.0">
<property name="commands" type="empty">
<property name="default" type="empty">
</property>
<property name="custom" type="empty">
<property name="override" type="bool" value="true"/>
<property name="<Alt>F9" type="string" value="phoebus"/>
<property name="<Primary><Alt>Delete" type="string" value="phoebus"/>
<property name="<Primary><Shift>F4" type="string" value="phoebus"/>
<property name="<Primary>q" type="string" value="xfce4-session-logout"/>
<property name="<Primary>F4" type="string" value="phoebus"/>
<property name="<Primary>F3" type="string" value="phoebus"/>
<property name="<Primary>F2" type="string" value="phoebus"/>
<property name="<Alt>F4" type="string" value="phoebus"/>
<property name="Print" type="string" value="printscreen_hmi"/>
<property name="Home" type="string" value="F13p2"/>
<property name="Page_Up" type="string" value="F14p2"/>
<property name="Pause" type="string" value="F14"/>
<property name="Scroll_Lock" type="string" value="F13"/>
<property name="F12" type="string" value="F12"/>
<property name="F11" type="string" value="F11"/>
<property name="F10" type="string" value="F10"/>
<property name="F9" type="string" value="F9"/>
<property name="F8" type="string" value="F8"/>
<property name="F7" type="string" value="F7"/>
<property name="F6" type="string" value="F6"/>
<property name="F5" type="string" value="F5"/>
<property name="F4" type="string" value="F4"/>
<property name="F3" type="string" value="F3"/>
<property name="F2" type="string" value="F2"/>
<property name="F1" type="string" value="F1"/>
</property>
</property>
<property name="xfwm4" type="empty">
<property name="default" type="empty">
</property>
<property name="custom" type="empty">
</property>
</property>
<property name="providers" type="array">
</property>
</channel>
__________________________________________________________________________________
Para poder cerrar sesión, apagar o reiniciar el equipo se crea el atajo de las teclas “ Ctrl + q “ (<Primary>q) para ejecutar el programa “xfce4-session-logout”, tal y como se observa en el extracto del mismo archivo anterior
/home/operador/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml
__________________________________________________________________________________
<channel name="xfce4-keyboard-shortcuts" version="1.0">
<property name="commands" type="empty">
<property name="default" type="empty">
</property>
<property name="custom" type="empty">
<property name="override" type="bool" value="true"/>
<property nam
. . .
<property name="<Primary>q" type="string" value="xfce4-session-logout"/>
. . .
__________________________________________________________________________________
En debian entorno KDE también se puede acceder desde la configuración del entorno de cada usuario a los atajos del teclado y agregar los programas personalizados en usr/bin, incluso los de autostart.
El comando directo que puede ejecutarse desde el terminal para los accesos directos es:
___________________________________________________________________________
/usr/bin/systemsettings kcm_keys
/usr/bin/systemsettings kcm_hotkeys
__________________________________________________________________________________
Para aplicar al entorno de escritorio del usuario “operador” y pueda simular clic del ratón en los botones F1, F2,.. hasta F14 desde las correspondientes teclas F1, F2,.. hasta F12, SCROLL y PAUSE como F13 y F14 respectivamente del teclado, debe incluirse los programas personalizados F1 a F14 mostrados en el apartado Debian XFCE.
Los archivos de configuraciones particulares desarrollados para HMICEOS1 que deben estar presentes en /usr/share/Phoebus-Files son:
•authorization.conf
•oper.memento
•phoebus-HMICeos01-start.sh
•settings.ini
Extracto del archivo authorization.conf y su explicación:
__________________________________________________________________________________
# Authorization Settings
#
# Format:
# authorization = Comma-separated list of user names
#
# The authorization name describes the authorization.
# FULL is a special name to obtain all authorizations.
#
# Each entry in the list of user names is a regular expression for a user name.
# Anybody can lock a dock pane, i.e. set it to 'fixed'
lock_ui = administrador, supervisor, cgarcia
# Anybody can enter and exit full screen
full_screen = administrador, supervisor, cgarcia
...
# Anybody can run Display Editor
edit_display = administrador, supervisor
# Full authorization.
# Users listed for "FULL" authorization are granted
# all authorizations, no matter if they are listed above or not.
FULL = root
__________________________________________________________________________________
Como el usuario “operador” no aparece en el anterior archivo, implica que no tiene permisos para salir en Phoebus de la pantalla completa (full_screen = ), ni permisos para cerrar (lock_ui =) el despliegue inicial. Es importante mencionar que con el archivo “memento” se inicia el Phoebus en pantalla completa (fullscreen="true") y el Despliegue inicial Bloqueado (fixed="true") como se muestra a continuación. Por tanto, obliga al usuario “operador” a solo trabajar con el aplicativo Phoebus.
Archivo oper.memento o memento (en su configuración original) y su explicación:
__________________________________________________________________________________
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<memento show_menu="false" show_statusbar="false" show_tabs="false" show_toolbar="false">
<DockStage_MAIN fullscreen="true" height="1024.0" width="1280.0" x="0.0" y="0.0">
<pane fixed="true" selected="0">
<DockItem_747f7887_1876_44ec_a0dc_b230c2fe57af ZOOM="99 %" application="display_runtime" input_uri="file:/usr/share/Phoebus-Files/Proyecto/000_INICIO.bob" toolbar="false"/>
</pane>
</DockStage_MAIN>
</memento>
__________________________________________________________________________________
Este archivo de solo lectura a ser usado por el usuario operador al abrir Phoebus que le indica a Phoebus colocarse en pantalla completa y ocultar todas las barras de navegación y herramientas. Ejemplo: show_menu="false".
Memento: Normalmente Phoebus guarda el estado del aplicativo al momento de cerrarse en un archivo de lectura/escritura generado automáticamente y ubicado en la carpeta home de cada usuario (“/home/usuarioX/.phoebus/memento”) para usarlo cuando se abra nuevamente. Cada usuario usará su propio archivo memento con permisos de lectura/escritura generado automáticamente por Phoebus al cerrarse.
Sin embargo, en HMICEOS1 con la opción “ -layout” obliga al usuario operador, mediante script de arranque descrito en ente documento, a utilizar el archivo de solo lectura oper,memento, asegurando así que Phoebus siempre arranque Full Screen, sin Barras de Herramientas y sin posibilidad de cambio de resolución, a menos que el administrador edite el contenido de dicho archivo.
Por tanto, operador no usa y no tiene mememto en su carpeta personal, administrador si.
__________________________________________________________________________________
sudo tree /home/operador/.phoebus/
/home/operador/.phoebus/
0 directories, 0 files
:/usr/bin$ tree /home/administrador/.phoebus/
/home/administrador/.phoebus/
└── memento
1 directory, 1 file
__________________________________________________________________________________
En dado caso se requiera apuntar oper.memento a algún otro usuario, realizar esta acción manualmente por el mismo usuario, creando enlace a (/usr/share/Phoebus-Files/oper.memento ) desde / home/usuarioX/.phoebus/memento
__________________________________________________________________________________
ln -s /usr/share/Phoebus-Files/oper.memento /home/usuarioX//.phoebus/memento
root@elmorro:/home/usuarioX//.phoebus# ls -la /home/usuarioX//.phoebus/memento
lrwxrwxrwx 1 root root 37 oct 10 08:09 /home/usuarioX//.phoebus/memento -> /usr/share/Phoebus-Files/oper.memento
root@elmorro:/home/usuarioX//.phoebus# ls -la /usr/share/Phoebus-Files/oper.memento
-rw-r--r-- 1 root root 510 oct 10 08:06 /usr/share/Phoebus-Files/oper.memento
__________________________________________________________________________________
Archivo phoebus-HMICeos01-start.sh y su explicación:
__________________________________________________________________________________
#!/bin/sh
# Incluido Layout para el usuario operador (Archivo Phoebus Memento a utilizar)
# resource (Pantalla Inicial) Ya memento lo tiene incluido redundante
# Incluir Layout y Resource Rev B
TOP="/opt/Phoebus-App"
SETTING="-settings /usr/share/Phoebus-Files/settings.ini"
JAR=`echo ${TOP}/product-*.jar`
## Pantalla o Despliegue Inicial
RESOURCE="-resource /usr/share/Phoebus-Files/Proyecto/000_INICIO.bob "
## Memento operador
##LAYOUT="-layout /usr/share/Phoebus-Files/oper.memento"
## Validar si el usuario es operador
usuariologin="$(whoami)"
if [ "$usuariologin" = "operador" ]
then
LAYOUT="-layout /usr/share/Phoebus-Files/oper.memento"
else
LAYOUT=""
fi
# To get one instance, use server mode
OPT="-server 4918"
filter1="-help"
filter2="-main"
firstarg=$1;
if test "${firstarg#*$filter1}" != "$firstarg"; then
# Run MEDM converter etc. in foreground
java -Dfile.encoding=UTF-8 -jar $JAR $OPT "$@"
elif test "${firstarg#*$filter2}" != "$firstarg"; then
java -Dfile.encoding=UTF-8 -jar $JAR $OPT "$@"
else
# Run UI as separate thread
java -Dfile.encoding=UTF-8 -jar $JAR $SETTING $RESOURCE $LAYOUT $OPT "$@" &
fi
__________________________________________________________________________________
A nivel general es el mismo archivo phoebus.sh del “target” producto 4.7.4-SNAPSHOT, con las siguientes modificaciones:
•TOP="/opt/Phoebus-App"
Se coloca la ruta completa (no relativa, que viene originalmente) donde se ha instalado el aplicativo phoebus.
•SETTING="-settings /usr/share/Phoebus-Files/settings.ini"
Agregado para usar el archivo personalizado settings.ini creado para HMICEOS1.
•RESOURCE="-resource /usr/share/Phoebus-Files/Proyecto/000_INICIO.bob "
Apoyar en asegurar que la pantalla o despliegue inicial se cargue automáticamente al inicio.
•LAYOUT="-layout /usr/share/Phoebus-Files/oper.memento"
El archivo “solo lectura” memento a ser utilizado por el usuario “operador”, gracias a verificar dentro del mismo script (if [ "$usuariologin" = "operador" ]) cual fue el usuario que invocó el arranque de phoebus. Cualquier otro usuario usará su propio archivo memento con permisos de lectura/escritura generado automáticamente por Phoebus al cerrarse, dentro de la carpeta personal de cada usuario (“/home/usuarioX/.phoebus/memento”).
Extracto del Archivo settings.ini y su explicación:
__________________________________________________________________________________
# ----------------------------
# Package org.phoebus.security
# ----------------------------
# --------------------------------------------------------
# Formato
# Package/Setting=value
# org.phoebus.security/authorization_file=authorization.conf
# --------------------------------------------------------
# Authorization file
#
# If left empty, the built-in core/security/authorization.conf is used.
#
# When specifying a plain file name like "authorization.conf",
# the install location (Locations.install()) is searched for that file name.
#
# The file name can also be an absolute path like /some/path/auth.conf.
#
# Finally, the file name may use a system property like $(auth_file)
# which in turn could be set to either BUILTIN, a file in the install location,
# or an absolute path.
#
# When set to an invalid file, the user will have no authorizations at all.
# Use built-in core/security/authorization.conf
###authorization_file=
# Use authorization.conf in the install location
org.phoebus.security/authorization_file=/usr/share/Phoebus-Files/authorization.conf
# Secure store underlying implementation.
# Can be 'FILE' or 'IN_MEMORY'
#secure_store_target=FILE
__________________________________________________________________________________
Este archivo permite sobrescribir las configuraciones iniciales de los aplicativos o paquetes internos de Phoebus, siempre y cuando se declare éste durante el comando de arranque con la opción -settings.
El formato que debe seguirse internamente es Package/Setting=value, lo que significa que se coloca primero el nombre de la aplicación o paquete interno a la que se requiere reemplazar alguna condición inicial, seguido de un slash “/”, luego el nombre de dicha condición, e igualar al valor a colocar.
Ejemplo para el paquete de seguridad “org.phoebus.security”, co la condición a modificar de dicho paquete “authorization_file”,
El valor a colocar deseado es: “/usr/share/Phoebus-Files/authorization.conf”
___________________________________________________________________________________
org.phoebus.security/authorization_file=/usr/share/Phoebus-Files/authorization.conf
___________________________________________________________________________________
Imagen que aparece al arrancar Phoebus. En esta versión se esta colocando la imagen del Cliente que aparece en el Proyecto, sin embargo se reemplazará por la imagen de CEOS.
--- Debe existir una imagen o enlace con nombre "site_splash.png" en /opt/Phoebus-App/
que llame a la imagen "site_splash.png" de la empresa, ubicada en la ruta de pantallas o despliegues.
___________________________________________________________________________________
ln -s /usr/share/Phoebus-Files/Proyecto/Imagenes/site_splash.png /opt/Phoebus-App/site_splash.png
root@debian:/opt/Phoebus-App# ln -s /usr/share/Phoebus-Files/Proyecto/Imagenes/site_splash.png site_splash.png
root@debian:/opt/Phoebus-App#
___________________________________________________________________________________
Se ha creado un logo para colocar al icono de acceso directo a Phoebus (HMICEOS1), el cual se coloca en la ruta siguiente para que sea accedido por cualquier usuario.
___________________________________________________________________________________
sudo cp -r HMICEOS01/ /usr/share/pixmaps/
___________________________________________________________________________________
A ser colocados en “/usr/bin” para uso de cualquier usuario que lo requiera. En el caso del usuario “operador” se le asignaron teclas de acceso rápido o atajos.
########################### INICIO ############################################
#!/bin/bash
# riverara 20241010 para evitar problemas de Idioma, Pictures vs Imagenes
# se cambio la ruta de ruta=$(echo ~/Pictures) a ruta=$(echo ~)
# printscreen_hmi tiene los avances de PRINTSCREEN_revC.sh
hmi=$(hostname)
ruta=$(echo ~)
titulo="- Captura de pantalla guardada exitosamente -"
nombre="${hmi}-$(date -d "today" +"%Y%m%d-%H%M%S").png"
mensaje="\n $ruta/$nombre\n\n\nPara revision por parte del Administrador del sistema"
# Guardar la Captura de Pantalla
xfce4-screenshooter -w -s "$ruta/$nombre"
# Informar al usuario que el comando Captura de Pantalla fue exitoso
zenity --info --text="$mensaje" --title="$titulo" --width="800" --height="60" --ok-label="OK"
exit 0
########################### FIN ############################################
“ Facilidad creada para capturar la pantalla con guardado automático con nombre por fecha Año Mes Día Hora Minuto Segundo”
Debe incluirse/reemplazar como atajo de teclado a la tecla PrintScreen.
“ Se ejecuta cuando el operador o usuario presiona la tecla PrintScreen del teclado, tomando captura de la pantalla y guardando en la carpeta personal /home/operador de dicho usuario, para posterior revisión por parte del administrador de sistema”
Con la opción “-settings” se pueden cambiar condiciones o parámetros de los paquetes internos de phoebus.
__________________________________________________________________________________
phoebus -settings /usr/share/Phoebus-Files/settings.ini
__________________________________________________________________________________
Debe existir el archivo “settings.ini” con el formato correcto.
Ejemplo de script revisión A con solo settings.ini, no utilizado en HMICEOS1.
##################################################################################
#!/bin/sh
# Revision A
# Incluido Setiings.ini,
# Layout y resource … Pendientes
TOP="/opt/Phoebus-App/"
SETTING="-settings /usr/share/Phoebus-Files/settings.ini"
JAR=`echo ${TOP}/product-*.jar`
# To get one instance, use server mode
OPT="-server 4918"
filter1="-help"
filter2="-main"
firstarg=$1;
if test "${firstarg#*$filter1}" != "$firstarg"; then
# Run MEDM converter etc. in foreground
java -Dfile.encoding=UTF-8 -jar $JAR $OPT "$@"
elif test "${firstarg#*$filter2}" != "$firstarg"; then
java -Dfile.encoding=UTF-8 -jar $JAR $OPT "$@"
else
# Run UI as separate thread
java -Dfile.encoding=UTF-8 -jar $JAR $SETTING $OPT "$@" &
fi
##################################################################################
Con la opción “-resource” se define el despliegue inicial del Proyecto a cargar en el arranque del HMI.
__________________________________________________________________________________
phoebus -resource /usr/share/Phoebus-Files/Proyecto/000_INICIO.bob
__________________________________________________________________________________
Con la opción “-layout” se define el archivo memento que define la resolución y condiciones iniciales del aplicativo phoebus a utilizar en el arranque del HMI.
__________________________________________________________________________________
phoebus -layout /usr/share/Phoebus-Files/oper.memento
__________________________________________________________________________________
Combinados se utilizan de la siguiente manera:
__________________________________________________________________________________
phoebus -resource /usr/share/Phoebus-Files/Proyecto/000_INICIO.bob -layout /usr/share/Phoebus-Files/oper.memento
__________________________________________________________________________________
Verificar rol de usuario e incluir settings y restricciones a todo aquel que no sea usuario administrador.
Dentro del archivo phoebus-HMICeos01-start.sh, se realiza de la siguiente manera:
__________________________________________________________________________________
. . .
## Validar si el usuario es operador
usuariologin="$(whoami)"
if [ "$usuariologin" = "operador" ]
then
LAYOUT="-layout /usr/share/Phoebus-Files/oper.memento"
else
LAYOUT=""
fi
. . .
java -Dfile.encoding=UTF-8 -jar $JAR $SETTING $RESOURCE $LAYOUT $OPT "$@" &
fi
__________________________________________________________________________________
Y puede observarse que el operador no tiene ningún privilegio en authorization.conf, llamado desde settings.ini:
__________________________________________________________________________________
lock_ui = administrador, supervisor, cgarcia
full_screen = administrador, supervisor, cgarcia
edit_display = administrador, supervisor
__________________________________________________________________________________
Se puede automatizar el arranque y carga como el siguiente ejemplo:
Crear un enlace /usr/bin/phoebus hacia el archivo
/usr/share/Phoebus-Files/phoebus-HMICeos01-start.sh
___________________________________________________________________________________
root@elmorro:/usr/bin# ln -s /usr/share/Phoebus-Files/phoebus-HMICeos01-start.sh /usr/bin/phoebus
___________________________________________________________________________________
que permite levantar Phoebus utilizando las opciones de arranque personalizadas anteriores.
phoebus-HMICeos01-start.sh esta en su versión B y siendo utilizada por HMICEOS1.
Este apartado documenta una instalación desde 0 en nuevo PC, teniendo el respaldo de las configuraciones y archivos necesarios a restaurar de manera más rápida mediante script de instalación:
Por tanto se puede restaurar en un nuevo Sistema Linux Debian 12 XFCE, que cuenta con java y xdotool:
___________________________________________________________________________________
sudo useradd -m operador
sudo passwd operador
sudo useradd -m administrador
sudo passwd administrador
sudo usermod -a -G root administrador
sudo usermod -a -G root administrador
cd /
sudo tar xvpzf opt.tar.gz
sudo tar xvpzf usr_share_Phoebus.tar.gz
sudo tar xvpzf usr_bin.tar.gz
sudo tar xvpzf _config_operador.tar.gz
ls -la /home/operador/.config/autostart/
sudo su
ls -la /home/operador/.config/
ls -la /home/operador/.config/autostart/
ROOT
user@debian:/$ sudo su
# history
chown operador:operador -R /home/operador/
___________________________________________________________________________________
En dado caso se tenga una instalación HMICEOS1 corriendo perfectamente y quiera respaldarse para restauración futura, seguir el siguiente ejemplo:
___________________________________________________________________________________
como super usuario root
#
tar cvpzf nombre.tar.gz .
Se creara nombre.tar.gz
de todos los archivos en el directorio actual "."
LOGS:
Carpeta OPT
sudo tar cvpzf opt.tar.gz ./opt/Phoebus-App/
Archivos en USER/BIN
./usr/bin/phoebus
./usr/bin/phoebus.sh
./usr/bin/printscreen_hmi
sudo tar cvpzf usr_bin_laptop.tar.gz ./usr/bin/phoebus ./usr/bin/phoebus.sh ./usr/bin/printscreen_hmi ./usr/bin/F1 ./usr/bin/F2 ./usr/bin/F3 ./usr/bin/F4 ./usr/bin/F5 ./usr/bin/F6 ./usr/bin/F7 ./usr/bin/F8 ./usr/bin/F9 ./usr/bin/F10 ./usr/bin/F11 ./usr/bin/F12 ./usr/bin/F13 ./usr/bin/F14
Carpeta Phoebus-Files
user@debian:/media/user/f77fb288-b1ab-46f9-af1f-02749d237ad4$ sudo tar cvpzf usr_share_Phoebus_laptop.tar.gz ./usr/share/Phoebus-Files
Carpeta .config operador
./home/operador/.config/autostart
./home/operador/.config/xfce4
sudo tar cvpzf _config_operador_laptop.tar.gz ./home/operador/.config/autostart ./home/operador/.config/xfce4
___________________________________________________________________________________
En dado caso se tenga que restaurar la instalación HMICEOS1 anteriormente respaldada, seguir el siguiente ejemplo:
___________________________________________________________________________________
como super usuario root
#
tar xvpzf nombre.tar.gz
Se descomprimirá el contenido de nombre.tar.gz
de todos los archivos en el directorio actual
cd /
tar xvpzf opt.tar.gz
tar xvpzf usr_bin_laptop.tar.gz
tar xvpzf usr_share_Phoebus_laptop.tar.gz
tar xvpzf AutologinXFCEoperador.tar.gz
tar xvpzf _config_operador.tar.gz
tar xvpzf IconoAccesoAdministrador.tar.gz
___________________________________________________________________________________