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.

Task Queue

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.

Task Queue Template

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.

Task Queue Collection

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 :

  1. Ouvrir le module Ordonnanceur Ekos

  2. Cliquer sur le bouton File de tâches ou Collections (l'emplacement dépend de l'intégration de l'interface)

  3. 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

  4. Sélectionner une collection et cliquer sur Charger

  5. Le visualiseur de file affichera toutes les tâches de la collection

  6. Examiner les tâches et les personnaliser si nécessaire (voir taskqueue-building-queues)

  7. Cliquer sur Démarrer pour exécuter la file

Ajouter des tâches à partir de modèles

Pour ajouter une tâche à votre file :

  1. Cliquer sur le bouton Ajouter depuis un modèle dans le visualiseur de file

  2. 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

  3. Parcourir ou rechercher le modèle souhaité

  4. Sélectionner un modèle pour prévisualiser sa description et ses paramètres

  5. 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 :

  1. La boîte de dialogue Sélection du périphérique apparaît

  2. Seuls les périphériques compatibles sont affichés (selon la correspondance d'interface)

  3. Sélectionner le périphérique dans la liste

  4. 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.

Task Queue Select Device

Personnalisation des paramètres

Après la sélection du périphérique, la boîte de dialogue Personnalisation des paramètres s'ouvre :

  1. Examiner les paramètres disponibles pour ce modèle

  2. 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.)

  3. 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

  4. Cliquer sur OK pour ajouter la tâche configurée à la file

Task Queue Customize Parameters

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 :

  1. Vérifier toutes les tâches de la file pour s'assurer de l'ordre correct

  2. Cliquer sur le bouton Démarrer dans le visualiseur de file

  3. La file commence à exécuter les tâches séquentiellement de haut en bas

  4. 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)

Task Queue Running

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 :

  1. L'erreur est enregistrée avec les détails

  2. Le système attend brièvement (délai configurable)

  3. L'action est retentée jusqu'au nombre de tentatives configuré

  4. 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 :
  1. Construire ou charger une file

  2. Cliquer sur le bouton Enregistrer la file

  3. Choisir un nom de fichier (extension *.json)

  4. Le fichier de file contient toutes les tâches et leurs configurations

Chargement d'une file :
  1. Cliquer sur le bouton Charger une file

  2. Sélectionner un fichier de file enregistré

  3. La file remplace toutes les tâches existantes

  4. 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 :

  1. 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)

  2. 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)

  3. 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)

  4. 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)

  5. 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

  6. 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 :

  1. 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)

  2. 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

  3. 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é)

  4. 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)

  5. 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