feat: point the fleet at wss LiveKit room uwh-telhai

Publish and subscribe over wss://livekit.uni-wh.de:7800 and refuse
cleartext ws://. Conference room is uwh-telhai. Includes the uncommitted
encoded H.264 publish path, Rally hairpin, and KMS wall overlay.
This commit is contained in:
root
2026-10-11 00:48:50 +00:00
parent ef9573c294
commit 95bb7c50ee
89 changed files with 9883 additions and 243 deletions
+20
View File
@@ -18,6 +18,13 @@ import subprocess
from dataclasses import dataclass, field
from pathlib import Path
from usb_ids import (
is_fleet_video,
is_rally_pid,
looks_like_rally_name,
usb_vid_pid_of_video_node,
)
log = logging.getLogger("cameras.discovery")
_SLOTS_FILE = Path(__file__).parent / "slots.json"
@@ -32,6 +39,9 @@ class Camera:
usb_port: str = ""
serial: str = ""
extra_video_devices: list[str] = field(default_factory=list)
# None = use fleet VIDEO_WIDTH / VIDEO_HEIGHT (C920 360p). Rally is 720p.
width: int | None = None
height: int | None = None
def select_cameras(cameras: list[Camera], spec: list[str]) -> list[Camera]:
@@ -192,8 +202,18 @@ def discover_cameras() -> list[Camera]:
for name, nodes in groups.items():
if not nodes:
continue
if looks_like_rally_name(name):
log.info("skipping Rally/speaker device %r (not a cam-NN slot)", name)
continue
nodes.sort(key=lambda n: int(Path(n).name.replace("video", "")))
primary = nodes[0]
ids = usb_vid_pid_of_video_node(primary)
if ids is not None and not is_fleet_video(ids[0], ids[1]):
log.info("skipping non-C920 USB %04x:%04x at %s", ids[0], ids[1], primary)
continue
if ids is not None and is_rally_pid(ids[1]):
log.info("skipping Rally USB %04x:%04x at %s", ids[0], ids[1], primary)
continue
serial = _serial_of_video_node(primary)
port = _usb_port_of_video_node(primary)