diff --git a/README.md b/README.md index ef4a030..ee0b3bb 100644 --- a/README.md +++ b/README.md @@ -60,11 +60,12 @@ The **page number key** on every page follows the ALL button. It's green when ev | HD1–HD6 | Companion connection; **NO DISK**; record time **LOW** (<30 min, amber) / **FULL** (<5 min); **NOT REC** when another deck is recording and this one isn't | | | HD2 and HD4 are `"optional": true` in `config.json`: with no disk they sit grey with no alarm, and once a disk is in they are watched like the others. Add or remove `"optional": true` on any deck to change that. | | TASCAM | connection; the recorder's own Error / Caution | -| X32, ATEM, ARENA, LED, OBS | Companion connection | +| X32, ATEM, ARENA, OBS | Companion connection | +| LED | VX1000 and UHD Jr: Companion connection **and** each one answers ping (the NovaStar module keeps saying "Connected" after a processor is switched off) | | DANTE | All 19 Dante devices ("19/19"), named when one drops: "WING GONE", "TRACKS GONE", "PROP MAC GONE". | | MIDI | Lighting PC and SuperRack still joined to NA Ingest's network MIDI session; the Lighting PC and NA Tracks MIDI sessions still on the network. A clean disconnect shows within seconds; a crash or pulled cable takes about a minute (macOS's own timeout, measured). | | APPS | ProPresenter API; Ableton OSC; tracks Mac pings; Bible TV app answering on :8080 (every 5 s); Bible TV OSC. Messages name the app ("PROPRES OFFLINE", "BIBLE APP DOWN"). Hold 2 s restarts the ProPresenter, Ableton and Bible TV Companion connections. | -| RESI | decoder (RossTalk); resi-studio-cues; Resi cloud reachable | +| RESI | decoder (RossTalk connection and ping); resi-studio-cues; Resi cloud reachable | | NET | NA Ingest's link; gateway 10.1.0.1 pings; **4+ connections from 3+ groups dropping within 10 s** (what happened Sunday 10/5 at 10:21) | | INGEST | Resi bridge and lobby captions services running; ProdDash running; free disk | | RF (group) | Shure connections; battery ≤1 bar red, 2 bars amber; RF interference (only while that transmitter is on); PSM RF muted | diff --git a/config.json b/config.json index 0477f1e..6b7fcc6 100644 --- a/config.json +++ b/config.json @@ -71,7 +71,8 @@ { "id": "atem", "label": "ATEM", "pos": [3, 1], "checks": [{ "type": "conn", "conn": "ATEM" }] }, { "id": "obs", "label": "OBS", "pos": [3, 2], "checks": [{ "type": "conn", "conn": "OBS-Youtube", "service_only": true }] }, { "id": "resi", "label": "RESI", "pos": [3, 3], "checks": [ - { "type": "conn", "conn": "RESI_Decoder" }, + { "type": "conn", "conn": "RESI_Decoder", "tag": "DECODER" }, + { "type": "ping", "host": "10.1.10.203", "name": "DECODER" }, { "type": "conn", "conn": "resi-studio-cues" }, { "type": "http", "url": "https://central.resi.io/", "name": "CLOUD" } ] }, @@ -82,7 +83,12 @@ { "type": "process", "match": "/Applications/ProdDash.app/Contents/MacOS/ProdDash", "name": "PRODDASH" }, { "type": "disk", "path": "/", "warn_gb": 25, "err_gb": 8 } ] }, - { "id": "led", "label": "LED", "pos": [3, 6], "checks": [{ "type": "conn", "conn": "VX1000" }, { "type": "conn", "conn": "UHDJr" }] }, + { "id": "led", "label": "LED", "pos": [3, 6], "checks": [ + { "type": "conn", "conn": "VX1000", "tag": "VX1000" }, + { "type": "conn", "conn": "UHDJr", "tag": "UHDJR" }, + { "type": "ping", "host": "10.1.14.116", "name": "VX1000" }, + { "type": "ping", "host": "10.1.14.115", "name": "UHDJR" } + ] }, { "id": "arena", "label": "ARENA", "pos": [3, 7], "checks": [{ "type": "conn", "conn": "arena" }] }, { "id": "axient1", "label": "AXIENT 1", "checks": [{ "type": "shure", "conn": "Axient_1", "channels": 4 }] }, diff --git a/tests/test_status_panel.py b/tests/test_status_panel.py index 37f2d97..8e2e82e 100644 --- a/tests/test_status_panel.py +++ b/tests/test_status_panel.py @@ -246,6 +246,13 @@ class TestChecks(unittest.TestCase): self.assertEqual(checks["http://10.6.7.13:8080/"], 5) self.assertEqual(checks["https://central.resi.io/"], 30) + def test_device_off_while_module_says_connected(self): + # 2026-10-08: UHD Jr powered off, NovaStar module still "Connected". + self.snap.ping["10.1.14.115"] = 2 + tiles, _ = run_steps(sp.Engine(CONFIG), self.snap, self.now, 4) + self.assertEqual(tiles["led"]["x"], "LED\nUHDJR OFFLINE") + self.assertEqual(tiles["video"]["x"], "VIDEO\nUHDJR OFFLINE") + def test_ingest_services(self): del self.snap.launchd["org.waterschurch.resi-propresenter"] self.snap.launchd["org.waterschurch.lobby-captions"] = None