Bi-monthly release with minor bug fixes and improvements
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
$ pip3 install --user pyephem
# --- Settings ---
# Change following parameters according to your need
# Geographic location
latitude = '43:43:47.0'
longitude = '6:54:00.0'
# Satellite TLE (can be retreived on https://www.space-track.org)
TLE_line_1 = '1 25078U 97077B 16358.24735839 .00000123 00000-0 34052-4 0 9990'
TLE_line_2 = '2 25078 86.3977 85.5078 0003714 108.4484 251.7118 14.38084761998341'
# INDI settings
host = 'localhost'
port = 7624
driver_name ="Telescope Simulator"
# Script settings
update_delay = 1 # delay in s between updates
# --- Code ---
import PyIndi
import time
import sys
import threading
import ephem
from math import pi
# default client
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):
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
print("Connection to " + host + ":" + str(port) + " ... ", end='')
indiclient=IndiClient()
indiclient.setServer(host,port)
if (not(indiclient.connectServer())):
print("FAILED")
print("No indiserver running on "+indiclient.getHost()+":"+str(indiclient.getPort()))
sys.exit(1)
print("OK")
# get the telescope device
print("Get driver '"+ driver_name + "' ... ", end='')
device_telescope=None
telescope_connect=None
device_telescope=indiclient.getDevice(driver_name)
while not(device_telescope):
time.sleep(0.5)
device_telescope=indiclient.getDevice(driver_name)
print("OK")
# wait CONNECTION property be defined for telescope
print("Wait CONNECTION property be defined ... ", end='')
telescope_connect=device_telescope.getSwitch("CONNECTION")
while not(telescope_connect):
time.sleep(0.5)
telescope_connect=device_telescope.getSwitch("CONNECTION")
print("OK")
# if the telescope device is not connected, we do connect it
if not(device_telescope.isConnected()):
print("Driver not connected, try to connect it ... ", end='')
# Property vectors are mapped to iterable Python objects
# Hence we can access each element of the vector using Python indexing
# each element of the "CONNECTION" vector is a ISwitch
telescope_connect[0].s=PyIndi.ISS_ON # the "CONNECT" switch
telescope_connect[1].s=PyIndi.ISS_OFF # the "DISCONNECT" switch
indiclient.sendNewSwitch(telescope_connect) # send this new value to the device
t=10
while not(device_telescope.isConnected()) and t>0:
time.sleep(1)
t-=1
if not(device_telescope.isConnected()):
print("FAILED")
print("Failed to connect the driver")
sys.exit(1)
print("OK")
# We want to set the ON_COORD_SET switch to engage tracking after goto
# device.getSwitch is a helper to retrieve a property vector
print("Set tracking mode ... ", end='')
telescope_on_coord_set=device_telescope.getSwitch("ON_COORD_SET")
while not(telescope_on_coord_set):
time.sleep(0.5)
telescope_on_coord_set=device_telescope.getSwitch("ON_COORD_SET")
# the order below is defined in the property vector, look at the standard Properties page
# or enumerate them in the Python shell when you're developing your program
telescope_on_coord_set[0].s=PyIndi.ISS_ON # TRACK
telescope_on_coord_set[1].s=PyIndi.ISS_OFF # SLEW
telescope_on_coord_set[2].s=PyIndi.ISS_OFF # SYNC
indiclient.sendNewSwitch(telescope_on_coord_set)
telescope_radec=device_telescope.getNumber("EQUATORIAL_EOD_COORD")
while not(telescope_radec):
time.sleep(0.5)
telescope_radec=device_telescope.getNumber("EQUATORIAL_EOD_COORD")
print("OK")
# Configure PyEphem
print("Configure PyEphem ... ", end='')
obs = ephem.Observer()
obs.lon = longitude
obs.lat = latitude
satellite = ephem.readtle('TARGET',TLE_line_1,TLE_line_2)
print("OK")
while 1:
# compute satellite coordinates
obs.date = ephem.now()
satellite.compute(obs)
print(obs.date)
print(" RA: ",satellite.ra)
print(" DEC:",satellite.dec)
print(" ALT:",satellite.alt)
print(" AZ: ",satellite.az)
# We set the desired coordinates
telescope_radec[0].value=ephem.hours(satellite.ra)*24/2/pi
telescope_radec[1].value=ephem.degrees(satellite.dec)*360/2/pi
indiclient.sendNewNumber(telescope_radec)
time.sleep(update_delay)
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.