Wachtrijsysteem voor taken

Het wachtrijsysteem voor taken is een modern, flexibel framework voor automatiserings dat traditionele opstart- en afsluitscripts vervangt met een op sjablonen gebaseerd, te configureren systeem voor het uitvoeren van taken. Het levert een visueel interface voor het bouwen van sequenties van geautomatiseerde bewerkingen die uw apparatuur in het observatorium kunnen besturen via INDI. Het is toegankelijk vanuit de Ekos-planner.

|Wachtrij voor taken|

Hoofdvoordelen

Het takenwachtrijsysteem biedt verschillende voordelen ten opzichte van traditionele scripting:

  • Visueel beheer: bouw en bewaak taaksequenties via een intuïtieve grafische interface.

  • Herbruikbaarheid: gebruik vooraf gemaakte sjablonen voor veelvoorkomende bewerkingen zonder code te hoeven schrijven.

  • Foutafhandeling: ingebouwde logica voor opnieuw proberen en configureerbare foutmeldingen

  • Apparaatcompatibiliteit: automatische afstemming van sjablonen op beschikbare apparaten

  • Voortgangsbewaking: realtime statusupdates en gedetailleerde uitvoeringslogboeken.

  • Verzamelingen: voorgedefinieerde takensets voor opstarten, afsluiten en andere veelvoorkomende scenario’s.

  • Flexibiliteit: combineer sjablonen of maak aangepaste varianten zonder te programmeren.

Wanneer een wachtrij voor taken gebruiken

Het takenwachtrijsysteem is ideaal voor:

  • Procedures voor opstarten en afsluiten van observatorium

  • Opwarm- en afkoelsequenties voor de apparatuur

  • Bewerkingen tussen taken (bijv. het parkeren van een opstelling tussen planner-taken)

  • Automatisering van antwoord op het weer

  • Alle zich herhalende taken met betrekking tot de bediening van apparatuur.

U kunt, indien nodig, nog steeds traditionele shellscripts gebruiken via het actietype SCRIPT, waarmee u de flexibiliteit van scripting combineert met de structuur van de takenwachtrij.

Sleutelconcepten

Sjablonen en taken begrijpen

Het takenwachtrijsysteem is gebouwd op twee fundamentele concepten:

Sjablonen

Sjablonen zijn herbruikbare blauwdrukken die definiëren wat een taak zou moeten doen. Ze specificeren:

  • De sequentie van uit te voeren acties

  • Instelbare parameters (met standaarden en beperkingen)

  • Welke INDI-apparaatinterfaces worden ondersteund

  • Categorie en beschrijving voor organisatie

Sjablonen komen in twee typen:

  • Systeemsjablonen: voorgeprogrammeerde templates die bij KStars worden geleverd voor veelvoorkomende handelingen (opstelling vergrendelen, koeling inschakelen, enz.).

  • Gebruikerssjablonen: aangepaste sjablonen die u maakt door een apparaat te selecteren en op te geven welke eigenschap moet worden ingesteld of geëvalueerd, samen met de doelwaarden en voorwaarden.

Taken

Taken zijn specifieke exemplaren die zijn gemaakt op basis van sjablonen. Wanneer u een sjabloon aan de wachtrij toevoegt, maakt u een taak aan door:

  • Het kiezen van het te gebruiken apparaat (bijv. welke opstelling of camera)

  • Parameterwaarden instellen (time-outs, streeftemperaturen, enz.)

  • Optioneel kunt u plannen wanneer het moet worden uitgevoerd

Elke taak in de wachtrij heeft zijn eigen uitvoeringsstatus, die de voortgang en eventuele fouten bijhoudt.

|Wachtrij voor taken|

Acties begrijpen

Elke taak bestaat uit een of meer acties die sequentieel worden uitgevoerd. Het takenwachtrijsysteem ondersteunt vijf typen acties:

SET actie

Stelt een INDI-eigenschap in op een specifieke waarde. Bijvoorbeeld het aanschakelen van een schakelaar, het wijzigen van een numerieke eigenschap of het bijwerken van een tekst. De actie kan optioneel wachten tot de status van de eigenschap OK is voordat deze wordt voltooid.

