Use the scripts in scripts/ to control Control4 locally.
scripts/control4_cli.py — low-level Control4 commands (discover/list/light/relay/room/media + generic method calls)scripts/nl_control4.py — natural language command wrapper (lights, relays, room media, mute/unmute, volume)scripts/device_map.example.json — alias template for mapping names to Control4 IDsCreate a Python venv (example):
python3 -m venv .venv-control4Install dependency:
.venv-control4/bin/pip install pyControl4Create scripts/.env (or export env vars) with:
CONTROL4_USERNAMECONTROL4_PASSWORDCONTROL4_CONTROLLER_IPCONTROL4_CONTROLLER_NAME (optional if only one)Copy and customize alias map:
cp scripts/device_map.example.json scripts/device_map.json.venv-control4/bin/python scripts/control4_cli.py discover.venv-control4/bin/python scripts/control4_cli.py list-items --compact.venv-control4/bin/python scripts/control4_cli.py light-set --id 229 --level 40.venv-control4/bin/python scripts/control4_cli.py relay-toggle --id 571.venv-control4/bin/python scripts/nl_control4.py "turn kitchen lights off".venv-control4/bin/python scripts/nl_control4.py "watch apple tv in master bedroom".venv-control4/bin/python scripts/nl_control4.py "mute master bedroom".venv-control4/bin/python scripts/control4_cli.py methods --entity room --id 45.venv-control4/bin/python scripts/control4_cli.py call --entity climate --id 752 --method getCurrentTemperatureC.venv-control4/bin/python scripts/control4_cli.py call --entity light --id 229 --method rampToLevel --args-json "[25,1000]".venv-control4/bin/python scripts/control4_cli.py call --entity security-panel --id <id> --method setArm --allow-sensitive