186 lines
3.0 KiB
Markdown
Executable File
186 lines
3.0 KiB
Markdown
Executable File
# 📺 CANCOM Simple Signage
|
||
|
||
**CANCOM Simple Signage** ist ein leichtgewichtiges, browserbasiertes Digital-Signage-System auf Basis von **Python + Flask**.
|
||
|
||
Ziel ist eine **einfache, robuste und wartbare Lösung** für interne Info-Screens, ohne die Komplexität klassischer Digital-Signage-Plattformen.
|
||
|
||
---
|
||
|
||
## ✨ Features
|
||
|
||
- ✅ Browser-basierter Player (kein nativer Client erforderlich)
|
||
- ✅ Bilder & Videos (MP4, H.264)
|
||
- ✅ Pro Screen eine eigene Playlist
|
||
- ✅ Drag-&-Drop-Reihenfolge im Admin-Portal
|
||
- ✅ Automatischer Player-Reload bei Änderungen
|
||
- ✅ Upload & Löschen von Medien
|
||
- ✅ Screen-Status (aktiv / leer)
|
||
- ✅ CI-konformes Admin-UI (CANCOM)
|
||
- ✅ Läuft lokal, in VMs oder auf Proxmox
|
||
|
||
---
|
||
|
||
## 🧱 Architektur
|
||
|
||
```
|
||
Browser (Player)
|
||
│
|
||
▼
|
||
Flask App (Server)
|
||
├── Admin UI
|
||
├── Player UI
|
||
├── config.json
|
||
└── media/
|
||
└── <screen-name>/
|
||
├── bild.jpg
|
||
└── video.mp4
|
||
```
|
||
|
||
- **Server:** Python 3 + Flask
|
||
- **Player:** Jeder moderne Browser (Chrome, Edge, Firefox, Kiosk-Modus)
|
||
- **State:** `config.json` + Dateisystem
|
||
- **Frontend:** Tabler + SortableJS (CDN)
|
||
|
||
---
|
||
|
||
## 📂 Projektstruktur
|
||
|
||
```
|
||
signage/
|
||
├── app.py
|
||
├── config.json
|
||
├── media/
|
||
│ ├── lobby/
|
||
│ └── meetingroom/
|
||
├── templates/
|
||
│ ├── admin.html
|
||
│ ├── player.html
|
||
│ └── login.html
|
||
├── static/
|
||
└── README.md
|
||
```
|
||
|
||
---
|
||
|
||
## 🚀 Installation
|
||
|
||
### Voraussetzungen
|
||
|
||
- Python ≥ 3.9
|
||
- pip
|
||
- ffmpeg
|
||
|
||
```bash
|
||
sudo apt install python3 python3-pip ffmpeg
|
||
```
|
||
|
||
### Setup
|
||
|
||
```bash
|
||
git clone <repository-url>
|
||
cd signage
|
||
pip install flask flask-login werkzeug
|
||
```
|
||
|
||
### Starten
|
||
|
||
```bash
|
||
python app.py
|
||
```
|
||
|
||
Server läuft auf:
|
||
|
||
```
|
||
http://localhost:5005
|
||
```
|
||
|
||
---
|
||
|
||
## 🛠️ Betrieb
|
||
|
||
### Admin-Portal
|
||
|
||
```
|
||
/admin
|
||
```
|
||
|
||
- Screens konfigurieren
|
||
- Medien hochladen / löschen
|
||
- Playlist per Drag & Drop sortieren
|
||
|
||
### Player-URLs
|
||
|
||
```
|
||
/player/<screen-name>
|
||
```
|
||
|
||
Beispiel:
|
||
|
||
```
|
||
http://server:5000/player/lobby
|
||
```
|
||
|
||
---
|
||
|
||
## 🔄 Automatischer Reload
|
||
|
||
Der Player aktualisiert sich selbst, wenn:
|
||
|
||
- Medien hinzugefügt oder gelöscht werden
|
||
- Playlist-Reihenfolge geändert wird
|
||
- Screen-Einstellungen angepasst werden
|
||
|
||
---
|
||
|
||
## ⚠️ Git & Medien
|
||
|
||
> **Dieses Repository ist für Code gedacht, nicht für Medien.**
|
||
|
||
Empfohlene `.gitignore`:
|
||
|
||
```gitignore
|
||
media/
|
||
*.mp4
|
||
*.mov
|
||
*.jpg
|
||
*.jpeg
|
||
*.png
|
||
```
|
||
|
||
---
|
||
|
||
## 🎞️ Video-Empfehlungen
|
||
|
||
- Format: MP4
|
||
- Codec: H.264
|
||
- Auflösung: max. 1920x1080
|
||
|
||
```bash
|
||
ffmpeg -i input.mov -c:v libx264 -pix_fmt yuv420p -movflags +faststart output.mp4
|
||
```
|
||
|
||
---
|
||
|
||
## 🔐 Sicherheit
|
||
|
||
- Admin-Bereich per Login geschützt
|
||
- Player-Seiten Read-Only
|
||
- Externe Nutzung via Reverse Proxy + TLS empfohlen
|
||
|
||
---
|
||
|
||
## 🧭 Roadmap
|
||
|
||
- Zeitsteuerung pro Playlist-Eintrag
|
||
- Vorschau im Admin-Portal
|
||
- Mehrere Admin-User
|
||
- SQLite statt config.json
|
||
- Docker-Compose Setup
|
||
|
||
---
|
||
|
||
## 👤 Maintainer
|
||
|
||
**CANCOM Simple Signage**
|
||
Interne Lösung – nicht für externe Weitergabe bestimmt.
|