# Guide: Configuring uopi for ITER CS-Studio This guide explains how to configure **uopi** to work within the **ITER CODAC (Control System Studio / Phoebus)** environment. Since uopi is a single portable binary, it can be deployed alongside or as a lightweight web-based alternative to standard CS-Studio screens. --- ## 1. Prerequisite Information To connect uopi to the ITER control system, you need three pieces of information usually found in your standard CODAC environment or terminal: | Info Needed | Purpose | Where to find it in ITER | | :--- | :--- | :--- | | **CA Addr List** | PV Discovery via UDP | Run `echo $EPICS_CA_ADDR_LIST` in a terminal. | | **Archiver URL** | Historical Trends | Check your CS-Studio preferences under *Archive Appliance* (usually `http://arch-mgmt:17665/`). | | **CFS URL** | Automatic PV Search | Check CS-Studio preferences under *Channel Finder* (usually `http://cf-service:8080/ChannelFinder`). | --- ## 2. Configuration (`uopi.toml`) Create a file named `uopi.toml` in the directory where you will run uopi. Use the values found above: ```toml [server] listen = ":8080" # The port uopi will serve the web HMI on storage_dir = "./interfaces" # Where your XML screens will be saved [datasource.epics] enabled = true # Paste the output of 'echo $EPICS_CA_ADDR_LIST' here ca_addr_list = "10.0.x.x 10.0.x.255" # ITER Archive Appliance URL archive_url = "http://arch-mgmt:17665/" # ITER Channel Finder URL channel_finder_url = "http://cf-service:8080/ChannelFinder" # Automatic discovery on startup auto_sync_from_archiver = true auto_sync_filter = "tags=production" ``` --- ## 3. Deployment in the ITER Environment ### A. Running via Terminal If you are on a CODAC workstation or a server with network access to the Plant System: 1. Copy the `uopi` binary to the machine. 2. Run it pointing to your config: ```bash ./uopi -config uopi.toml ``` 3. Open a browser and navigate to `http://:8080`. ### B. Offline Usage (No Internet) uopi is built with **zero external dependencies**. All scripts and the favicon are embedded. No `npm` or `curl` calls are made at runtime. It will function perfectly on isolated ITER networks. --- ## 4. Discovering ITER PVs Once uopi is running: 1. **Automatic Discovery:** If `auto_sync_from_archiver` is set to `true`, the sidebar will be pre-populated with thousands of ITER PVs on boot. 2. **Smart Grouping:** Click the **"Group By"** dropdown in the sidebar. Select **"Area"** or **"System"**. uopi will use the metadata from the ITER Channel Finder to organize PVs into folders (e.g., `Vacuum`, `Cryogenics`, `PowerSupply`). 3. **Advanced Search:** * Click the **🔍 (Advanced Search)** icon in the sidebar. * Use the **Channel Finder** tab to find signals by tags (e.g., `interlock`) or properties (e.g., `iocName`). * Use the **Archive Appliance** tab to perform a glob search (e.g., `*TEMP*`) directly against the ITER Archiver database. --- ## 5. Transitioning from CS-Studio (`.bob` / `.opi`) uopi uses a custom XML format for its screens, but the layout logic is similar to Phoebus/CS-Studio. * **Signals:** Just like in CS-Studio, you can drag PVs from the sidebar directly onto the canvas to create widgets. * **Historical Data:** Any PV discovered via the Archiver tab or configured with the Archiver URL will automatically show historical data when added to a **Plot Widget**. * **Synthetic Signals:** You can create complex ITER-specific calculations (e.g., `R = V/I`) by clicking the **Σ** icon and combining multiple EPICS PVs into a single virtual signal. --- ## 6. Troubleshooting * **Timeout Error:** If `caget` times out in uopi, verify that `ca_addr_list` includes the correct broadcast address for your ITER subnet (e.g., ends in `.255`). * **Metadata Missing:** If PVs show up but have no units/descriptions, ensure the `channel_finder_url` is reachable from the uopi binary.