SSH start for robot scripts
This commit is contained in:
parent
57cadbbbf0
commit
6adc5a3426
@ -1,10 +1,15 @@
|
||||
import paho.mqtt.client as mqtt
|
||||
import json
|
||||
from raspySensors import RaspySensors
|
||||
import threading
|
||||
import os
|
||||
import signal
|
||||
import time
|
||||
from raspy_sensors import RaspySensors
|
||||
|
||||
#region global Varaibles
|
||||
sensors = RaspySensors()
|
||||
client = mqtt.Client()
|
||||
#sensors:RaspySensors()
|
||||
leftRight = 50
|
||||
plantNumber = 0
|
||||
|
||||
sensorData = {
|
||||
"Air Temperature [°C]" : 0,
|
||||
@ -38,26 +43,48 @@ def measure_send_data(plantID, actionID):
|
||||
client.publish("Robot/Data/SensorData", json.dumps(sensorData, indent=4))
|
||||
|
||||
|
||||
def drive_home():
|
||||
'''Function to drive robot back to starting position in thread'''
|
||||
thread = threading.Thread(target= os.system(f'sshpass -p maker ssh robot@ev3dev.local python3 /home/robot/Programme/drive_back.py {leftRight}'), daemon=True)
|
||||
thread.start()
|
||||
|
||||
|
||||
def drive_plant():
|
||||
'''Function to drive to plant according to number from MQTT message in thread'''
|
||||
print(f"Driving to Plant {plantNumber}")
|
||||
os.system(f'sshpass -p maker ssh robot@ev3dev.local python3 /home/robot/Programme/plant_{plantNumber}.py')
|
||||
print("Raising Signal")
|
||||
signal.raise_signal(signal.SIGUSR1)
|
||||
|
||||
|
||||
def init_mqtt():
|
||||
'''Initialise MQTT client'''
|
||||
mqttBroker = "mqtt.eclipseprojects.io"
|
||||
global client
|
||||
client = mqtt.Client("Robot")
|
||||
|
||||
#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.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)
|
||||
|
||||
#Subscribe to topics
|
||||
client.subscribe("Robot/Data") #Testing
|
||||
client.subscribe("Robot/Action/Drive")
|
||||
client.subscribe("Robot/Action/GetPosition")
|
||||
client.subscribe("Robot/Action/GetBattery")
|
||||
client.subscribe("ROBOT/DATA") #Testing
|
||||
client.subscribe("ROBOT/ACTION/DRIVE")
|
||||
client.subscribe("ROBOT/Action/GETPOSITION")
|
||||
client.subscribe("ROBOT/ACTION/GETBATTERY")
|
||||
|
||||
client.connect(mqttBroker)
|
||||
|
||||
|
||||
def signal_measure():
|
||||
'''Signal function to measure one plant and start driving home'''
|
||||
print("Measuring Sensors")
|
||||
#measure_send_data()
|
||||
print("Driving Home")
|
||||
drive_home()
|
||||
|
||||
#endregion
|
||||
|
||||
#region MQTT callbacks
|
||||
@ -71,19 +98,18 @@ def send_data_json(client, userdata, message):
|
||||
|
||||
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}")
|
||||
measure_send_data() # With Signal not here
|
||||
print("received drive to plant")
|
||||
|
||||
print("Driving back to start position")
|
||||
#[ ]TODO Start Drive Back Function in Thread
|
||||
plantNumber = int(message.payload.decode("UTF-8"))
|
||||
if plantNumber % 2 == 0:
|
||||
leftRight = -50 #rotating left
|
||||
else:
|
||||
leftRight = 50 #rotating right
|
||||
|
||||
thread = threading.Thread(target= drive_plant, daemon=True)
|
||||
thread.start()
|
||||
|
||||
print("Back at starting Position") #Signal
|
||||
|
||||
|
||||
def get_position(clients, userdata, message):
|
||||
'''Callback function for GPS position request
|
||||
@ -115,10 +141,13 @@ def get_BatteryStatus(clients, userdata, message):
|
||||
|
||||
def main():
|
||||
init_mqtt()
|
||||
dataDict = {} #Testing
|
||||
print("MQTT initialized")
|
||||
signal.signal(signal.SIGUSR1, signal_measure)
|
||||
# dataDict = {} #Testing
|
||||
|
||||
client.loop_start()
|
||||
client.loop_forever()
|
||||
|
||||
print("Starting Loop")
|
||||
while True:
|
||||
pass
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user