Blame view

devices_channel/README.md 9.36 KB
fc6ea9bc   Etienne Pallier   socket client pou...
1

306d4778   Etienne Pallier   NEW versionning p...
2
VERSION: 2018.0.001
11ae0484   Etienne Pallier   New versionning p...
3
4
5
6
7
8

Date: 9/10/18

By: epallier@irap.omp.eu

See section "DONE" below for version history
fc6ea9bc   Etienne Pallier   socket client pou...
9
10

********************************************************************************************
3f616717   Etienne Pallier   Nombreuses petite...
11
12
13
14
15
16
17
1) TEST

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

Ca doit se terminer par quelque chose comme:
737e50e9   Etienne Pallier   updated README
18
Ran 2 tests in 0.013s
3f616717   Etienne Pallier   Nombreuses petite...
19
20
OK

737e50e9   Etienne Pallier   updated README
21
Là, il faut arrêter avec CTRL-C (car je ne sais pas encore comment arrêter le simulateur de Telescope (serveur) autrement !)
3f616717   Etienne Pallier   Nombreuses petite...
22
23
24
25
26
27



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

737e50e9   Etienne Pallier   updated README
28
29
30
Pour lancer le client sur le telescope Gemini de Alain Klotz:
./telescope_controller_gemini_run.py
(Windows: python3 telescope_controller_gemini_run.py)
fc6ea9bc   Etienne Pallier   socket client pou...
31
32

(NB: un log "client.log" est créé et alimenté au fur et à mesure)
737e50e9   Etienne Pallier   updated README
33
(Pour avoir moins de détail, mettre la variable DEBUG à False dans le fichier telescope_controller_gemini_run.py) 
fc6ea9bc   Etienne Pallier   socket client pou...
34
35
(press ENTER to quit)

b7dc5536   Etienne Pallier   decorator @generi...
36
Examples of requests:
fc6ea9bc   Etienne Pallier   socket client pou...
37

b7dc5536   Etienne Pallier   decorator @generi...
38
39
40
41
42
43
REQUEST TO SERVER (ENTER to quit): >>> :GR#
NATIVE Command to send is ':GR#'
Sent: b'00090000:GR#\x00'
Sent 13 bytes
RECEIVED (ALL BYTES): b'0009000015:01:48#\x00'
RECEIVED (useful data): 15:01:48
fc6ea9bc   Etienne Pallier   socket client pou...
44

b7dc5536   Etienne Pallier   decorator @generi...
45
46
47
48
49
50
51
52
REQUEST TO SERVER (ENTER to quit): >>> get ra
GENERIC Command to send is get_ra
NATIVE Command to send is ':GR#'
Sent: b'00100000:GR#\x00'
Sent 13 bytes
RECEIVED (ALL BYTES): b'0010000015:01:48#\x00'
RECEIVED (useful data): 15:01:48
result is 15:01:48
fc6ea9bc   Etienne Pallier   socket client pou...
53
54


ca2504aa   Etienne Pallier   Nouvelle version ...
55

fc6ea9bc   Etienne Pallier   socket client pou...
56
********************************************************************************************
3f616717   Etienne Pallier   Nombreuses petite...
57
58
3) DEV

ca2504aa   Etienne Pallier   Nouvelle version ...
59
Pour lancer le client sur le "simulateur" de telescope (localhost, port 11110):
fc6ea9bc   Etienne Pallier   socket client pou...
60
- dans un terminal, lancer le simulateur: ./server_run.py
737e50e9   Etienne Pallier   updated README
61
- dans un autre terminal, lancer le client avec le paramètre "local": ./telescope_controller_gemini_run.py local
ca2504aa   Etienne Pallier   Nouvelle version ...
62

37e3b077   Etienne Pallier   do_init() is now ...
63
64
65
	
	
********************************************************************************************
c6f1b364   Etienne Pallier   TODOLIST updated ...
66
4) DONE
7d8f698f   Etienne Pallier   get() set() do()
67

bc955504   Etienne Pallier   greatly improved ...
68
69
70
71
72
	5/10/18:
	
	- greatly improved (plant)UML class diagram(s) 
	
	
62e41b8f   Etienne Pallier   BIG REORGANIZATIO...
73
74
75
76
77
78
79
80
	4/10/18:
	
	- BIG REORGANIZATION OF CODE
		=> new class DeviceControllerAbstract which has a component ClientChannel (of type "socket", "serial", or "usb")
	- tests ok
	- cleanup
	

