Files
picar/DecisionSystem/CentralisedDecision/ballotvoter.py
2019-01-14 08:36:38 +10:30

37 lines
1.2 KiB
Python

import paho.mqtt.client as mqtt
import umsgpack
class BallotVoter:
def __init__(self):
self.client = mqtt.Client()
# id is generated automatically.
self.client.connect('172.16.13.128')
def on_connect(self, client, userdata, flags, rc):
print("Connected with result code " + str(rc))
self.client.subscribe('swarm1/voters', qos=1)
# Create the message to send that it is now part of the swarm.
# Need to set a will as well to broadcast on unexpected disconnection, so commander
# knows it is no longer part of the set of voters.
# Leaving this until core centralised system is working.
#will_message = {"type": "UDisconnect"}
# Send a connected message to let any commanders know that
# it is available.
self.client.publish("swarm/commander", "connect," + self.client._client_id)
def on_message(self, client, userdata, message):
messageDict = umsgpack.unpackb(message)
if "type" in messageDict.keys:
# Ok message.
if messageDict["type"] == "reqVote":
submit_vote()
else:
# Bad message.
def submit_vote(self):
self.client.publish('swarm1/')