Volver a la wiki

SpinetiX HMP Integration Guide — CreaRack Pro

SpinetiX HMP Integration Guide — CreaRack Pro

Dispositivo: SpinetiX HMP400 (firmware 4.9.6, Feature Set “SYSTEMS”) Fecha investigación: 24-03-2026 Estado: ✅ Monitoreo SNMP + ✅ WebDAV upload + ✅ Scheduled Download (contenido en pantalla)


1. Resumen de Capacidades

ProtocoloEstadoPuertoAuthUso
SNMP v2c✅ Operativo161community publicMonitoreo (CPU, memory, uptime, bandwidth)
WebDAV PUT/GET/DELETE✅ Operativo80HTTP BasicUpload/download ficheros en /content/
Scheduled Download✅ FUNCIONAL80 (destino)Sin auth (servidor público)Publicación de contenido en pantalla
HTTP Web UI✅ Operativo80Browser-basedConfiguración manual del dispositivo
REST API /api/*❌ Error 50080—Requiere proyecto Elementi previo o Feature Set superior
RPC /rpc✅ Operativo (JSON-RPC 1.0)80HTTP Basicget_info/get_config/restart verificados vía F12 (s184). Los métodos “inestables” de la evaluación inicial eran nombres INVENTADOS (getSystemInfo, getSnapshot… no existen en el HMP)
Status API /status/*✅ Operativo80HTTP BasicGET /status/info (XML de salud; anuncia <screen><snapshotURI>) + GET /status/snapshot (JPEG de la pantalla actual) — base de los screenshots F5.3 por el bus
Network API❌ No útil1234—Protocolo propietario para SpinetiX Fusion/ARYA
WebDAV PROPFIND❌ Timeout80—Listar directorio no soportado

2. SNMP — Monitoreo (Integrado)

OIDs del SpinetiX HMP400

Deep Discovery (one-time scan) — 6 categorías:

Sentinel Polling (continuo cada 10-15s):

Métricas en VictoriaMetrics (target_id=290):

Particularidades


3. Scheduled Download — Publicación de Contenido (✅ CONFIRMADO)

Descubrimiento clave (24-03-2026)

El SpinetiX HMP descarga contenido desde un servidor HTTP externo via la función “Scheduled Download” (Control Center → Content → Scheduled Download).

Protocolo

  1. El SpinetiX envía OPTIONS / (puede devolver 501, no afecta)
  2. El SpinetiX descarga GET /spx-listing.xml — índice de ficheros en formato WebDAV DAV:multistatus
  3. El SpinetiX descarga cada fichero listado (GET /project.svg, GET /imagen.jpg, etc.)
  4. El SpinetiX ejecuta project.svg como contenido principal en pantalla

Formato de spx-listing.xml

<?xml version="1.0" encoding="UTF-8"?>
<D:multistatus xmlns:D="DAV:">
  <D:response>
    <D:href>/</D:href>
    <D:propstat>
      <D:prop>
        <D:resourcetype><D:collection/></D:resourcetype>
        <D:getlastmodified>2026-03-24T10:00:00Z</D:getlastmodified>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
  <D:response>
    <D:href>project.svg</D:href>
    <D:propstat>
      <D:prop>
        <D:getcontentlength>512</D:getcontentlength>
        <D:getcontenttype>image/svg+xml</D:getcontenttype>
        <D:getlastmodified>2026-03-24T10:00:00Z</D:getlastmodified>
        <D:getetag>"512-1711270800"</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
  <D:response>
    <D:href>imagen.jpg</D:href>
    <D:propstat>
      <D:prop>
        <D:getcontentlength>2520521</D:getcontentlength>
        <D:getcontenttype>image/jpeg</D:getcontenttype>
        <D:getlastmodified>2026-03-24T10:00:00Z</D:getlastmodified>
        <D:getetag>"2520521-1711270800"</D:getetag>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>

Formato de project.svg

<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink"
     xmlns:spx="http://www.spinetix.com/namespace/1.0/spx"
     width="1920" height="1080" viewBox="0 0 1920 1080"
     spx:displayDuration="indefinite">
  <rect width="1920" height="1080" fill="black"/>
  <image x="0" y="0" width="1920" height="1080"
         xlink:href="imagen.jpg"
         preserveAspectRatio="xMidYMid meet"/>
</svg>

Configuración en el SpinetiX

  1. Control Center → Content → Scheduled Download
  2. Server URI: URL del servidor de contenido (ej: https://crearack.com/signage/player/42/)
  3. Update: Manual / Hourly / Daily
  4. Click Apply

ETags y Smart Pull

El SpinetiX usa HTTP ETags y Last-Modified para detectar cambios. Solo descarga ficheros nuevos o modificados. El spx-listing.xml debe incluir ETags correctos para que el pull sea eficiente.


4. WebDAV — Upload Directo via Agent

Endpoints confirmados (puerto 80)

MétodoURLStatusDescripción
PUT/content/{filename}201 CreatedSubir fichero
GET/content/{filename}200 OKDescargar fichero
DELETE/content/{filename}204 No ContentEliminar fichero
PROPFIND/content/❌ TimeoutNo soportado

Autenticación

Pipeline de deploy (implementado)

CreaRack SaaS → Browser descarga media → POST Agent /signage/upload → Agent WebDAV PUT → SpinetiX /content/

Nota: Los ficheros en /content/ NO se muestran automáticamente en pantalla. Solo se reproducen si un proyecto (project.svg) los referencia. Para mostrar contenido se usa Scheduled Download (sección 3).


5. Arquitectura de Publicación para CreaRack (Plan)

Objetivo

CreaRack como CMS completo de señalización digital — sin depender de Elementi ni Cockpit.

Flujo de publicación transparente

Usuario sube media en CreaRack (Content tab)
    ↓
CreaRack genera project.svg + spx-listing.xml dinámicamente
    ↓
CreaRack sirve como servidor HTTP (endpoint público por player)
    ↓
SpinetiX descarga automáticamente via Scheduled Download
    ↓
Contenido visible en pantalla

Endpoints necesarios en CreaRack

EndpointPropósito
GET /signage/player/{player_id}/spx-listing.xmlÍndice WebDAV dinámico
GET /signage/player/{player_id}/project.svgProyecto SVG generado
GET /signage/player/{player_id}/{filename}Media assets
GET /signage/portal/{token}/Portal de cliente con token

Configuración one-time del SpinetiX

Solo necesita hacerse una vez por dispositivo:

  1. Crear SignagePlayer en CreaRack vinculado al DeviceProfile
  2. CreaRack genera URL única: https://crearack.com/signage/player/{id}/
  3. Configurar en SpinetiX → Content → Scheduled Download → Server URI = esa URL
  4. Update: Hourly (o webhook para push inmediato)

Portal de clientes (futuro)


6. RPC y Status API — la realidad verificada (s184, F12 contra un HMP400 real)

CORRECCIÓN (03-07-2026): la evaluación inicial de esta sección (“RPC inestable, no usar”) era errónea — probaba métodos con nombres inventados que el HMP nunca ha expuesto (getSystemInfo, getNetworkStatus, getSnapshot, content.list…). La API real se verificó por F12 en s184 y es la base de los screenshots F5.3 en PROD (terminal/agent/network/signage_ops.py).

RPC (JSON-RPC 1.0)

Status API

Lo que NO existe

Recomendación vigente: Scheduled Download para contenido · SNMP para monitoreo · Status API para screenshots/salud · RPC 1.0 para info y restart.


7. REST API /api/* — No funcional

Todos los endpoints /api/media/, /api/playlist/, /api/playout/, /api/schedule/, /api/project/ devuelven 500 Internal Error. El código JavaScript spx-api.js (37KB) define estos endpoints pero la API interna no se inicializa sin un proyecto Elementi previo o Feature Set superior.

POST /api/publish devuelve 500, POST con XML devuelve 400. La API existe pero su backend interno no arranca.


8. Configuración del SpinetiX

Panel: Control Center (http://{ip}/)

Menú lateral:

Configuración requerida para CreaRack

  1. SNMP: Network → SNMP → Enable, community public
  2. Scheduled Download: Content → Scheduled Download → Server URI = URL de CreaRack
  3. CORS (opcional): Advanced Applications → APIs Security → Enable CORS requests

Configuración NO requerida


9. Scripts de Test

Ubicación: static/downloads/

ScriptPropósito
spx_rpc_test.pyTest RPC + WebDAV (PUT/GET/PROPFIND/DELETE)
spx_rpc_test2.pyProbe de ~48 métodos RPC
spx_rpc_test3.pyTest seguro de métodos confirmados
spx_serve_project.pyServidor HTTP local que sirve proyecto SpinetiX (spx-listing.xml + project.svg + media)
spx_publish_probe.pyProbe de endpoints /api/publish
spx_api_create.pyTest REST API media/playout/schedule
spx_controlcenter.pyProbe de páginas del Control Center
spx_download_api.pyDescarga y analiza spx-api.js
spx_find_ui.pyBusca páginas con spx-api.js
spx_port1234_test.pyTest de Network API puerto 1234
spx_inspect_api.pyInspección de JS del SpinetiX
spx_extract_playout.pyExtrae código de playout de spx-api.js
spx_discover.jsDiscovery desde consola F12 del browser

10. Migraciones relacionadas

MigraciónCambio
0036_av_digital_signage_profilesSpinetiX vendor profile inicial
0043_enrich_av_deep_discovery_oidsAñade cpu, memory, host, sysUpTime
0044_fix_spinetix_cpu_monitoring_oidCPU OID index .1 → .196608

11. Agent v2.0.18

Nuevas routes para signage deploy:

EndpointMétodoPropósito
/signage/deployPOSTDeploy via URLs (Agent descarga + WebDAV PUT)
/signage/uploadPOSTDeploy via multipart (browser envía file + Agent hace WebDAV PUT)

Mantenido por: Claude (Anthropic) + Equipo CreaRack Última actualización: 24-03-2026

Véase también

Subir