EVALUATE actie

Wacht tot aan een voorwaarde is voldaan door een INDI-eigenschap te bevragen. Handig om te wachten tot apparatuur een gewenste status bereikt (bijv. temperatuur gestabiliseerd, opstelling vergrendeld, koepel geopend). Ondersteunt verschillende voorwaardetypen (gelijk aan, groter dan, binnen bereik, enz.).

DELAY actie

Pauzeert de uitvoering gedurende een bepaalde tijd. Handig om apparatuur te laten stabiliseren, bewerkingen te beperken of tijdsinterval tussen acties in te bouwen.

START actie

Hiermee wordt bepaald wanneer een taak begint met uitvoeren. Kan worden ingesteld om direct te starten (zo snel mogelijk) of op een geplande datum/tijd. Handig voor tijdsgebonden automatisering.

SCRIPT actie

Voert een extern script of programma uit. Dit maakt de integratie mogelijk van aangepaste logica of bewerkingen die niet direct worden ondersteund door INDI-eigenschappen. De actie bewaakt de exitcode van het script en legt stdout/stderr vast voor logboekregistratie.

Configuratie van actie

Alle acties ondersteunen algemene configuratie-opties:

  • Time-out: maximale wachttijd voor het voltooien van een actie (in seconden)

  • Opnieuw proberen: aantal pogingen om de actie opnieuw uit te voeren als deze mislukt.

  • Actie bij mislukking: wat te doen als de actie na alle pogingen mislukt:

    • WACHTRIJ_AFBREKEN: stop de volledige wachtrij (standaard voor kritieke bewerkingen)

    • CONTINUE: registreer de fout, maar ga verder met de volgende actie

    • OVERSLAAN_NAAR_VOLGENDE_TAAK: Sla de overblijvende acties over in de huidige taak en ga naar de volgende taak

Verzamelingen begrijpen

Verzamelingen zijn vooraf gedefinieerde sets taken, ontworpen voor veelvoorkomende scenario’s. Ze bieden snelle oplossingen zonder dat u wachtrijen helemaal zelf hoeft op te bouwen.

Het systeem levert twee verzamelingen:

  • Opstartprocedure observatorium: ontgrendel de koepel, ontgrendel de opstelling en open de stofkap (indien van toepassing)

  • Afsluiting van het observatorium: vergrendel de opstelling, vergrendel de koepel en sluit de stofkap (indien van toepassing)

Verzamelingen worden geladen als complete wachtrijen, klaar om te worden uitgevoerd. U kunt een verzameling laden en deze vervolgens aanpassen door taken toe te voegen, te verwijderen of de volgorde ervan te wijzigen.

|Takenwachtrijverzameling|

Apparaatinterface komt overeen

Sjablonen specificeren welke INDI-apparaatinterfaces ze ondersteunen (bijv. Telescoop, CCD, Koepel, Weer). Wanneer u een sjabloon aan de wachtrij toevoegt, toont het systeem automatisch alleen compatibele apparaten.

Bijvoorbeeld: - een sjabloon “Opstelling vergrendelen” vereist het Telescope-interface - een sjabloon “Koeling aanzetten” vereist het CCD-interface - een sjabloon “Koepelazimut” vereist het Koepel-interface

Dit zorgt ervoor dat u niet per ongeluk incompatibele apparaten aan taken kunt toewijzen.

Hoe te beginnen

Snelstart: een verzameling laden

De snelste manier om de takenwachtrij te gaan gebruiken, is door een vooraf samengestelde verzameling te laden:

  1. De module Ekos-planner openen

  2. Klik op de knop Takenwachtrij of Verzamelingen (de locatie is afhankelijk van de UI-integratie).

  3. In het dialoogvenster Verzamelingen kunt u de beschikbare verzamelingen bekijken:

    • Opstartprocedure observatorium: volledige opstartprocedure voor uw apparatuur

    • Afsluiten van het observatorium: veilige afsluitprocedures

    • Nooduitschakeling: snelle afschakeling bij weerswaarschuwingen

    • Camerakoeling: gecontroleerd temperatuurbeheer van de camera

  4. Selecteer een verzadiging en klik op Laden

  5. De wachtrijviewer toont alle taken in de verzameling

  6. Bekijk de taken en pas ze indien nodig aan (zie taskqueue-building-queues).

  7. Klik op Start om de wachtrij uit te voeren

