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 paho.mqtt.client as mqtt
|
||||||
import json
|
import json
|
||||||
from raspySensors import RaspySensors
|
import threading
|
||||||
|
import os
|
||||||
|
import signal
|
||||||
|
import time
|
||||||
|
from raspy_sensors import RaspySensors
|
||||||
|
|
||||||
#region global Varaibles
|
#region global Varaibles
|
||||||
sensors = RaspySensors()
|
#sensors:RaspySensors()
|
||||||
client = mqtt.Client()
|
leftRight = 50
|
||||||
|
plantNumber = 0
|
||||||
|
|
||||||
sensorData = {
|
sensorData = {
|
||||||
"Air Temperature [°C]" : 0,
|
"Air Temperature [°C]" : 0,
|
||||||
@ -38,26 +43,48 @@ def measure_send_data(plantID, actionID):
|
|||||||
client.publish("Robot/Data/SensorData", json.dumps(sensorData, indent=4))
|
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():
|
def init_mqtt():
|
||||||
'''Initialise MQTT client'''
|
'''Initialise MQTT client'''
|
||||||
mqttBroker = "mqtt.eclipseprojects.io"
|
mqttBroker = "mqtt.eclipseprojects.io"
|
||||||
|
global client
|
||||||
client = mqtt.Client("Robot")
|
client = mqtt.Client("Robot")
|
||||||
|
|
||||||
#Add callbacks
|
#Add callbacks
|
||||||
client.message_callback_add("Robot/Data", send_data_json) #Testing
|
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/DRIVE", drive_plant)
|
||||||
client.message_callback_add("Robot/Action/GetPosition", get_position)
|
client.message_callback_add("ROBOT/ACTION/GETPOSITION", get_position)
|
||||||
client.message_callback_add("Robot/Action/GetBattery", get_BatteryStatus)
|
client.message_callback_add("ROBOT/ACTION/GETBATTERY", get_BatteryStatus)
|
||||||
|
|
||||||
#Subscribe to topics
|
#Subscribe to topics
|
||||||
client.subscribe("Robot/Data") #Testing
|
client.subscribe("ROBOT/DATA") #Testing
|
||||||
client.subscribe("Robot/Action/Drive")
|
client.subscribe("ROBOT/ACTION/DRIVE")
|
||||||
client.subscribe("Robot/Action/GetPosition")
|
client.subscribe("ROBOT/Action/GETPOSITION")
|
||||||
client.subscribe("Robot/Action/GetBattery")
|
client.subscribe("ROBOT/ACTION/GETBATTERY")
|
||||||
|
|
||||||
client.connect(mqttBroker)
|
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
|
#endregion
|
||||||
|
|
||||||
#region MQTT callbacks
|
#region MQTT callbacks
|
||||||
@ -72,17 +99,16 @@ def send_data_json(client, userdata, message):
|
|||||||
def drive_plant(clients, userdata, message):
|
def drive_plant(clients, userdata, message):
|
||||||
'''Function to drive to plant according to request'''
|
'''Function to drive to plant according to request'''
|
||||||
|
|
||||||
#[ ]TODO handle MQTT message
|
print("received drive to plant")
|
||||||
print(f"Driving to plant {message}")
|
|
||||||
#[ ]TODO Start drive forward -> Thread
|
|
||||||
|
|
||||||
print(f"Measuring data at Plant {message}")
|
plantNumber = int(message.payload.decode("UTF-8"))
|
||||||
measure_send_data() # With Signal not here
|
if plantNumber % 2 == 0:
|
||||||
|
leftRight = -50 #rotating left
|
||||||
|
else:
|
||||||
|
leftRight = 50 #rotating right
|
||||||
|
|
||||||
print("Driving back to start position")
|
thread = threading.Thread(target= drive_plant, daemon=True)
|
||||||
#[ ]TODO Start Drive Back Function in Thread
|
thread.start()
|
||||||
|
|
||||||
print("Back at starting Position") #Signal
|
|
||||||
|
|
||||||
|
|
||||||
def get_position(clients, userdata, message):
|
def get_position(clients, userdata, message):
|
||||||
@ -115,10 +141,13 @@ def get_BatteryStatus(clients, userdata, message):
|
|||||||
|
|
||||||
def main():
|
def main():
|
||||||
init_mqtt()
|
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:
|
while True:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user