Docu small changes and MQTT topics added to robot
This commit is contained in:
@@ -5,31 +5,86 @@ from raspySensors import RaspySensors
|
||||
#region global Varaibles
|
||||
sensors = RaspySensors()
|
||||
|
||||
sensorData = {
|
||||
"Air Temperature [°C]" : 0,
|
||||
"Air Humidity [%]" : 0,
|
||||
"Earth Humidity [%]" : 0,
|
||||
"Brightness [Lux]" : 0,
|
||||
"Plant ID": 0,
|
||||
"Action ID": 0
|
||||
}
|
||||
|
||||
gpsPosition = {
|
||||
"Position": 0,
|
||||
"Action ID": 0
|
||||
}
|
||||
|
||||
batteryStatus = {
|
||||
"Battery": 0,
|
||||
"Action ID": 0
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region
|
||||
|
||||
def measureSendData():
|
||||
'''Measure Data via sensor class and send via MQTT'''
|
||||
def measureSendData(plantID, actionID):
|
||||
'''Measure data for one plant via sensor class and send via MQTT'''
|
||||
sensorData = sensors.readSensors()
|
||||
client.publish("Robot/Data", json.dumps(sensorData, indent=4))
|
||||
sensorData["Plant_ID"] = plantID
|
||||
sensorData["Action_ID"] = actionID
|
||||
client.publish("Robot/Data/SensorData", json.dumps(sensorData, indent=4))
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region MQTT callbacks
|
||||
|
||||
#Testing
|
||||
def send_data_json(client, userdata, message):
|
||||
strIn = str(message.payload.decode("UTF-8"))
|
||||
dataDict = json.loads(strIn)
|
||||
print("Received data: ", json.dumps(dataDict))
|
||||
|
||||
#Function for all Plants or one which changes according to request
|
||||
def drive_plant_1(clients, userdata, message):
|
||||
#TODO Start drive forward
|
||||
print("Driving to plant 1")
|
||||
measureSendData()
|
||||
#TODO Start Drive Back Function
|
||||
|
||||
def drive_plant(clients, userdata, message):
|
||||
'''Function to drive to plant according to request'''
|
||||
|
||||
#[ ]TODO handle MQTT message
|
||||
print(f"Driving to plant {message}")
|
||||
#[ ]TODO Start drive forward -> Thread
|
||||
|
||||
print(f"Measuring data at Plant {message}")
|
||||
measureSendData() # With threads not here
|
||||
|
||||
print("Driving back to start position")
|
||||
#[ ]TODO Start Drive Back Function in Thread
|
||||
|
||||
print("Back at starting Position")
|
||||
|
||||
|
||||
def get_position(clients, userdata, message):
|
||||
'''Callback function for GPS position request
|
||||
Function to send actual GPS position via MQTT'''
|
||||
|
||||
#[ ]TODO handle MQTT message
|
||||
gpsPosition["Position"] = sensors.readPosition()
|
||||
gpsPosition["Action_ID"] = message
|
||||
client.publish("Robot/Data/Position", json.dumps(gpsPosition, indent=4))
|
||||
|
||||
|
||||
|
||||
def get_BatteryStatus(clients, userdata, message):
|
||||
'''Callback function for battery status request
|
||||
Function to read battery status from ev3 and send via MQTT'''
|
||||
|
||||
#[ ]TODO handle MQTT message
|
||||
batteryStatus["Battery"] = sensors.readBattery()
|
||||
batteryStatus["Action ID"] = message
|
||||
client.publish("Robot/Data/Battery", json.dumps(batteryStatus, indent=4))
|
||||
|
||||
batteryStatus()
|
||||
|
||||
|
||||
|
||||
@@ -37,15 +92,22 @@ def drive_plant_1(clients, userdata, message):
|
||||
|
||||
|
||||
mqttBroker = "mqtt.eclipseprojects.io"
|
||||
client = mqtt.Client("Smartphone_temp")
|
||||
client = mqtt.Client("Robot")
|
||||
|
||||
dataDict = {}
|
||||
dataDict = {} #Testing
|
||||
|
||||
client.message_callback_add("Robot/Data", send_data_json)
|
||||
client.message_callback_add("Robot/Plant/1", drive_plant_1)
|
||||
#Add callbacks
|
||||
client.message_callback_add("Robot/Data", send_data_json) #Testing
|
||||
client.message_callback_add("Robot/Action/Drive", drive_plant)
|
||||
client.message_callback_add("Robot/Action/GetPosition", get_position)
|
||||
client.message_callback_add("Robot/Action/GetBattery", get_BatteryStatus)
|
||||
|
||||
client.connect(mqttBroker)
|
||||
client.subscribe("Robot/Data")
|
||||
client.subscribe("Robot/Plant/1")
|
||||
|
||||
#Subscribe to topics
|
||||
client.subscribe("Robot/Data") #Testing
|
||||
client.subscribe("Robot/Action/Drive")
|
||||
client.subscribe("Robot/Action/GetPosition")
|
||||
client.subscribe("Robot/Action/GetBattery")
|
||||
|
||||
client.loop_forever()
|
||||
@@ -6,9 +6,10 @@ import json
|
||||
|
||||
class RaspySensors:
|
||||
'''Class to handle all sensors'''
|
||||
|
||||
def __init__(self) -> None:
|
||||
'''Init all Sensors'''
|
||||
#Message if Error
|
||||
#[ ]TODO Message if Error
|
||||
|
||||
|
||||
#Air Temperature & Humidity
|
||||
@@ -22,7 +23,9 @@ class RaspySensors:
|
||||
"Air Temperature [°C]" : 0,
|
||||
"Air Humidity [%]" : 0,
|
||||
"Earth Humidity [%]" : 0,
|
||||
"Brightness [Lux]" : 0
|
||||
"Brightness [Lux]" : 0,
|
||||
"Plant ID": 0,
|
||||
"Action ID": 0
|
||||
}
|
||||
|
||||
def readSensors(self):
|
||||
@@ -44,13 +47,21 @@ class RaspySensors:
|
||||
|
||||
return self.sensorData
|
||||
|
||||
#[ ]TODO - take picture function
|
||||
def takePicture(self):
|
||||
'''Take picture and return image'''
|
||||
return self.image
|
||||
|
||||
#[ ]TODO
|
||||
def readPosition(self):
|
||||
'''Read and return Position'''
|
||||
return self.position
|
||||
|
||||
#[ ]TODO
|
||||
def readBattery(self):
|
||||
'''Read and return battery of ev3'''
|
||||
return self.battery
|
||||
|
||||
|
||||
|
||||
#for Testing only
|
||||
|
||||
Reference in New Issue
Block a user