_images/alpaca128.png

Alpyca Device Quick Start

Running the Sample with the Conformance Checker

Here’s how to get this sample running on your development system. We recommended you use Visual Studio Code for Python development but it’s cerainly not a requirement.

  1. Clone the AlpycaDevice repository from GitHub

  2. The device folder has all of the driver app files, app.py is the startup

  3. Look at config.toml and if port 5555 is ok, you can leave everything else for now.

  4. Recommend you create (and activate) a separate Python virtual environment. You do not need Conda or any fancy virtual environment tools, just use an venv type.

  5. Use pip to install falcon and toml. These are the only two packages needed by the driver sample.

  6. Start the sample/template from the device folder python app.py. It will not write to the shell/stdout. See the rotator.log file created in the root folder.

  7. Start ConformU and click Select Device. The sample should be discovered. If your dev system is on multiple IP addresses, you’ll see it listed multiple times. Pick any one.

  8. Click Start and watch it exercise the sample device. After a while it should complete successfully.

Have a look through the code, step through it with the debugger, etc. If you need more context have a look through the Introduction to Alpaca Drivers. Also keep in mind that there are many resources at Alpaca Developers Info and the ASCOM Driver and Application Development Support Forum

Creating Your First Driver

OK, you have run the Rotator sample and maybe caught it in various places with the debugger and maybe you’ve looked at the Introduction to Alpaca Drivers and/or the Developer Roadmap. Or not. Here’s how to get started implementing your driver. Let’s say you want to make a roll-off roof driver.

  1. The essential modules are all in the device folder. Make a copy outside the cloned GitHub tree. This will serve as your driver project root.

  2. Remove the rotator.py module from your driver project folder.

  3. Copy the dome.py module from the templates folder into your project folder. Note that a roll-off roof is a type of dome in ASCOM (norotating part, only open-close).

  4. Open the dome.py module.

  5. Find the DomeMetadata class and edit it to reflect your dome’s descriptive metadata. The ## delimited sections elsewhere indicate things you need to supply in the dome.py module to make it your own.

  6. Open your project’s app.py module.

  7. Remove this line

    import rotator

    replace with

    import dome

  8. Remove the following lines

    rotator.logger = logger                 # Hook the master logger rotator.start_rot_device(logger)        # Start the physical device

    replace with

    dome.logger = logger

  9. Remove the following line

    init_routes(falc_app, 'rotator', rotator)

    replace with

    init_routes(falc_app, 'dome', dome)

  10. Optional: In your project’s log.py module replace alpyca.log with dome.log. The original name is generic because this server can support multiple device types.

  11. Open your project’s management.py module

  12. Remove this line

    from rotator import RotatorMetadata

    replace with

    from dome import DomeMetadata

  13. Find class configureddevices and change the references RotatorMetadata to DomeMetadata.

  14. OK, that’s all there is to assemble the pieces. If you were to go back to dome.py and replace the ## stuff with calls to your device code or just stub it out so the app would run, you would have a driver that would be discoverable and the endpoint responders would be called when any app talks to your device.