# ophyd-tango-demo

## Getting started / preparation of the environment

Starting point of what is described is an empty mamba/conda environment

- prepare the mamba/conda env
```
mamba install --file requirements.txt -c conda-forge
```

- fetch the git submodule `ophyd-async` https://github.com/desy-fsec/ophyd-async.git 
- install ophyd+bluesky

```
cd ophyd-async/
git submodule init
git submodule update
pip install -e .
cd ..
```

- run `docker-compose` to start the tango db and device servers

```
docker-compose up -d
```

## run the first demo script

based on `ophyd-async/docs/user/examples/tango_scan.py`. a modified version 
of this file is in the root of this repo that uses the tango path available in 
the docker container.

```
TANGO_HOST=localhost:10000 python tango_scan.py
```

Note 1: make sure that the environment variable `TANGO_HOST` is set so that the python process can connect to the tango db inside the docker container
Note 2: it may take a few seconds before the scan starts. ... for the first scan it may even take almost a minute before the scan actually runs.

## Resources
- the forked ophyd-async repo with tango support: https://github.com/desy-fsec/ophyd-async.git 
- docker container + docker compose to run a tango DB + servers (preconfigured like at DESY): 
  https://gitlab.desy.de/marcus.fleck/fsecservers-in-default-tango-cs-docker



## to inspect Tango 
  in order to inspect the tango DB the most common tool to use would be `jive`. If conda is at hand, it 
  can e.g. installed using the conda env file provided in `tango_tool_env/tango_tools.yml` with 
  ```
  conda env create -n tango_tools --file tango_tool_env/tango_tools.yml
  conda activate tango_tools
  TANGO_HOST=localhost:10000 jive
  ```