From 6e66611e0638dc50f81815e378ccc2aca09922ab Mon Sep 17 00:00:00 2001 From: waldluis Date: Sun, 16 Apr 2023 11:46:55 +0200 Subject: [PATCH] Docu small changes and MQTT topics added to robot --- documentation/Definitions.docx | Bin 15646 -> 15921 bytes documentation/Kommunikation.mdj | 243 ++++++++++++++++++++++++- software/roboter/raspy/mainProg.py | 92 ++++++++-- software/roboter/raspy/raspySensors.py | 15 +- 4 files changed, 330 insertions(+), 20 deletions(-) diff --git a/documentation/Definitions.docx b/documentation/Definitions.docx index 49464484c9fb4be00d22ada0ffa20538d80b3dc3..87e559ec0c9e841f82f2ee7a59dc94d88d7cb19f 100644 GIT binary patch delta 5141 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 delta 4839 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 diff --git a/documentation/Kommunikation.mdj b/documentation/Kommunikation.mdj index 657e8a6..55dabf5 100644 --- a/documentation/Kommunikation.mdj +++ b/documentation/Kommunikation.mdj @@ -3504,7 +3504,8 @@ "_parent": { "$ref": "AAAAAAGHMigXUpG7rpw=" }, - "name": "Role1" + "name": "Role1", + "type": "" }, { "_type": "UMLAttribute", @@ -3512,7 +3513,8 @@ "_parent": { "$ref": "AAAAAAGHMigXUpG7rpw=" }, - "name": "Role2" + "name": "Role2", + "type": "" }, { "_type": "UMLAttribute", @@ -3520,7 +3522,242 @@ "_parent": { "$ref": "AAAAAAGHMigXUpG7rpw=" }, - "name": "Role3" + "name": "Role3", + "type": "" + } + ] + }, + { + "_type": "UMLModel", + "_id": "AAAAAAGHSvOnT6lLzLI=", + "_parent": { + "$ref": "AAAAAAFF+h6SjaM2Hec=" + }, + "name": "Model1", + "ownedElements": [ + { + "_type": "UMLClassDiagram", + "_id": "AAAAAAGHSvOnUKlMd1M=", + "_parent": { + "$ref": "AAAAAAGHSvOnT6lLzLI=" + }, + "name": "ClassDiagram1", + "ownedViews": [ + { + "_type": "UMLClassView", + "_id": "AAAAAAGHSvO0JalSVe0=", + "_parent": { + "$ref": "AAAAAAGHSvOnUKlMd1M=" + }, + "model": { + "$ref": "AAAAAAGHSvO0JalQDB0=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGHSvO0JalTHAU=", + "_parent": { + "$ref": "AAAAAAGHSvO0JalSVe0=" + }, + "model": { + "$ref": "AAAAAAGHSvO0JalQDB0=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGHSvO0JalU/Lk=", + "_parent": { + "$ref": "AAAAAAGHSvO0JalTHAU=" + }, + "visible": false, + "font": "Arial;13;0", + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAGHSvO0JalVXXc=", + "_parent": { + "$ref": "AAAAAAGHSvO0JalTHAU=" + }, + "font": "Arial;13;1", + "left": 637, + "top": 119, + "width": 190, + "height": 13, + "text": "RaspySensors" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGHSvO0JalW0mo=", + "_parent": { + "$ref": "AAAAAAGHSvO0JalTHAU=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 80.9072265625, + "height": 13, + "text": "(from Model1)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGHSvO0JalXjv8=", + "_parent": { + "$ref": "AAAAAAGHSvO0JalTHAU=" + }, + "visible": false, + "font": "Arial;13;0", + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 632, + "top": 112, + "width": 200, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAGHSvO0JalU/Lk=" + }, + "nameLabel": { + "$ref": "AAAAAAGHSvO0JalVXXc=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGHSvO0JalW0mo=" + }, + "propertyLabel": { + "$ref": "AAAAAAGHSvO0JalXjv8=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGHSvO0JqlYsbg=", + "_parent": { + "$ref": "AAAAAAGHSvO0JalSVe0=" + }, + "model": { + "$ref": "AAAAAAGHSvO0JalQDB0=" + }, + "font": "Arial;13;0", + "left": 632, + "top": 137, + "width": 200, + "height": 10 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGHSvO0JqlZXW4=", + "_parent": { + "$ref": "AAAAAAGHSvO0JalSVe0=" + }, + "model": { + "$ref": "AAAAAAGHSvO0JalQDB0=" + }, + "subViews": [ + { + "_type": "UMLOperationView", + "_id": "AAAAAAGHSvPxiKl9u9A=", + "_parent": { + "$ref": "AAAAAAGHSvO0JqlZXW4=" + }, + "model": { + "$ref": "AAAAAAGHSvPxg6l6DOE=" + }, + "font": "Arial;13;0", + "left": 637, + "top": 152, + "width": 190, + "height": 13, + "text": "+measureAll(): Dictionary", + "horizontalAlignment": 0 + } + ], + "font": "Arial;13;0", + "left": 632, + "top": 147, + "width": 200, + "height": 23 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGHSvO0JqlauSU=", + "_parent": { + "$ref": "AAAAAAGHSvO0JalSVe0=" + }, + "model": { + "$ref": "AAAAAAGHSvO0JalQDB0=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGHSvO0Jqlbl7Q=", + "_parent": { + "$ref": "AAAAAAGHSvO0JalSVe0=" + }, + "model": { + "$ref": "AAAAAAGHSvO0JalQDB0=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 632, + "top": 112, + "width": 200, + "height": 280, + "nameCompartment": { + "$ref": "AAAAAAGHSvO0JalTHAU=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGHSvO0JqlYsbg=" + }, + "operationCompartment": { + "$ref": "AAAAAAGHSvO0JqlZXW4=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGHSvO0JqlauSU=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGHSvO0Jqlbl7Q=" + } + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGHSvO0JalQDB0=", + "_parent": { + "$ref": "AAAAAAGHSvOnT6lLzLI=" + }, + "name": "RaspySensors", + "operations": [ + { + "_type": "UMLOperation", + "_id": "AAAAAAGHSvPxg6l6DOE=", + "_parent": { + "$ref": "AAAAAAGHSvO0JalQDB0=" + }, + "name": "measureAll", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGHSvSoBamCDuA=", + "_parent": { + "$ref": "AAAAAAGHSvPxg6l6DOE=" + }, + "type": "Dictionary", + "direction": "return" + } + ] + } + ] } ] } diff --git a/software/roboter/raspy/mainProg.py b/software/roboter/raspy/mainProg.py index 7122ab7..c835469 100644 --- a/software/roboter/raspy/mainProg.py +++ b/software/roboter/raspy/mainProg.py @@ -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() \ No newline at end of file diff --git a/software/roboter/raspy/raspySensors.py b/software/roboter/raspy/raspySensors.py index ecdd333..5da4710 100644 --- a/software/roboter/raspy/raspySensors.py +++ b/software/roboter/raspy/raspySensors.py @@ -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