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.
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.
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.
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:
De module Ekos-planner openen
Klik op de knop Takenwachtrij of Verzamelingen (de locatie is afhankelijk van de UI-integratie).
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
Selecteer een verzadiging en klik op Laden
De wachtrijviewer toont alle taken in de verzameling
Bekijk de taken en pas ze indien nodig aan (zie taskqueue-building-queues).
Klik op Start om de wachtrij uit te voeren
Taken toevoegen vanuit sjablonen¶
Om een taak aan uw wachtrij toe te voegen:
Klik op de knop Toevoegen vanuit sjabloon in de wachtrijviewer
De sjabloonbibliotheek wordt geopend en toont beschikbare sjablonen, georganiseerd per categorie:
Opstelling: vergrendelen, ontgrendelen.
Camera: Koeling, verwarming.
Koepel: vergrendelen, ontgrendelen
Stofkap: vergrendelen, ontgrendelen
Blader of zoek naar het gewenste sjabloon
Selecteer een sjabloon om de beschrijving en parameters ervan te bekijken
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:
Het dialoogvenster Apparaatselectie verschijnt
Alleen compatibele apparaten worden getoond (op basis van interface-overeenkomst)
Selecteer het apparaat uit de lijst
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.
Parameters aanpassen¶
Na het selecteren van het apparaat wordt het dialoogvenster Parameteraanpassing geopend:
Bekijk de beschikbare parameters voor dit sjabloon
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.)
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
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:
Controleer alle taken in de wachtrij om er zeker van te zijn dat de volgorde juist is.
Klik op de knop Start in de wachtrijweergave
De wachtrij begint de taken sequentieel van boven naar beneden uit te voeren
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)
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:
De fout wordt gelogd met details
Het systeem wacht even (instelbare vertraging)
De actie wordt herhaald tot het ingestelde aantal herhalingspogingen is bereikt.
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:
Bouwen of laden van een wachtrij
Klik op de knop Wachtrij opslaan
Kies een bestandsnaam (extensie *.json)
Het wachtrijbestand bevat alle taken en hun configuraties
- Een wachtrij wordt geladen:
Klik op de knop Wachtrij laden
Selecteer een opgeslagen wachtrijbestand
De wachtrij vervangt alle bestaande taken
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:
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)
Opstelling uit parkeerstand halen
Sjabloon: “Opstelling - ontgrendelen”
Apparaat: uw telescoopopstelling
Timeout: 30 seconden
Actie bij mislukken: WACHTRIJ_AFBREKEN (kritiek voor alle bewerkingen)
Volgen van opstelling inschakelen
Sjabloon: “Opstelling - volgen inschakelen”
Apparaat: uw telescoopopstelling
Timeout: 10 seconden
Actie bij mislukken: DOORGAAN (kan later inschakelen indien nodig)
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)
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
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:
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)
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
Opstelling parkeren
Sjabloon: “Opstelling - vergrendelen”
Apparaat: uw telescoopopstelling
Timeout: 60 seconden
Actie bij mislukken: WACHTRIJ_AFBREKEN (kritiek voor veiligheid)
Vergrendel koepel (indien van toepassing)
Sjabloon: “Koepel - vergrendelen”
Apparaat: uw koepelbesturing
Timeout: 120 seconden
Actie bij mislukken: WACHTRIJ_AFBREKEN (kritiek voor bescherming)
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