×

INDI Library v2.0.7 is Released (01 Apr 2024)

Bi-monthly release with minor bug fixes and improvements

PyINDI Sequencing Question

  • Posts: 1
  • Thank you received: 0
Hi All,
I’ve been researching and playing with Kstars/Ekos a little bit with my Raspberry Pi and having some success. I have a current imaging solution using an old copy of Maxim DL5 that a friend gave me some time ago, but I'm looking to try something new. I want to start building a small array a la Dragonfly. I'm planning on using a Pi for each imaging camera and controlling each of them by way of Fabric. I currently have two cameras: an SBIG STF-8300C and an ST-8300M that will both be paired with an Orion ED80T CF and hopefully expanded if I can get this to work. I recently came across PyINDI and after a little bit of playing around with it, I’ve been able to figure out to take exposures via IndiClient Python script. To test that the concept will work, I connect each camera to a Pi and each Pi connects to a switch. I have a python script using Fabric that uses each Pi’s IP address to send the same command to each in parallel. I open two terminals and use one to send the INDI server connect command to get them up and running and then use the other terminal to get down to business. I have a script that when run, uploads the exposure instructions and then another script runs the uploaded code to make the cameras take an exposure. When I give the go-ahead, they each begin an exposure simultaneously.

Wanting to be able to set up sequences, I found the sequence article here on indilib.org/develop/tutorials/172-pyindi-sequence.html. I installed all of the sources per the article, I’m trying to run the provided simple.py script shown below with the system path updated accordingly.
import sys
import os
sys.path.append(os.path.join(os.environ['HOME'], 'indi-lite-tools')) # Change this to the module installation path
 
from pyindi_sequence import SequenceBuilder
 
sb = SequenceBuilder('M42', camera_name='CCD Simulator', upload_path = '/tmp/M42')
 
def camera_settings():
    sb.camera.set_switch('CCD_COMPRESSION', ['CCD_RAW'])
 
sb.add_message_step('Adjusting camera settings')
sb.add_function(camera_settings)
sb.add_user_confirmation_prompt('Press Enter to start Shooting')
sb.add_sequence('RGB', exposure=3, count=2)
sb.add_user_confirmation_prompt('Please cover your camera lens for Dark Frames. Press Enter to continue')
sb.add_auto_dark()
 
print(sb)
sb.start()

The issue I'm finding is that it always crashes after trying to call interface.acquire() on line 105 of device.py as shown below.
pi@raspberrypi:~ $ python3 simple.py
Traceback (most recent call last):
  File "/home/pi/indi-lite-tools/pyindi_sequence/indiclient.py", line 41, in newDevice
    device = Device(d.getDeviceName(), self)
  File "/home/pi/indi-lite-tools/pyindi_sequence/device.py", line 18, in __init__
    self.interfaces = Device.find_interfaces(self.device)
  File "/home/pi/indi-lite-tools/pyindi_sequence/device.py", line 105, in find_interfaces
    interface.acquire()
AttributeError: 'int' object has no attribute 'acquire'


I can’t find an acquire method, let alone an interface class, in any of the code that came from the source, which explains why it fails at that point, and I’m really not sure what to do. Has anyone been able to use the PyINDI script from this page that might be able to help me figure out how to correct this? Is there something I'm missing to get this working? I tried sending an email to the author on his Github page but I haven’t heard back after a couple of weeks.

Thanks for your time!
4 years 3 months ago #48031

Please Log in or Create an account to join the conversation.

Time to create page: 0.272 seconds