From d5089cfddebdb873bc8f4980e13de1c1bee1f89e Mon Sep 17 00:00:00 2001 From: christian Date: Wed, 14 Oct 2026 20:02:47 -0400 Subject: [PATCH] Campus settings: the PIN, the Tascam outlet fix, the Wednesday auto-fix window, the ATEM folder, the OBS task arguments The committed config.json is the campus as applied on NA Ingest; the READY-page work still in progress in this checkout is left out of it. The outlet fix now says, when the Dante card does not come back, that only the unit's power button resets it (verified: a 45 s cut does not), and still reconnects Companion. Co-Authored-By: Claude Fable 5.1 --- config.json | 327 +++++++++++++++++++++++++++++++++++++++++++-- settings/outlet.py | 2 +- 2 files changed, 318 insertions(+), 11 deletions(-) diff --git a/config.json b/config.json index 0078fd0..a3fa561 100644 --- a/config.json +++ b/config.json @@ -9,7 +9,7 @@ "10.6.3.222" ], "live_services": [], - "editing_code": "stingo serried warp" + "editing_code": "7381" }, "companion": { "host": "127.0.0.1", @@ -382,7 +382,8 @@ "kind": "task", "name": "Start OBS", "exe": "obs64.exe", - "elevated": true + "elevated": true, + "args": "--disable-shutdown-check" } ], "manual_done": { @@ -749,22 +750,46 @@ "label": "turn Companion's connection to that HyperDeck off and on (what gets a restarted deck green); never reboots the deck", "template": "hyperdeck", "params": {} + }, + "tascam_power": { + "kind": "local", + "template": "outlet_cycle", + "short": "TASCAM PWR", + "timeout": 300, + "reconnect": true, + "conn": "tascam", + "label": "power-cycle the Tascam through its smart plug when its control port does not answer (off 45 s, on, wait for it to come back), then reconnect Companion; its Dante card only comes back from the unit's own power button; never while a HyperDeck is recording", + "run": "/usr/bin/python3 \"$HOME/Library/Application Support/status-panel/settings/outlet.py\" cycle tascam --ping 10.1.11.74 --dante STUDIO-B-Tascam --wait 45", + "params": { + "outlet": "tascam", + "address": "10.1.11.74", + "wait_seconds": 45, + "dante": "STUDIO-B-Tascam" + } } }, "atem": { "host": "10.1.10.2", "node": "/Applications/Companion [0-9]*.app/Contents/Resources/node-runtimes/node22/bin/node", "library": "~/Library/Application Support/companion/modules/bmd-atem-*/node_modules/atem-connection", - "reference": "atem-reference.xml" + "reference": "atem-reference.xml", + "source_folder": "~/Library/CloudStorage/GoogleDrive-media@waterschurch.org/Shared drives/Waters Creative/Production Team/Backup/NA/ATEM" }, "auto_fix": { "windows": [ + { + "days": [ + "wed" + ], + "end": "21:00", + "start": "16:00" + }, { "days": [ "sun" ], - "start": "06:30", - "end": "13:30" + "end": "13:30", + "start": "06:30" } ], "after_seconds": 20, @@ -936,6 +961,282 @@ } ] }, + "ready_page": { + "page": 24, + "page_name": "24\\nReady", + "back_pos": [ + 3, + 0 + ], + "keys": [ + { + "id": "rd_tracks", + "label": "TRACKS", + "pos": [ + 0, + 1 + ], + "checks": [ + { + "type": "ready", + "item": "tracks", + "fix": "ready_recheck" + } + ] + }, + { + "id": "rd_foh", + "label": "FOH MIX", + "pos": [ + 0, + 2 + ], + "checks": [ + { + "type": "ready", + "item": "mix_foh", + "fix": "ready_recheck" + } + ] + }, + { + "id": "rd_boh", + "label": "BOH MIX", + "pos": [ + 0, + 3 + ], + "checks": [ + { + "type": "ready_manual", + "item": "mix_boh" + } + ] + }, + { + "id": "rd_lights", + "label": "LIGHTS", + "pos": [ + 0, + 4 + ], + "checks": [ + { + "type": "ready", + "item": "lights", + "fix": "ready_recheck" + } + ] + }, + { + "id": "rd_midi", + "label": "MIDI", + "pos": [ + 0, + 5 + ], + "checks": [ + { + "type": "midi_peer", + "host": "tracks", + "session": "NA Tracks", + "peer": "Lighting PC", + "tag": "FX LIGHTS", + "fix": "midi_reconnect", + "address": "10.1.10.206:5004" + }, + { + "type": "midi_peer", + "host": "tracks", + "session": "NA Tracks", + "peer": "SuperRack-LiveBox", + "tag": "TRK LIVEBOX", + "fix": "midi_reconnect", + "address": "10.1.13.140:5004" + }, + { + "type": "midi_peer", + "host": "tracks", + "session": "NA Tracks", + "peer": "Studio B Mac Studio", + "tag": "TRK STUDIO B", + "fix": "midi_reconnect", + "address": "\tStudio B Mac Studio\tlocal." + }, + { + "type": "remote", + "host": "tracks", + "cmd": "pgrep -xq Live", + "msg": "ABLETON NOT RUNNING", + "fix": "ableton", + "template": "mac_program", + "params": { + "host": "tracks", + "process": "Live" + } + } + ] + }, + { + "id": "rd_prop", + "label": "PROP", + "pos": [ + 1, + 1 + ], + "checks": [ + { + "type": "ready", + "item": "prop", + "fix": "ready_recheck" + } + ] + }, + { + "id": "rd_timecode", + "label": "TIMECODE", + "pos": [ + 1, + 2 + ], + "checks": [ + { + "type": "ready", + "item": "timecode", + "fix": "ready_ltc" + } + ] + }, + { + "id": "rd_bg", + "label": "BKGDS", + "pos": [ + 1, + 3 + ], + "checks": [ + { + "type": "ready", + "item": "backgrounds", + "fix": "ready_recheck" + } + ] + }, + { + "id": "rd_cross", + "label": "LED CROSS", + "pos": [ + 1, + 4 + ], + "checks": [ + { + "type": "ready", + "item": "led_cross", + "fix": "ready_led_cross" + } + ] + }, + { + "id": "rd_lineup", + "label": "LINEUP TV", + "pos": [ + 2, + 1 + ], + "checks": [ + { + "type": "ready", + "item": "lineup", + "fix": "ready_lineup" + } + ] + }, + { + "id": "rd_green", + "label": "GREEN ROOM", + "pos": [ + 2, + 2 + ], + "checks": [ + { + "type": "ready_manual", + "item": "greenroom" + } + ] + }, + { + "id": "rd_mics", + "label": "MICS", + "pos": [ + 2, + 3 + ], + "checks": [ + { + "type": "ready_manual", + "item": "mics", + "msg": "TAP WHEN SET" + } + ] + }, + { + "id": "rd_stage", + "label": "STAGE", + "pos": [ + 2, + 4 + ], + "checks": [ + { + "type": "ready_manual", + "item": "stage", + "msg": "HELIX, RISERS: TAP" + } + ] + }, + { + "id": "rd_trk_out", + "label": "TRACKS OUT", + "pos": [ + 3, + 1 + ], + "checks": [ + { + "type": "ready", + "item": "track_bundle", + "fix": "ready_copy_tracks" + } + ] + }, + { + "id": "rd_prop_out", + "label": "PROP OUT", + "pos": [ + 3, + 2 + ], + "checks": [ + { + "type": "ready", + "item": "prop_bundle", + "fix": "ready_recheck" + } + ] + }, + { + "id": "rd_all", + "label": "READY", + "pos": [ + 3, + 7 + ], + "kind": "ready" + } + ] + }, "tiles": [ { "id": "all", @@ -1158,7 +1459,8 @@ "type": "ping", "conn": "tascam", "host": "10.1.11.74", - "name": "TASCAM" + "name": "TASCAM", + "fix": "tascam_power" } ] }, @@ -1304,10 +1606,6 @@ { "id": "spotify", "label": "SPOTIFY", - "pos": [ - 2, - 7 - ], "hold_always": "spotify_play", "checks": [ { @@ -1316,6 +1614,15 @@ } ] }, + { + "id": "ready", + "label": "READY", + "pos": [ + 2, + 7 + ], + "kind": "ready" + }, { "id": "vista", "label": "VISTA", diff --git a/settings/outlet.py b/settings/outlet.py index cd4c1cb..826a938 100644 --- a/settings/outlet.py +++ b/settings/outlet.py @@ -166,7 +166,7 @@ def cycle(name, wait=8, ping=None, dante=None, ignore_live=False, data=None): if dante_has(dante): return True, "%s power-cycled; %s and its Dante card are back after %d s" % (name, ping, int(time.time() - t0)) time.sleep(5) - return False, "%s power-cycled; %s answers but its Dante card (%s) is not back after 180 s - press its power button off and on" % (name, ping, dante) + return True, "%s power-cycled; %s answers again, but its Dante card (%s) only comes back from the unit's own power button: press it off and on" % (name, ping, dante) def main(argv):