Example: display plan, det1, det2, motor1

#!/usr/bin/env python3

from ophyd import Signal, Device, Component as Cpt

from ophyd import DeviceStatus
import threading
import numpy
from bluesky import RunEngine
from bluesky.callbacks import CallbackBase
from pprint import pprint
from ophyd.sim import motor1
from ophyd.sim import det1, det2, det3, det4  
from bluesky.plans import scan

class MyCallback(CallbackBase):
    def start(self, doc):
        print("\n\nI got a new 'start' Document")
        pprint(doc)
    def descriptor(self, doc):
        print("I got a new 'descriptor' Document")
        pprint(doc)

    def event(self, doc):
        print("I got a new 'event' Document")
        pprint(doc)

    def stop(self, doc):
        print("I got a new 'stop' Document")
        pprint(doc)

       
def main(): 

    RE = RunEngine()
    
    RE.subscribe(MyCallback())

    dets = [det1, det2]

    plan = scan( dets, motor1, -1, 1, 10)

    for message in plan:
        print(message)
    
    RE( scan( dets, motor1, -1, 1, 3))
    
    return

if __name__ == "__main__":
    main()

$ python3 displayPlan.py 

Msg('stage', obj=SynGauss(prefix=”, name='det1', read_attrs=['val'], configuration_attrs=['Imax', 'center', 'sigma', 'noise', 'noise_multiplier']), args=(), kwargs={}, run=None)

Msg('stage', obj=SynGauss(prefix=”, name='det2', read_attrs=['val'], configuration_attrs=['Imax', 'center', 'sigma', 'noise', 'noise_multiplier']), args=(), kwargs={}, run=None)

...