Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- import json
- import paho.mqtt.client as mqtt
- import uuid
- class Communication:
- def __init__(self, mqtt_client, planet):
- self.client = mqtt_client
- self.client.on_message = self.on_message
- self.planet = planet
- self.client.on_connect = self.on_connect
- self.client.on_message = self.on_message
- self.client.username_pw_set('147', password = 'YiDFP8qjb4')
- self.client.connect('mothership.inf.tu-dresden.de', port = 8883)
- self.client.subscribe('explorer/147', qos = 1)
- self.client.loop_start()
- self.client.loop_stop()
- self.client.disconnect()
- self.ready = {
- "from": "client",
- "type": "ready"
- }
- self.path = {
- "from": "client",
- "type": "path",
- "payload": {
- "startX": 1,
- "startY": 2,
- "startDirection": "N",
- "endX": 3,
- "endY": 4,
- "endDirection": "S",
- "pathStatus": "blocked"
- }
- }
- def on_connect(self, client, userdata, flags, rc): #called automatically when the broker responds to the connection request
- if rc == 0:
- client.publish("explorer/147", json.dumps(self.ready))
- print(json.dumps(self.ready))
- def on_message(self, client,topic, data, message): #called automatically upon a received message
- self.topic = message.topic
- msg = json.loads(message)
- client.subscribe(topic, 1)
- return msg
- def send_message(self, topic, message):
- message.topic = self.topic
- self.send = json.dumps(message)
- self.client.publish(topic, message, 1)
- def kommunikationsabfrage(self, msg):
- self.send_message("channel", json.dumps(self.path))
- if msg["type"] == "planet":
- planetName = msg["payload"]["planetName"]
- channel = "planet/{}-147".format(planetName)
- self.client.subscribe(channel, qos=1)
- self.send_message(channel, json.dumps(self.path))
- """if msg["type"] == "path": #korrektur in Zielkoordinaten?
- <> = msg["payload"]["endX"]
- <> = msg["payload"]["endY"]
- <> = msg["payload"]["endDirection"]
- """
- if msg["type"] == "pathUnveiled":
- start = [int(msg["payload"]["startX"]), int(msg["payload"]["startY"])]
- end = [int(msg["payload"]["endX"]), int(msg["payload"]["endY"])]
- startDirection = str(msg["payload"]["startDirection"])
- endDirection = str(msg["payload"]["endDirection"])
- if msg["payload"]["pathStatus"] == "free":
- pathWeight = msg["payload"]["pathWeight"]
- else:
- pathWeight = -1
- self.planet.add_path([start,startDirection], [end,endDirection], pathWeight )
- '''if msg["type"] == "pathSelect":
- <> = msg["payload"]["startDirection"] #Direction zu befahren?
- if msg["type"] == "target":
- if ["targetX"] == pos.x and ["targetY"] == pos.y :
- client.publish("explorer/147", json.dumps(targetReached))
- if msg["type"] == "done" #zurückkehren?
- '''
- #randomly floating messages
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement