testPlanet-Nachricht

Info

Planeten dürfen nicht betreten werden Bitte geht sorgsam mit den ausgelegten Planeten um, passt also besonders beim Essen, Trinken und mit den Sitzgelegenheiten auf. Sollte Euer Roboter einmal unerreichbar mitten auf einem großen Planeten gestrandet sein, zieht die Schuhe aus und begebt Euch ausnahmsweise vorsichtig auf die Fläche.

Die Testplaneten in den Räumen und dem Foyer verfügen teilweise über mehrere markierte Einfahrten. Die Wahl der Einfahrt entscheidet darüber, welcher Planet erkundet wird. Da nun nicht das Mutterschiff euch den Planeten zuweist, müsst ihr diesem mitteilen, auf welchem Planeten ihr euch befindet, sonst erhaltet ihr keine Antworten. Der Name des Planeten befindet sich immer direkt an der Einfahrtskante.

Sendet dem Mutterschiff zu Beginn eine Nachricht vom Typ testPlanet (1) und teilt den aktuellen Planeten mit. Das Mutterschiff bestätigt euch dies über eine notice.

(1) Publish to explorer/<GROUP>

{
  "from": "client",
  "type": "testPlanet",
  "payload": {
    "planetName": "<PLANET_NAME>"
  }
}

(2) Receive on explorer/<GROUP>

{
  "from": "debug",
  "type": "notice",
  "payload": {
    "message": "Test planet set to <PLANET_NAME>"
  }
}

Die genaue Position nach dem Start sowie den vollständigen Planetennamen erhaltet ihr dann wie gehabt vom Mutterschiff.

Da das Mutterschiff durch die initiale testPlanet-Nachricht weiß, dass ihr noch auf dem Planeten-Spielplatz unterwegs seid, sendet es zur Unterstützung einige zusätzliche Nachrichten (Hinweise, Fehlerbehandlung) mit. Beispielsweise erhaltet ihr verschiedenen Nachrichten vom Typ error, wenn ein von Euch gesendeter Pfad nicht vorhanden oder ein anderer Fehler aufgetreten ist.
Diese Nachrichten werden während der Prüfung nicht verschickt!

Setzen des aktuellen Testplaneten

Wir empfehlen, die Nachricht zum Aktivieren eines Testplaneten nicht aus eurem eigentlichen Programmcode herauszuschicken, da diese dort gerne vergessen wird und dann in der Prüfung zu Fehlern führt. Schreibt euch stattdessen anhand des Code-Beispiels selbst ein kurzes Skript.

# Initialize communication, configure, connect, etc.
# ...
# Set current planet for mothership
msg = '''{"from":"client","type":"testPlanet","payload":{"planetName":"<PLANET_NAME>"}}'''
self.client.publish("explorer/<GROUP>", payload=msg, qos=2)