f6e5fcb2   Etienne Pallier   abstract commands...
81
	2/10/18:
ff4e8d44   Etienne Pallier   improved telescop...
82
	
62e41b8f   Etienne Pallier   BIG REORGANIZATIO...
83
84
85
	- included "doctests" in tests (try it by running "cd test/ ; ./test_client_gemini.py")
	- started plc client 
	
ff4e8d44   Etienne Pallier   improved telescop...
86
87
	- improved telescope simulator server answers : do_goto(), do_move(), do_init()  
	
b5acee63   Etienne Pallier   improved telescop...
88
89
90
	- improved telescope simulator server answers
	- tests pass ok
	
b7dc5536   Etienne Pallier   decorator @generi...
91
92
	- decorator @generic_cmd
	
f6e5fcb2   Etienne Pallier   abstract commands...
93
94
95
96
97
	- abstract commands dictionary is now the default one and is ovewritable with native dictionary
	- native telescope class is now less than 300 lines (majority of code is in the abstract class so that it is easy to make a new concrete telescope class):
	=> ne contient quasiment QUE le dictionnaire des commandes natives
	- cleanup
	
62e41b8f   Etienne Pallier   BIG REORGANIZATIO...
98
	
7e82f0aa   Etienne Pallier   interpreteur de c...
99
	1/10/18:
ff4e8d44   Etienne Pallier   improved telescop...
100
	
7e82f0aa   Etienne Pallier   interpreteur de c...
101
102
103
104
105
106
	- interpreteur de cde generique et native : set ra 20:00:00 ou :GR#
	- execute_cmd():
		- execute_generic_cmd()
		- execute_native_cmd()
	- GenericResult()
	
62e41b8f   Etienne Pallier   BIG REORGANIZATIO...
107
	
7e82f0aa   Etienne Pallier   interpreteur de c...
108
	28/9/18:
ff4e8d44   Etienne Pallier   improved telescop...
109
	
23b4fbc5   Etienne Pallier   move do_init() to...
110
111
112
	- move do_init() to abstract class
	- generic return code for each command

a494f372   Etienne Pallier   clean code AND mo...
113
114
115
	- clean code
	- move do_goto() and move_dir() to abstract class

54cb16da   Etienne Pallier   implementation du...
116
117
	- doctests

62e41b8f   Etienne Pallier   BIG REORGANIZATIO...
118

7e82f0aa   Etienne Pallier   interpreteur de c...
119
	27/9/18:
ff4e8d44   Etienne Pallier   improved telescop...
120
	
31e3fa71   Etienne Pallier   do_init() finaliz...
121
122
123
124
	- GOTO
	- finalize do_init()

	- set date&time, set lat&long
37e3b077   Etienne Pallier   do_init() is now ...
125
126
	- README file enriched
    - help => liste cdes possibles
c6f1b364   Etienne Pallier   TODOLIST updated ...
127
128
129
130
131
132
133
134
135
136
    - (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 »
37e3b077   Etienne Pallier   do_init() is now ...
137
	
f886f7c6   Etienne Pallier   Telescope Generic...
138
139
    - generic commands available from client console
    - generic commands implemented
37e3b077   Etienne Pallier   do_init() is now ...
140
141
142
143
144
    
    - procedure initialize()

    - ACK (cde 6)

7d8f698f   Etienne Pallier   get() set() do()
145
146
    - 3 types of commands
    - \x00 at end
37e3b077   Etienne Pallier   do_init() is now ...
147
148

    - classe SocketClientAbstract de base
c6f1b364   Etienne Pallier   TODOLIST updated ...
149
   
62e41b8f   Etienne Pallier   BIG REORGANIZATIO...
150
151
  
  
7d8f698f   Etienne Pallier   get() set() do()
152
********************************************************************************************
c6f1b364   Etienne Pallier   TODOLIST updated ...
153
5) WORK CURRENTLY IN PROGRESS...
7d8f698f   Etienne Pallier   get() set() do()
154

54cb16da   Etienne Pallier   implementation du...
155
	- main updated
c6f1b364   Etienne Pallier   TODOLIST updated ...
156
	- tests updated
54cb16da   Etienne Pallier   implementation du...
157
158
	- comment functions args
	
