Système de file de tâches¶
Le système de file de tâches est un cadre d'automatisation moderne et flexible qui remplace les scripts de démarrage et d'arrêt traditionnels par un système d'exécution de tâches configurable basé sur des modèles. Il fournit une interface visuelle pour construire des séquences d'opérations automatisées pouvant contrôler l'équipement de votre observatoire via INDI. Il est accessible depuis l'ordonnanceur Ekos.

Avantages principaux¶
Le système de file de tâches offre plusieurs avantages par rapport aux scripts traditionnels :
Gestion visuelle : créer et surveiller des séquences de tâches via une interface graphique intuitive
Réutilisabilité : utiliser des modèles prédéfinis pour les opérations courantes sans écrire de code
Gestion des erreurs : logique de nouvelle tentative intégrée et réponses aux échecs configurables
Compatibilité des périphériques : association automatique des modèles aux périphériques disponibles
Surveillance de la progression : mises à jour de statut en temps réel et journaux d'exécution détaillés
Collections : ensembles de tâches prédéfinies pour le démarrage, l'arrêt et d'autres scénarios courants
Flexibilité : combiner des modèles ou créer des variantes personnalisées sans programmation
Quand utiliser la file de tâches¶
Le système de file de tâches est idéal pour :
Les procédures de démarrage et d'arrêt de l'observatoire
Les séquences de montée et descente en température de l'équipement
Les opérations entre les tâches (par ex. stationner la monture entre deux tâches de l'ordonnanceur)
L'automatisation des réponses météorologiques
Toute tâche répétitive de contrôle de l'équipement
Vous pouvez toujours utiliser des scripts shell traditionnels si nécessaire via le type d'action SCRIPT, combinant la flexibilité des scripts avec la structure de la file de tâches.
Concepts clés
Comprendre les modèles et les tâches¶
Le système de file de tâches est construit autour de deux concepts fondamentaux :
- Modèles
Les modèles sont des plans réutilisables qui définissent ce qu'une tâche doit faire. Ils précisent :
La séquence d'actions à exécuter
Les paramètres configurables (avec valeurs par défaut et contraintes)
Les interfaces de périphérique INDI prises en charge
La catégorie et la description pour l'organisation
Les modèles se déclinent en deux types :
Modèles système : modèles prédéfinis fournis avec KStars pour les opérations courantes (stationner la monture, activer le refroidissement, etc.)
Modèles utilisateur : modèles personnalisés que vous créez en sélectionnant un périphérique et en spécifiant quelle propriété définir ou évaluer, avec les valeurs cibles et les conditions
- Tâches
Les tâches sont des instances spécifiques créées à partir de modèles. Lorsque vous ajoutez un modèle à la file, vous créez une tâche en :
Sélectionnant quel périphérique utiliser (par ex. quelle monture ou caméra)
Définissant les valeurs des paramètres (délais d'attente, températures cibles, etc.)
Planifiant optionnellement quand elle doit s'exécuter
Chaque tâche dans la file a son propre état d'exécution, suivant sa progression et les éventuelles erreurs.

Comprendre les actions¶
Chaque tâche est composée d'une ou plusieurs actions qui s'exécutent séquentiellement. Le système de file de tâches prend en charge cinq types d'actions :
- Action SET
Définit une propriété INDI à une valeur spécifique. Par exemple, mettre un interrupteur sur ON, modifier une propriété numérique ou mettre à jour du texte. L'action peut optionnellement attendre que l'état de la propriété devienne OK avant de se terminer.
- Action EVALUATE
Attend qu'une condition soit remplie en interrogeant une propriété INDI. Utile pour attendre que l'équipement atteigne un état cible (par ex. température stabilisée, monture stationnée, coupole ouverte). Prend en charge différents types de conditions (égal, supérieur à, dans une plage, etc.).
- Action DELAY
Met en pause l'exécution pendant une durée spécifiée. Utile pour laisser l'équipement se stabiliser, limiter le débit des opérations ou ajouter des intervalles temporels entre les actions.
- Action START
Contrôle quand une tâche commence son exécution. Peut être réglée pour démarrer immédiatement (dès que possible) ou à une date/heure planifiée. Utile pour l'automatisation basée sur le temps.
- Action SCRIPT
Exécute un script ou programme externe. Cela permet l'intégration de logique personnalisée ou d'opérations non directement prises en charge par les propriétés INDI. L'action surveille le code de sortie du script et capture stdout/stderr pour les journaux.
Configuration des actions¶
Toutes les actions prennent en charge des options de configuration communes :
Délai d'attente : durée maximale d'attente pour l'achèvement de l'action (en secondes)
Tentatives : nombre de tentatives si l'action échoue
Action en cas d'échec : que faire si l'action échoue après toutes les tentatives :
ABORT_QUEUE : arrêter toute la file (par défaut pour les opérations critiques)
CONTINUE : enregistrer l'erreur mais continuer vers l'action suivante
SKIP_TO_NEXT_TASK : ignorer les actions restantes de la tâche actuelle et passer à la tâche suivante
Comprendre les collections¶
Les collections sont des ensembles prédéfinis de tâches conçues pour des scénarios courants. Elles fournissent des solutions prêtes à l'emploi sans avoir à construire des files de zéro.
Le système fournit deux collections :
Démarrage de l'observatoire : déstationne la coupole, déstationne la monture et ouvre le capuchon antipoussière (si applicable)
Arrêt de l'observatoire : stationne la monture, stationne la coupole et ferme le capuchon antipoussière (si applicable)
Les collections sont chargées comme des files complètes, prêtes à être exécutées. Vous pouvez charger une collection et la personnaliser en ajoutant, supprimant ou réordonnant des tâches.

Correspondance des interfaces de périphériques¶
Les modèles spécifient les interfaces de périphérique INDI qu'ils prennent en charge (par ex. Télescope, CCD, Coupole, Météo). Lorsque vous ajoutez un modèle à la file, le système présente automatiquement uniquement les périphériques compatibles.
Par exemple, un modèle « Stationner la monture » requiert l'interface Télescope ; un modèle « Activer le refroidissement » requiert l'interface CCD ; un modèle « Définir l'azimut de la coupole » requiert l'interface Coupole.
Cela garantit que vous ne pouvez pas accidentellement affecter des périphériques incompatibles à des tâches.
Prise en main
Démarrage rapide : charger une collection¶
La façon la plus rapide de commencer à utiliser la file de tâches est de charger une collection prédéfinie :
Ouvrir le module Ordonnanceur Ekos
Cliquer sur le bouton File de tâches ou Collections (l'emplacement dépend de l'intégration de l'interface)
Dans la boîte de dialogue Collections, parcourir les collections disponibles :
Démarrage de l'observatoire : séquence de démarrage complète pour votre équipement
Arrêt de l'observatoire : procédures d'arrêt sécurisées
Arrêt d'urgence : arrêt rapide pour les alertes météorologiques
Refroidissement de la caméra : gestion contrôlée de la température de la caméra
Sélectionner une collection et cliquer sur Charger
Le visualiseur de file affichera toutes les tâches de la collection
Examiner les tâches et les personnaliser si nécessaire (voir taskqueue-building-queues)
Cliquer sur Démarrer pour exécuter la file
Ajouter des tâches à partir de modèles¶
Pour ajouter une tâche à votre file :
Cliquer sur le bouton Ajouter depuis un modèle dans le visualiseur de file
La bibliothèque de modèles s'ouvre, affichant les modèles disponibles organisés par catégorie :
Monture : stationner, déstationner.
Caméra : refroidissement, réchauffement.
Coupole : stationner, déstationner
Capuchon antipoussière : fermer, ouvrir
Parcourir ou rechercher le modèle souhaité
Sélectionner un modèle pour prévisualiser sa description et ses paramètres
Cliquer sur Ajouter à la file ou double-cliquer sur le modèle
Sélection du périphérique¶
Après avoir sélectionné un modèle, vous serez invité à choisir quel périphérique utiliser :
La boîte de dialogue Sélection du périphérique apparaît
Seuls les périphériques compatibles sont affichés (selon la correspondance d'interface)
Sélectionner le périphérique dans la liste
Cliquer sur OK
Par exemple, si vous avez sélectionné un modèle « Stationner la monture », vous ne verrez que les périphériques de type télescope. Si vous avez plusieurs montures connectées, choisissez celle que cette tâche doit contrôler.

Personnalisation des paramètres¶
Après la sélection du périphérique, la boîte de dialogue Personnalisation des paramètres s'ouvre :
Examiner les paramètres disponibles pour ce modèle
Chaque paramètre affiche :
Nom : identifiant du paramètre
Description : ce que ce paramètre contrôle
Valeur par défaut : valeur prédéfinie du modèle
Contraintes : valeurs min/max ou options autorisées
Unité : unité de mesure (secondes, degrés, °C, etc.)
Modifier les paramètres selon les besoins :
Délais d'attente : ajuster selon le temps de réponse de votre équipement
Valeurs cibles : définir des valeurs spécifiques (températures, positions, etc.)
Nombre de tentatives : augmenter pour les connexions peu fiables
Cliquer sur OK pour ajouter la tâche configurée à la file

Paramètres courants que vous rencontrerez :
timeout : secondes maximales d'attente (par défaut : 30-60 s)
retries : nombre de tentatives (par défaut : 2)
target_temp : température cible pour les caméras (°C)
settle_time : délai pour permettre la stabilisation de l'équipement (secondes)
Gestion des éléments de la file¶
Une fois les tâches dans la file, vous pouvez les gérer :
- Réordonner les tâches
Sélectionner une tâche dans le tableau de la file
Cliquer sur Monter ou Descendre pour changer l'ordre d'exécution
Les tâches s'exécutent de haut en bas
- Supprimer des tâches
Sélectionner une ou plusieurs tâches
Cliquer sur Supprimer pour les retirer de la file
- Modifier des tâches
Double-cliquer sur une tâche pour afficher/modifier ses paramètres
Modifier l'affectation du périphérique ou les valeurs des paramètres
Les modifications prennent effet immédiatement
- Vider la file
Cliquer sur Effacer pour supprimer toutes les tâches
Utile pour repartir de zéro ou charger une collection différente
Exécution de la file
Exécuter la file¶
Une fois votre file constituée, vous pouvez l'exécuter :
Vérifier toutes les tâches de la file pour s'assurer de l'ordre correct
Cliquer sur le bouton Démarrer dans le visualiseur de file
La file commence à exécuter les tâches séquentiellement de haut en bas
Surveiller la progression en temps réel via les indicateurs de statut
Contrôles de la file :
Démarrer : lancer l'exécution de la file (disponible uniquement quand la file est inactive)
Pause : interrompre temporairement l'exécution (l'action en cours se termine d'abord)
Reprendre : continuer une file mise en pause
Arrêter : arrêter gracieusement la file (permet à la tâche en cours de se terminer)
Abandonner : terminer immédiatement l'exécution (peut laisser l'équipement dans un état intermédiaire)

Comprendre les indicateurs de statut¶
Chaque tâche et action affiche un indicateur de statut :
Statut de la tâche :
EN ATTENTE (Gris) : tâche en attente d'exécution
PLANIFIÉE (Bleu) : tâche planifiée pour une heure future (action START avec date/heure)
EN COURS (Jaune/Orange) : tâche en cours d'exécution
TERMINÉE (Vert) : tâche terminée avec succès
ÉCHOUÉE (Rouge) : tâche ayant échoué après toutes les tentatives
ABANDONNÉE (Rouge) : tâche arrêtée manuellement
IGNORÉE (Gris) : tâche ignorée en raison des conditions
Statut de l'action :
EN ATTENTE : action pas encore démarrée
EN COURS : action en cours d'exécution
TERMINÉE : action terminée avec succès
ÉCHOUÉE : action ayant échoué après les tentatives
ABANDONNÉE : action abandonnée manuellement
Surveillance de la progression¶
Le visualiseur de file offre plusieurs façons de surveiller l'exécution :
- Tableau de la file
Chaque ligne de tâche affiche :
L'icône et le texte de statut actuels
Le périphérique contrôlé
Le pourcentage de progression
L'action en cours d'exécution
- Barre de statut
Le bas de la fenêtre affiche :
Le statut global de la file (INACTIVE, EN COURS, EN PAUSE, TERMINÉE, ABANDONNÉE)
La barre de progression indiquant le pourcentage d'achèvement
Statistiques : X tâches sur Y terminées, Z échouées
- Panneau de journal
Le journal d'exécution détaillé affiche :
L'horodatage de chaque événement
Les messages de démarrage/achèvement des actions
Les changements de propriétés et les communications INDI
Les messages d'erreur et les tentatives de réessai
La sortie du script (pour les actions SCRIPT)
- Détails de l'action
Développer une tâche dans le tableau pour voir :
La liste de toutes les actions de la tâche
Le statut de chaque action
Les valeurs actuellement définies ou évaluées
Le compte à rebours du délai d'attente pour les actions de longue durée
Gestion des erreurs et récupération¶
Le système de file de tâches inclut une gestion robuste des erreurs :
- Tentatives automatiques
Lorsqu'une action échoue :
L'erreur est enregistrée avec les détails
Le système attend brièvement (délai configurable)
L'action est retentée jusqu'au nombre de tentatives configuré
Si toutes les tentatives échouent, l'action en cas d'échec est exécutée
- Actions en cas d'échec
Selon la configuration d'échec de l'action :
- ABORT_QUEUE (Par défaut pour les opérations critiques)
Arrête toute la file immédiatement
Permet une intervention sécurisée avant de continuer
Utilisé pour : stationnement de la monture, arrêts d'urgence, contrôles de sécurité critiques
- CONTINUE (Pour les opérations non critiques)
Enregistre l'erreur
Passe à l'action suivante de la tâche
Utilisé pour : optimisations optionnelles, opérations réalisées au mieux
- SKIP_TO_NEXT_TASK
Ignore les actions restantes de la tâche actuelle
Continue avec la tâche suivante dans la file
Utilisé pour : quand les prérequis d'une tâche échouent mais que d'autres tâches peuvent toujours s'exécuter
- Intervention manuelle
Pendant l'exécution, vous pouvez :
Mettre en pause la file pour enquêter sur les problèmes
Abandonner une action problématique
Supprimer ou réordonner les tâches en attente
Reprendre l'exécution après avoir effectué des corrections
- Idempotence
Beaucoup d'actions vérifient si leur opération est déjà terminée avant de s'exécuter :
Monture déjà stationnée ? Ignorer l'action de stationnement
Température déjà à la cible ? Ignorer l'action de refroidissement
La propriété a déjà la valeur souhaitée ? Ignorer l'action de définition
Cela évite les opérations inutiles et prend en charge les réexécutions de la file.
Persistance de la file¶
Enregistrer et charger des files¶
Vous pouvez enregistrer des files pour une utilisation ultérieure :
- Enregistrement d'une file :
Construire ou charger une file
Cliquer sur le bouton Enregistrer la file
Choisir un nom de fichier (extension *.json)
Le fichier de file contient toutes les tâches et leurs configurations
- Chargement d'une file :
Cliquer sur le bouton Charger une file
Sélectionner un fichier de file enregistré
La file remplace toutes les tâches existantes
Examiner et démarrer quand prêt
- Format du fichier de file
Les fichiers de file sont au format JSON et incluent :
Les définitions des tâches avec les affectations de périphériques
Les valeurs des paramètres pour chaque tâche
L'ordre des tâches et les informations de planification
Les métadonnées (date de création, description)
Cas d'utilisation courants
Séquence de démarrage de l'observatoire¶
Une séquence de démarrage typique prépare tout l'équipement pour l'imagerie :
Exemple de file de démarrage :
Déstationner la coupole (si applicable)
Modèle : « Coupole - Déstationner »
Périphérique : votre contrôleur de coupole
Délai d'attente : 60 secondes
Action en cas d'échec : ABORT_QUEUE (impossible de continuer sans accès à la coupole)
Déstationner la monture
Modèle : « Monture - Déstationner »
Périphérique : votre monture de télescope
Délai d'attente : 30 secondes
Action en cas d'échec : ABORT_QUEUE (critique pour toutes les opérations)
Activer le suivi de la monture
Modèle : « Monture - Activer le suivi »
Périphérique : votre monture de télescope
Délai d'attente : 10 secondes
Action en cas d'échec : CONTINUE (peut être activé plus tard si nécessaire)
Activer le refroidissement de la caméra
Modèle : « Caméra - Activer le refroidissement »
Périphérique : votre caméra CCD
Paramètres : - target_temp : -15°C (ajuster selon votre caméra) - ramp_rate : 2°C/minute (prévient le choc thermique)
Délai d'attente : 600 secondes (10 minutes pour le refroidissement)
Action en cas d'échec : CONTINUE (peut imager sans refroidissement optimal)
Attendre la stabilisation de la température
Modèle : « Caméra - Attendre la température »
Périphérique : votre caméra CCD
Paramètres : - tolerance : ±1°C - settle_time : 60 secondes
Délai d'attente : 300 secondes
Action en cas d'échec : CONTINUE
Allumer le panneau de flats (si applicable)
Modèle : « Panneau de flats - Activer »
Périphérique : votre panneau de flats
Action en cas d'échec : CONTINUE (équipement optionnel)
Séquence d'arrêt de l'observatoire¶
Une séquence d'arrêt sécurisée protège l'équipement et économise l'énergie :
Exemple de file d'arrêt :
Désactiver le refroidissement de la caméra (montée en température progressive)
Modèle : « Caméra - Désactiver le refroidissement »
Périphérique : votre caméra CCD
Paramètres : - ramp_rate : 1°C/minute (montée lente en température pour éviter la condensation)
Action en cas d'échec : CONTINUE (important mais pas critique)
Attendre le réchauffement de la caméra
Modèle : « Caméra - Attendre la température ambiante »
Paramètres : - target : ambiant + 2°C - timeout : 900 secondes (15 minutes)
Action en cas d'échec : CONTINUE
Stationner la monture
Modèle : « Monture - Stationner »
Périphérique : votre monture de télescope
Délai d'attente : 60 secondes
Action en cas d'échec : ABORT_QUEUE (critique pour la sécurité)
Stationner la coupole (si applicable)
Modèle : « Coupole - Stationner »
Périphérique : votre contrôleur de coupole
Délai d'attente : 120 secondes
Action en cas d'échec : ABORT_QUEUE (critique pour la protection)
Couper l'alimentation de l'équipement (via un script)
Modèle : « Script - Exécuter »
Paramètres : - script_path : /chemin/vers/power_off.sh
Délai d'attente : 30 secondes
Action en cas d'échec : CONTINUE (enregistrer l'erreur pour intervention manuelle)
Migration depuis les scripts
Comprendre la transition¶
Le système de file de tâches remplace les scripts shell traditionnels de démarrage/arrêt par une approche plus structurée :
- Scripts traditionnels :
Scripts bash/python écrits manuellement
Exécutent les commandes séquentiellement
Gestion des erreurs limitée
Aucun retour visuel pendant l'exécution
Difficiles à modifier sans connaissances en programmation
- Système de file de tâches :
Composition de tâches basée sur des modèles
Construction et surveillance visuelles
Gestion intégrée des tentatives et des erreurs
Suivi de la progression et mises à jour de statut
Modifiable via l'interface graphique
Conversion des opérations de script¶
Les opérations de script courantes peuvent être converties en actions de file de tâches :
Changements de propriétés INDI
- Ancien script :
indi_setprop "Telescope.TELESCOPE_PARK.PARK=On"
- Nouvelle file de tâches :
Modèle : « Monture - Stationner »
Type d'action : SET
Périphérique : Telescope
Propriété : TELESCOPE_PARK
Élément : PARK
Valeur : On
Attentes conditionnelles
- Ancien script :
while [ $(indi_getprop "CCD.CCD_TEMPERATURE.CCD_TEMPERATURE_VALUE") -gt -10 ]; do sleep 5 done
- Nouvelle file de tâches :
Modèle : « Caméra - Attendre la température »
Type d'action : EVALUATE
Périphérique : CCD
Propriété : CCD_TEMPERATURE.CCD_TEMPERATURE_VALUE
Condition : LESS_THAN
Cible : -10
Intervalle d'interrogation : 5 secondes
Délais temporels
- Ancien script :
sleep 60
- Nouvelle file de tâches :
Modèle : « Délai »
Type d'action : DELAY
Durée : 60
Unité : SECONDS
Scripts externes
- Ancien script :
/usr/local/bin/dome_control.sh open- Nouvelle file de tâches :
Modèle : « Script - Exécuter »
Type d'action : SCRIPT
Chemin du script : /usr/local/bin/dome_control.sh
Arguments : open