Files
status-indicators/config.json
T

2056 lines
50 KiB
JSON
Raw Normal View History

{
"site": {
"id": "na",
"name": "North Attleboro",
"ingest_name": "NA Ingest",
"ingest_hostname": "na-ingest.local",
"ingest_ips": [
"10.1.1.1",
"10.6.3.222"
],
"live_services": [],
"editing_code": "7381"
},
"companion": {
"host": "127.0.0.1",
"port": 8000
},
"page": 19,
"page_name": "19\\nStatus",
"nav_keys": [
"pagenum"
],
"nav_hold_ms": 1000,
"nav_tap_page": 1,
"variables": {
"state": "sp_state",
"heartbeat": "sp_hb",
"command": "sp_cmd"
},
"service_windows": [
{
"days": [
"mon",
"tue",
"wed",
"thu",
"fri",
"sat",
"sun"
],
"start": "00:00",
"end": "23:59"
}
],
"debounce_seconds": 3,
"flap": {
"count": 3,
"window_seconds": 600
},
"network": {
"interface": "en0",
"gateway": "10.1.0.1",
"burst_connections": 4,
"burst_groups": 3,
"burst_window_seconds": 10,
"remember_seconds": 300
},
"alert_webhook": "",
"timing": {
"fix_cooldown_seconds": 60,
"alert_after_seconds": 30
},
"page_hold_ms": 2000,
"spotify": {
"playlist": "spotify:playlist:2uTpJVYQLFnKF1WnSOuco8",
"name": "Christian EDM 2026",
"open_wait": 8,
"play_wait": 3
},
"ssh_key": "~/.ssh/id_status_panel",
"dante_switches": [
"10.66.1.100",
"10.66.1.102"
],
"hosts": {
"ingest": {
"self": true,
"name": "NA Ingest",
"os": "mac",
"role": "the watchdog, Companion, the settings page, lobby captions, transcription",
"runs": [
{
"kind": "launchagent",
"label": "org.waterschurch.status-panel",
"name": "the watchdog"
},
{
"kind": "launchagent",
"label": "org.waterschurch.status-settings",
"name": "the settings page"
},
{
"kind": "app",
"process": "Companion",
"name": "Companion 5.0.7",
"http": "http://127.0.0.1:8000/api/connections"
},
{
"kind": "app",
"process": "Companion Satellite",
"name": "Companion Satellite",
"watched": false
},
{
"kind": "launchagent",
"label": "org.waterschurch.resi-propresenter",
"name": "the Resi bridge"
},
{
"kind": "launchagent",
"label": "org.waterschurch.lobby-captions",
"name": "lobby captions"
},
{
"kind": "launchagent",
"label": "org.waterschurch.lobby-captions-display",
"name": "the caption screen"
},
{
"kind": "app",
"process": "ProdCom",
"name": "ProdCom (transcription)",
"http": "http://127.0.0.1:24480/api/v1/ping"
},
{
"kind": "app",
"process": "ProdDash",
"name": "ProdDash",
"http": "http://127.0.0.1:24500/"
},
{
"kind": "app",
"process": "Spotify",
"name": "Spotify"
},
{
"kind": "app",
"process": "ATEM Software Control",
"name": "ATEM Software Control"
},
{
"kind": "daemon",
"process": "DanteVirtualSoundcard",
"name": "Dante Virtual Soundcard",
"dante_name": "STUDIO-A-Ingest"
},
{
"kind": "helper_dvs",
"name": "the DVS helper"
},
{
"kind": "folder",
"path": "~/Library/CloudStorage/GoogleDrive-media@waterschurch.org/Shared drives/Waters Creative/Production Team/Backup/NA/ATEM",
"name": "Google Drive (the saved switcher files)"
},
{
"kind": "launchagent",
"label": "org.waterschurch.checklist-build-runner",
"name": "Gitea runner (not the panel)",
"watched": false
},
{
"kind": "launchagent",
"label": "org.waterschurch.checklist-drive-backup",
"name": "checklist backup (not the panel)",
"watched": false
},
{
"kind": "launchagent",
"label": "org.waterschurch.checklist-weekly-health",
"name": "checklist health (not the panel)",
"watched": false
},
{
"kind": "disabled",
"label": "org.waterschurch.translate",
"name": "Church Translate (must NOT run here)"
}
],
"networks": [
{
"iface": "en0",
"use": "LAN"
},
{
"iface": "en1",
"use": "LAN"
},
{
"iface": "en17",
"use": "Dante"
},
{
"iface": "en20",
"use": "Netgear management"
}
]
},
"prop": {
"ssh": "napropresenter@10.1.14.225",
"name": "ProPresenter Mac",
"os": "mac",
"role": "ProPresenter, its stage and Prop TV pages, Dante sound card",
"runs": [
{
"kind": "sshd"
},
{
"kind": "app",
"process": "ProPresenter",
"name": "ProPresenter (newest installed)",
"http": "http://10.1.14.225:1025/"
},
{
"kind": "daemon",
"process": "DanteVirtualSoundcard",
"name": "Dante Virtual Soundcard",
"dante_name": "NA-ProPresenter-Mac"
},
{
"kind": "helper_dvs",
"name": "the DVS helper"
},
{
"kind": "midi_session",
"name": "NA ProP"
}
]
},
"tracks": {
"ssh": "waterschurchmedia@10.1.3.227",
"name": "Tracks Mac",
"os": "mac",
"role": "Ableton (tracks and FX lighting cues), Dante sound card",
"runs": [
{
"kind": "sshd"
},
{
"kind": "app",
"process": "Live",
"name": "Ableton Live 11 Suite"
},
{
"kind": "daemon",
"process": "DanteVirtualSoundcard",
"name": "Dante Virtual Soundcard",
"dante_name": "NA-Tracks"
},
{
"kind": "helper_dvs",
"name": "the DVS helper"
},
{
"kind": "midi_session",
"name": "NA Tracks"
}
]
},
"translation": {
"ssh": "studio@10.1.7.39",
"name": "NA Translation",
"os": "mac",
"role": "Church Translate, Dante sound card",
"runs": [
{
"kind": "sshd"
},
{
"kind": "app",
"process": "Church Translate",
"name": "Church Translate"
},
{
"kind": "launchagent",
"label": "org.waterschurch.translate.engine",
"name": "the translation engine",
"watched": false
},
{
"kind": "daemon",
"process": "DanteVirtualSoundcard",
"name": "Dante Virtual Soundcard",
"dante_name": "NA-Translation"
},
{
"kind": "helper_dvs",
"name": "the DVS helper"
}
]
},
"studiob": {
"ssh": "studiob@10.1.13.175",
"name": "Studio B Mac Studio",
"os": "mac",
"role": "Pro Tools",
"runs": [
{
"kind": "sshd"
},
{
"kind": "app",
"process": "Pro Tools",
"name": "Pro Tools"
},
{
"kind": "helper_solo",
"label": "org.waterschurch.status-panel.solo-mode",
"name": "the Pro Tools solo-mode helper"
},
{
"kind": "midi_session",
"name": "Studio B Mac Studio",
"peer_of": "NA Tracks"
}
]
},
"lighting": {
"ssh": "media@10.1.10.206",
"name": "Lighting PC",
"os": "windows",
"role": "Vista, Resolume Arena, rtpMIDI",
"pingable": false,
"notes": "Keep the network profile on Public: rtpMIDI's Bonjour rules only allow Public.",
"runs": [
{
"kind": "sshd"
},
{
"kind": "task",
"name": "Start Vista",
"exe": "Vista.exe"
},
{
"kind": "task",
"name": "Start Arena",
"exe": "Arena.exe"
},
{
"kind": "task",
"name": "Start rtpMIDI",
"exe": "rtpMIDI.exe"
},
{
"kind": "service",
"name": "rtpMIDIService"
},
{
"kind": "midi_session",
"name": "Lighting PC",
"peer_of": "NA Ingest"
},
{
"kind": "artnet",
"name": "Vista Art-Net",
"source": "10.1.10.206"
}
],
"manual_done": {
"public_profile": {
"by": "Chris",
"on": "2026-10-08"
},
"vista_autoload": {
"by": "Chris",
"on": "2026-10-08"
}
}
},
"livestream": {
"ssh": "media@10.1.9.126",
"os": "windows",
"mac": "6c:24:08:d7:fb:57",
"wake_broadcast": "10.1.255.255",
"name": "LiveStream PC",
"role": "OBS (YouTube)",
"runs": [
{
"kind": "sshd"
},
{
"kind": "task",
"name": "Start OBS",
"exe": "obs64.exe",
"elevated": true,
"args": "--disable-shutdown-check"
}
],
"manual_done": {
"bios_wol": {
"by": "Chris",
"on": "2026-10-08"
}
}
},
"bibletv": {
"ssh": "media@10.6.7.13",
"os": "windows",
"name": "Bible TV PC",
"role": "the Bible app on the sanctuary TV",
"pingable": false,
"notes": "Wi-Fi only; Ethernet recommended. Wi-Fi power saving is off.",
"runs": [
{
"kind": "sshd"
},
{
"kind": "task",
"name": "Start BibleApp",
"exe": "Bible App.exe",
"at_logon": true
},
{
"kind": "web",
"url": "http://10.6.7.13:8080/",
"name": "the Bible app's web page"
}
],
"manual_done": {
"wifi_power": {
"by": "Chris",
"on": "2026-10-11"
}
}
}
},
"gear": {},
"fixes": {
"propresenter": {
"host": "prop",
"short": "PROPRES",
"label": "restart ProPresenter (newest installed)",
"run": "APP=$(ls -d /Applications/ProPresenter*.app | sort -V | tail -1); pkill -TERM -x ProPresenter; i=0; while pgrep -xq ProPresenter && [ $i -lt 20 ]; do sleep 0.5; i=$((i+1)); done; pgrep -xq ProPresenter && pkill -KILL -x ProPresenter; sleep 1; open \"$APP\"",
"template": "mac_restart",
"params": {
"host": "prop",
"process": "ProPresenter",
"app": "$APP",
"newest_of": "/Applications/ProPresenter*.app",
"wait_seconds": 10,
"force": true
},
"kind": "ssh"
},
"ableton": {
"host": "tracks",
"short": "ABLETON",
"label": "start Ableton if it is not running, with the set it last had open",
"run": "pgrep -xq Live || { L=$(ls -td ~/Library/Preferences/Ableton/Live*/ | head -1); S=$(grep -a 'info: Loading document \"' \"${L}Log.txt\" | grep -v '/Templates/' | tail -1 | sed -E 's/^.*Loading document \"(.*)\"[^\"]*$/\\1/'); if [ -n \"$S\" ] && [ -f \"$S\" ]; then open -a 'Ableton Live 11 Suite' \"$S\"; else open -a 'Ableton Live 11 Suite'; fi; }",
"template": "ableton",
"params": {
"host": "tracks",
"app": "Ableton Live 11 Suite",
"restart": false
},
"kind": "ssh"
},
"translate": {
"host": "translation",
"short": "TRANSLATE",
"label": "start Church Translate if it is not running",
"run": "pgrep -xq 'Church Translate' || open -a 'Church Translate'",
"template": "mac_start",
"params": {
"host": "translation",
"process": "Church Translate",
"app": "Church Translate"
},
"kind": "ssh"
},
"dvs_prop": {
"host": "prop",
"short": "DVS",
"label": "restart Dante Virtual Soundcard on the ProPresenter Mac (its engine restarts; audio to and from that Mac drops for 5-10 s)",
"run": "sudo -n /usr/local/sbin/status-panel-dvs-start && open -g -a 'Dante Virtual Soundcard'",
"template": "dvs",
"params": {
"host": "prop"
},
"kind": "ssh"
},
"dvs_tracks": {
"host": "tracks",
"short": "DVS",
"label": "restart Dante Virtual Soundcard on the Tracks Mac (its engine restarts; audio to and from that Mac drops for 5-10 s)",
"run": "sudo -n /usr/local/sbin/status-panel-dvs-start && open -g -a 'Dante Virtual Soundcard'",
"template": "dvs",
"params": {
"host": "tracks"
},
"kind": "ssh"
},
"dvs_translation": {
"host": "translation",
"short": "DVS",
"label": "restart Dante Virtual Soundcard on NA Translation (its engine restarts; audio to and from that Mac drops for 5-10 s)",
"run": "sudo -n /usr/local/sbin/status-panel-dvs-start && open -g -a 'Dante Virtual Soundcard'",
"template": "dvs",
"params": {
"host": "translation"
},
"kind": "ssh"
},
"dvs_ingest": {
"kind": "local",
"short": "DVS",
"label": "restart Dante Virtual Soundcard on NA Ingest, then ProdCom (it keeps a dead DVS input otherwise)",
"run": "sudo -n /usr/local/sbin/status-panel-dvs-start && open -g -a 'Dante Virtual Soundcard' || exit 1; sleep 5; pkill -TERM -x ProdCom; i=0; while pgrep -xq ProdCom && [ $i -lt 20 ]; do sleep 0.5; i=$((i+1)); done; pgrep -xq ProdCom && pkill -KILL -x ProdCom; sleep 1; open -g /Applications/ProdCom.app",
"template": "dvs",
"params": {
"host": "ingest",
"then_process": "ProdCom",
"then_app": "/Applications/ProdCom.app"
}
},
"bridge": {
"kind": "local",
"short": "BRIDGE",
"label": "restart the Resi bridge",
"run": "launchctl kickstart -k gui/$(id -u)/org.waterschurch.resi-propresenter || launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/org.waterschurch.resi-propresenter.plist",
"template": "helpers",
"params": {
"labels": [
"org.waterschurch.resi-propresenter"
]
}
},
"captions": {
"kind": "local",
"short": "CAPTIONS",
"label": "restart lobby captions (server and display)",
"run": "s=0; { launchctl kickstart -k gui/$(id -u)/org.waterschurch.lobby-captions || launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/org.waterschurch.lobby-captions.plist; } || s=1; { launchctl kickstart -k gui/$(id -u)/org.waterschurch.lobby-captions-display || launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/org.waterschurch.lobby-captions-display.plist; } || s=1; exit $s",
"template": "helpers",
"params": {
"labels": [
"org.waterschurch.lobby-captions",
"org.waterschurch.lobby-captions-display"
]
}
},
"bibleapp": {
"host": "bibletv",
"short": "BIBLE APP",
"label": "restart the Bible app on the Sanctuary TV PC (Windows: cmd.exe)",
"run": "taskkill /F /T /IM \"Bible App.exe\" >nul 2>&1 & ping -n 3 127.0.0.1 >nul & schtasks /Run /TN \"\\StatusPanel\\Start BibleApp\" >nul && ping -n 9 127.0.0.1 >nul && tasklist /NH /FI \"IMAGENAME eq Bible App.exe\" | find /I \"Bible App.exe\" >nul",
"template": "win_restart",
"params": {
"host": "bibletv",
"task": "Start BibleApp",
"exe": "Bible App.exe"
},
"kind": "ssh"
},
"obs": {
"host": "livestream",
"short": "OBS",
"label": "start OBS on the LiveStream PC if it is not running (wakes the PC if it is off), then reconnect Companion",
"reconnect": true,
"run": "tasklist /NH /FI \"IMAGENAME eq obs64.exe\" | find /I \"obs64.exe\" >nul || (schtasks /Run /TN \"\\StatusPanel\\Start OBS\" >nul && ping -n 9 127.0.0.1 >nul && tasklist /NH /FI \"IMAGENAME eq obs64.exe\" | find /I \"obs64.exe\" >nul)",
"template": "win_start",
"params": {
"host": "livestream",
"task": "Start OBS",
"exe": "obs64.exe"
},
"kind": "ssh"
},
"arena": {
"host": "lighting",
"short": "ARENA",
"label": "start Resolume Arena on the Lighting PC if it is not running, then reconnect Companion",
"reconnect": true,
"run": "tasklist /NH /FI \"IMAGENAME eq Arena.exe\" | find /I \"Arena.exe\" >nul || (schtasks /Run /TN \"\\StatusPanel\\Start Arena\" >nul && ping -n 9 127.0.0.1 >nul && tasklist /NH /FI \"IMAGENAME eq Arena.exe\" | find /I \"Arena.exe\" >nul)",
"template": "win_start",
"params": {
"host": "lighting",
"task": "Start Arena",
"exe": "Arena.exe"
},
"kind": "ssh"
},
"vista": {
"host": "lighting",
"short": "VISTA",
"label": "start Vista on the Lighting PC if it is not running (a running Vista is never closed)",
"run": "tasklist /NH /FI \"IMAGENAME eq Vista.exe\" | find /I \"Vista.exe\" >nul || (schtasks /Run /TN \"\\StatusPanel\\Start Vista\" >nul && ping -n 9 127.0.0.1 >nul && tasklist /NH /FI \"IMAGENAME eq Vista.exe\" | find /I \"Vista.exe\" >nul)",
"template": "win_start",
"params": {
"host": "lighting",
"task": "Start Vista",
"exe": "Vista.exe"
},
"kind": "ssh"
},
"rtpmidi_start": {
"host": "lighting",
"short": "RTPMIDI",
"label": "start rtpMIDI on the Lighting PC if it is not running (service, then tray app). A running rtpMIDI is never restarted: that drops every session.",
"run": "(sc query rtpMIDIService | find \"RUNNING\" >nul || net start rtpMIDIService) && (tasklist /NH /FI \"IMAGENAME eq rtpMIDI.exe\" | find /I \"rtpMIDI.exe\" >nul || schtasks /Run /TN \"\\StatusPanel\\Start rtpMIDI\")",
"template": "win_service",
"params": {
"host": "lighting",
"service": "rtpMIDIService",
"task": "Start rtpMIDI",
"exe": "rtpMIDI.exe"
},
"kind": "ssh"
},
"midi_reconnect": {
"kind": "midi_connect",
"short": "RECONNECT",
"label": "reconnect the peer to the network MIDI session it dropped out of (like Connect in Audio MIDI Setup); the address is where it was last seen, else the check's \"address\"",
"template": "midi_connect",
"params": {}
},
"caption_screen": {
"kind": "local",
"short": "CAPTION SCREEN",
"label": "restart the lobby caption screen (display app only)",
"run": "launchctl kickstart -k gui/$(id -u)/org.waterschurch.lobby-captions-display || launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/org.waterschurch.lobby-captions-display.plist",
"template": "helpers",
"params": {
"labels": [
"org.waterschurch.lobby-captions-display"
]
}
},
"solo_afl": {
"host": "studiob",
"short": "PT SOLO",
"label": "set Pro Tools on the Studio B Mac Studio back to Solo Mode AFL + Latch (clicks Options > Solo Mode)",
"run": "touch \"$HOME/Library/Application Support/status-panel/solo-mode.fix\"; sleep 3; ! grep -q '\"bad\":true' \"$HOME/Library/Application Support/status-panel/solo-mode.json\"",
"template": "solo_afl",
"params": {
"host": "studiob"
},
"kind": "ssh"
},
"atem_audio": {
"kind": "atem",
"part": "audio",
"short": "ATEM AUDIO",
"label": "set the switcher's audio inputs back to the restore file (Resi on input 16 on, the rest as saved)",
"template": "atem",
"params": {}
},
"atem_camera": {
"kind": "atem",
"part": "camera",
"short": "ATEM CAMERA",
"label": "set the cameras' settings back to the restore file (only what differs)",
"template": "atem",
"params": {}
},
"atem_midi": {
"kind": "local",
"short": "ATEM MIDI",
"restart_ok": true,
"label": "turn off MIDI control in ATEM Software Control (quits and reopens the app; the switcher is not affected)",
"run": "was=$(pgrep -f \"ATEM Software Control.app/Contents/MacOS\"); pkill -TERM -f \"ATEM Software Control.app/Contents/MacOS\"; i=0; while pgrep -fq \"ATEM Software Control.app/Contents/MacOS\" && [ $i -lt 20 ]; do sleep 0.5; i=$((i+1)); done; defaults write \"com.blackmagic-design.ATEM Software Control\" midiEnabled -bool false; [ -z \"$was\" ] || open -g -a \"ATEM Software Control\"; [ \"$(defaults read \"com.blackmagic-design.ATEM Software Control\" midiEnabled)\" = 0 ]",
"template": "atem_midi_off",
"params": {}
},
"spotify_play": {
"kind": "spotify",
"short": "SPOTIFY",
"label": "play the Christian EDM 2026 playlist in Spotify on NA Ingest (opens Spotify if it is closed)",
"template": "spotify",
"params": {}
},
"proddash": {
"kind": "local",
"short": "PRODDASH",
"label": "restart ProdDash (its launcher stops its server cleanly)",
"run": "pkill -TERM -x ProdDash; i=0; while pgrep -xq ProdDash && [ $i -lt 20 ]; do sleep 0.5; i=$((i+1)); done; open -g /Applications/ProdDash.app",
"template": "mac_restart",
"params": {
"host": "ingest",
"process": "ProdDash",
"app": "/Applications/ProdDash.app",
"wait_seconds": 10,
"force": false,
"background": true
}
},
"prodcom": {
"kind": "local",
"short": "PRODCOM",
"label": "restart ProdCom (transcription; lobby captions blank for 5-15 s)",
"run": "pkill -TERM -x ProdCom; i=0; while pgrep -xq ProdCom && [ $i -lt 20 ]; do sleep 0.5; i=$((i+1)); done; pgrep -xq ProdCom && pkill -KILL -x ProdCom; sleep 1; open -g /Applications/ProdCom.app",
"template": "mac_restart",
"params": {
"host": "ingest",
"process": "ProdCom",
"app": "/Applications/ProdCom.app",
"wait_seconds": 10,
"force": true,
"background": true
}
},
"ableton_restart": {
"host": "tracks",
"short": "ABLETON",
"label": "restart Ableton on the Tracks Mac and reopen the set it had open (unsaved changes are lost; Live may ask to recover on the Tracks Mac)",
"conn": "ableton",
"reconnect": true,
"timeout": 60,
"run": "L=$(ls -td ~/Library/Preferences/Ableton/Live*/ | head -1); S=$(grep -a 'info: Loading document \"' \"${L}Log.txt\" | grep -v '/Templates/' | tail -1 | sed -E 's/^.*Loading document \"(.*)\"[^\"]*$/\\1/'); pkill -TERM -x Live; i=0; while pgrep -xq Live && [ $i -lt 30 ]; do sleep 0.5; i=$((i+1)); done; pgrep -xq Live && pkill -KILL -x Live; sleep 1; if [ -n \"$S\" ] && [ -f \"$S\" ]; then open -a 'Ableton Live 11 Suite' \"$S\"; else open -a 'Ableton Live 11 Suite'; fi",
"template": "ableton",
"params": {
"host": "tracks",
"app": "Ableton Live 11 Suite",
"restart": true,
"wait_seconds": 15
},
"kind": "ssh"
},
"translate_restart": {
"host": "translation",
"short": "TRANSLATE",
"label": "restart Church Translate on NA Translation (and its translation server)",
"timeout": 60,
"run": "pg=$(ps -o pgid= -p \"$(pgrep -x 'Church Translate' | head -1)\" 2>/dev/null | tr -d ' '); pkill -TERM -x 'Church Translate'; i=0; while pgrep -xq 'Church Translate' && [ $i -lt 30 ]; do sleep 0.5; i=$((i+1)); done; pgrep -xq 'Church Translate' && pkill -KILL -x 'Church Translate'; [ -n \"$pg\" ] && [ \"$pg\" != \"$(ps -o pgid= -p $$ | tr -d ' ')\" ] && kill -KILL -- -\"$pg\" 2>/dev/null; sleep 1; open -a 'Church Translate'",
"template": "mac_restart",
"params": {
"host": "translation",
"process": "Church Translate",
"app": "Church Translate",
"wait_seconds": 15,
"force": true,
"stop_children": true
},
"kind": "ssh"
},
"tascam_reconnect": {
"kind": "reconnect",
"conn": "tascam",
"short": "TASCAM",
"verify_seconds": 20,
"hung_note": "HUNG - POWER\nCYCLE IT",
"label": "reconnect Companion to the Tascam; if it still does not answer but pings, its control port has hung: power-cycle it at the rack",
"template": "reconnect",
"params": {}
},
"hyperdeck": {
"kind": "hyperdeck",
"short": "HYPERDECK",
"verify_seconds": 15,
"hung_note": "STILL OFFLINE\nHOLD AGAIN",
"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",
"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"
],
"end": "13:30",
"start": "06:30"
}
],
"after_seconds": 20,
"max_tries": 2,
"retry_seconds": 90,
"pause_after_network_seconds": 60,
"restart_connections": true,
"fixes": [
"hyperdeck",
"tascam_reconnect",
"midi_reconnect",
"rtpmidi_start",
"vista",
"arena",
"obs",
"ableton",
"translate",
"dvs_prop",
"dvs_tracks",
"dvs_translation",
"solo_afl",
"atem_audio",
"atem_camera",
"atem_midi",
"spotify_play"
]
},
"restart_page": {
"page": 20,
"page_name": "20\\nRestart",
"jump_pos": [
2,
6
],
"back_pos": [
2,
6
],
"keys": [
{
"id": "rs_dvs_prop",
"label": "DVS PROP",
"pos": [
0,
1
],
"fix": "dvs_prop"
},
{
"id": "rs_dvs_tracks",
"label": "DVS TRACKS",
"pos": [
0,
2
],
"fix": "dvs_tracks"
},
{
"id": "rs_dvs_transl",
"label": "DVS TRANSL",
"pos": [
0,
3
],
"fix": "dvs_translation"
},
{
"id": "rs_dvs_ingest",
"label": "DVS INGEST",
"pos": [
0,
4
],
"fix": "dvs_ingest"
},
{
"id": "rs_propres",
"label": "PROPRESENTER",
"pos": [
1,
1
],
"fix": "propresenter"
},
{
"id": "rs_ableton",
"label": "ABLETON",
"pos": [
1,
2
],
"fix": "ableton_restart",
"watch": [
"ableton",
"conn:ableton"
]
},
{
"id": "rs_translate",
"label": "TRANSLATE",
"pos": [
1,
3
],
"fix": "translate_restart",
"watch": [
"translate"
]
},
{
"id": "rs_spotify",
"label": "SPOTIFY",
"pos": [
1,
4
],
"fix": "spotify_play"
},
{
"id": "rs_prodcom",
"label": "PRODCOM",
"pos": [
2,
1
],
"fix": "prodcom"
},
{
"id": "rs_proddash",
"label": "PRODDASH",
"pos": [
2,
2
],
"fix": "proddash"
},
{
"id": "rs_captions",
"label": "CAPTIONS",
"pos": [
2,
3
],
"fix": "captions",
"watch": [
"caption_screen"
]
},
{
"id": "rs_bridge",
"label": "BRIDGE",
"pos": [
2,
4
],
"fix": "bridge"
},
{
"id": "rs_tascam",
"label": "TASCAM",
"pos": [
3,
1
],
"fix": "tascam_reconnect",
"watch": [
"conn:tascam"
]
}
]
},
"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",
"label": "ALL",
"pos": [
0,
1
],
"kind": "master"
},
{
"id": "rec",
"label": "REC",
"pos": [
0,
2
],
"members": [
"hd1",
"hd2",
"hd3",
"hd4",
"hd5",
"hd6",
"tascam"
]
},
{
"id": "audio",
"label": "AUDIO",
"pos": [
0,
3
],
"members": [
"x32",
"dante"
]
},
{
"id": "rf",
"label": "RF",
"pos": [
0,
4
],
"members": [
"axient1",
"axient2",
"ulxd",
"psm1",
"psm2",
"psm3"
]
},
{
"id": "show",
"label": "SHOW",
"pos": [
0,
5
],
"members": [
"midi",
"apps",
"vista",
"spotify"
]
},
{
"id": "video",
"label": "VIDEO",
"pos": [
0,
6
],
"members": [
"atem",
"led",
"arena"
]
},
{
"id": "stream",
"label": "STREAM",
"pos": [
0,
7
],
"members": [
"obs",
"resi"
]
},
{
"id": "hd1",
"label": "HD1",
"pos": [
1,
1
],
"hold_always": "hyperdeck",
"checks": [
{
"type": "hyperdeck",
"conn": "HyperDeck_1",
"fix": {
"conn": "hyperdeck"
}
}
]
},
{
"id": "hd2",
"label": "HD2",
"pos": [
1,
2
],
"hold_always": "hyperdeck",
"checks": [
{
"type": "hyperdeck",
"conn": "HyperDeck_2",
"optional": true,
"fix": {
"conn": "hyperdeck"
}
}
]
},
{
"id": "hd3",
"label": "HD3",
"pos": [
1,
3
],
"hold_always": "hyperdeck",
"checks": [
{
"type": "hyperdeck",
"conn": "HyperDeck_3",
"fix": {
"conn": "hyperdeck"
}
}
]
},
{
"id": "hd4",
"label": "HD4",
"pos": [
1,
4
],
"hold_always": "hyperdeck",
"checks": [
{
"type": "hyperdeck",
"conn": "HyperDeck_4",
"optional": true,
"fix": {
"conn": "hyperdeck"
}
}
]
},
{
"id": "hd5",
"label": "HD5",
"pos": [
1,
5
],
"hold_always": "hyperdeck",
"checks": [
{
"type": "hyperdeck",
"conn": "HyperDeck_5",
"fix": {
"conn": "hyperdeck"
}
}
]
},
{
"id": "hd6",
"label": "HD6",
"pos": [
1,
6
],
"hold_always": "hyperdeck",
"checks": [
{
"type": "hyperdeck",
"conn": "HyperDeck_6",
"fix": {
"conn": "hyperdeck"
}
}
]
},
{
"id": "tascam",
"label": "TASCAM",
"pos": [
1,
7
],
"hold_always": "tascam_reconnect",
"checks": [
{
"type": "tascam",
"conn": "tascam",
"fix": "tascam_reconnect"
},
{
"type": "ping",
"conn": "tascam",
"host": "10.1.11.74",
"name": "TASCAM",
"fix": "tascam_power"
}
]
},
{
"id": "x32",
"label": "X32",
"pos": [
2,
1
],
"checks": [
{
"type": "conn",
"conn": "x32"
}
]
},
{
"id": "dante",
"label": "DANTE",
"pos": [
2,
2
],
"checks": [
{
"type": "dante",
"conn": "audinate-dantecontroller",
"fix": {
"NA-ProPresenter-Mac": "dvs_prop",
"NA-Tracks": "dvs_tracks",
"NA-Translation": "dvs_translation",
"STUDIO-A-Ingest": "dvs_ingest",
"*": "dante-auto"
},
"devices": {
"FOH-DiGiCo-DMI-1": "DMI-1",
"FOH-DiGiCo-DMI-2": "DMI-2",
"BOH-WING": "WING",
"BOH-DQ-Rack": "DQ RACK",
"BOH-AD4Q-A": "AD4Q-A",
"BOH-AD4Q-B": "AD4Q-B",
"STUDIO-A-X32": "STA X32",
"STUDIO-A-Resi-AJA-SDI": "RESI AJA",
"STUDIO-A-Ingest": "INGEST",
"NA-Translation": "TRANSL",
"STUDIO-B-RedNet-TNX": "STB TNX",
"STUDIO-B-TB": "STB TB",
"STUDIO-B-TB-MON": "STB TB MON",
"STUDIO-B-MON": "STB MON",
"STUDIO-B-SOLO-MON": "STB SOLO",
"STUDIO-B-Tascam": "STB TASCAM",
"NA-Tracks": "TRACKS",
"FOH-SuperRack-LiveBox": "SUPERRACK",
"NA-ProPresenter-Mac": "PROP MAC"
}
}
]
},
{
"id": "midi",
"label": "MIDI",
"pos": [
2,
3
],
"checks": [
{
"type": "midi_peer",
"session": "NA Ingest",
"peer": "Lighting PC",
"tag": "LIGHT PC",
"fix": "midi_reconnect",
"address": "10.1.10.206:5004"
},
{
"type": "midi_peer",
"session": "NA Ingest",
"peer": "SuperRack-LiveBox",
"tag": "SUPERRACK",
"fix": "midi_reconnect",
"address": "10.1.13.140:5004"
},
{
"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": "midi_peer",
"host": "prop",
"session": "NA ProP",
"peer": "Lighting PC",
"tag": "PROP LIGHTS",
"fix": "midi_reconnect",
"address": "10.1.10.206:5004"
},
{
"type": "conn",
"conn": "lighting-midi",
"tag": "COMPANION MIDI"
},
{
"type": "mdns",
"instance": "Lighting PC",
"name": "LIGHT PC MIDI",
"fix": "rtpmidi_start"
},
{
"type": "mdns",
"instance": "NA Tracks",
"name": "TRACKS MIDI"
},
{
"type": "midi_rx",
"source": "Network NA Ingest Listen",
"name": "TRACKS IN"
}
]
},
{
"id": "spotify",
"label": "SPOTIFY",
"hold_always": "spotify_play",
"checks": [
{
"type": "spotify",
"fix": "spotify_play"
}
]
},
{
"id": "ready",
"label": "READY",
"pos": [
2,
7
],
"kind": "ready"
},
{
"id": "vista",
"label": "VISTA",
"pos": [
2,
5
],
"checks": [
{
"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",
"ignore_warning": true
},
{
"type": "remote",
"host": "prop",
"cmd": "pgrep -xq ProPresenter",
"msg": "PROPRES NOT RUNNING",
"fix": "propresenter",
"template": "mac_program",
"params": {
"host": "prop",
"process": "ProPresenter"
}
},
{
"type": "conn",
"conn": "ableton",
"tag": "ABLETON"
},
{
"type": "remote",
"host": "tracks",
"cmd": "pgrep -xq Live",
"msg": "ABLETON NOT RUNNING",
"fix": "ableton",
"template": "mac_program",
"params": {
"host": "tracks",
"process": "Live"
}
},
{
"type": "remote",
"host": "translation",
"cmd": "pgrep -xq 'Church Translate'",
"msg": "TRANSLATE NOT RUNNING",
"fix": "translate",
"template": "mac_program",
"params": {
"host": "translation",
"process": "Church Translate"
}
},
{
"type": "ping",
"host": "10.1.3.227",
"name": "TRACKS MAC"
},
{
"type": "http",
"url": "http://10.1.14.225:1025/",
"msg": "PROP TV DOWN",
"interval_seconds": 5,
"fix": "propresenter"
},
{
"type": "http",
"url": "http://10.6.7.13:8080/",
"msg": "BIBLE APP DOWN",
"interval_seconds": 5,
"fix": "bibleapp"
},
{
"type": "conn",
"conn": "BibleTV",
"tag": "BIBLE OSC"
},
{
"type": "remote",
"host": "studiob",
"cmd": "! grep -q '\"bad\":true' \"$HOME/Library/Application Support/status-panel/solo-mode.json\"",
"msg": "PT SOLO NOT AFL",
"fix": "solo_afl",
"template": "helper_flag",
"params": {
"host": "studiob"
}
},
{
"type": "remote",
"host": "studiob",
"cmd": "f=\"$HOME/Library/Application Support/status-panel/solo-mode.json\"; [ $(( $(date +%s) - $(stat -f %m \"$f\") )) -lt 20 ] && grep -q '\"trusted\":true' \"$f\"",
"msg": "PT SOLO CHECK OFF",
"template": "helper_fresh",
"params": {
"host": "studiob"
}
}
]
},
{
"id": "service",
"label": "ALARMS",
"pos": [
3,
0
],
"kind": "service"
},
{
"id": "atem",
"label": "ATEM",
"pos": [
3,
1
],
"checks": [
{
"type": "conn",
"conn": "ATEM"
},
{
"type": "atem",
"part": "audio",
"msg": "ATEM AUDIO WRONG",
"fix": "atem_audio"
},
{
"type": "atem",
"part": "camera",
"msg": "ATEM CAMERA WRONG",
"fix": "atem_camera"
},
{
"type": "pref",
"domain": "com.blackmagic-design.ATEM Software Control",
"key": "midiEnabled",
"want": "0",
"msg": "ATEM SW MIDI ON",
"fix": "atem_midi"
}
]
},
{
"id": "obs",
"label": "OBS",
"pos": [
3,
2
],
"checks": [
{
"type": "conn",
"conn": "OBS-Youtube",
"service_only": true,
"fix": "obs"
}
]
},
{
"id": "resi",
"label": "RESI",
"pos": [
3,
3
],
"checks": [
{
"type": "conn",
"conn": "RESI_Decoder",
"tag": "DECODER"
},
{
"type": "ping",
"host": "10.1.10.203",
"name": "DECODER"
},
{
"type": "ping",
"host": "10.1.10.202",
"name": "ENCODER"
},
{
"type": "http",
"url": "http://10.1.10.202/",
"msg": "ENCODER WEB DOWN",
"interval_seconds": 10
},
{
"type": "conn",
"conn": "resi-studio-cues"
},
{
"type": "http",
"url": "https://central.resi.io/",
"name": "CLOUD"
}
]
},
{
"id": "net",
"label": "NET",
"pos": [
3,
4
],
"kind": "network"
},
{
"id": "ingest",
"label": "INGEST",
"pos": [
3,
5
],
"checks": [
{
"type": "launchd",
"label": "org.waterschurch.resi-propresenter",
"name": "BRIDGE",
"fix": "bridge"
},
{
"type": "launchd",
"label": "org.waterschurch.lobby-captions",
"name": "CAPTIONS",
"fix": "captions"
},
{
"type": "launchd",
"label": "org.waterschurch.lobby-captions-display",
"name": "CAPTION SCREEN",
"fix": "caption_screen"
},
{
"type": "http",
"url": "http://127.0.0.1:24480/api/v1/ping",
"msg": "PRODCOM DOWN",
"interval_seconds": 5,
"fix": "prodcom"
},
{
"type": "process",
"match": "/Applications/ProdDash.app/Contents/MacOS/ProdDash",
"name": "PRODDASH",
"fix": "proddash"
},
{
"type": "http",
"url": "http://127.0.0.1:24500/",
"msg": "PRODDASH DOWN",
"interval_seconds": 10,
"fix": "proddash"
},
{
"type": "disk",
"path": "/",
"warn_gb": 25,
"err_gb": 8
}
]
},
{
"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",
"fix": "arena"
}
]
},
{
"id": "axient1",
"label": "AXIENT 1",
"checks": [
{
"type": "shure",
"conn": "Axient_1",
"channels": 4
},
{
"type": "ping",
"conn": "Axient_1",
"host": "10.1.1.101",
"name": "AXIENT 1"
}
]
},
{
"id": "axient2",
"label": "AXIENT 2",
"checks": [
{
"type": "shure",
"conn": "Axient_2",
"channels": 4
},
{
"type": "ping",
"conn": "Axient_2",
"host": "10.1.1.102",
"name": "AXIENT 2"
}
]
},
{
"id": "ulxd",
"label": "ULXD",
"checks": [
{
"type": "shure",
"conn": "ULXD-4",
"channels": 1
},
{
"type": "ping",
"conn": "ULXD-4",
"host": "10.1.1.106",
"name": "ULXD"
}
]
},
{
"id": "psm1",
"label": "PSM 1",
"checks": [
{
"type": "psm",
"conn": "PSM_1",
"channels": 2
},
{
"type": "ping",
"conn": "PSM_1",
"host": "10.1.1.103",
"name": "PSM 1"
}
]
},
{
"id": "psm2",
"label": "PSM 2",
"checks": [
{
"type": "psm",
"conn": "PSM_2",
"channels": 2
},
{
"type": "ping",
"conn": "PSM_2",
"host": "10.1.1.104",
"name": "PSM 2"
}
]
},
{
"id": "psm3",
"label": "PSM 3",
"checks": [
{
"type": "psm",
"conn": "PSM_3",
"channels": 2
},
{
"type": "ping",
"conn": "PSM_3",
"host": "10.1.1.105",
"name": "PSM 3"
}
]
}
]
}