Ignore ProPresenter API's harmless yellow warning

It flickers to "warning" every 15-20 minutes and made APPS blink for
nothing. "ignore_warning" on a conn check keeps offline, error and
disabled as alarms.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-08 16:46:25 -04:00
co-authored by Claude Opus 5.5
parent 6d273fa3d8
commit 033f3c6696
4 changed files with 21 additions and 3 deletions
+1 -1
View File
@@ -86,7 +86,7 @@ The **page number key** on every page follows the ALL button. It's green when ev
| LED | VX1000 and UHD Jr: Companion connection **and** each one answers ping (the NovaStar module keeps saying "Connected" after a processor is switched off). "UHDJR NO PING" = processor off or unreachable; "UHDJR OFFLINE" = Companion's connection failed; "UHDJR DISABLED" (amber) = connection turned off in Companion. |
| DANTE | All 19 Dante devices ("19/19"), named when one drops: "WING GONE", "TRACKS GONE", "PROP MAC GONE". |
| MIDI | All six network MIDI links on the FOH / Studio B checklist, each named when it drops: **LIGHT PC** (Ingest → Lighting), **SUPERRACK** (Ingest → Livebox), **FX LIGHTS** (Tracks → Lighting, the FX lighting cues), **TRK LIVEBOX** (Tracks → Livebox), **TRK STUDIO B** (Tracks → Studio B), **PROP LIGHTS** (ProPresenter → Lighting). NA Ingest's own session is read locally; NA Tracks' and NA ProP's over SSH every 5 s. Also: the Lighting PC and NA Tracks MIDI sessions still announced on the network. A clean disconnect shows within about 10 s; a crash or pulled cable takes about a minute (macOS's own timeout, measured). Hold 2 s reconnects whichever links dropped. |
| 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. |
| APPS | ProPresenter API (offline or error only: its harmless yellow warning, every 15–20 min, is ignored with `"ignore_warning": true`); 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. |
| VISTA | Vista on the Lighting PC: its Art-Net poll (sent every 0.5 s) must be heard within 5 s, otherwise **SILENT** (Vista closed or crashed, or the Lighting PC is off the network). Hold 2 s starts Vista if it is not running; Vista then opens **Prop Takeover** from its show folder (`E:\media\Documents\Vista 3\Shows`) by itself, through its own autoload preference (`<autoloadpath>` in `E:\media\Documents\Vista 3\.preferences`, set 2026-10-08). Resolume is the ARENA button. |
| 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) |
+1 -1
View File
@@ -113,7 +113,7 @@
{ "type": "artnet", "source": "10.1.10.206", "max_silence_seconds": 5, "fix": "vista" }
] },
{ "id": "apps", "label": "APPS", "pos": [2, 4], "checks": [
{ "type": "conn", "conn": "Propresenter-API", "tag": "PROPRES", "fix": "propresenter" },
{ "type": "conn", "conn": "Propresenter-API", "tag": "PROPRES", "fix": "propresenter", "ignore_warning": true },
{ "type": "remote", "host": "prop", "cmd": "pgrep -xq ProPresenter", "msg": "PROPRES NOT RUNNING", "fix": "propresenter" },
{ "type": "conn", "conn": "ableton", "tag": "ABLETON" },
{ "type": "remote", "host": "tracks", "cmd": "pgrep -xq Live", "msg": "ABLETON NOT RUNNING", "fix": "ableton" },
+7 -1
View File
@@ -221,7 +221,13 @@ def to_int(text):
def check_conn(chk, snap, ctx):
return [("conn", conn_result(snap, chk["conn"], ctx["now"], chk.get("service_only", False)))]
res = conn_result(snap, chk["conn"], ctx["now"], chk.get("service_only", False))
# "ignore_warning": the module's yellow warning state is harmless for this one (ProPresenter's
# API flickers to warning every 15-20 min); offline, error and disabled still alarm.
c = snap.conns.get(chk["conn"], {})
if chk.get("ignore_warning") and res.level == WARN and c.get("enabled") and c.get("category") == "warning":
res = Result(OK)
return [("conn", res)]
def hyperdeck_recording(snap, label):
+12
View File
@@ -251,6 +251,18 @@ class TestChecks(unittest.TestCase):
finally:
stop.set()
def test_propresenter_yellow_warning_is_ignored(self):
engine = sp.Engine(CONFIG)
self.snap.conns["Propresenter-API"].update(category="warning", message="Socket closed")
tiles, _ = run_steps(engine, self.snap, self.now, 5)
self.assertEqual(tiles["apps"]["x"], "APPS\nOK")
self.snap.conns["Propresenter-API"]["category"] = "error" # a real failure still alarms
tiles, _ = run_steps(engine, self.snap, self.now + 6, 5)
self.assertTrue(tiles["apps"]["x"].startswith("APPS\nPROPRES "), tiles["apps"]["x"])
self.snap.conns["Propresenter-API"].update(category="warning", enabled=False) # switched off
tiles, _ = run_steps(engine, self.snap, self.now + 12, 5)
self.assertEqual(tiles["apps"]["x"], "APPS\nPROPRES DISABLED")
def test_shure_receivers_are_pinged_at_companions_address(self):
chk = {"type": "ping", "conn": "Axient_1", "host": "10.1.1.101", "name": "AXIENT 1"}
self.assertEqual(sp.ping_target(chk, self.snap), "10.1.1.101") # fallback