feat(client-monitoring): finalize client-side monitoring and UTC logging
- add process health bridge and monitoring flow between display_manager and simclient - publish health + warn/error log topics over MQTT - standardize log/payload/screenshot timestamps to UTC (Z) to avoid DST drift - improve video handling: python-vlc fullscreen enforcement and runtime PID reporting - update README and copilot instructions with monitoring architecture and troubleshooting - add Phase 3 monitoring implementation documentation - update gitignore for new runtime/log artifacts
This commit is contained in:
36
README.md
36
README.md
@@ -11,6 +11,7 @@ Digital signage system for Raspberry Pi that displays presentations, videos, and
|
||||
- **MQTT Integration** - Real-time event management from central server
|
||||
- **Group Management** - Organize clients into groups for targeted content
|
||||
- **Heartbeat Monitoring** - Regular status updates and screenshot dashboard
|
||||
- **Client Process Monitoring** - Health-state bridge, crash/restart tracking, and monitoring log
|
||||
- **Screenshot Dashboard** - Automatic screen capture with Wayland/X11 support, client-side compression
|
||||
- **Multi-Content Support** - Presentations, videos, and web pages
|
||||
- **Kiosk Mode** - Full-screen display with automatic startup
|
||||
@@ -217,7 +218,13 @@ Notes:
|
||||
- `loop` (boolean): loop playback indefinitely.
|
||||
- `volume` (float): 0.0–1.0 (mapped internally to VLC's 0–100 volume scale).
|
||||
- If `python-vlc` is not installed, the Display Manager will fall back to launching the external `vlc` binary.
|
||||
- The manager attempts to make the player window fullscreen and remove window decorations. For a truly panel-free fullscreen (no taskbar), run the Display Manager inside a minimal kiosk X session or a dedicated user session without a desktop panel (see the kiosk notes below).
|
||||
- Fullscreen behavior:
|
||||
- External VLC fallback uses `--fullscreen`.
|
||||
- `python-vlc` mode enforces fullscreen on startup and retries fullscreen toggling briefly because video outputs may attach asynchronously.
|
||||
- For a truly panel-free fullscreen (no taskbar), run the Display Manager inside a minimal kiosk X session or a dedicated user session without a desktop panel.
|
||||
- Monitoring PID behavior:
|
||||
- External VLC fallback reports the external `vlc` process PID.
|
||||
- `python-vlc` mode is in-process, so monitoring reports the `display_manager.py` runtime PID.
|
||||
|
||||
## 🌐 Web Events
|
||||
|
||||
@@ -380,6 +387,9 @@ The MQTT client ([src/simclient.py](src/simclient.py)) downloads presentation fi
|
||||
- `infoscreen/discovery` - Initial client announcement
|
||||
- `infoscreen/{client_id}/heartbeat` - Regular status updates
|
||||
- `infoscreen/{client_id}/dashboard` - Screenshot images (base64)
|
||||
- `infoscreen/{client_id}/health` - Process health state (`event_id`, process, pid, status)
|
||||
- `infoscreen/{client_id}/logs/error` - Forwarded client error logs
|
||||
- `infoscreen/{client_id}/logs/warn` - Forwarded client warning logs
|
||||
|
||||
#### Server → Client
|
||||
- `infoscreen/{client_id}/discovery_ack` - Server response with client ID
|
||||
@@ -493,6 +503,30 @@ This is the fastest workaround if hardware decode is not required or not availab
|
||||
./scripts/test-mqtt.sh
|
||||
```
|
||||
|
||||
### Monitoring and UTC timestamps
|
||||
|
||||
Client-side monitoring is implemented with a health-state bridge between `display_manager.py` and `simclient.py`.
|
||||
|
||||
- Health bridge file: `src/current_process_health.json`
|
||||
- Local monitoring log: `logs/monitoring.log`
|
||||
- Process states: `running`, `crashed`, `stopped`
|
||||
- Restart tracking: bounded restart attempts per active event
|
||||
|
||||
UTC timestamp policy:
|
||||
|
||||
- `display_manager.log`, `simclient.log`, and `monitoring.log` are written in UTC (`...Z`)
|
||||
- MQTT payload timestamps (heartbeat/dashboard/health/log messages) are UTC ISO timestamps
|
||||
- Screenshot metadata timestamps are UTC ISO timestamps
|
||||
|
||||
This prevents daylight-saving and timezone drift issues across clients.
|
||||
|
||||
### VLC/PulseAudio warnings in remote sessions
|
||||
|
||||
Warnings such as `pulse audio output error: overflow, flushing` can appear when testing through remote desktop/audio forwarding (for example, NoMachine) or virtual/dummy display setups.
|
||||
|
||||
- If playback and audio are stable on a real HDMI display, this is usually non-fatal.
|
||||
- If warnings appear only in remote sessions, treat them as environment-related rather than a core video playback bug.
|
||||
|
||||
### Screenshots not uploading
|
||||
|
||||
**Check which session type you're running:**
|
||||
|
||||
Reference in New Issue
Block a user