Taken toevoegen vanuit sjablonen

Om een ​​taak aan uw wachtrij toe te voegen:

  1. Klik op de knop Toevoegen vanuit sjabloon in de wachtrijviewer

  2. De sjabloonbibliotheek wordt geopend en toont beschikbare sjablonen, georganiseerd per categorie:

    • Opstelling: vergrendelen, ontgrendelen.

    • Camera: Koeling, verwarming.

    • Koepel: vergrendelen, ontgrendelen

    • Stofkap: vergrendelen, ontgrendelen

  3. Blader of zoek naar het gewenste sjabloon

  4. Selecteer een sjabloon om de beschrijving en parameters ervan te bekijken

  5. Klik op Toevoegen aan wachtrij of dubbelklik op het sjabloon

Het apparaat selecteren

Nadat het selecteren van een sjabloon, wordt u gevraagd welk apparaat u wilt gebruiken:

  1. Het dialoogvenster Apparaatselectie verschijnt

  2. Alleen compatibele apparaten worden getoond (op basis van interface-overeenkomst)

  3. Selecteer het apparaat uit de lijst

  4. Klik op OK

Als u bijvoorbeeld de sjabloon ‘Opstelling vergrendelen’ hebt geselecteerd, ziet u alleen telescoopapparaten. Als u meerdere opstellingen hebt aangesloten, kiest u welke deze taak moet aansturen.

|Takenwachtrij selecteer apparaat|

Parameters aanpassen

Na het selecteren van het apparaat wordt het dialoogvenster Parameteraanpassing geopend:

  1. Bekijk de beschikbare parameters voor dit sjabloon

  2. Elke parameter toont:

    • Naam: parameter-identifier

    • Beschrijving: wat deze parameter bestuurt

    • Standaardwaarde: vooraf ingestelde waarde uit het sjabloon

    • Beperkingen: Minimale/maximale waarden of toegestane opties

    • Eenheid: meeteenheid (seconden, graden, °C, enz.)

  3. Pas de parameters naar behoefte aan:

    • Time-outs: pas deze aan op basis van de reactietijd van uw apparatuur

    • Doelwaarden: stel specifieke temperaturen, posities, enz. in

    • Aantal herhaalpogingen: verhoogd voor onbetrouwbare verbindingen

  4. Klik op OK om de geconfigureerde taak aan de wachtrij toe te voegen

|Takenwachtrij aangepaste parameters|

Veelvoorkomende parameters die u zult tegenkomen:

  • time-out: Maximale wachttijd in seconden (standaard: 30-60s)

  • herhalingspogingen: aantal herhalingspogingen (standaard: 2)

  • doel_temp: doeltemperatuur voor camera’s (°C)

  • insteltijd: vertraging om de apparatuur te laten stabiliseren (seconden)

Wachtrij-items beheren

Zodra taken in de wachtrij staan, kunt u ze beheren:

Taken herschikken
  • Selecteer een taak in de wachtrijtabel

  • Klik op Omhoog verplaatsen of Omlaag verplaatsen om de uitvoeringsvolgorde te wijzigen.

  • Taken worden van boven naar beneden uitgevoerd

Taken verwijderen
  • Selecteer een of meer taken

  • Klik op Verwijderen om ze uit de wachtrij te verwijderen

Taken bewerken
  • Dubbelklik op een taak om zijn parameters te bekijken/bewerken

  • Wijzig toekennen van apparaat of parameterwaarden

  • Wijzigingen zijn onmiddellijk effectief

De wachtrij wissen
  • Klik op Wissen om alle taken te verwijderen

  • Nuttig bij opnieuw beginnen of laden van een andere verzameling

Uitvoering van wachtrij

De wachtrij uitvoeren

Nadat uw wachtrij is gebouwd, kunt u deze uitvoeren:

  1. Controleer alle taken in de wachtrij om er zeker van te zijn dat de volgorde juist is.

  2. Klik op de knop Start in de wachtrijweergave

  3. De wachtrij begint de taken sequentieel van boven naar beneden uit te voeren

  4. Volg de voortgang in realtime via de statusindicatoren

