testplanet-Nachricht

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 ü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. Neben den Landezonen befinden die Namen der Planeten sowie jeweils eine Kurz-Übersicht zu den Gewichten und den besonderen Punkten.

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": "active planet: <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 notice, wenn ein von Euch gesendeter Pfad nicht vorhanden 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 heraus zu schicken, da diese dort gerne vergessen wird und dann in der Prüfung zu Fehlern führt. Schreibt euch stattdessen anhand des obigen 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=1)

Alternativ können wir euch diesen kurzen Befehl für eure Kommandozeile nahelegen.
Dazu benötigt ihr das mosqitto-clients package (vorinstalliert auf dem Brick).

# Set current planet for mothership (Details: https://mosquitto.org/man/mosquitto_pub-1.html)
$ mosquitto_pub -h mothership.inf.tu-dresden.de -p 1883 -u "<GROUP>" -P "<PASS>" -t "explorer/<GROUP>" \
    -m '{"from":"client","type":"testplanet","payload":{"planetName":"<PLANET_NAME>"}}' -q 1