PYROS (PYthon Robotic Observatory System)
A Python software for the management of a Telescope control center
COPYRIGHT (C) 2012-2018 IRAP (Institut de Recherche en Astrophysique et Planetologie) Toulouse - France
Authors : etienne.pallier@irap.omp.eu, alain.klotz@irap.omp.eu, patrick.maeght@irap.omp.eu, paul.carensac@epitech.eu, alexandru.burlacu11@gmail.com, jeremy.barneron@gmail.com, quentin.durand@epitech.eu
GPL License (http://www.gnu.org/copyleft/gpl.html) - See the file LICENSE.txt
This software runs with Python 3 and Django 2
To install it, go into the "install/" folder, and read the document INSTALLATION (better is to go to https://docs.google.com/document/d/1m7wUGMUPNPE2gdsQNLILDeF738oIk9OlQjVjNzQyWA8/edit#heading=h.aqi3gs3yp2s3)
This file is written in the markdown format (see https://openclassrooms.com/en/courses/1304236-redigez-en-markdown, https://michelf.ca/projets/php-markdown/syntaxe, https://daringfireball.net/projects/markdown/syntax)
Tested platforms
This software has been tested and validated with the following configurations :
Centos 7 (test server planetoweb2) :
- Python: 3.5
- Mysql:
- Apache:
Ubuntu 14LTS (Paul Carensac's laptop) :
- Python: 3.5
- Mysql: 5.5.46
- Apache:
Ubuntu 16.04 LTS (Jérémy Barneron's laptop) :
- Python: 3.5.2
- Mysql: 5.7.15
- Apache: 2.4.18
- Django: 1.10.2
Mac OS 10.11.4 (Etienne Pallier's laptop)
- Python: 3.5
- XAMPP for OS X 5.6.3, which comes with :
- MySQL: 5.6.21
- Apache 2.4.10
Project structure
- src/ : conteneur du projet (le nom est sans importance)
- manage.py : utilitaire en ligne de commande permettant differentes actions sur le projet
- pyros/ : the actual Python package of the project
- settings.py : project settings and configuration
- urls.py : déclaration des URLs du projet
- wsgi.py : point d'entrée pour déployer le projet avec WSGI
- database/ : database configuration and documentation
- doc/ : project documentation
- install/ : project installation howto
- private/ : the content of this folder is private and thus not commited to git ; it should contain your Python3 virtual environment
- simulators/ : the devices simulators
- public/ : this folder contains all public files like the web html files
- static/
LAST VERSION
Date: 22/03/2019
Author: E. Pallier
VERSION: 0.20.25
Comment: pyros.py peut lancer plusieurs agents (A et B) en même temps (+ flush_commands + test)
- Scenario de test :
- S'assurer que AgentA.py et AgentB.py sont en mode simulateur (SIMULATOR_MODE=True)
- lancer agents A et B : ./pyros.py start agentA,agentB
- attendre 1 à 2mn jusqu'à obtenir les 2 résultats suivants:
(AgentA): Finished testing => result is ok
(AgentB): Finished testing => result is ok
- Mode opératoire pour lancer un agent :
- S'assurer que AgentA.py et AgentB.py ne sont PAS en mode simulateur (SIMULATOR_MODE=False)
- pour lancer agentA seulement : ./pyros.py start agentA [-c configfile]
- pour lancer plusieurs agents : ./pyros.py start agentA,agentB,... [-c configfile]
(ou encore: activer l'environnement virtuel, puis lancer "cd src/agent/ ; ./AgentA.py configfile")
- pour utiliser thread ou processus : il suffit de mettre la constante RUN_IN_THREAD de AgentA (ou AgentB ou AgentX) à False ou True
- Autres remarques:
- send_command() implemented
- EVAL is now a generic command
- mode DEBUG (2 niveaux pour print)
- Nouvelle commande "flush_commands" pour purger les commmandes en attente
- routine_process() implemented
- Eval command implemented
- Timeout géré : si commande pas exécutée en temps raisonnable => la même commande est ré-exéuctée à l'itération suivante
- self.print() pour les agents
- Chaque agent a son propre scenario de commandes à envoyer
- GROSSE OPTIMISATION : plus besoin du script intermédiaire "start_agent.py" !!!
==> pyros.py lance directement "cd src/agent/ ; python AgentX.py"
- TECHNICAL DOC: tinyurl.com/pyros-doc
- CURRENT STATUS (TODO LIST) : https://projects.irap.omp.eu/projects/pyros/issues?query_id=257
- CURRENT VERSION (v0.20): https://projects.irap.omp.eu/versions/208
- ROADMAP: https://projects.irap.omp.eu/projects/pyros/roadmap
- (OLD DEV PLAN: https://docs.google.com/spreadsheets/d/1Gy6c-9fhUDBx5Bc6YrcGvfgP-HukWdhUh8oT11_y88g/edit#gid=664458270)
- (OLD, TO BE UPDATED) https://projects.irap.omp.eu/versions/158
MAIN CHANGES (MILESTONES):
Full list of commits: https://gitlab.irap.omp.eu/epallier/pyros/commits/master
The list below is obsolete. The new official changes history is here : https://tinyurl.com/pyros-dev#heading=h.2r55bflctpt5
17/01/19 : Version 20190117.0.000.0 (EP)
- NO MORE CELERY (removed from everywhere)
10/10/18 : Version 2018.0.011 (E. Pallier)
- NEW versionning plan : YYYYMMDD.M.mmm.b
- YYYYMMDD = Day (UTC)
- M = Major version number
- mmm = Minor version number
- b = Bugfix number
- Global Version number is now in src/init.py (idem for each pyros application)
- new devices_channel/ folder containing the new DeviceControllerAbstract and ClientChannelAbstract classes (independant from pyros for the moment, but will soon be integrated)
- new src/utils/celme (celestial mecanics) library from Alain Klotz (more and more used inside pyros)
- better README.md formatted file
14/05/18 : Version 2018.0.001 (Q. Durand)
- Update all dependencies, update to django 2 and work in progress on the dashboard
23/03/18 Version 0.16.11 (E. Pallier)
- All unit tests now pass WITHOUT celery (./manage.py test or ./pyros.py test)
22/03/18 Version 0.16.10 (E. Pallier)
- New global variable USE_CELERY (false by default) in pyros.settings
13/03/18 Version 0.16.7 (E. Pallier)
- Each agent (envmonitor, majordome, alert) can be started independently with a script (new script start_agent in each agent directory)
- New command "pyros start" to start pyros in different ways (different options : everything or only some components)
22/02/18 Version 0.16.5 (E. Pallier)
- Better isolation of Monitoring for easier testing (+ tuto)
01/02/18 Version 0.16.3 (Q. Durand)
- New installation script src/install/install.py multiplatform (Lin-Mac-Win10, but also tested on Win7)
24/02/17 Version 0.15.1 - Added comments (Jeremy Barneron)
- Details added to describe the functions behavior
- https://projects.irap.omp.eu/versions/158
18/01/17 Version 0.15 - Execution with simulators
- Simulators evolution / majordome / monitoring / installer
- https://projects.irap.omp.eu/versions/158
15/12/16 Version 0.14.1 - Final version 0.14
- Scenarist first versions
- https://projects.irap.omp.eu/versions/152
02/08/16 Version 0.12.4 - Final version 0.12 Simulators first versions https://projects.irap.omp.eu/versions/129
20/07/16 Version 0.11.4 - Final version 0.11 Alert manager second version https://projects.irap.omp.eu/versions/128
05/07/16 Version 0.10.2 - Final version 0.10 Monitoring first version https://projects.irap.omp.eu/versions/120
05/07/16 Version 0.9.2 - Final version 0.9 Analysis skeleton https://projects.irap.omp.eu/versions/119
28/06/16 Version 0.8.3 - Final version 0.8 Execution (majordome & obs manager), first version https://projects.irap.omp.eu/versions/118
23/06/16 Version 0.7.8 - Final version 0.7 Routine manager, first version https://projects.irap.omp.eu/versions/117
20/05/16 Version 0.6.1 - Final version 0.6 Complete user management https://projects.irap.omp.eu/versions/123
20/05/16 Version 0.5.4 - Final version 0.5 Complete alert manager first version https://projects.irap.omp.eu/versions/116
20/05/16 Version 0.4.2 - Final version 0.4 Complete scheduler update https://projects.irap.omp.eu/versions/90
10/05/16 Version 0.3.12 - Final version 0.3 Complete workflow skeleton https://projects.irap.omp.eu/versions/88
13/04/16 Version 0.2.7 - Final version 0.2 Integrate PLANNER module https://projects.irap.omp.eu/versions/97
12/04/16 Version 0.1.1 - Final version 0.1 Multi-platform skeleton easy install + admin interface on database + start dashboard https://projects.irap.omp.eu/versions/87
04/04/16 Installable version (install script)
TODO LIST (URGENT)
DEMO:
- SIMULATOR:
- (AC) réserver cette page à un login superuser sinon n'importe qui pourra faire n'importe quoi à distance...
- 1) PLC :
- ajouter boutons "START" et "STOP"
- implémenter weather et site OK/KO
- 2) TELE : implémenter "start" et "stop"
- 3) General : implement set to night/day