README.txt 8.57 KB


********************************************************************************************
1) TEST

Pour lancer les TESTS:
cd test/
./test_client_gemini.py 

Ca doit se terminer par quelque chose comme:
Ran 1 test in 0.005s
OK

Là, il faut arrêter avec CTRL-C (car je ne sais pas encore comment arrêter le serveur simulateur autrement !)



********************************************************************************************
2) RUN

Pour lancer le client sur ton telescope Gemini:
./client_gemini_run.py
(Windows: python3 client_gemini_run.py)

(NB: un log "client.log" est créé et alimenté au fur et à mesure)
(Pour avoir plus de détail, mettre la variable DEBUG à True dans le fichier client_gemini_run.py) 
(press ENTER to quit)

REQUEST TO SERVER [ex: ':GD#' (Get Dec), ':GR#' (Get RA)']: GD
src.client.client_udp_or_tcp - INFO - Sent: b'01000000:GD#\n'
src.client.client_udp_or_tcp - INFO - RECEIVED (ALL BYTES): b'01000000+87.380139#\x00'
src.client.client_udp_or_tcp - INFO - RECEIVED (useful data): +87.380139


REQUEST TO SERVER [ex: ':GD#' (Get Dec), ':GR#' (Get RA)']: GR
src.client.client_udp_or_tcp - INFO - Sent: b'01000000:GR#\n'
src.client.client_udp_or_tcp - INFO - RECEIVED (ALL BYTES): b'0100000020.865902#\x00'
src.client.client_udp_or_tcp - INFO - RECEIVED (useful data): 20.865902


REQUEST TO SERVER [ex: ':GD#' (Get Dec), ':GR#' (Get RA)']: GV
src.client.client_udp_or_tcp - INFO - Sent: b'01000000:GV#\n'
src.client.client_udp_or_tcp - INFO - RECEIVED (ALL BYTES): b'01000000510#\x00'
src.client.client_udp_or_tcp - INFO - RECEIVED (useful data): 510


REQUEST TO SERVER [ex: ':GD#' (Get Dec), ':GR#' (Get RA)']: Gv
src.client.client_udp_or_tcp - INFO - Sent: b'01000000:Gv#\n'
src.client.client_udp_or_tcp - INFO - RECEIVED (ALL BYTES): b'01000000T\x00'
src.client.client_udp_or_tcp - INFO - RECEIVED (useful data): T



********************************************************************************************
3) DEV

Pour lancer le client sur le "simulateur" de telescope (localhost, port 11110):
- dans un terminal, lancer le simulateur: ./server_run.py
- dans un autre terminal, lancer le client: ./client_gemini_run.py local

	
	
********************************************************************************************
4) DONE

	- move do_init() to abstract class
	- generic return code for each command

	- clean code
	- move do_goto() and move_dir() to abstract class

	- doctests

	- GOTO
	- finalize do_init()

	- set date&time, set lat&long
	- README file enriched
    - help => liste cdes possibles
    - (X) set DATE & TIME (p109)
        - Ce que fait AK avec TCL ou C: sprintf(ligne,":SC%02d/%02d/%02d#:SL%02d:%02d:%02.0f#:SG+00#",m,d,y-2000,h,min,s);
			 1) :SG+00#
			=> TU
			2) SC%02d/%02d/%02d#:
			mois, jour, YY
			3) SL%02d:%02d:%02.0f#:
			hh:mn:ss (heure locale)
			m,d,y-2000,h,min,s
			Faire les 3 commandes ensemble en 1 seule ligne, chacune séparée par #, le tout terminé par « 00 »
	
    - generic commands available from client console
    - generic commands implemented
    
    - procedure initialize()

    - ACK (cde 6)

    - 3 types of commands
    - \x00 at end

    - classe SocketClientAbstract de base
   
   
********************************************************************************************
5) WORK CURRENTLY IN PROGRESS...

	- interpreteur de cde generique : set ra "20:00:00"
	
	- improve server answers
	
	- main updated
	- tests updated
	
	- comment functions args
	
    

