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 <noreply@anthropic.com>
This commit is contained in:
2026-10-14 20:02:47 -04:00
co-authored by Claude Fable 5.1
parent 9dbf7cf36e
commit d5089cfdde
2 changed files with 318 additions and 11 deletions
+317 -10
View File
@@ -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",
+1 -1
View File
@@ -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):