Besturing van wachtrij:

  • Start: begin met uitvoeren van wachtrij (alleen beschikbaar wanneer de wachtrij niet actief is)

  • Pauzeren: de uitvoering tijdelijk onderbreken (de huidige actie moet eerst worden voltooid)

  • Hervatten: een gepauzeerde wachtrij hervatten

  • Stop: de wachtrij netjes afsluiten (zodat de huidige taak kan worden voltooid)

  • Afbreken: de uitvoering onmiddellijk beëindigen (de apparatuur kan in een tussenliggende toestand blijven)

|Wachtrij is actief|

Statusindicators begrijpen

Elke taak en actie toont een statusindicator:

Taakstatus:

  • IN AFWACHTING (Grijs): taak wacht om uitgevoerd te worden

  • GEPLAND (Blauw): taak gepland voor een toekomstig tijdstip (START-actie met datum en tijd)

  • ACTIEF (Geel/Oranje): taak wordt momenteel uitgevoerd

  • VOLTOOID (Groen): taak succesvol afgerond

  • MISLUKT (Rood): taak is na alle pogingen mislukt

  • AFGEBROKEN (Rood): taak handmatig gestopt

  • OVERGESLAGEN (Grijs): taak overgeslagen vanwege omstandigheden

Actiestatus:

  • IN AFWACHTING: actie nog niet gestart

  • ACTIEF: taak wordt momenteel uitgevoerd

  • VOLTOOID: taak succesvol afgerond

  • MISLUKT: taak is na alle pogingen mislukt

  • AFGEBROKEN: taak handmatig gestopt

Monitoring van voortgang

De wachtrijviewer biedt meerdere manieren om de uitvoering te volgen:

Wachtrijtabel

Elke taakrij toont:

  • Huidig statuspictogram en tekst

  • Apparaat wordt bestuurd

  • Percentage voortgang

  • Huidige actie wordt uitgevoerd

Statusbalk

Onderkant van het venster toont:

  • Algemene wachtrijstatus (INACTIEF, ACTIEF, GEPAUZEERD, VOLTOOID, AFGEBROKEN)

  • Voortgangsbalk toont percentage voltooiing

  • Statistieken: X van Y taken voltooid, Z mislukt

Log-paneel

Gedetailleerde uitvoerlog toont:

  • Tijdstip van elke gebeurtenis

  • Berichten van actie starten/voltooien

  • Eigenschappenwijzigingen en INDI-communicatie

  • Foutmeldingen en pogingen opnieuw te doen

  • Scriptuitvoer (van SCRIPT-acties)

Actiedetails

Vouw een taak in de tabel uit om te zien:

  • Lijst met alle acties in de taak

  • Status van elke actie

  • Huidige waarden die worden ingesteld of geëvalueerd

  • Time-out aftelling voor langlopende acties

Afhandelen van fouten en herstel

Het takenwachtrijsysteem beschikt over een robuuste foutafhandeling:

Automatisch herhalingen

Wanneer een actie mislukt:

  1. De fout wordt gelogd met details

  2. Het systeem wacht even (instelbare vertraging)

  3. De actie wordt herhaald tot het ingestelde aantal herhalingspogingen is bereikt.

  4. Als alle herhaalpogingen mislukken, wordt de foutafhandeling uitgevoerd

Acties bij mislukken

Op basis van de foutconfiguratie van de actie:

WACHTRIJ_AFBREKEN: (standaard voor kritieke bewerkingen)
  • Stopt onmiddellijk de hele wachtrij

  • Maakt veilige interventie mogelijk voordat verder wordt gegaan

  • Gebruikt voor: vergrengelen van de opstelling, noodstops, kritieke veiligheidscontroles

DOORGAAN (voor niet-kritieke bewerkingen)
  • Logt de fout

  • Gaat door naar de volgorde actie in de taak

  • Gebruikt voor: optionele optimalisaties, best-effort-bewerkingen