37e3b077   Etienne Pallier   do_init() is now ...
159
    
37e3b077   Etienne Pallier   do_init() is now ...
160

c6f1b364   Etienne Pallier   TODOLIST updated ...
161
162
********************************************************************************************
6) TODO LIST
37e3b077   Etienne Pallier   do_init() is now ...
163

b5acee63   Etienne Pallier   improved telescop...
164
165
	- INTEGRATION INTO PYROS
	
bc955504   Etienne Pallier   greatly improved ...
166
167
	- LOG: avoir le nom du module qui logue et non pas only logs.py
	
7e82f0aa   Etienne Pallier   interpreteur de c...
168
169
	- interpreteur de cde generique (avec celme pour les values) : set ra 20:00:00

c6f1b364   Etienne Pallier   TODOLIST updated ...
170
171
172
173
174
175
176
	- 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é
	
430e6c92   Etienne Pallier   do_init() ok avec...
177
178
	- Position class
	
7d8f698f   Etienne Pallier   get() set() do()
179
    - POSITION (p103):
54cb16da   Etienne Pallier   implementation du...
180
181
	- (100) MOVE() (p104-105)
		=> en altaz ou radec 
c6f1b364   Etienne Pallier   TODOLIST updated ...
182
183
184
185
186
187
188
		=> 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)
31e3fa71   Etienne Pallier   do_init() finaliz...
189
190
191
192
193
194
195
196
197
	    - 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.
c6f1b364   Etienne Pallier   TODOLIST updated ...
198
199
	
	- (100) GOTO:
737e50e9   Etienne Pallier   updated README
200
		- bloquant ou non
c6f1b364   Etienne Pallier   TODOLIST updated ...
201
202
		- 1) goto_setmode(radec | hadec | altaz)
		- 2) goto()
c6f1b364   Etienne Pallier   TODOLIST updated ...
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
		- 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...)
		
737e50e9   Etienne Pallier   updated README
230
	- (200) generic functions return tuple with error code :
c6f1b364   Etienne Pallier   TODOLIST updated ...
231
		res = get_ra()
62e41b8f   Etienne Pallier   BIG REORGANIZATIO...
232
		=> res.res is the result
c6f1b364   Etienne Pallier   TODOLIST updated ...
233
		=> res.error is the error object : err.error_code, err.generic_msg, err.native_msg
62e41b8f   Etienne Pallier   BIG REORGANIZATIO...
234
235
236
237
238
		=> ou plutot:
			res,error = get_ra()
			res,_ = get_ra() # pour ignorer le code erreur
			res is the result
			error is the error object
c6f1b364   Etienne Pallier   TODOLIST updated ...
239
240
241
242
243
244
245
		
	- (200) PLC abstract client
	
	- (100) input commands format : 
		- get ra
		- set ra "2h3m27s" => converted by celme.Angle(ra).deg()
		
62e41b8f   Etienne Pallier   BIG REORGANIZATIO...
246
	- (100) _cmds = list of functions (???) 
c6f1b364   Etienne Pallier   TODOLIST updated ...
247
248
249
250
251
252

	- remplacer utf-8 par unicode ou iso...
	
    - cdes 05 (p100):
        - cde 05 => return long list of parameters (= GROS GET)
        - ENQ = 05
7d8f698f   Etienne Pallier   get() set() do()
253
        
c6f1b364   Etienne Pallier   TODOLIST updated ...
254
255
256
257
    - Table d'attributs pour chaque telescope (config)
         
    - _connect() ou connect() ?
    
7d8f698f   Etienne Pallier   get() set() do()
258
259
260
261
    - Implémenter les commandes NATIVES (non LX-200) :
        - < ou >, termine par ':' + checksum + #
    

37e3b077   Etienne Pallier   do_init() is now ...
262

7d8f698f   Etienne Pallier   get() set() do()
263

7d8f698f   Etienne Pallier   get() set() do()
264
265
266
267
268
269
270
271
272








********************************************************************************************
37e3b077   Etienne Pallier   do_init() is now ...
273
7) INFORMATIONS
7d8f698f   Etienne Pallier   get() set() do()
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315


    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

    
    
ca2504aa   Etienne Pallier   Nouvelle version ...

fc6ea9bc   Etienne Pallier   socket client pou...

fc6ea9bc   Etienne Pallier   socket client pou...