G: Programando clientes INDI
¶
En este notebook
hacemos una introducción simple y burda a como podemos controlar dispositivos astronómicos con INDI
. Para ello vamos a bajar bastante de nivel: abriremos un socket
hacia nuestro servidor INDI
e iremos leyendo / mandando los mensajes de XML que hacen falta para hacerlo funcionar. Algunos enlaces que pueden resultar de interés para seguir mejor estos ejemplos:
Instalación de ``INDI` <https://indilib.org/get-indi.html>`__
`INDI
whitepaper <http://www.clearskyinstitute.com/INDI/INDI.pdf>`__
También te puede interesar ver esta esta introducción a INDI (PDF)
Primer ejemplo: controlando un enfocador simulado¶
Partimos de la base de que hemos instalado la biblioteca INDI
y vamos a ejecutar el servidor de INDI
con un único dispositivo: indi_simulator_focus
(un simulador de enfocador. Como es un simulador no necesitamos hardware ninguno para ejecutar el ejemplo. Podemos abrir un cliente habitual de INDI
(como el que está integrado en KStars
para ir comprobando que los cambios que solicitamos al dispositivo efectivamente se llevan a cabo.
> indiserver indi_simulator_focus
Definimos unas cuantas funciones para simplificar el envio de mensajes y su recepción. No es un código muy elegante puesto que la recepción de mensajes debería hacerse en una hebra (hilo) diferente (Threading: programación con hilos (I)), pero esa es otra historia y debe ser contada en otra ocasión.
[ ]:
#nombreEnfocador = "MyFocuserPro2"
nombreEnfocador = "Focuser Simulator"
[1]:
import socket
import time
from datetime import datetime
[2]:
def conectar(host, port):
global s
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Creamos el socket y nos conectamos
s.connect((host, port))
s.settimeout(.01)
def mandar(s, comando): # Manda al socket s un comando
comando = comando.encode("ASCII")
print(comando)
s.sendall(comando)
def recibir(s, wait = 0.1, imprimir=True): # wait es el tiempo que vamos a esperar leyendo mensajes
inicio = datetime.now()
msg = ""
try:
msg = s.recv(500000).decode("UTF-8")
except socket.timeout:
msg = ""
horaActual = datetime.now()
while (horaActual - inicio).total_seconds() < wait: # Espera activa... no es nada elegante :)
try:
msg = msg + s.recv(500000).decode("UTF-8")
except socket.timeout:
# no hacemos nada
msg = msg
horaActual = datetime.now()
time.sleep(0.05)
if imprimir:
print(msg)
return msg
[3]:
s=None # Nuestro socket
host = "127.0.0.1" # Hostname o IP del servidor de INDI
port = 7624 # Puerto por defecto de INDI
conectar(host, port)
A estas alturas nos hemos conectado al servidor INDI
pero no hemos recibido nada. Vamos a pedirle que nos envie toda la información sobre dispositivos y sus propiedades que tenga el servidor:
[4]:
mandar(s, '<getProperties version="2.0" />')
b'<getProperties version="2.0" />'
Y recibimos información a ver que nos dice:
[5]:
recv = recibir(s, 1)
<setSwitchVector device='Mount Simulator' name='CONNECTION' state='Busy'>
<oneSwitch name='CONNECTED'>Off</oneSwitch>
<oneSwitch name='DISCONNECTED'>Off</oneSwitch>
</setSwitchVector>
<delProperty device='Mount Simulator' name='MOUNT_INFO'/>
<delProperty device='Mount Simulator' name='GEOGRAPHIC_COORDINATES'/>
<delProperty device='Mount Simulator' name='MOUNT_LST_TIME'/>
<delProperty device='Mount Simulator' name='MOUNT_PARK'/>
<delProperty device='Mount Simulator' name='MOUNT_PARK_SET'/>
<delProperty device='Mount Simulator' name='MOUNT_PARK_POSITION'/>
<delProperty device='Mount Simulator' name='MOUNT_HOME'/>
<delProperty device='Mount Simulator' name='MOUNT_HOME_SET'/>
<delProperty device='Mount Simulator' name='MOUNT_HOME_POSITION'/>
<delProperty device='Mount Simulator' name='MOUNT_SLEW_RATE'/>
<delProperty device='Mount Simulator' name='MOUNT_MOTION_DEC'/>
<delProperty device='Mount Simulator' name='MOUNT_MOTION_RA'/>
<delProperty device='Mount Simulator' name='MOUNT_TRACK_RATE'/>
<delProperty device='Mount Simulator' name='MOUNT_TRACKING'/>
<delProperty device='Mount Simulator' name='MOUNT_GUIDE_RATE'/>
<delProperty device='Mount Simulator' name='MOUNT_ON_COORDINATES_SET'/>
<delProperty device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES'/>
<delProperty device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES'/>
<delProperty device='Mount Simulator' name='MOUNT_ABORT_MOTION'/>
<delProperty device='Mount Simulator' name='MOUNT_ALIGNMENT_MODE'/>
<delProperty device='Mount Simulator' name='MOUNT_EPOCH'/>
<delProperty device='Mount Simulator' name='SNOOP_DEVICES'/>
<setSwitchVector device='Mount Simulator' name='CONNECTION' state='Ok'>
<oneSwitch name='CONNECTED'>Off</oneSwitch>
<oneSwitch name='DISCONNECTED'>Off</oneSwitch>
</setSwitchVector>
<setSwitchVector device='Mount Simulator' name='CONNECTION' state='Busy'>
<oneSwitch name='CONNECTED'>On</oneSwitch>
<oneSwitch name='DISCONNECTED'>Off</oneSwitch>
</setSwitchVector>
<defTextVector device='Mount Simulator' name='MOUNT_INFO' group='Mount' label='Info' perm='ro' state='Ok'>
<defText name='VENDOR' label='Vendor'>Unknown</defText>
<defText name='MODEL' label='Model'>Unknown</defText>
<defText name='FIRMWARE_VERSION' label='Firmware'>N/A</defText>
</defTextVector>
<defNumberVector device='Mount Simulator' name='GEOGRAPHIC_COORDINATES' group='Site' label='Location' perm='rw' state='Ok'>
<defNumber name='LATITUDE' label='Latitude (-90 to +90° +N)' format='%12.9m' min='-90' max='90' step='0' target='0'>0</defNumber>
<defNumber name='LONGITUDE' label='Longitude (0 to 360° +E)' format='%12.9m' min='-180' max='360' step='0' target='0'>0</defNumber>
<defNumber name='ELEVATION' label='Elevation (m)' format='%g' min='-400' max='8000' step='0' target='0'>0</defNumber>
</defNumberVector>
<defNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' group='Site' label='LST Time' perm='ro' state='Ok'>
<defNumber name='TIME' label='LST Time' format='%12.9m' min='0' max='24' step='0'>0</defNumber>
</defNumberVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_PARK' group='Mount' label='Park' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='PARKED' label='Mount parked'>On</defSwitch>
<defSwitch name='UNPARKED' label='Mount unparked'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_PARK_SET' group='Mount' label='Set park position' perm='rw' state='Ok' rule='AtMostOne'>
<defSwitch name='CURRENT' label='Set current position'>Off</defSwitch>
<defSwitch name='DEFAULT' label='Set default position'>Off</defSwitch>
</defSwitchVector>
<defNumberVector device='Mount Simulator' name='MOUNT_PARK_POSITION' group='Mount' label='Park position' perm='rw' state='Ok'>
<defNumber name='HA' label='Hour Angle (-12 to 12 hrs)' format='%12.9m' min='-12' max='12' step='0' target='6'>6</defNumber>
<defNumber name='DEC' label='Declination (-90 to 90°)' format='%12.9m' min='-90' max='90' step='0' target='90'>90</defNumber>
</defNumberVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_HOME' group='Mount' label='Home' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='HOME' label='Slew to home position and stop'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_HOME_SET' group='Mount' label='Set home position' perm='rw' state='Ok' rule='AtMostOne'>
<defSwitch name='CURRENT' label='Set current position'>Off</defSwitch>
<defSwitch name='DEFAULT' label='Set default position'>Off</defSwitch>
</defSwitchVector>
<defNumberVector device='Mount Simulator' name='MOUNT_HOME_POSITION' group='Mount' label='Home position' perm='rw' state='Ok'>
<defNumber name='HA' label='Hour Angle (-12 to 12 hrs)' format='%12.9m' min='-12' max='12' step='0' target='6'>6</defNumber>
<defNumber name='DEC' label='Declination (-90 to 90°)' format='%12.9m' min='-90' max='90' step='0' target='90'>90</defNumber>
</defNumberVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_SLEW_RATE' group='Mount' label='Slew rate' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='GUIDE' label='Guide rate'>On</defSwitch>
<defSwitch name='CENTERING' label='Centering rate'>Off</defSwitch>
<defSwitch name='FIND' label='Find rate'>Off</defSwitch>
<defSwitch name='MAX' label='Max rate'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_MOTION_DEC' group='Mount' label='Move N/S' perm='rw' state='Ok' rule='AtMostOne'>
<defSwitch name='NORTH' label='North'>Off</defSwitch>
<defSwitch name='SOUTH' label='South'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_MOTION_RA' group='Mount' label='Move W/E' perm='rw' state='Ok' rule='AtMostOne'>
<defSwitch name='WEST' label='West'>Off</defSwitch>
<defSwitch name='EAST' label='East'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_TRACK_RATE' group='Mount' label='Track rate' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='SIDEREAL' label='Sidereal rate'>On</defSwitch>
<defSwitch name='SOLAR' label='Solar rate'>Off</defSwitch>
<defSwitch name='LUNAR' label='Lunar rate'>Off</defSwitch>
<defSwitch name='KING' label='King rate'>Off</defSwitch>
<defSwitch name='CUSTOM' label='Custom rate'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_TRACKING' group='Mount' label='Tracking' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='ON' label='Tracking'>Off</defSwitch>
<defSwitch name='OFF' label='Stopped'>On</defSwitch>
</defSwitchVector>
<defNumberVector device='Mount Simulator' name='MOUNT_GUIDE_RATE' group='Mount' label='Guide rate' perm='rw' state='Ok'>
<defNumber name='RA' label='Guiding rate (% of sidereal)' format='%g' min='1' max='100' step='1' target='50'>50</defNumber>
<defNumber name='DEC' label='DEC Guiding rate (% of sidereal)' format='%g' min='1' max='100' step='1' target='50'>50</defNumber>
</defNumberVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_ON_COORDINATES_SET' group='Mount' label='On coordinates set' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='TRACK' label='Slew to target and track'>On</defSwitch>
<defSwitch name='SYNC' label='Sync to target'>Off</defSwitch>
</defSwitchVector>
<defNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' group='Mount' label='Equatorial coordinates' perm='rw' state='Ok'>
<defNumber name='RA' label='Right ascension (0 to 24 hrs)' format='%12.9m' min='0' max='24' step='0' target='16.97615821'>16.97615821</defNumber>
<defNumber name='DEC' label='Declination (-90 to 90°)' format='%12.9m' min='-90' max='90' step='0' target='90'>90</defNumber>
</defNumberVector>
<defNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' group='Mount' label='Horizontal coordinates' perm='ro' state='Ok'>
<defNumber name='AZ' label='Azimuth (0 to 360°)' format='%12.9m' min='0' max='360' step='0'>359.9654362</defNumber>
<defNumber name='ALT' label='Altitude (0 to 90°)' format='%12.9m' min='0' max='90' step='0'>-0.1245785888</defNumber>
</defNumberVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_ABORT_MOTION' group='Mount' label='Abort motion' perm='rw' state='Ok' rule='AtMostOne'>
<defSwitch name='ABORT_MOTION' label='Abort motion'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_ALIGNMENT_MODE' group='Alignment' label='Alignment mode' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='SINGLE_POINT' label='Single point'>Off</defSwitch>
<defSwitch name='NEAREST_POINT' label='Nearest point'>Off</defSwitch>
<defSwitch name='MULTI_POINT' label='Multi point'>Off</defSwitch>
<defSwitch name='CONTROLLER' label='Mount controller'>On</defSwitch>
</defSwitchVector>
<defNumberVector device='Mount Simulator' name='MOUNT_EPOCH' group='Alignment' label='Current epoch' perm='ro' state='Ok'>
<defNumber name='EPOCH' label='Epoch (0, 1950-2050)' format='%g' min='0' max='2050' step='0'>2000</defNumber>
</defNumberVector>
<defTextVector device='Mount Simulator' name='SNOOP_DEVICES' group='Main' label='Snoop devices' perm='rw' state='Ok'>
<defText name='JOYSTICK' label='Joystick'></defText>
<defText name='GPS' label='GPS'></defText>
</defTextVector>
<setSwitchVector device='Mount Simulator' name='CONNECTION' state='Ok'>
<oneSwitch name='CONNECTED'>On</oneSwitch>
<oneSwitch name='DISCONNECTED'>Off</oneSwitch>
</setSwitchVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9654453</oneNumber>
<oneNumber name='ALT'>-0.1245811091</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.97643675</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97615821'>16.97643675</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9654544</oneNumber>
<oneNumber name='ALT'>-0.1245836288</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.9767153</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97615821'>16.9767153</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setSwitchVector device='Mount Simulator' name='CONNECTION' state='Busy'>
<oneSwitch name='CONNECTED'>Off</oneSwitch>
<oneSwitch name='DISCONNECTED'>On</oneSwitch>
</setSwitchVector>
<delProperty device='Mount Simulator' name='MOUNT_INFO'/>
<delProperty device='Mount Simulator' name='GEOGRAPHIC_COORDINATES'/>
<delProperty device='Mount Simulator' name='MOUNT_LST_TIME'/>
<delProperty device='Mount Simulator' name='MOUNT_PARK'/>
<delProperty device='Mount Simulator' name='MOUNT_PARK_SET'/>
<delProperty device='Mount Simulator' name='MOUNT_PARK_POSITION'/>
<delProperty device='Mount Simulator' name='MOUNT_HOME'/>
<delProperty device='Mount Simulator' name='MOUNT_HOME_SET'/>
<delProperty device='Mount Simulator' name='MOUNT_HOME_POSITION'/>
<delProperty device='Mount Simulator' name='MOUNT_SLEW_RATE'/>
<delProperty device='Mount Simulator' name='MOUNT_MOTION_DEC'/>
<delProperty device='Mount Simulator' name='MOUNT_MOTION_RA'/>
<delProperty device='Mount Simulator' name='MOUNT_TRACK_RATE'/>
<delProperty device='Mount Simulator' name='MOUNT_TRACKING'/>
<delProperty device='Mount Simulator' name='MOUNT_GUIDE_RATE'/>
<delProperty device='Mount Simulator' name='MOUNT_ON_COORDINATES_SET'/>
<delProperty device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES'/>
<delProperty device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES'/>
<delProperty device='Mount Simulator' name='MOUNT_ABORT_MOTION'/>
<delProperty device='Mount Simulator' name='MOUNT_ALIGNMENT_MODE'/>
<delProperty device='Mount Simulator' name='MOUNT_EPOCH'/>
<delProperty device='Mount Simulator' name='SNOOP_DEVICES'/>
<setSwitchVector device='Mount Simulator' name='CONNECTION' state='Ok'>
<oneSwitch name='CONNECTED'>Off</oneSwitch>
<oneSwitch name='DISCONNECTED'>On</oneSwitch>
</setSwitchVector>
<setSwitchVector device='Mount Simulator' name='CONNECTION' state='Busy'>
<oneSwitch name='CONNECTED'>On</oneSwitch>
<oneSwitch name='DISCONNECTED'>Off</oneSwitch>
</setSwitchVector>
<defTextVector device='Mount Simulator' name='MOUNT_INFO' group='Mount' label='Info' perm='ro' state='Ok'>
<defText name='VENDOR' label='Vendor'>Unknown</defText>
<defText name='MODEL' label='Model'>Unknown</defText>
<defText name='FIRMWARE_VERSION' label='Firmware'>N/A</defText>
</defTextVector>
<defNumberVector device='Mount Simulator' name='GEOGRAPHIC_COORDINATES' group='Site' label='Location' perm='rw' state='Ok'>
<defNumber name='LATITUDE' label='Latitude (-90 to +90° +N)' format='%12.9m' min='-90' max='90' step='0' target='0'>0</defNumber>
<defNumber name='LONGITUDE' label='Longitude (0 to 360° +E)' format='%12.9m' min='-180' max='360' step='0' target='0'>0</defNumber>
<defNumber name='ELEVATION' label='Elevation (m)' format='%g' min='-400' max='8000' step='0' target='0'>0</defNumber>
</defNumberVector>
<defNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' group='Site' label='LST Time' perm='ro' state='Ok'>
<defNumber name='TIME' label='LST Time' format='%12.9m' min='0' max='24' step='0'>22.9767153</defNumber>
</defNumberVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_PARK' group='Mount' label='Park' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='PARKED' label='Mount parked'>On</defSwitch>
<defSwitch name='UNPARKED' label='Mount unparked'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_PARK_SET' group='Mount' label='Set park position' perm='rw' state='Ok' rule='AtMostOne'>
<defSwitch name='CURRENT' label='Set current position'>Off</defSwitch>
<defSwitch name='DEFAULT' label='Set default position'>Off</defSwitch>
</defSwitchVector>
<defNumberVector device='Mount Simulator' name='MOUNT_PARK_POSITION' group='Mount' label='Park position' perm='rw' state='Ok'>
<defNumber name='HA' label='Hour Angle (-12 to 12 hrs)' format='%12.9m' min='-12' max='12' step='0' target='6'>6</defNumber>
<defNumber name='DEC' label='Declination (-90 to 90°)' format='%12.9m' min='-90' max='90' step='0' target='90'>90</defNumber>
</defNumberVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_HOME' group='Mount' label='Home' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='HOME' label='Slew to home position and stop'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_HOME_SET' group='Mount' label='Set home position' perm='rw' state='Ok' rule='AtMostOne'>
<defSwitch name='CURRENT' label='Set current position'>Off</defSwitch>
<defSwitch name='DEFAULT' label='Set default position'>Off</defSwitch>
</defSwitchVector>
<defNumberVector device='Mount Simulator' name='MOUNT_HOME_POSITION' group='Mount' label='Home position' perm='rw' state='Ok'>
<defNumber name='HA' label='Hour Angle (-12 to 12 hrs)' format='%12.9m' min='-12' max='12' step='0' target='6'>6</defNumber>
<defNumber name='DEC' label='Declination (-90 to 90°)' format='%12.9m' min='-90' max='90' step='0' target='90'>90</defNumber>
</defNumberVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_SLEW_RATE' group='Mount' label='Slew rate' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='GUIDE' label='Guide rate'>On</defSwitch>
<defSwitch name='CENTERING' label='Centering rate'>Off</defSwitch>
<defSwitch name='FIND' label='Find rate'>Off</defSwitch>
<defSwitch name='MAX' label='Max rate'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_MOTION_DEC' group='Mount' label='Move N/S' perm='rw' state='Ok' rule='AtMostOne'>
<defSwitch name='NORTH' label='North'>Off</defSwitch>
<defSwitch name='SOUTH' label='South'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_MOTION_RA' group='Mount' label='Move W/E' perm='rw' state='Ok' rule='AtMostOne'>
<defSwitch name='WEST' label='West'>Off</defSwitch>
<defSwitch name='EAST' label='East'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_TRACK_RATE' group='Mount' label='Track rate' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='SIDEREAL' label='Sidereal rate'>On</defSwitch>
<defSwitch name='SOLAR' label='Solar rate'>Off</defSwitch>
<defSwitch name='LUNAR' label='Lunar rate'>Off</defSwitch>
<defSwitch name='KING' label='King rate'>Off</defSwitch>
<defSwitch name='CUSTOM' label='Custom rate'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_TRACKING' group='Mount' label='Tracking' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='ON' label='Tracking'>Off</defSwitch>
<defSwitch name='OFF' label='Stopped'>On</defSwitch>
</defSwitchVector>
<defNumberVector device='Mount Simulator' name='MOUNT_GUIDE_RATE' group='Mount' label='Guide rate' perm='rw' state='Ok'>
<defNumber name='RA' label='Guiding rate (% of sidereal)' format='%g' min='1' max='100' step='1' target='50'>50</defNumber>
<defNumber name='DEC' label='DEC Guiding rate (% of sidereal)' format='%g' min='1' max='100' step='1' target='50'>50</defNumber>
</defNumberVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_ON_COORDINATES_SET' group='Mount' label='On coordinates set' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='TRACK' label='Slew to target and track'>On</defSwitch>
<defSwitch name='SYNC' label='Sync to target'>Off</defSwitch>
</defSwitchVector>
<defNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' group='Mount' label='Equatorial coordinates' perm='rw' state='Ok'>
<defNumber name='RA' label='Right ascension (0 to 24 hrs)' format='%12.9m' min='0' max='24' step='0' target='16.97727237'>16.97727237</defNumber>
<defNumber name='DEC' label='Declination (-90 to 90°)' format='%12.9m' min='-90' max='90' step='0' target='90'>90</defNumber>
</defNumberVector>
<defNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' group='Mount' label='Horizontal coordinates' perm='ro' state='Ok'>
<defNumber name='AZ' label='Azimuth (0 to 360°)' format='%12.9m' min='0' max='360' step='0'>359.9654726</defNumber>
<defNumber name='ALT' label='Altitude (0 to 90°)' format='%12.9m' min='0' max='90' step='0'>-0.124588666</defNumber>
</defNumberVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_ABORT_MOTION' group='Mount' label='Abort motion' perm='rw' state='Ok' rule='AtMostOne'>
<defSwitch name='ABORT_MOTION' label='Abort motion'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_ALIGNMENT_MODE' group='Alignment' label='Alignment mode' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='SINGLE_POINT' label='Single point'>Off</defSwitch>
<defSwitch name='NEAREST_POINT' label='Nearest point'>Off</defSwitch>
<defSwitch name='MULTI_POINT' label='Multi point'>Off</defSwitch>
<defSwitch name='CONTROLLER' label='Mount controller'>On</defSwitch>
</defSwitchVector>
<defNumberVector device='Mount Simulator' name='MOUNT_EPOCH' group='Alignment' label='Current epoch' perm='ro' state='Ok'>
<defNumber name='EPOCH' label='Epoch (0, 1950-2050)' format='%g' min='0' max='2050' step='0'>2000</defNumber>
</defNumberVector>
<defTextVector device='Mount Simulator' name='SNOOP_DEVICES' group='Main' label='Snoop devices' perm='rw' state='Ok'>
<defText name='JOYSTICK' label='Joystick'></defText>
<defText name='GPS' label='GPS'></defText>
</defTextVector>
<setSwitchVector device='Mount Simulator' name='CONNECTION' state='Ok'>
<oneSwitch name='CONNECTED'>On</oneSwitch>
<oneSwitch name='DISCONNECTED'>Off</oneSwitch>
</setSwitchVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9654817</oneNumber>
<oneNumber name='ALT'>-0.1245911836</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.97755091</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97727237'>16.97755091</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setSwitchVector device='Mount Simulator' name='CONNECTION' state='Busy'>
<oneSwitch name='CONNECTED'>Off</oneSwitch>
<oneSwitch name='DISCONNECTED'>On</oneSwitch>
</setSwitchVector>
<delProperty device='Mount Simulator' name='MOUNT_INFO'/>
<delProperty device='Mount Simulator' name='GEOGRAPHIC_COORDINATES'/>
<delProperty device='Mount Simulator' name='MOUNT_LST_TIME'/>
<delProperty device='Mount Simulator' name='MOUNT_PARK'/>
<delProperty device='Mount Simulator' name='MOUNT_PARK_SET'/>
<delProperty device='Mount Simulator' name='MOUNT_PARK_POSITION'/>
<delProperty device='Mount Simulator' name='MOUNT_HOME'/>
<delProperty device='Mount Simulator' name='MOUNT_HOME_SET'/>
<delProperty device='Mount Simulator' name='MOUNT_HOME_POSITION'/>
<delProperty device='Mount Simulator' name='MOUNT_SLEW_RATE'/>
<delProperty device='Mount Simulator' name='MOUNT_MOTION_DEC'/>
<delProperty device='Mount Simulator' name='MOUNT_MOTION_RA'/>
<delProperty device='Mount Simulator' name='MOUNT_TRACK_RATE'/>
<delProperty device='Mount Simulator' name='MOUNT_TRACKING'/>
<delProperty device='Mount Simulator' name='MOUNT_GUIDE_RATE'/>
<delProperty device='Mount Simulator' name='MOUNT_ON_COORDINATES_SET'/>
<delProperty device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES'/>
<delProperty device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES'/>
<delProperty device='Mount Simulator' name='MOUNT_ABORT_MOTION'/>
<delProperty device='Mount Simulator' name='MOUNT_ALIGNMENT_MODE'/>
<delProperty device='Mount Simulator' name='MOUNT_EPOCH'/>
<delProperty device='Mount Simulator' name='SNOOP_DEVICES'/>
<setSwitchVector device='Mount Simulator' name='CONNECTION' state='Ok'>
<oneSwitch name='CONNECTED'>Off</oneSwitch>
<oneSwitch name='DISCONNECTED'>On</oneSwitch>
</setSwitchVector>
<setSwitchVector device='Mount Simulator' name='CONNECTION' state='Busy'>
<oneSwitch name='CONNECTED'>On</oneSwitch>
<oneSwitch name='DISCONNECTED'>Off</oneSwitch>
</setSwitchVector>
<defTextVector device='Mount Simulator' name='MOUNT_INFO' group='Mount' label='Info' perm='ro' state='Ok'>
<defText name='VENDOR' label='Vendor'>Unknown</defText>
<defText name='MODEL' label='Model'>Unknown</defText>
<defText name='FIRMWARE_VERSION' label='Firmware'>N/A</defText>
</defTextVector>
<defNumberVector device='Mount Simulator' name='GEOGRAPHIC_COORDINATES' group='Site' label='Location' perm='rw' state='Ok'>
<defNumber name='LATITUDE' label='Latitude (-90 to +90° +N)' format='%12.9m' min='-90' max='90' step='0' target='0'>0</defNumber>
<defNumber name='LONGITUDE' label='Longitude (0 to 360° +E)' format='%12.9m' min='-180' max='360' step='0' target='0'>0</defNumber>
<defNumber name='ELEVATION' label='Elevation (m)' format='%g' min='-400' max='8000' step='0' target='0'>0</defNumber>
</defNumberVector>
<defNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' group='Site' label='LST Time' perm='ro' state='Ok'>
<defNumber name='TIME' label='LST Time' format='%12.9m' min='0' max='24' step='0'>22.97755091</defNumber>
</defNumberVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_PARK' group='Mount' label='Park' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='PARKED' label='Mount parked'>On</defSwitch>
<defSwitch name='UNPARKED' label='Mount unparked'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_PARK_SET' group='Mount' label='Set park position' perm='rw' state='Ok' rule='AtMostOne'>
<defSwitch name='CURRENT' label='Set current position'>Off</defSwitch>
<defSwitch name='DEFAULT' label='Set default position'>Off</defSwitch>
</defSwitchVector>
<defNumberVector device='Mount Simulator' name='MOUNT_PARK_POSITION' group='Mount' label='Park position' perm='rw' state='Ok'>
<defNumber name='HA' label='Hour Angle (-12 to 12 hrs)' format='%12.9m' min='-12' max='12' step='0' target='6'>6</defNumber>
<defNumber name='DEC' label='Declination (-90 to 90°)' format='%12.9m' min='-90' max='90' step='0' target='90'>90</defNumber>
</defNumberVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_HOME' group='Mount' label='Home' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='HOME' label='Slew to home position and stop'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_HOME_SET' group='Mount' label='Set home position' perm='rw' state='Ok' rule='AtMostOne'>
<defSwitch name='CURRENT' label='Set current position'>Off</defSwitch>
<defSwitch name='DEFAULT' label='Set default position'>Off</defSwitch>
</defSwitchVector>
<defNumberVector device='Mount Simulator' name='MOUNT_HOME_POSITION' group='Mount' label='Home position' perm='rw' state='Ok'>
<defNumber name='HA' label='Hour Angle (-12 to 12 hrs)' format='%12.9m' min='-12' max='12' step='0' target='6'>6</defNumber>
<defNumber name='DEC' label='Declination (-90 to 90°)' format='%12.9m' min='-90' max='90' step='0' target='90'>90</defNumber>
</defNumberVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_SLEW_RATE' group='Mount' label='Slew rate' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='GUIDE' label='Guide rate'>On</defSwitch>
<defSwitch name='CENTERING' label='Centering rate'>Off</defSwitch>
<defSwitch name='FIND' label='Find rate'>Off</defSwitch>
<defSwitch name='MAX' label='Max rate'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_MOTION_DEC' group='Mount' label='Move N/S' perm='rw' state='Ok' rule='AtMostOne'>
<defSwitch name='NORTH' label='North'>Off</defSwitch>
<defSwitch name='SOUTH' label='South'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_MOTION_RA' group='Mount' label='Move W/E' perm='rw' state='Ok' rule='AtMostOne'>
<defSwitch name='WEST' label='West'>Off</defSwitch>
<defSwitch name='EAST' label='East'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_TRACK_RATE' group='Mount' label='Track rate' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='SIDEREAL' label='Sidereal rate'>On</defSwitch>
<defSwitch name='SOLAR' label='Solar rate'>Off</defSwitch>
<defSwitch name='LUNAR' label='Lunar rate'>Off</defSwitch>
<defSwitch name='KING' label='King rate'>Off</defSwitch>
<defSwitch name='CUSTOM' label='Custom rate'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_TRACKING' group='Mount' label='Tracking' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='ON' label='Tracking'>Off</defSwitch>
<defSwitch name='OFF' label='Stopped'>On</defSwitch>
</defSwitchVector>
<defNumberVector device='Mount Simulator' name='MOUNT_GUIDE_RATE' group='Mount' label='Guide rate' perm='rw' state='Ok'>
<defNumber name='RA' label='Guiding rate (% of sidereal)' format='%g' min='1' max='100' step='1' target='50'>50</defNumber>
<defNumber name='DEC' label='DEC Guiding rate (% of sidereal)' format='%g' min='1' max='100' step='1' target='50'>50</defNumber>
</defNumberVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_ON_COORDINATES_SET' group='Mount' label='On coordinates set' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='TRACK' label='Slew to target and track'>On</defSwitch>
<defSwitch name='SYNC' label='Sync to target'>Off</defSwitch>
</defSwitchVector>
<defNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' group='Mount' label='Equatorial coordinates' perm='rw' state='Ok'>
<defNumber name='RA' label='Right ascension (0 to 24 hrs)' format='%12.9m' min='0' max='24' step='0' target='16.97782944'>16.97782944</defNumber>
<defNumber name='DEC' label='Declination (-90 to 90°)' format='%12.9m' min='-90' max='90' step='0' target='90'>90</defNumber>
</defNumberVector>
<defNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' group='Mount' label='Horizontal coordinates' perm='ro' state='Ok'>
<defNumber name='AZ' label='Azimuth (0 to 360°)' format='%12.9m' min='0' max='360' step='0'>359.9654907</defNumber>
<defNumber name='ALT' label='Altitude (0 to 90°)' format='%12.9m' min='0' max='90' step='0'>-0.1245937005</defNumber>
</defNumberVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_ABORT_MOTION' group='Mount' label='Abort motion' perm='rw' state='Ok' rule='AtMostOne'>
<defSwitch name='ABORT_MOTION' label='Abort motion'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_ALIGNMENT_MODE' group='Alignment' label='Alignment mode' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='SINGLE_POINT' label='Single point'>Off</defSwitch>
<defSwitch name='NEAREST_POINT' label='Nearest point'>Off</defSwitch>
<defSwitch name='MULTI_POINT' label='Multi point'>Off</defSwitch>
<defSwitch name='CONTROLLER' label='Mount controller'>On</defSwitch>
</defSwitchVector>
<defNumberVector device='Mount Simulator' name='MOUNT_EPOCH' group='Alignment' label='Current epoch' perm='ro' state='Ok'>
<defNumber name='EPOCH' label='Epoch (0, 1950-2050)' format='%g' min='0' max='2050' step='0'>2000</defNumber>
</defNumberVector>
<defTextVector device='Mount Simulator' name='SNOOP_DEVICES' group='Main' label='Snoop devices' perm='rw' state='Ok'>
<defText name='JOYSTICK' label='Joystick'></defText>
<defText name='GPS' label='GPS'></defText>
</defTextVector>
<setSwitchVector device='Mount Simulator' name='CONNECTION' state='Ok'>
<oneSwitch name='CONNECTED'>On</oneSwitch>
<oneSwitch name='DISCONNECTED'>Off</oneSwitch>
</setSwitchVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9654998</oneNumber>
<oneNumber name='ALT'>-0.1245962168</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.97810798</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.97810798</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9655089</oneNumber>
<oneNumber name='ALT'>-0.1245987324</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.97838652</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.97838652</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.965518</oneNumber>
<oneNumber name='ALT'>-0.1246012474</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.97866505</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.97866505</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9655271</oneNumber>
<oneNumber name='ALT'>-0.1246037617</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.9789436</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.9789436</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9655362</oneNumber>
<oneNumber name='ALT'>-0.1246062754</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.97922214</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.97922214</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9655453</oneNumber>
<oneNumber name='ALT'>-0.1246087883</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.97950067</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.97950067</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9655543</oneNumber>
<oneNumber name='ALT'>-0.1246113006</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.97977921</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.97977921</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9655634</oneNumber>
<oneNumber name='ALT'>-0.1246138123</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98005775</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98005775</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9655725</oneNumber>
<oneNumber name='ALT'>-0.1246163233</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98033629</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98033629</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9655816</oneNumber>
<oneNumber name='ALT'>-0.1246188336</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98061482</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98061482</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9655907</oneNumber>
<oneNumber name='ALT'>-0.1246213433</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98089337</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98089337</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9655998</oneNumber>
<oneNumber name='ALT'>-0.1246238523</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98117191</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98117191</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9656089</oneNumber>
<oneNumber name='ALT'>-0.1246263607</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98145044</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98145044</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.965618</oneNumber>
<oneNumber name='ALT'>-0.1246288683</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98172898</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98172898</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.965627</oneNumber>
<oneNumber name='ALT'>-0.1246313753</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98200752</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98200752</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9656361</oneNumber>
<oneNumber name='ALT'>-0.1246338817</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98228605</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98228605</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9656452</oneNumber>
<oneNumber name='ALT'>-0.1246363873</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98256459</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98256459</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9656543</oneNumber>
<oneNumber name='ALT'>-0.1246388924</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98284313</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98284313</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9656634</oneNumber>
<oneNumber name='ALT'>-0.1246413968</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98312168</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98312168</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9656725</oneNumber>
<oneNumber name='ALT'>-0.1246439005</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98340021</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98340021</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9656816</oneNumber>
<oneNumber name='ALT'>-0.1246464035</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98367875</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98367875</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9656907</oneNumber>
<oneNumber name='ALT'>-0.1246489059</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98395729</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98395729</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9656998</oneNumber>
<oneNumber name='ALT'>-0.1246514076</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98423582</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98423582</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9657088</oneNumber>
<oneNumber name='ALT'>-0.1246539086</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98451436</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98451436</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9657179</oneNumber>
<oneNumber name='ALT'>-0.124656409</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.9847929</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.9847929</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.965727</oneNumber>
<oneNumber name='ALT'>-0.1246589088</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98507144</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98507144</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9657361</oneNumber>
<oneNumber name='ALT'>-0.1246614079</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98534998</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98534998</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9657452</oneNumber>
<oneNumber name='ALT'>-0.1246639063</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98562852</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98562852</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9657543</oneNumber>
<oneNumber name='ALT'>-0.124666404</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98590705</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98590705</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9657634</oneNumber>
<oneNumber name='ALT'>-0.124668901</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98618559</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98618559</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9657725</oneNumber>
<oneNumber name='ALT'>-0.1246713974</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98646413</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98646413</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9657816</oneNumber>
<oneNumber name='ALT'>-0.1246738932</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98674266</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98674266</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9657907</oneNumber>
<oneNumber name='ALT'>-0.1246763882</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.9870212</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.9870212</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9657998</oneNumber>
<oneNumber name='ALT'>-0.1246788828</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98729975</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98729975</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9658088</oneNumber>
<oneNumber name='ALT'>-0.1246813765</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98757829</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98757829</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9658179</oneNumber>
<oneNumber name='ALT'>-0.1246838696</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98785682</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98785682</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.965827</oneNumber>
<oneNumber name='ALT'>-0.124686362</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98813536</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98813536</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9658361</oneNumber>
<oneNumber name='ALT'>-0.1246888538</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.9884139</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.9884139</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9658452</oneNumber>
<oneNumber name='ALT'>-0.1246913449</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98869243</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98869243</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9658543</oneNumber>
<oneNumber name='ALT'>-0.1246938353</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98897097</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98897097</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9658634</oneNumber>
<oneNumber name='ALT'>-0.1246963252</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98924952</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98924952</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9658725</oneNumber>
<oneNumber name='ALT'>-0.1246988143</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98952806</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98952806</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9658816</oneNumber>
<oneNumber name='ALT'>-0.1247013027</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.98980659</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.98980659</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9658907</oneNumber>
<oneNumber name='ALT'>-0.1247037905</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99008513</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.97782944'>16.99008513</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setSwitchVector device='Mount Simulator' name='CONNECTION' state='Busy'>
<oneSwitch name='CONNECTED'>Off</oneSwitch>
<oneSwitch name='DISCONNECTED'>On</oneSwitch>
</setSwitchVector>
<delProperty device='Mount Simulator' name='MOUNT_INFO'/>
<delProperty device='Mount Simulator' name='GEOGRAPHIC_COORDINATES'/>
<delProperty device='Mount Simulator' name='MOUNT_LST_TIME'/>
<delProperty device='Mount Simulator' name='MOUNT_PARK'/>
<delProperty device='Mount Simulator' name='MOUNT_PARK_SET'/>
<delProperty device='Mount Simulator' name='MOUNT_PARK_POSITION'/>
<delProperty device='Mount Simulator' name='MOUNT_HOME'/>
<delProperty device='Mount Simulator' name='MOUNT_HOME_SET'/>
<delProperty device='Mount Simulator' name='MOUNT_HOME_POSITION'/>
<delProperty device='Mount Simulator' name='MOUNT_SLEW_RATE'/>
<delProperty device='Mount Simulator' name='MOUNT_MOTION_DEC'/>
<delProperty device='Mount Simulator' name='MOUNT_MOTION_RA'/>
<delProperty device='Mount Simulator' name='MOUNT_TRACK_RATE'/>
<delProperty device='Mount Simulator' name='MOUNT_TRACKING'/>
<delProperty device='Mount Simulator' name='MOUNT_GUIDE_RATE'/>
<delProperty device='Mount Simulator' name='MOUNT_ON_COORDINATES_SET'/>
<delProperty device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES'/>
<delProperty device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES'/>
<delProperty device='Mount Simulator' name='MOUNT_ABORT_MOTION'/>
<delProperty device='Mount Simulator' name='MOUNT_ALIGNMENT_MODE'/>
<delProperty device='Mount Simulator' name='MOUNT_EPOCH'/>
<delProperty device='Mount Simulator' name='SNOOP_DEVICES'/>
<setSwitchVector device='Mount Simulator' name='CONNECTION' state='Ok'>
<oneSwitch name='CONNECTED'>Off</oneSwitch>
<oneSwitch name='DISCONNECTED'>On</oneSwitch>
</setSwitchVector>
<setSwitchVector device='Mount Simulator' name='CONNECTION' state='Busy'>
<oneSwitch name='CONNECTED'>On</oneSwitch>
<oneSwitch name='DISCONNECTED'>Off</oneSwitch>
</setSwitchVector>
<defTextVector device='Mount Simulator' name='MOUNT_INFO' group='Mount' label='Info' perm='ro' state='Ok'>
<defText name='VENDOR' label='Vendor'>Unknown</defText>
<defText name='MODEL' label='Model'>Unknown</defText>
<defText name='FIRMWARE_VERSION' label='Firmware'>N/A</defText>
</defTextVector>
<defNumberVector device='Mount Simulator' name='GEOGRAPHIC_COORDINATES' group='Site' label='Location' perm='rw' state='Ok'>
<defNumber name='LATITUDE' label='Latitude (-90 to +90° +N)' format='%12.9m' min='-90' max='90' step='0' target='0'>0</defNumber>
<defNumber name='LONGITUDE' label='Longitude (0 to 360° +E)' format='%12.9m' min='-180' max='360' step='0' target='0'>0</defNumber>
<defNumber name='ELEVATION' label='Elevation (m)' format='%g' min='-400' max='8000' step='0' target='0'>0</defNumber>
</defNumberVector>
<defNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' group='Site' label='LST Time' perm='ro' state='Ok'>
<defNumber name='TIME' label='LST Time' format='%12.9m' min='0' max='24' step='0'>22.99008513</defNumber>
</defNumberVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_PARK' group='Mount' label='Park' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='PARKED' label='Mount parked'>On</defSwitch>
<defSwitch name='UNPARKED' label='Mount unparked'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_PARK_SET' group='Mount' label='Set park position' perm='rw' state='Ok' rule='AtMostOne'>
<defSwitch name='CURRENT' label='Set current position'>Off</defSwitch>
<defSwitch name='DEFAULT' label='Set default position'>Off</defSwitch>
</defSwitchVector>
<defNumberVector device='Mount Simulator' name='MOUNT_PARK_POSITION' group='Mount' label='Park position' perm='rw' state='Ok'>
<defNumber name='HA' label='Hour Angle (-12 to 12 hrs)' format='%12.9m' min='-12' max='12' step='0' target='6'>6</defNumber>
<defNumber name='DEC' label='Declination (-90 to 90°)' format='%12.9m' min='-90' max='90' step='0' target='90'>90</defNumber>
</defNumberVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_HOME' group='Mount' label='Home' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='HOME' label='Slew to home position and stop'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_HOME_SET' group='Mount' label='Set home position' perm='rw' state='Ok' rule='AtMostOne'>
<defSwitch name='CURRENT' label='Set current position'>Off</defSwitch>
<defSwitch name='DEFAULT' label='Set default position'>Off</defSwitch>
</defSwitchVector>
<defNumberVector device='Mount Simulator' name='MOUNT_HOME_POSITION' group='Mount' label='Home position' perm='rw' state='Ok'>
<defNumber name='HA' label='Hour Angle (-12 to 12 hrs)' format='%12.9m' min='-12' max='12' step='0' target='6'>6</defNumber>
<defNumber name='DEC' label='Declination (-90 to 90°)' format='%12.9m' min='-90' max='90' step='0' target='90'>90</defNumber>
</defNumberVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_SLEW_RATE' group='Mount' label='Slew rate' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='GUIDE' label='Guide rate'>On</defSwitch>
<defSwitch name='CENTERING' label='Centering rate'>Off</defSwitch>
<defSwitch name='FIND' label='Find rate'>Off</defSwitch>
<defSwitch name='MAX' label='Max rate'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_MOTION_DEC' group='Mount' label='Move N/S' perm='rw' state='Ok' rule='AtMostOne'>
<defSwitch name='NORTH' label='North'>Off</defSwitch>
<defSwitch name='SOUTH' label='South'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_MOTION_RA' group='Mount' label='Move W/E' perm='rw' state='Ok' rule='AtMostOne'>
<defSwitch name='WEST' label='West'>Off</defSwitch>
<defSwitch name='EAST' label='East'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_TRACK_RATE' group='Mount' label='Track rate' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='SIDEREAL' label='Sidereal rate'>On</defSwitch>
<defSwitch name='SOLAR' label='Solar rate'>Off</defSwitch>
<defSwitch name='LUNAR' label='Lunar rate'>Off</defSwitch>
<defSwitch name='KING' label='King rate'>Off</defSwitch>
<defSwitch name='CUSTOM' label='Custom rate'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_TRACKING' group='Mount' label='Tracking' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='ON' label='Tracking'>Off</defSwitch>
<defSwitch name='OFF' label='Stopped'>On</defSwitch>
</defSwitchVector>
<defNumberVector device='Mount Simulator' name='MOUNT_GUIDE_RATE' group='Mount' label='Guide rate' perm='rw' state='Ok'>
<defNumber name='RA' label='Guiding rate (% of sidereal)' format='%g' min='1' max='100' step='1' target='50'>50</defNumber>
<defNumber name='DEC' label='DEC Guiding rate (% of sidereal)' format='%g' min='1' max='100' step='1' target='50'>50</defNumber>
</defNumberVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_ON_COORDINATES_SET' group='Mount' label='On coordinates set' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='TRACK' label='Slew to target and track'>On</defSwitch>
<defSwitch name='SYNC' label='Sync to target'>Off</defSwitch>
</defSwitchVector>
<defNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' group='Mount' label='Equatorial coordinates' perm='rw' state='Ok'>
<defNumber name='RA' label='Right ascension (0 to 24 hrs)' format='%12.9m' min='0' max='24' step='0' target='16.99119929'>16.99119929</defNumber>
<defNumber name='DEC' label='Declination (-90 to 90°)' format='%12.9m' min='-90' max='90' step='0' target='90'>90</defNumber>
</defNumberVector>
<defNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' group='Mount' label='Horizontal coordinates' perm='ro' state='Ok'>
<defNumber name='AZ' label='Azimuth (0 to 360°)' format='%12.9m' min='0' max='360' step='0'>359.9659271</defNumber>
<defNumber name='ALT' label='Altitude (0 to 90°)' format='%12.9m' min='0' max='90' step='0'>-0.1247137351</defNumber>
</defNumberVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_ABORT_MOTION' group='Mount' label='Abort motion' perm='rw' state='Ok' rule='AtMostOne'>
<defSwitch name='ABORT_MOTION' label='Abort motion'>Off</defSwitch>
</defSwitchVector>
<defSwitchVector device='Mount Simulator' name='MOUNT_ALIGNMENT_MODE' group='Alignment' label='Alignment mode' perm='rw' state='Ok' rule='OneOfMany'>
<defSwitch name='SINGLE_POINT' label='Single point'>Off</defSwitch>
<defSwitch name='NEAREST_POINT' label='Nearest point'>Off</defSwitch>
<defSwitch name='MULTI_POINT' label='Multi point'>Off</defSwitch>
<defSwitch name='CONTROLLER' label='Mount controller'>On</defSwitch>
</defSwitchVector>
<defNumberVector device='Mount Simulator' name='MOUNT_EPOCH' group='Alignment' label='Current epoch' perm='ro' state='Ok'>
<defNumber name='EPOCH' label='Epoch (0, 1950-2050)' format='%g' min='0' max='2050' step='0'>2000</defNumber>
</defNumberVector>
<defTextVector device='Mount Simulator' name='SNOOP_DEVICES' group='Main' label='Snoop devices' perm='rw' state='Ok'>
<defText name='JOYSTICK' label='Joystick'></defText>
<defText name='GPS' label='GPS'></defText>
</defTextVector>
<setSwitchVector device='Mount Simulator' name='CONNECTION' state='Ok'>
<oneSwitch name='CONNECTED'>On</oneSwitch>
<oneSwitch name='DISCONNECTED'>Off</oneSwitch>
</setSwitchVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9659362</oneNumber>
<oneNumber name='ALT'>-0.1247162195</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99147782</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.99147782</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9659452</oneNumber>
<oneNumber name='ALT'>-0.1247187033</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99175636</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.99175636</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9659543</oneNumber>
<oneNumber name='ALT'>-0.1247211865</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.9920349</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.9920349</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9659634</oneNumber>
<oneNumber name='ALT'>-0.1247236689</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99231343</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.99231343</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9659725</oneNumber>
<oneNumber name='ALT'>-0.1247261507</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99259197</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.99259197</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9659816</oneNumber>
<oneNumber name='ALT'>-0.1247286319</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99287051</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.99287051</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9659907</oneNumber>
<oneNumber name='ALT'>-0.1247311124</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99314904</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.99314904</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9659998</oneNumber>
<oneNumber name='ALT'>-0.1247335923</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99342759</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.99342759</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9660089</oneNumber>
<oneNumber name='ALT'>-0.1247360715</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99370613</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.99370613</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.966018</oneNumber>
<oneNumber name='ALT'>-0.1247385499</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99398467</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.99398467</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9660271</oneNumber>
<oneNumber name='ALT'>-0.1247410278</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.9942632</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.9942632</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9660362</oneNumber>
<oneNumber name='ALT'>-0.124743505</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99454174</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.99454174</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9660453</oneNumber>
<oneNumber name='ALT'>-0.1247459815</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99482028</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.99482028</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9660544</oneNumber>
<oneNumber name='ALT'>-0.1247484573</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99509881</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.99509881</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9660635</oneNumber>
<oneNumber name='ALT'>-0.1247509326</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99537736</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.99537736</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9660726</oneNumber>
<oneNumber name='ALT'>-0.1247534071</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.9956559</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.9956559</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9660817</oneNumber>
<oneNumber name='ALT'>-0.1247558809</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99593444</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.99593444</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9660908</oneNumber>
<oneNumber name='ALT'>-0.1247583541</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99621297</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.99621297</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9660999</oneNumber>
<oneNumber name='ALT'>-0.1247608266</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99649151</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.99649151</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.966109</oneNumber>
<oneNumber name='ALT'>-0.1247632985</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99677005</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.99677005</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9661181</oneNumber>
<oneNumber name='ALT'>-0.1247657697</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99704858</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.99704858</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9661272</oneNumber>
<oneNumber name='ALT'>-0.1247682402</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99732712</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.99732712</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9661363</oneNumber>
<oneNumber name='ALT'>-0.1247707102</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99760567</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.99760567</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9661454</oneNumber>
<oneNumber name='ALT'>-0.1247731794</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.9978842</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.9978842</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9661545</oneNumber>
<oneNumber name='ALT'>-0.124775648</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99816274</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.99816274</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9661636</oneNumber>
<oneNumber name='ALT'>-0.1247781158</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99844128</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.99844128</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9661727</oneNumber>
<oneNumber name='ALT'>-0.1247805831</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99871981</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.99871981</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9661818</oneNumber>
<oneNumber name='ALT'>-0.1247830496</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99899835</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.99899835</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9661909</oneNumber>
<oneNumber name='ALT'>-0.1247855155</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99927689</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.99927689</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9662</oneNumber>
<oneNumber name='ALT'>-0.1247879808</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99955544</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.99955544</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9662091</oneNumber>
<oneNumber name='ALT'>-0.1247904454</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>22.99983397</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>16.99983397</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9662182</oneNumber>
<oneNumber name='ALT'>-0.1247929093</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>23.00011251</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>17.00011251</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9662273</oneNumber>
<oneNumber name='ALT'>-0.1247953725</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>23.00039105</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>17.00039105</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9662364</oneNumber>
<oneNumber name='ALT'>-0.1247978351</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>23.00066958</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>17.00066958</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9662455</oneNumber>
<oneNumber name='ALT'>-0.124800297</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>23.00094812</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>17.00094812</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_HORIZONTAL_COORDINATES' state='Ok'>
<oneNumber name='AZ'>359.9662546</oneNumber>
<oneNumber name='ALT'>-0.1248027582</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_LST_TIME' state='Ok'>
<oneNumber name='TIME'>23.00122666</oneNumber>
</setNumberVector>
<setNumberVector device='Mount Simulator' name='MOUNT_EQUATORIAL_COORDINATES' state='Ok'>
<oneNumber name='RA' target='16.99119929'>17.00122666</oneNumber>
<oneNumber name='DEC' target='90'>90</oneNumber>
</setNumberVector>
Lo recibido son todas las propiedades que tiene definidas ese driver en ese momento. En este punto es interesante revisar dichas propiedades y compararlas con la información que nos enseña KStars
:

Casi todos los dispositivos INDI
tienen una propiedad llamada CONNECTION
que hay que activar para que el dispositivo funcione correctamente. Vamos a pedirle al driver que encienda el enfocador:
[ ]:
mandar(s, f'<newSwitchVector device="{nombreEnfocador}" name="CONNECTION"><oneSwitch name="CONNECT">On</oneSwitch></newSwitchVector>')
b'<newSwitchVector device="Mount Simulator" name="CONNECTION"><oneSwitch name="CONNECTED">On</oneSwitch></newSwitchVector>'
[ ]:
recv = recibir(s, 1)
Tras conectarse hemos recibido la confirmación de que se ha conectado (la propiedad CONNECTION
tiene su campo CONNECT
a ON
(antes estaba a OFF
) junto con otras muchas propiedades que tenemos disponibles:

Para finalizar este ejemplo vamos a pedirle al enfocador que vaya a la posición absoluta 2000
(la inicial es 50000
):
[ ]:
mandar(s, f'<newNumberVector device="{nombreEnfocador}" name="ABS_FOCUS_POSITION"><oneNumber name="FOCUS_ABSOLUTE_POSITION">100000</oneNumber></newNumberVector>')
Recibimos los mensajes (dejamos 5 prudentes segundos para asegurarnos que el enfocador ha tenido tiempo de llegar a la posición deseada):
[ ]:
recv = recibir(s, 5)
Efectivamente hemos recibido (además de otra información) una nueva posición absoluta de 100000
. Podemos comprobar que en KStars
también se refleja dicho cambio:

Por último cerraremos el socket
para desconectarnos del servidor INDI
:
[ ]:
s.close()
Controlando una CCD simulada y una montura (también simulada)¶
Vamos a hacer otro ejemplo para capturar una imagen (FITS
) de una cámara virtual simulada. El simulador puede mostrar estrellas «realistas» si instalamos el GSC
(General Star Catalog). En Linux:
> sudo apt install gsc
Para ello lanzaremos el servidor INDI
con el driver indi_simulator_ccd
y el driver indi_simulator_telescope
:
> indiserver indi_simulator_ccd indi_simulator_telescope
[ ]:
import socket
from pprint import pprint
import time
from datetime import datetime
import regex as re
Conectamos al servidor INDI
:
[ ]:
s = None
conectar("127.0.0.1", 7624)
nombreCamara = "CCD Simulator"
nombreMontura = "Telescope Simulator"
[ ]:
# mandar(s, '<getProperties version="1.7" />')
[ ]:
# recv = recibir(s, 1)
Conectamos la cámara y la montura:
[ ]:
mandar(s, f'<newSwitchVector device="{nombreCamara}" name="CONNECTION"><oneSwitch name="CONNECT">On</oneSwitch></newSwitchVector>')
mandar(s, f'<newSwitchVector device="{nombreMontura}" name="CONNECTION"><oneSwitch name="CONNECT">On</oneSwitch></newSwitchVector>')
[ ]:
# recv = recibir(s, 1)
Activamos la recepción de BLOBs
(objetos binarios, en este caso y casi siempre imágenes FITS
:
[ ]:
mandar(s, f'<enableBLOB device="{nombreCamara}">Only</enableBLOB>"')
[ ]:
# recv = recibir(s, 1)
Movemos la montura a Sirio:
[ ]:
mandar(s, f'<newNumberVector device="{nombreMontura}" name="EQUATORIAL_EOD_COORD"><oneNumber name="RA">6.7685230037972683448</oneNumber><oneNumber name="DEC">-16.746465419192418267</oneNumber></newNumberVector>')
[ ]:
# recv = recibir(s, 1)
Tomamos una exposición de 2 segundos y esperamos a que mande los resultados. Cuidado si imprimimos que son varios megas y Jupyter-Lab
se puede quejar:
[ ]:
mandar(s, f'<newNumberVector device="{nombreCamara}" name="CCD_EXPOSURE"><oneNumber name="CCD_EXPOSURE_VALUE">2.0</oneNumber></newNumberVector>')
recv = recibir(s, 3, imprimir=False)
#print(recv[0:1000])
#print(recv[-1000:])
Buscamos exactamente los datos de la imagen que vienen codificados como una cadena en BASE64 dentro de un elemento <oneBLOB> ... </oneBLOB>
:
[ ]:
datosBLOB = re.search(r'.*<oneBLOB(.*)>(.*)</oneBLOB>.*', recv, flags=re.DOTALL).group(2)
#print(datosBLOB[0:1000])
#print(len(datosBLOB))
#print(datosBLOB[-10000:])
Decodificamos los datos a binario y guardamos la imagen (directamente los datos binarios son los datos del fichero FITS
):
[ ]:
import base64
message_bytes = base64.b64decode(datosBLOB)
f = open("salidas/capturaINDI.fit", "wb")
f.write(message_bytes)
f.close()
Cerramos el socket
:
[ ]:
s.close()
Mostramos la imagen:
[ ]:
%matplotlib widget
import matplotlib.pyplot as plt
import numpy as np
from astropy.io import fits
import matplotlib.colors as colors
hdul = fits.open("salidas/capturaINDI.fit")
data = hdul[0].data
fig = plt.figure("matrix", figsize=[10, 7])
image = plt.imshow(data, norm=colors.PowerNorm(gamma=.1, vmin=np.min(data), vmax=np.max(data)/20), origin='lower')
plt.colorbar(label='Counts')
Capturando imágenes de una cámara real: ZWO ASI174MM-Cool¶
Con casi el mismo código anterior (obviando el tema de la montura) podemos disparar una cámara real. Vamos a lanzar el servidor de INDI
con el driver correspondiente:
> indiserver indi_asi_ccd
[ ]:
import socket
from pprint import pprint
import time
from datetime import datetime
import regex as re
s = None
conectar("127.0.0.1", 7624)
nombreCamara = "ZWO CCD ASI174MM-Cool"
mandar(s, f'<newSwitchVector device="{nombreCamara}" name="CONNECTION"><oneSwitch name="CONNECT">On</oneSwitch></newSwitchVector>')
mandar(s, f'<enableBLOB device="{nombreCamara}">Only</enableBLOB>"')
mandar(s, f'<newNumberVector device="{nombreCamara}" name="CCD_EXPOSURE"><oneNumber name="CCD_EXPOSURE_VALUE">2.0</oneNumber></newNumberVector>')
recv = recibir(s, 4, imprimir=False)
datosBLOB = re.search(r'.*<oneBLOB(.*)>(.*)</oneBLOB>.*', recv, flags=re.DOTALL).group(2)
import base64
message_bytes = base64.b64decode(datosBLOB)
f = open("salidas/capturaINDI_ZWO.fit", "wb")
f.write(message_bytes)
f.close()