introduction, estcube, sobjectiveisthetechnologicaldemonstrationofscientificpayloadsforupcoming, whichwillbepartiallybasedonestcube, isplannedtobesent, asatellitemissioncomprisesofseveralsubsystems, onboardandtherestontheground, oneofthembeingthemissioncontrolsystem, support, themcsisacombinationofsoftwareandhardwarethatassistsoperatorstotrack, command, andcommunicatewithspacecraftaftertheirlaunch, themcscanbeusedforuplink, sendingcommandstothespacecraftinorbit, andalsofordownlink, receivingdatafromthe, spacecraft, theaimofthisbachelorthesisistocreateasoftwaremodulewhichallowsschedulingand, performcontactswiththeestcubesatellitewithminimal, nohumaninterference, currentimplementedsolutionrequirestoomuchmanualinterventionandtherefore, probabilityofmissingcontactwindowsduetohumanerrorishugeandthecontacttimesare, optimally, thereisalsoaprobabilityforinterruptionstooccurduringcontact, whichmayresultinloss, oftelemetrypackets, therefore, notallpacketsreachthetar, spacecraftinorbit, connectionsmustbescheduledinordertocatchthemissingpackets, forexample, duringthe, eventhoughmultiple, tracking, satellite, overpasses, theestcubemcscontactautomationsoftwaremoduleisanetworkapplicationthat, interconnectstheauthorisedgroundstationsandtrackssatellitesandschedules, communicationpacketsinanoptimalfashionsoastominimisedelayduringsatellite, anotherfactortoconsiderwouldbeautomaticschedulingandcompensationof, lostdatapacketsduringtransmissionfromthegroundstations, suchanimplementation, wouldgreatlyreducetheburdenofgroundstationpersonnelandsimplifytheworkof, satelliteoperatorsandtherebyincreasingtheamountofinformationthatcouldbeexchanged, period, available, thedeliverablesofthisbachelorthesiscompriseofapythonapplication, whichafter, completedwouldbeintegratedintotheestcubemissioncontrolsystem, hostedon, dockerplatformasaservice, paas, technology, theapplicationcommunicateswith, multiplegroundstationsusingrabbitmqmessagingqueueandstoresrelevantinformation, postgresql, database, thisthesiswillonlyfocusonstoringandschedulingofcommandsforupcomingoverpasses, functionalities, scope, thesis, testing, scheduled, commands, scheduling, downlink, specifying, execution, ransferring, executing, source, code, application, developed, attached, appendix, https, www, python, org, docker, com, rabbitmq, unitcubesatin, orbittechnology, unitcubesatisasatellitewithstandardiseddimensionsand, weight, sstructureismadeofupthreeidenticalcubesconnectedinserieswherethe, theprimarypayloadsforthisspacemissionaretotestdeorbitingusingplasmabrake, solar, highly, integrated, subsystem, solution, thesatellitewouldconsistofvariousintegratedelectro, mechanicalandelectronic, subsystems, mostofthembuiltin, housewiththeoneoftheimportantgoalsbeingto, minimisemassandvolume, soastoenableasimilarsatelliteplatformforupcomingspace, missions, experiments, tcube, mission, ontr, ol, st, em, theestcubemissioncontrolsystem, isacombinationofsoftwareandhardware, designedforsending, uplink, andreceiving, datatotheestcubesatellitesin, orbit, whilemostmissioncontrolsystemsforspacemissionsrequirethephysicalpresenceof, thesatelliteoperatorsinthe, missioncontrol, theestcubemcsisalightweight, basedcommandandcontrolsolutionforsatellitesinorbit, enablingtheoperatorstobe, planet, operational, capabilities, inadditiontomonitoringandcontrollingthesatellites, mcsalsoprovidestoolsfor, automatingandschedulingvariousoperationsofthemcssothattheoperatordoesnot, alwayshavetobepresentwhenasatelliteispassingoveragroundstation, theautomation, minimises, errors, increases, data, received, duringthedevelopmentphase, mcsprovidesahardwaretestplatformforallthesubsystem, thehardwaretestplatformcomprisesoftheactualengineeringmodelandsimulates, alltheoperationsoftherealsatellitesothatthecomponentscanbetestedproperlybefore, launch, afterlaunch, thehardwaretestplatformexistsasatestbedtocheckanddetermine, behaviour, actual, aut, omation, contactautomationorsatelliterangeschedulingistheprocessofschedulingthe, communicationbetweenasatelliteanditsgroundstationoverblocksoftimesothata, aground, stationoverpassisaperiodoftimeduringwhichthesatelliteisinthecommunicationrange, ofitsgroundstation, forlowearthorbit, satelliteslikeestcube, thiscanoccurup, overpass, inordertoschedulecontactswiththesatellite, aseriesofjobshavetobescheduled, prioritise, characterised, parameters, processing, revenue, completion, packets, asgroundstationsandsatellitehavebothunitcapacity, meaningthattheycanonlyprocessa, singlejobatatime, theprecedenceconstraintsbetweenjobsandgroundstationsetuptimes, strengthcanbeverylow, itisverycommonthatsomedatapacketsgomissingduringthe, connection, inordertoretrievethemissingdatapackets, newjobshavetobescheduledfor, requesting, element, format, thet, wo, lineelementsetformatisadataformatdevelopedbythenorthamerican, aerospacedefencecommandandisusedtotransmitacodedsetoforbitalelementsthat, perfectly, http, norad, mil, definition, lineelementformatrepresentsinformationabouttheorbitofasatellite, anexamplefor, thetlecontainstheorbital, dataofthesatellite, informationonwhenthesewereobtainedandmetainformationonthe, includingthelaunchdateandanglebetweentheequatorandearthplane, butasthe, limited, satellitetle, tomakecalculationsmore, accuratenoradregularlycalculatesandpublishesnewtlesformostofthepublic, satellites, et, cher, tlefetcherisadetachedsoftwaremoduledevelopedbytheestcube, systemteam, theaimofthissoftwaremoduleistofetchandservethelatesttlefor, estcubesatellites, inordertoretrievethefreshesttleforasatellite, thesoftwaremodule, makesarequesttospace, trackisasystemdevelopedbythescience, applicationsinternationalcorporationfortrackingallartificialearthsatellitesandspace, probes, example, output, fetcher, provided, saic, ellit, location, pr, edict, thesatellite, locationpredictorisanotherdetachedsoftwaremoduledevelopedbythe, thesoftwareusessatellite, sorbitalparameters, andgroundstationlocationinformationforestimatingsatelliteoverpasstimes, calculatingtheoverpasstimes, locationpredictorusestheorekitlibrary, orekit, contains, methods, computing, propagated, coordinates, model, forcalculatingupcomingoverpasstimesasatellite, stleandinformationaboutground, stationscoordinatesarerequired, inordertogetthelatestsatellitetleregularrequestsget, madetothetlefetchersoftwaremodule, asthesatellite, stlegetsregularupdatesthe, overpasscalculationscanbedoneregularlywithnewoutcomes, inordertosave, calculationtimethesatellite, locationpredictor, soutputislimitedtocalculateonly, configuredamountofupcomingoverpasses, timespredictedbythesatellite, locationpredictorsoftwaremodule, asthecalculated, overpasstimesareonlyusedforschedulingupcomingcontactsthentheaccuracyisnota, concern, actualandaccuratecontactstartandendtimesarecalculatedindividuallyforeach, prior, contact, oblem, stat, ement, themainproblemisthatthecurrentsolutionrequireshumaninteractionandasthecontact, windowforasinglesatelliteisverylimitedandoftenhappensatlatehoursthecontact, windowswiththesatellitemaynotbeusedasoptimallyasitcould, anotherproblemisthat, theinterruptionsduringtheconnectionbetweenagroundstationandasatellitearevery, common, whenaninterruptionhappensthemissingpacketshavetobescheduledforbeing, retransmitted, requir, ements, requirementsforthecontactautomationmoduleforestcube, using, practices, microservices, architecture, fetch, information, predict, schedule, according, priority, update, queue, manual, override, availability, pplication, ogr, int, erfac, requirements, program, interface, content, type, requests, json, request, responses, response, statuses, secured, authentication, design, thecontactautomationwithasatellitecanbeseparatedintotwodifferentparts, commandsandexecutingcommands, theschedulingpartincludesstoringandprioritising, commandsforupcomingoverpassesandisapartofthemissioncontrolsystem, executionpartisresponsiblefortransferringthecommandstothesatelliteandexecuting, thisthesisconcentratesonlyontheschedulingpartandisnotresponsibleforthe, executionpart, theexecutionpartwillbeimplementedasapartofthegroundstation, softwareandwilldependontheschedulingpart, thedependenciesbetweenthedifferent, software, modules, described, dependency, dif, ferent, control, system, components, dependentcomponentbeingindicatedbythedirectionofthearrow, automation, module, dependent, predictor, le, ommand, unique, identifier, ar, guments, normal, status, theuniqueidentifierisrequiredinordertoavoidasinglecommandgettingexecuted, multipletimes, additionally, sstatusstarting, process, asthemissioncontrolsystemisnotspecifictoasinglesatelliteanidentifierofthetar, required, thecommandbodyandcommandar, gumentarefornowatextualrepresentationofthe, commandtobeexecuted, inthefuturetheymaybereplacedwithactualpacketsthatare, transferred, thepriorityvaluewillensurethatthecommandswithahigherprioritywillbetransmitted, beforethecommandswithalowerpriority, thatwayitispossibletolateraddcommandsfor, maintenanceorothercriticalcommandsinawaythattheystillgetexecutedfirst, thepriority, cannotbeusedforcontrollingtheexecutionorderofcommands, suchafeaturewouldneed, handled, mechanism, added, future, thetypefieldindicateswhetherthecommandismeanttobeexecutedonthegroundstation, oronthesatellite, thetypeofacommandcaneitherbeuplink, inwhichcasethedataissent, fromthegroundstationtothesatellite, ordownlink, meaningthedataissentfromthe, thestatusfieldhelpsthesystemkeeptrackofasinglecommand, itholdsinformationonthe, currentstateofthecommand, thestatusofacommandmayeitherbeuntested, scheduledfor, theupcomingoverpass, transmittedtothegroundstation, finished, orfailed, undernormal, circumstancesacommandhastopassthroughalloftheaforementionedstates, excluding, failed, counted, successfully, executed, cy, cle, thelifecycleofacommand, startswithitgettingstoredforscheduling, slifecycleistesting, eachcommandistestedongroundusingasatellitesimulatorbeforebeingtransmittedtothe, thusavoidingthetransmissionofcorruptedcommands, asthetestingplatformis, stillwork, progress, thetestingofcommandisskippedfornow, itshallbeaddedinthe, aftertestingofacommandisfinished, thecommandgetsmarkedasreadyforexecution, priortothenextsatellitepass, thecommandisassignedaqueuepriorityordernumberbased, spriorityfield, bytakingthispriority, ordernumberintoaccount, thecommandisthenpushedintoafirst, outmessaging, duringapass, thegroundstationconsumesmessagesfromthemessagingqueueand, triestoexecutethemone, iftheexecutionofthecommandsucceeds, itgetsremoved, messaging, re, later, acommandismarkedassuccessfullyexecutedifitnolongerremainsinthemessaging, queueafterthepass, sstatusissetbacktoreadyforexecutionandit, pass, implementation, themcsusesmodernmicroservicesarchitecture, meaningitconsistsofmanyindependent, inmcsthe, microservicesarchitectureisachievedusingdockertechnology, eachmicroserviceis, packagedintoadockercontainerandassignedauniqueportnumberinthemcscontext, thiswayeachmicroserviceisindependentlymaintainablewithoutbreakingthewhole, asthedeliverableofthisthesis, acontactautomationmodulewasdesignedand, implemented, themoduleitselfconsistsofmultipleseparatedockercontainers, applicationcontainer, adatabasecontainerandamessagingqueuecontainer, inaddition, containercaninitializeconnectionstoothercontainersontheestcubemissioncontrol, systemserver, forexampletothesatellite, locationpredictorortothetlefetcher, inorder, avoid, multiple, implementations, contactautomationisanindependentapplicationthatmainlytakescareoftwodif, itprovidesendpointsforstoringandmanagingcommandsforupcomingoverpasses, andqueuesthestoredcommandsforanupcomingoverpass, dependingonwhetherthe, marked, theapplicationitselfiswrittenusingflask, alightweightwebframeworkforpython, frameworkprovidesmethodsforhandlingdif, ferenthttprequestsandrespondingtothem, sqlalchemy, asqltoolkitforpythonapplicationswhichalsoprovidesan, object, relationalmapper, isusedtosimplifyinterfacingwiththedatabase, therabbitmq, queueing, pplications, endpoints, theapplicationprovidesseveralapiendpointsformanagingscheduledcommands, applicationendpointscanbedividedintotwogroups, queryandmodification, forquery, endpointsthehttprequestmethodmustbeget, formodificationendpointstherequest, flask, pocoo, methodcanbeeitherpost, ordelete, dependingonthespecificendpoint, sbodytobeinavalidjsonformat, theresponse, typeofallendpointsisjson, theresponsebodymaycontaineitheraconfirmationofa, successfuloperationoranerrormessageindicatingafailure, appropriatehttpresponse, codes, granted, unit, inordertoprotecttheapplicationfromunauthorisedusers, abasicauthenticationisapplied, toallroutes, thebasicauthenticationisachievedusinghttpheaders, theapplication, expectseachrequesttohaveanauthorizationheader, iftheheaderisnotpresent, alogin, promptisshowntotheuser, thecredentialscanbesetusingtheconfigurationfileinthe, directory, updating, ommands, theendpointsforinsertinganewcommandandforupdatingacommanddataarepretty, similar, theybothexpecttherequestbodytocontainalltheinformationaboutthecommand, tobescheduledinjsonformatandasaresponse, theybothreturnthejsonrepresentation, ofthestoredcommand, shown, thisfunctionexpectsthehttprequestmethodtobepost, orthecommandupdate, endpoint, method, def, post_command, storing, get_json, db, session, commit, serialize, sqlexc, integrityerror, dataerror, valueerror, rollback, abort, invalid, jsonify, creation, sbodyandthenmapsittoa, modelentity, commandmodelentityisapythonrepresentationofasinglerowinthe, commandtableinthedatabase, forthecommandupdateendpointthecommandtobe, updatedwouldfirstbequeriedfromthedatabaseandthenthereceiveddatawouldbemerged, queried, beforethecommandisstoredinthedatabaseitsstatusissettountested, thisisimportant, becauseallcommandshavetobetestedonasatellitesimulatorbeforetheycanbescheduled, sdataintothedatabase, ifnoerroroccurred, duringthedatabaseinsertionorrowupdate, ajsonrepresentationofthe, commandentityis, returned, ed, itispossibletoquerytheinformationaboutstoredacommandviatwoendpoints, endpointreturnsalistofstoredcommandandanotheronereturnsinformationaboutasingle, specificcommand, thelistingendpointfunctionisshown, asitisaquery, expected, astherearenolimitationstothenumberofcommandsthatcanbestoredinthesystem, numberofcommandsreturnedcanbeverylarge, thereforeitispossibletofilterscheduled, commandseitherbysatellite, orsubsystem, therearenorestrictionstoapplying, multiplefilterssimultaneously, thefilterscanbepassedtotheendpointusingtheendpoint, query, component, listing, stored, args, filter, delete_time, [], append, len, letion, forcaseswhereanunwantedcommandgetscreated, thereisadatamodificationendpoint, thatallowsthedeletionofasinglecommand, thehttprequestmethod, command_id, delete_command, deleting, specified, delete, deleted, thecommandtobedeletedisqueriedfromthedatabase, ifnocommandwithsuchidis, afterthecommandhasbeenqueriedit, getsmarkedasdeletedandthemodifiedcommandissavedtothedatabase, toindicatethat, thedeletionofthecommandwassuccessfulahumanreadablesuccessmessageisreturnedin, anothercorefunctionalityoftheapplicationisachievedthroughscheduledbackgroundjobs, forscheduledbackgroundjobstheapschedulerlibraryisused, wodif, ferenttypesof, scheduledjobsareused, timedandregularbackgroundjobs, theexecutionoftimed, backgroundjobsisstartedatthespecifiedtimeandregularbackgroundjobsareexecuted, regularly, verpass, fetchingandstoringthesatelliteoverpasstimesisdonebyaregularbackgroundjob, backgroundjobisscheduledonapplicationstartupandexecutedregularly, theexecution, interval, configured, configuration, project, thebackgroundjobfirstfetchesinformationabouttheavailablegroundstationsfromthe, stationsapi, astheactualground, stationsapplicationisstillawork, progressan, apiaryprojectwascreatedandusedinstead, apiaryisatoolfordesigningapplication, interfaces, option, simulate, operation, designed, pypi, apscheduler, apiary, io, update_overpass_times, inserts, updates, registered, util, print_info, trying, ground_station_library, groundstation, api_url, app, config[, ground_stations, get_ground_stations, ground_station, store_and_schedule, foreachgroundstationanapicallismadetowardsthe, asaresponse, locationpredictorreturnsalistof, upcomingpassesinavalidjsonformat, thejsonisparsedandreadbythecontact, automationapplication, forreadingandparsingtheresponseautilitymethodiscalled, utility, read_remote_json, url, urlopen, decode, utf, json_data, error, occurred, remote, locationpredictorreturnsmultipleupcomingoverpasses, aniterationover, theresultsisdone, eachresultischeckedagainstthedatabasetodeterminewhetheritalready, existsinthedatabase, asthefetchedoverpasstimesandtheiraccuracycanchangeovertime, twooverpasseswhosestarttimesdifferlessthantheconfiguredminimumamountofseconds, areconsideredtobethesame, allnewlyfoundoverpassesarestoredinthedatabasefor, futurereference, twobackgroundjobsarescheduledforeachnewlyfound, thefirstoneisscheduledaconfiguredamountofsecondspriortotheoverpassand, anotheroneafterit, thesebackgroundjobshandlethetransferringofscheduledcommandsto, befor, prioritisingandqueuingcommandspriortoasatelliteoverpassisdoneusingatimed, backgroundjob, whenthebackgroundjobisexecuted, itfirstfetchesthecommands, prioritised, fetch_commands, fetches, prioritized, order_by, desc, asc, create_time, fetched, querying, firstthe, commandsinthedatabasearefilteredbythesatelliteandtheirstatus, afterthesuitable, commandshavebeenfilteredoutfromthedatabase, anorderingoperationisapplied, ordering, ensuresthatcommandswithahigherpriorityandearlier, preferred, messaging_queue, get_connection, channel, ensuring, exists, queue_declare, queueself, basic_publish, routing_keycommand, bodybody, transmitted, id, queuing, afterprioritisingthecommandsaconnectiontoarabbitmqmessagingqueuechannel, whichisuniqueforeachsatellite, isopened, thisconnectionisopenedusingthepythonpika, thisistheconnectionprotocolthatisusedforconnectiontotherabbitmqmessaging, afteraconnectiontothemessagingqueuechannelhasbeenopenedaniterationis, doneoverthepreviouslyprioritisedcommand, sstatus, issettotransmittedandtheirjsonrepresentationispublishedtothemessagingqueue, theiterationoverthecommandsisfinished, changesonthecommandstatusesarestoredin, closed, aft, er, cleaningofthemessagingqueue, afterasatelliteoverpass, isdoneinatimedbackground, thecleaningprocessisimportantinordertoavoidoverloadingthequeuewithlow, aconnectiontotherelevantrabbitmqmessagingqueuechannelisopened, afterthe, connectionhasbeenopenedtheprogramstartstoconsumemessagesfromthequeueuntil, pika, therearenoneleft, duringtheconsumptionofmessages, sstatusissetfrom, transmittedbacktoscheduled, itmeansthatthesecommandswillbetransmittedagainprior, oncethemessagingqueueisempty, theconnectiontothemessagingqueuechannelisclosed, allcommandsthathadtheirstatussettotransmittedpriortothisoverpass, butwere, longer, forstoringcommandsandinformationaboutoverpassesapostgresqldatabaseisused, whichisapowerfulopen, sourceobject, commandand, satellite_passtablessoft, deletionisused, tablerowsareonlymarkedasdeletedontheapplicationlevelinsteadof, beingactuallydeleted, softdeleteshelpavoidanypossibledatalossataprettysmallcost, thetable, apsheduler_jobsisusedbytheapschedulerlibraryforstoringthescheduled, structure, commandtablestoresinformationaboutallthecommandsthathaveeverbeenscheduled, forsatellitecontacts, ascheduledcommanditselfconsistsofatextualcommandnameand, therelevantparameters, eachcommandalsohasapriorityfield, whichisanintegervalue, whereahighervalueindicatesahigherpriority, inordertoavoidmultipleexecutionsofa, singlecommand, eachrowhasastatusfield, thestatusfieldhasthetype, statuswhichitself, isanenumtype, thestatuscanbeeither, untested, cancelled, allcommandswiththestatus, failedshouldbeinvestigatedandrescheduledbythecommand, schedulerapplication, wheneverpossible, allotherstatusesareself, descriptive, eachstoredcommandhassomeotherinformativefieldslikethenameoftheoperatorwho, createdthecommand, andthetypeofthecommand, thetypeofacommandcanbeeither, satellite_passtablestoresanyrelevantinformationaboutupcomingandpastsatellite, asfornowweonlycareaboutoverpasstimes, therowsinthistableonlycontain, theinformationaboutoverpassstartandendtimes, inthefuture, itispossibletostoremore, ound, client, simulat, asfornowthegroundstationapplicationisstillwork, agroundstationclient, simulatorapplicationwasimplementedinordertovalidateandtesttheschedulingprocessof, thisapplication, theaimofthisapplicationistosimulatetheoperationofarealground, stationduringasatelliteoverpass, theapplicationiswritteninpythonandiscontrolled, thesimulatorapplicationexpectsthreecommandlinear, nameofthesatellite, overpassstarttime, andtheendtimeoftheoverpasstobesimulated, theapplicationstartsthesimulationprocessonthespecifiedstarttimeandendsthe, simulation, passed, py, starting, consume, null, created_by, karel, liiv, simulating, started, consumed, waiting, ended, ork, simulator, whentheoverpasssimulationstartsthesimulatorclientstartsconsumingmessagesfromthe, messagingqueueforthespecifiedsatellite, foreachmessageconsumedfromthemessaging, thispauseshouldsimulatetheprocessof, class, randomexecutor, executor, execute, simulates, bool, random, randint, afailurewhichmayhappenduringtheexecutionofacommandis, simulatedusingarandomnumbergeneratingfunction, ifthesimulationofacommand, executionsucceeds, anackresponseissenttothechannelindicatingthatthemessageinthe, queuewasconsumedsuccessfully, ifthesimulationfails, anackresponseissenttothe, messagingchanneltoindicatethatthemessagewasnotsuccessfullyconsumed, thatreceiveanackresponseareaddedbacktothemessagingqueuebytherabbitmq, yment, serv, alongwiththedevelopedapplication, dockerfilecontainingalltherequiredcommandsfor, adockerimageconsistsofalltherequiredfiles, contained, within, liivestcube, eu, txt, usr, src, install, cache, dir, main, dockerfile, dockerfileusedforbuildingthecontactautomationdockerimageisshown, thefirstlineofthe, dockerfiledeclaresthebaseimageusedforbuildingtheimage, byusing, sof, ficialbaseimage, theinstallationprocessofpythonisskipped, afterthatthe, dockerfilestatesthatthepythonlibrariesrequiredbytheapplicationshouldbeinstalled, usingthe, thenthecontentofthecurrentfolderiscopiedfromthehost, machineintotheimage, thetwofinallinesofthedockerfilespecifythattheprogram, pywillgetexecutedwhenacontainercreatedfromthe, imageisstarted, statethatwheneveracontainercreatedfromthisimageisbeingstarted, image, contactautomation, latest, dockerbuildcommandisaprettysimplecommand, atagname, fortheimagetobebuiltcanbepassedtothecommandusingthe, thelastar, gumentof, thecommandhastobethelocationofthe, dockerfileusedbythebuildingprocess, inour, located, adockercontainercanbecreatedfromtheimagepreviouslybuiltusingthe, dockerrun, dockerruncommandtakesmultiplearguments, anexamplecommandfor, scheduler, container, db_service, tle_fetcher_api, tlefetcher, rabbitmq_host, satellite_location_predictor_url, satellitelocationpredictor, link, contactautomation_db, multipleenvironmentvariablescanbepassedtothecontainerusing, gument, theargument, dstatesthatthecontainerisstartedinthebackground, mappingaportfromthehostmachinetotoecontainerisdoneusingthe, pargument, containersthatarerequiredbythecontactautomationcontainerarelinkedusingthe, argument, multiplelinkscanbecreatedusingthisparameter, futur, thecurrentsolutionmeetstherequirementsthatweresetinthebeginning, butthe, applicationisnotyetausablebyasatelliteoperator, thereforefutureimprovementshave, planned, firstly, thecurrentsolutionismissingtheon, groundtestingpart, theintegrationwiththehardwaretestingplatformwillbeaddedtotheimplementedsoftware, development, secondly, thedatapushedtothemessagingqueuemightchangeinthefuture, thisfuture, improvementmightberequiredbecausethegroundstationsoftwareisstill, thefinalisedmethodofcommunicationwillbeimplementedassoonas, thirdly, thecurrentsolutionhasanoptiontosortcommandsbypriority, butanoptionfor, specifyingtheexecutionorderofcommandsshouldbeadded, apotentialsolutiontothis, wouldbeallowingtoassignaprerequisitecommandtoeachcommand, thecommandcould, prerequisite, tomakethecurrentsolutionuser, friendlyandusablebysatelliteoperators, graphicaluserinterfaceisrequired, includingtheintegrationwiththemcs, thegraphical, user, mock, created, conclusion, thisthesispresentedtheresultsofcreatingthefirstfunctionalversionofacontact, automationmodulefortheestcube, thedevelopedsystem, allowsschedulingandstoringofcommandsforupcomingsatelliteoverpasses, foreach, sstatusistrackedandthereforethesystemcanalsoreschedulefailedcommands, thesoftwaremodulewasalsosuccessfullyintegratedwiththeexistingmissioncontrol, systemusingamicroservicesarchitecture, theintegrationwiththemissioncontrolsystemis, chapter, assomeofthemissioncontrolsystemcomponentsthatarerequiredbythecontact, automationmodulewerestillindevelopment, thefunctionalityofthedevelopedmodules, wasverifiedandtestedusingasimulatorprogramalsoimplementedasapartofthisthesis, workings, howevertheimplemented, applicationisnotyetusablebysatelliteoperators, thefutureworkthatneedstobedoneis