OVERSLAAN_NAAR_VOLGENDE_TAAK
  • Slaat de resterende acties in de huidige taak over

  • Gaat verder met de volgende taak in de wachtrij

  • Gebruikt voor: wanneer niet aan de vereisten van een taak wordt voldaan, maar andere taken nog wel kunnen worden uitgevoerd.

Handmatige interventie

Tijdens uitvoeren kunt u:

  • De wachtrij pauzeren om problemen te onderzoeken

  • Een problematische actie afbreken

  • Verwijder of wijzig de volgorde van wachtende taken

  • Uitvoeren hervatten na het maken van correcties

Idempotency

Veel acties controleren of hun bewerking al is voltooid voordat ze worden uitgevoerd:

  • Is de opstelling al vergrendeld? Sla de vergrendeling over.

  • Temperatuur al op de doeltemperatuur? Sla het afkoelen over

  • Heeft het al de gewenste waarde? Sla de actie over

Dit voorkomt onnodige handelingen en ondersteunt het opnieuw uitvoeren van taken in de wachtrij.

Wachtrijpersistentie

Wachtrijen opslaan en laden

U kunt wachtrijen opslaan voor later gebruik:

Een wachtrij wordt opgeslagen:
  1. Bouwen of laden van een wachtrij

  2. Klik op de knop Wachtrij opslaan

  3. Kies een bestandsnaam (extensie *.json)

  4. Het wachtrijbestand bevat alle taken en hun configuraties

Een wachtrij wordt geladen:
  1. Klik op de knop Wachtrij laden

  2. Selecteer een opgeslagen wachtrijbestand

  3. De wachtrij vervangt alle bestaande taken

  4. Bekijk de informatie en begin wanneer u er klaar voor bent

Wachtrijbestandsformaat

Wachtrijbestanden zijn gebaseerd op JSON en bevatten:

  • Taakdefinities met apparaattoewijzingen

  • Parameterwaarden voor elke taak

  • Taakvolgorde en planningsinformatie

  • Metagegevens (aanmaakdatum, beschrijving)

Veelvoorkomende gebruiksscenario’s

Opstartprocedure van het observatorium

Een typische opstartprocedure bereidt alle apparatuur voor op beeldvorming:

Voorbeeld van een opstartwachtrij:

  1. Ontgrendel koepel (indien van toepassing)

    • Sjabloon: “Koepel - ontgrendelen”

    • Apparaat: uw koepelbesturing

    • Timeout: 60 seconden

    • Actie bij mislukken: WACHTRIJ_AFBREKEN (kan niet doorgaan zonder toegevoegd tot koepel)

  2. Opstelling uit parkeerstand halen

    • Sjabloon: “Opstelling - ontgrendelen”

    • Apparaat: uw telescoopopstelling

    • Timeout: 30 seconden

    • Actie bij mislukken: WACHTRIJ_AFBREKEN (kritiek voor alle bewerkingen)

  3. Volgen van opstelling inschakelen

    • Sjabloon: “Opstelling - volgen inschakelen”

    • Apparaat: uw telescoopopstelling

    • Timeout: 10 seconden

    • Actie bij mislukken: DOORGAAN (kan later inschakelen indien nodig)

  4. Koeling van camera inschakelen

    • Sjabloon: “Camera - koeling aanzetten”

    • Apparaat: uw CCD-camera

    • Parameters: - doel_temp: -15°C (aanpassen voor uw camera) - koelsnelheid: 2°C/minute (voorkomt thermische schok)

    • Timeout: 600 seconden (10 minuten voor koeling)

    • Actie bij mislukken: DOORGAAN (kan opnemen zonder optimale koeling)

  5. Wacht op stabilisatie van temperatuur

    • Sjabloon: “Camera - wacht op temperatuur”

    • Apparaat: uw CCD-camera

    • Parameters: - tolerantie: ±1°C - stabilisatietijd: 60 seconden

    • Timeout: 300 seconden

    • Actie bij mislukken: DOORGAAN

  6. Schakel het platte scherm in (indien van toepassing)

    • Sjabloon: “Plat scherm - Inschakelen”

    • Apparaat: Uw platte scherm

    • Actie bij mislukken: DOORGAAN (optioneel apparaat)

Afsluitprocedure van het observatorium

