Thank you for replying -- I think I understand how to interact with the INDI server a little better now. I think the problem is finding the correct properties to set. I have modified one of the example programs to simplify it, mainly taking only one exposure and setting the CCD to my camera model . An odd thing I noticed was that I have to set the camera to bulb mode (not manual) to expose the CCD_EXPOSURE property. I've tried setting it to different values, but nothing seems to work. Do you know what could be going wrong in the script below that is just trying to connect to a simple camera and take a picture?

import PyIndi
import time
import sys

class IndiClient(PyIndi.BaseClient):
def __init__(self):
super(IndiClient, self).__init__()
def newDevice(self, d):
pass
def newProperty(self, p):
pass
def removeProperty(self, p):
pass
def newBLOB(self, bp):
global blobEvent
print("new BLOB ", bp.name)
blobEvent.set()
pass
def newSwitch(self, svp):
pass
def newNumber(self, nvp):
pass
def newText(self, tvp):
pass
def newLight(self, lvp):
pass
def newMessage(self, d, m):
pass
def serverConnected(self):
pass
def serverDisconnected(self, code):
pass

# connect the server
indiclient=IndiClient()
indiclient.setServer("localhost",7624)
indiclient.connectServer()

# Let's take some pictures
ccd="Canon DSLR EOS 5D Mark III"
device_ccd=indiclient.getDevice(ccd)
while not(device_ccd):
print('attempting to get the canon device from the indi server')
time.sleep(0.5)
device_ccd=indiclient.getDevice(ccd)

ccd_connect=device_ccd.getSwitch("CONNECTION")
while not(ccd_connect):
time.sleep(0.5)
ccd_connect=device_ccd.getSwitch("CONNECTION")

if not(device_ccd.isConnected()):
ccd_connect[0].s=PyIndi.ISS_ON # the "CONNECT" switch
ccd_connect[1].s=PyIndi.ISS_OFF # the "DISCONNECT" switch
indiclient.sendNewSwitch(ccd_connect)

ccd_exposure=device_ccd.getNumber("CCD_EXPOSURE")
while not(ccd_exposure):
time.sleep(0.5)
ccd_exposure=device_ccd.getNumber("CCD_EXPOSURE")

# we should inform the indi server that we want to receive the
# "CCD1" blob from this device
indiclient.setBLOBMode(PyIndi.B_ALSO, ccd, "CCD1")

ccd_ccd1=device_ccd.getBLOB("CCD1")
while not(ccd_ccd1):
time.sleep(0.5)
ccd_ccd1=device_ccd.getBLOB("CCD1")

ccd_exposure[0].value = 10.0
indiclient.sendNewNumber(ccd_exposure)

# and meanwhile process the received one
for blob in ccd_ccd1:
print("name: ", blob.name," size: ", blob.size," format: ", blob.format)
# pyindi-client adds a getblobdata() method to IBLOB item
# for accessing the contents of the blob, which is a bytearray in Python
fits=blob.getblobdata()
print("fits data type: ", type(fits))

Read More...