Load Your First Config¶
A "config" in BEC usually refers to a device configuration, which specifies all the devices with which BEC can communicate and use in scans.
Goal
In this tutorial you will load the demo device configuration and use it to explore the first devices in your BEC
session. By the end, you will have a live dev namespace with simulated devices and know the two fastest ways to
inspect a device from the shell.
Before you start¶
Continue with the same BEC session you opened in 01 Open BEC.
1. Load the demo configuration¶
We will load a config with simulated devices, including motors and detectors. This mimics a beamline environment for learning and testing.
Load that demo configuration now:
bec.config.load_demo_config()
A recovery config was written to ...
2. Check the available devices¶
Inspect the devices currently available in the session:
dev.show_all()
┏━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓
┃ ┃ ┃ ┃ ┃ ┃ Device ┃ Reado… ┃ Device ┃
┃ Device ┃ Descri… ┃ Status ┃ ReadOn… ┃ Softwa… ┃ class ┃ prior… ┃ tags ┃
┡━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩
│ eiger │ │ enabled │ False │ True │ ophyd_… │ async │ {'dete… │
│ dyn_si… │ │ disabl… │ False │ False │ ophyd_… │ basel… │ set() │
│ pseudo… │ │ disabl… │ False │ False │ ophyd_… │ basel… │ set() │
│ hexapod │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'user │
│ │ │ │ │ │ │ │ motors… │
│ eyefoc │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'user │
│ │ │ │ │ │ │ │ motors… │
│ eyex │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'user │
│ │ │ │ │ │ │ │ motors… │
│ eyey │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'user │
│ │ │ │ │ │ │ │ motors… │
│ flyer_… │ │ disabl… │ False │ False │ ophyd_… │ on_re… │ {'flye… │
│ hrox │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'user │
│ │ │ │ │ │ │ │ motors… │
│ hroy │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'user │
│ │ │ │ │ │ │ │ motors… │
│ hroz │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'user │
│ │ │ │ │ │ │ │ motors… │
│ hx │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'user │
│ │ │ │ │ │ │ │ motors… │
│ hy │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'user │
│ │ │ │ │ │ │ │ motors… │
│ hz │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'user │
│ │ │ │ │ │ │ │ motors… │
│ mbsx │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'user │
│ │ │ │ │ │ │ │ motors… │
│ mbsy │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'user │
│ │ │ │ │ │ │ │ motors… │
│ pinx │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'user │
│ │ │ │ │ │ │ │ motors… │
│ piny │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'user │
│ │ │ │ │ │ │ │ motors… │
│ pinz │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'user │
│ │ │ │ │ │ │ │ motors… │
│ samx │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'user │
│ │ │ │ │ │ │ │ motors… │
│ samy │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'user │
│ │ │ │ │ │ │ │ motors… │
│ samz │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'user │
│ │ │ │ │ │ │ │ motors… │
│ bpm3a │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm3b │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm3c │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm3d │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm3i │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm3x │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm3y │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm3z │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm4a │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm4b │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm4c │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm4d │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm4i │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm4s │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm4x │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm4xf │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm4xm │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm4y │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm4yf │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm4ym │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm4z │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm5a │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm5b │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm5c │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm5d │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm5i │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm5x │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm5y │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm5z │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm6a │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm6b │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm6c │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm6d │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm6i │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm6x │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm6y │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ bpm6z │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ curr │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ diode │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ ebpmdx │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ ebpmdy │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ ebpmux │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ ebpmuy │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ ftp │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ temp │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ transd │ │ enabled │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ aptrx │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ aptry │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ bim2x │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ bim2y │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ bm1trx │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ bm1try │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ bm2trx │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ bm2try │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ bm3trx │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ bm3try │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ bm4trx │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ bm4try │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ bm5trx │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ bm5try │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ bm6trx │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ bm6try │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ bpm4r │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ bpm5r │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ bs1x │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ bs1y │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ bs2x │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ bs2y │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ burstn │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ burstr │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ ddg1a │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ ddg1b │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ ddg1c │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ ddg1d │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ ddg1e │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ ddg1f │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ ddg1g │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ ddg1h │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ dettrx │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ di2trx │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ di2try │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ dtpush │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ dtth │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ dttrx │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ dttry │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ dttrz │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ ebcsx │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ ebcsy │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ ebfi1 │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ ebfi2 │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ ebfi3 │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ ebfi4 │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ ebfzpx │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ ebfzpy │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ ebtrx │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ ebtry │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ ebtrz │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ fi1try │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ fi2try │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ fi3try │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ fsh1x │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ fsh2x │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ ftrans │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ fttrx1 │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ fttrx2 │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ fttry1 │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ fttry2 │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ fttrz │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ idgap │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ mibd │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ mibd1 │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ mibd2 │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ miroll │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ mith │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ mitrx │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ mitry │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ mitry1 │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ mitry2 │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ mitry3 │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ mobd │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ mobdai │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ mobdbo │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ mobdco │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ mobddi │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ mokev │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ mopush1 │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ mopush2 │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ moroll1 │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ moroll2 │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ moth1 │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ moth1e │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ moth2 │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ moth2e │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ motrx2 │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ motry │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ motry2 │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ motrz1 │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ motrz1e │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ moyaw2 │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl0ch │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl0trxi │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl0trxo │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl0wh │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl1ch │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl1cv │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl1trxi │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl1trxo │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl1tryb │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl1tryt │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl1wh │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl1wv │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl2ch │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl2cv │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl2trxi │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl2trxo │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl2tryb │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl2tryt │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl2wh │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl2wv │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl3ch │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl3cv │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl3trxi │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl3trxo │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl3tryb │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl3tryt │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl3wh │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl3wv │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl4ch │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl4cv │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl4trxi │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl4trxo │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl4tryb │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl4tryt │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl4wh │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl4wv │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl5ch │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl5cv │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl5trxi │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl5trxo │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl5tryb │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl5tryt │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl5wh │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sl5wv │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ strox │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ stroy │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ stroz │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sttrx │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ sttry │ │ enabled │ False │ False │ ophyd_… │ basel… │ {'beam… │
│ ring_c… │ │ disabl… │ False │ False │ ophyd_… │ monit… │ {'beam… │
│ monito… │ │ disabl… │ False │ True │ ophyd_… │ async │ {'beam… │
│ rt_con… │ │ disabl… │ False │ False │ ophyd_… │ basel… │ {'test │
│ │ │ │ │ │ │ │ device… │
│ │ │ │ │ │ │ │ 'user │
│ │ │ │ │ │ │ │ motors… │
│ wavefo… │ │ disabl… │ False │ True │ ophyd_… │ async │ {'dete… │
└─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴────────┴─────────┘
The output is a table of the devices currently available in your session, including whether they are enabled and how BEC classifies them. In the demo configuration.

Tab completion
BEC provides tab completion throughout the shell. Try dev. and press Tab to discover available devices and attributes, or scans. to explore the scan interface.

3. Inspect one device¶
Start with one of the simulated motors:
dev.samx
SimPositioner: samx
Enabled True
Description
Read only False
Software Trigger False
Device class ophyd_devices.SimPositioner
Readout Priority baseline
Device tags user motors
Limits [-50, 50]
Current Values
Signal Value Timestamp
samx 9.99789260545663 2026-04-01 14:43:52
samx_setpoint 10.0 2026-04-01 14:43:52
samx_motor_is_moving 0 2026-04-01 14:43:52
Config Signals
Signal Value
tolerance 0.01
This prints a device overview with the most important metadata, current values, and config signals. Use this overview when you want to understand what a device is, whether it is enabled, what limits it has, and so on.
4. Inspect the live values directly¶
dev.samx.read()
{'samx': {'value': 0, 'timestamp': 1774874622.037339},
'samx_setpoint': {'value': 0, 'timestamp': 1774873374.7518551},
'samx_motor_is_moving': {'value': 0, 'timestamp': 1774873374.751864}}
.read() returns the current state of the device and is the quickest way to inspect it from the shell.
Use wm for one or more devices
The wm command is convenient when you want a compact position overview. You can use it for a single device such as
dev.samx.wm or for multiple devices at once, for example dev.wm(dev.samx, dev.samy). You can also use wildcard expressions, such as dev.wm("sam*") to show all devices whose name starts with "sam". Find out more about wm by calling dev.wm? in the shell.
What you have learned
You loaded the demo configuration, saw that BEC includes a simulated beamline for training and development, inspected
the available devices, and learned the two most useful shell entry points for a first inspection: dev.____ for the
device overview and dev.____.read() for live values. In the next step you will start moving a device and learn the
difference between blocking and non-blocking motion commands.
Next step¶
Continue with 03 Move a device, where you will use the newly loaded motors for your first controlled move.