Een veilige afsluitprocedure beschermt apparatuur en bespaart energie:

Voorbeeld afsluitwachtrij:

  1. Camerakoeling uitschakelen (Geleidelijke opwarming)

    • Sjabloon: “Camera - koeling uitzetten”

    • Apparaat: uw CCD-camera

    • Parameters: - opwarmsnelheid: 1°C/minuut (langzaam opwarmen voorkomt condensatie)

    • Actie bij mislukken: DOORGAAN (belangrijk maar niet kritiek)

  2. Wacht op opwarmen van de camera

    • Sjabloon: “Camera - wacht op omgevingstemperatuur”

    • Parameters: - doeltemperatuur: omgevingstemperatuur + 2°C - timeout: 900 seconden (15 minuten)

    • Actie bij mislukken: DOORGAAN

  3. Opstelling parkeren

    • Sjabloon: “Opstelling - vergrendelen”

    • Apparaat: uw telescoopopstelling

    • Timeout: 60 seconden

    • Actie bij mislukken: WACHTRIJ_AFBREKEN (kritiek voor veiligheid)

  4. Vergrendel koepel (indien van toepassing)

    • Sjabloon: “Koepel - vergrendelen”

    • Apparaat: uw koepelbesturing

    • Timeout: 120 seconden

    • Actie bij mislukken: WACHTRIJ_AFBREKEN (kritiek voor bescherming)

  5. Schakel de stroom van de apparatuur uit (via script)

    • Sjabloon: “Script - uitvoeren”

    • Parameters: - script_pad: /pad/naar/power_off.sh

    • Timeout: 30 seconden

    • Actie bij mislukken: DOORGAAN (log fout voor handmatige interventie)

Migratie uit scripts

De transitie begrijpen

Het takenwachtrijsysteem vervangt traditionele shellscripts voor opstarten/afsluiten door een meer gestructureerde aanpak:

Traditionele scripts:
  • Handmatig geschreven bash/python-scripts

  • Voer de opdrachten na elkaar uit.

  • Beperkte afhandeling van fouten

  • Geen visuele terugkoppeling tijdens de uitvoering

  • Moeilijk aan te passen zonder programmeerkennis

Wachtrijsysteem voor taken
  • Op sjablonen gebaseerde samenstelling van taken

  • Visueel bouwen en monitoren

  • Ingebouwd opnieuw proberen en afhandelen van fouten

  • Voortgang volgen en bijwerken van status

  • Te wijzigen via GUI

Bewerkingen via script converteren

Algemene bewerkingen via scripts kunnen geconverteerd worden naar acties in wachtrij voor taken:

Eigenschappenwijzigingen van INDI

Oude script:
indi_setprop "Telescope.TELESCOPE_PARK.PARK=On"
Nieuwe wachtrij voor taken:
  • Sjabloon: “Opstelling - vergrendelen”

  • Type actie: SET

  • Apparaat: Telescoop

  • Eigenschap: TELESCOPE_PARK

  • Element: PARK

  • Waarde: aan

Voorwaardelijke wachten

Oude script:
while [ $(indi_getprop "CCD.CCD_TEMPERATURE.CCD_TEMPERATURE_VALUE") -gt -10 ]; do
    sleep 5
done
Nieuwe wachtrij voor taken:
  • Sjabloon: “Camera - wacht op temperatuur”

  • Type actie: EVALUATE

  • Apparaat: CCD

  • Eigenschap: CCD_TEMPERATURE.CCD_TEMPERATURE_VALUE

  • Conditie: LESS_THAN

  • Doel: -10

  • Interval voor afvragen: 5 seconden

Tijd vertraging

Oude script:
sleep 60
Nieuwe wachtrij voor taken:
  • Sjabloon “Vertraging”

  • Type actie: VERTRAGING

  • Tijdsduur: 60

  • Eenheid: SECONDEN

Externe scripts

Oude script:
/usr/local/bin/dome_control.sh openen
Nieuwe wachtrij voor taken:
  • Sjabloon: “Script - uitvoeren”

  • Type actie: SCRIPT

  • Scriptpad: /usr/local/bin/dome_control.sh

  • Argumenten: openen