Desarrolladores/Bibliotecas gráficas

Crear bibliotecas gráficas

Autoría, publicación, vinculación y actualización de bibliotecas de faceplates versionadas.

2 min de lectura

Una biblioteca empaqueta plantillas e imágenes en un único archivo *.abscada-library.json. Se vincula a otro proyecto con un alias y una versión concreta.

Flujo de trabajo

  1. Autoría: desarrolla los faceplates en un proyecto normal, con una pantalla de pruebas enlazada a variables internas.
  2. Publicar: Bibliotecas… → Publicar biblioteca…, elige plantillas, nombre, versión, autor y licencia.
  3. Vincular: en el proyecto consumidor, Bibliotecas… → Vincular… y un alias, por ejemplo equipos.
  4. Usar: las plantillas aparecen como equipos__unidad, equipos__valvula.
  5. Actualizar: Actualizar desde… con una versión nueva de la misma biblioteca.

Reglas de autonomía

  • Las referencias a variables deben ser parámetros $nombre.
  • No se admiten dependencias de scripts, pantallas o visores del proyecto de autoría.
  • Las imágenes, incluidas las de estados dinámicos, se incrustan en base64.
  • Los colores de paleta @Nombre se resuelven a HEX al publicar.
  • Los archivos publicados no se sobrescriben: cada versión es un archivo nuevo.

Publicar desde Python

from abscada.project import Project
from abscada.faceplate_libraries import export_library

p = Project.load("autor")
export_library(p, ["bomba", "valvula"], "equipos-1.0.0.abscada-library.json",
               "Equipos de proceso", "1.0.0",
               author="Mi equipo", license="GPL-3.0-or-later")

Vincular y actualizar desde Python

from abscada.faceplate_libraries import link

p = Project.load("consumidor")
link(p, "equipos-1.0.0.abscada-library.json", "equipos")
p.save()

# Revisión posterior compatible:
link(p, "equipos-1.1.0.abscada-library.json", "equipos", update=True)
p.save()

Una actualización se rechaza si quita un parámetro usado, cambia su tipo, añade uno obligatorio o elimina una plantilla en uso. El proyecto anterior se conserva intacto.

Formato del paquete

{"schema_version": 1, "name": "Equipos de proceso", "version": "1.0.0",
 "author": "Mi equipo", "license": "GPL-3.0-or-later",
 "faceplates": {"bomba": {"width": 100, "height": 60, "parameters": {}, "elements": []}},
 "assets": {"a1b2c3.svg": "<base64>"}}

El proyecto guarda una instantánea completa con huella SHA-256 en libraries.json: funciona aunque el archivo original desaparezca.

Validar

.venv\Scripts\python tools/validate_library.py equipos-1.0.0.abscada-library.json
.venv\Scripts\python -m pytest tests/test_faceplate_libraries.py

Límites actuales

Sin faceplates anidados, sin visores de tendencias/alarmas dentro de plantillas, sin scripts empaquetados ni dependencias entre bibliotecas. Los parámetros son primitivos: una UDT se descompone en parámetros hoja.

Adaptar bibliotecas

La especificación descargable describe controles, propiedades, dinámicas y criterios de aceptación para adaptar objetos a abSCADA.

Librería estándar y del proyecto

Studio reúne la librería del proyecto, la estándar y las externas en Librerías. La estándar viene con la aplicación y es de solo lectura: cópiala al proyecto para modificarla. Las carpetas del proyecto solo organizan el editor. Las externas conservan alias, instantánea, versión y huella; no se actualizan implícitamente. El formato y las APIs siguen usando el término faceplate. Consulta la guía de uso.