********************************************************************************************
6) TODO LIST

	- Tele MEADE ETX (altaz) : cf doc pdf (from page 1)
		- peut être en 3 modes : land, altaz, polar (equatorial)
		- :AP# => passer en mode polar
		- :AA# => passer en mode AltAz
		- cette config doit être fait dans do_init()
		- doc page 1 : x=implémenté, p=partial, - = pas implémenté
	
    - POSITION (p103):
	- (100) MOVE() (p104-105)
		=> en altaz ou radec 
		=> préférer "haut, bas, gauche, droite" plutôt que North, South, west, east (surtout sur altaz ça n'a aucun sens)
		=> sur equatorial, h,b = DEC et g,d = RA
		- set_speed()
		- start(direction) avec direction = h,b,g,d => move infini
		- stop()
		- pulse(direction, nbsec) = start() puis sleep(nbsec) puis stop()
		- éventuellement start_diagonal qui ferait start(up) et start(right) en alternance (pas prioritaire)
	    - MOVE(direction, rate, duration):
	        - move dans une direction (N,S,E,O) à l'infini
	        - ':Q#' pour arrêter (p 108)
	        - duration: infinie si pas donnée
	        - rate (p108): 4 vitesses différentes (prendre la plus lente par défaut), entre 0 et 1:
	            - [0-0.25] : RC => Rate Center. Subsequent Move commands will move at Centering Speed.
	            - [0.25-0.50] : RG => Rate Guide. Subsequent Move commands will move at Guiding Speed.
	            - [0.50-0.75] : RM => Rate Move. Subsequent Move commands will move at Centering Speed.
	            - [0.75-1.0] : RS => Rate Slew. Subsequent Move commands will move at Slewing Speed.
	
	- (100) GOTO:
		- 1) goto_setmode(radec | hadec | altaz)
		- 2) goto()
		- Attention, gemini ne comprend que radec, les tarot ne comprennent que hadec !!! :
			=> goto_setmode(radec) ne fait rien sur un gemini, mais convertit sur un tarot
	
	- (100) vitesse de pointage (slew speed) : n'existe pas sur tous les tele
	
	- drift = tracking speed : une fois que tele a pointé, comment il part...
		- toujours en hadec
		- tracking_speed = 0 => tele est fixe
		- t.tracking_speed(ha ou ra, dec) => ha est en nb degrés/sec 
			=> t.tracking_speed(0,0)
			=> t.tracking_speed("diurnal" ou "sideral",0) // sideral c'est mieux
			- jour solaire : 86400s/jour
			- jour sideral (diurnal) = durée d'une journée pour une étoile = 86164s/jour (moins que jour solaire, à cause du fait que en 24h, la Terre a avancé sur son orbite circulaire)
			- nb degrés/sec = 360/86400 pour jour solaire, et 360/86164 pour jour sideral
	
	
	- (200) timeout : 1 pour send, 1 pour receive
	
	- (200) celme.angles => infos() à généraliser
	
	- (200) type erreurs
		- 1000 : communication (network, cable débranché) = channel
		- 2000 : syntax
		- 3000 : out of limit (pointage hors limite, ex: sur le sol)
		- 4000 : controller
		- 5000 : file (disk...)
		
	- (100) do_native()
	
	- (100) generic functions return tuple with error code :
		res = get_ra()
		=> res.res is the resulte
		=> res.error is the error object : err.error_code, err.generic_msg, err.native_msg
		
	- (200) PLC abstract client
	
	- (100) input commands format : 
		- get ra
		- set ra "2h3m27s" => converted by celme.Angle(ra).deg()
		
	- (200) superclass ClientChannel for ClientSocketAbstract : for UDP, TCP, serial, usb...
	
	- (100) _cmds_getset, _cmds_do = list of functions 

	- remplacer utf-8 par unicode ou iso...
	
    - cdes 05 (p100):
        - cde 05 => return long list of parameters (= GROS GET)
        - ENQ = 05
        
    - Table d'attributs pour chaque telescope (config)
         
    - _connect() ou connect() ?
    
    - Implémenter les commandes NATIVES (non LX-200) :
        - < ou >, termine par ':' + checksum + #
    











********************************************************************************************
7) INFORMATIONS


    GMT = TU décalé de 12h, mais maintenant c'est pareil
    TU = UTC civil, voir aussi UT1, UT2
    
    COMMANDES LX-200:
    - SA et SZ pour envoyer coord en alt-az
    
    RA-DEC is converted into "pas codeurs" 
    1 pas codeur (mvmt interne du tele) = environ 1 sec arc sur le ciel
    (en gros, RA = petit axe du tele, DEC = grand axe du tele)
    
    Parking = vers le nord (cf photo) = en position CWD (Counter Weight Down) (contre-poids en bas ?)
    
    Par défaut, le tele fonctionne en RADEC J2000
    
    http://82.64.28.71:8083/L5V1serial.html
    
        
    Ce qui marche:
    
    - REQUEST TO SERVER [ex: ':GD#' (Get Dec), ':GR#' (Get RA)']: 01000000:GD#
    Received (all data): 01000000+90:00:00#
    
    - REQUEST TO SERVER [ex: ':GD#' (Get Dec), ':GR#' (Get RA)']: 01000000:GR#
    Received (all data): 0100000015:01:48#
    - REQUEST TO SERVER [ex: ':GD#' (Get Dec), ':GR#' (Get RA)']: 01000000:GR#
    Received (all data): 0100000016:04:17#
    
    - Get Software Level l(one digit) and Version vv(two digits)
    REQUEST TO SERVER [ex: ':GD#' (Get Dec), ':GR#' (Get RA)']: 01000000:GV#
    Received (all data): 01000000510#
    
    - REQUEST TO SERVER [ex: ':GD#' (Get Dec), ':GR#' (Get RA)']: 01000000:GG#
    Received (all data): 01000000+00#
    
    - Get Maximum Velocity of both axes (N = No mvmt)
    REQUEST TO SERVER [ex: ':GD#' (Get Dec), ':GR#' (Get RA)']: 01000000:Gv#
    Received (all data): 01000000N