settings/builders.py renders a fix's command from a builder (template) and its fields; validate refuses a config whose stored command no longer equals what its fields build; the Fixes screen and the remote checks in the key editor rebuild through /api/build and /api/build-check. config.json adopts templates for all 27 fixes and 5 remote checks (ProPresenter's restart loop and Ableton's quoting normalised, same behaviour); tests/test_builders.py (174 tests pass). Deployed to NA Ingest. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
1749 lines
44 KiB
JSON
1749 lines
44 KiB
JSON
{
|
|
"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": "stingo serried warp"
|
|
},
|
|
"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
|
|
}
|
|
],
|
|
"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": {}
|
|
}
|
|
},
|
|
"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"
|
|
},
|
|
"auto_fix": {
|
|
"windows": [
|
|
{
|
|
"days": [
|
|
"sun"
|
|
],
|
|
"start": "06:30",
|
|
"end": "13: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"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"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"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"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",
|
|
"pos": [
|
|
2,
|
|
7
|
|
],
|
|
"hold_always": "spotify_play",
|
|
"checks": [
|
|
{
|
|
"type": "spotify",
|
|
"fix": "spotify_play"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"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"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|