CreaRack-SL

SignagePlayer · Modelo signage

Entidadactiveverificado 2026-04-21#signage#model#player#spinetix#brightsign

SignagePlayer · Modelo signage

Propósito

SignagePlayer representa un reproductor físico de Digital Signage vinculado al network discovery. Nodo central del pipeline: recibe playlists y schedules vía adapters de vendor, expone una URL pública de descarga identificada por publish_token (UUID inmutable), y registra heartbeat y screenshot para proof-of-play. Scope org-only con unique_together sobre (organization, device_profile).

Contrato

Campos:

CampoTipoNullableDescripción
publish_tokenUUIDFieldNoUUID único, auto, inmutable. URL Scheduled Download
organizationFK(core.Organization)NoPropietario (CASCADE)
display_nameCharField(200)NoNombre legible
locationCharField(200, blank)NoUbicación física
device_profileFK(network.DeviceProfile)SíPerfil de red (IP principal)
monitoring_targetFK(monitoring.MonitoringTarget)SíTarget (IP alternativa)
adapterFK(SignageVendorAdapter)SíAdapter de vendor
api_credentialsJSONField(default={})NoCifrado via CredentialManager
display_infoJSONField(default={})NoResolución, orientación, modelo, firmware
statusCharField(choices)Noonline/offline/error/maintenance
current_playlistFK(Playlist)SíPlaylist activa
current_scheduleFK(Schedule)SíSchedule activo
last_screenshotCharField(500, blank)NoRuta último screenshot
last_heartbeatDateTimeField(null)SíÚltimo heartbeat
groupsM2M(racks.RackGroup, blank)NoGrupos de racks
created_at / updated_atDateTimeFieldNoAuto

Meta:

  • ordering: ["display_name"].
  • unique_together: ["organization", "device_profile"].
  • Índices: (organization, status), (organization, last_heartbeat).

Dependencias entrantes

Modelo / MóduloArchivoDescripción
SignageOperationsignage/models.pyFK player — historial con rollback
PlaybackLogsignage/models.pyFK player — proof-of-play
ContentDeploymentsignage/models.pyM2M players — deployments
ClientShareLinksignage/models_portal.pyM2M — portal cliente
signage/api/players.pyCRUD RESTEndpoints player
signage/api/display_control.pyAccionesControl pantalla via adapter
signage/api/deployments.pyDeploymentFiltra players para ContentDeployment
monitoring/api/signage/deploy.pyget_or_createCrea/obtiene player al publicar
signage/tasks.pyQuerysetMarca stale/unknown por heartbeat
signage/services/proof_of_play/screenshot.pyQuerysetCaptura screenshots online
signage/services/proof_of_play/collector.pyQuerysetRecolecta logs online
monitoring/api/signage/summary.pyQuerysetResumen de estado

Dependencias salientes

  • core.Organization — propietario (CASCADE).
  • network.DeviceProfile — IP principal en deployment.
  • monitoring.MonitoringTarget — IP alternativa.
  • SignageVendorAdapter — protocolo, auth, capabilities.
  • Playlist (current_playlist) — playlist activa.
  • Schedule (current_schedule) — schedule activo.
  • racks.RackGroup — agrupación lógica.
  • core.security.CredentialManager — descifrado api_credentials en deploy.
  • signage/services/adapters/registry.get_adapter() — factory por slug (spinetix, brightsign, samsung, lg, generic_snmp).

Ejemplos

  • Deploy a player: execute_deployment() itera deployment.players, resuelve IP desde device_profile o monitoring_target, descifra api_credentials, instancia adapter via get_adapter(slug, ip, creds, config) y llama push_content() + set_playlist() / set_schedule() async.
  • URL pública: views_publish.py resuelve player por publish_token con select_related y sirve sin auth.
  • Creación desde monitoring: monitoring/api/signage/deploy.py → SignagePlayer.objects.get_or_create(organization=org, device_profile=profile).
  • Stale: signage/tasks.py marca offline si last_heartbeat supera umbral.
  • entity--signage--model--mediaasset — assets referenciados en playlists deployadas.
  • entity--signage--model--playlist — colecciones asignadas como current_playlist.
  • entity--network--model--deviceprofile — perfil de red que aporta IP física.
  • concept--signage--deployment — pipeline completo de publicación.

Véase también

  • [[entity—signage—model—mediaasset]]
  • [[entity—signage—model—playlist]]
  • [[entity—network—model—deviceprofile]]
  • [[concept—signage—deployment]]