Files
status-indicators/config.json
T

593 lines
32 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": "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": {
2026-10-08 11:41:44 -04:00
"propresenter": { "host": "prop", "short": "PROPRES", "label": "restart ProPresenter (newest installed)",
"run": "APP=$(ls -d /Applications/ProPresenter*.app | sort -V | tail -1); if pgrep -xq ProPresenter; then pkill -TERM -x ProPresenter; for i in 1 2 3 4 5 6 7 8 9 10; do pgrep -xq ProPresenter || break; sleep 1; done; pkill -KILL -x ProPresenter; sleep 1; fi; open \"$APP\"" },
"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; }" },
2026-10-08 11:41:44 -04:00
"translate": { "host": "translation", "short": "TRANSLATE", "label": "start Church Translate if it is not running",
"run": "pgrep -xq 'Church Translate' || open -a 'Church Translate'" },
"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'" },
"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'" },
"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'" },
"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" },
2026-10-08 11:41:44 -04:00
"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" },
"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" },
"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" },
"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)" },
"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)" },
"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)" },
"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\")" },
"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\"" },
"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" },
"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\"" },
"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)" },
"atem_camera": { "kind": "atem", "part": "camera", "short": "ATEM CAMERA", "label": "set the cameras' settings back to the restore file (only what differs)" },
"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 ]" },
"spotify_play": { "kind": "spotify", "short": "SPOTIFY", "label": "play the Christian EDM 2026 playlist in Spotify on NA Ingest (opens Spotify if it is closed)" },
"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" },
"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" },
"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" },
"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'" },
"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" },
"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" }
},
"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" },
{ "type": "conn", "conn": "ableton", "tag": "ABLETON" },
{ "type": "remote", "host": "tracks", "cmd": "pgrep -xq Live", "msg": "ABLETON NOT RUNNING", "fix": "ableton" },
{ "type": "remote", "host": "translation", "cmd": "pgrep -xq 'Church Translate'", "msg": "TRANSLATE NOT RUNNING", "fix": "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" },
{ "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" }
] },
{ "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" }] }
]
}