-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathraspirover.py
124 lines (94 loc) · 3.62 KB
/
raspirover.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
import time
import paho.mqtt.client as mqtt
from flask import Flask, render_template, request
from roboclaw_3 import Roboclaw
geschwindigkeit = 60
roboclaw = Roboclaw('/dev/ttyACM0', 38400)
roboclaw.Open()
# Flask - Webseite
app = Flask(__name__)
@app.route("/", methods=['GET', 'POST'])
def index():
if request.method == 'POST':
#geschwindigkeit = request.form["geschwindigkeit"]
if request.form['steuerbefehl'] == "vor": fahre_rover_vorwaerts(geschwindigkeit)
if request.form['steuerbefehl'] == "stop": stoppe_rover()
if request.form['steuerbefehl'] == "zurueck": fahre_rover_rueckwaerts(geschwindigkeit)
if request.form['steuerbefehl'] == "rechts": drehe_rover_nach_rechts(geschwindigkeit)
if request.form['steuerbefehl'] == "links": drehe_rover_nach_links(geschwindigkeit)
return render_template ('index.html')
# Kommandos direkt über einzelne URLs
@app.route("/vor")
def vorwaerts():
fahre_rover_vorwaerts(geschwindigkeit)
return "vorwärts"
@app.route("/zurueck")
def zurueck():
fahre_rover_rueckwaerts(geschwindigkeit)
return "zurück"
@app.route("/stop")
def stop():
stoppe_rover()
return "stop"
@app.route("/links")
def links():
drehe_rover_nach_links(geschwindigkeit)
return "links"
@app.route("/rechts")
def rechts():
drehe_rover_nach_rechts(geschwindigkeit)
return "rechts"
# Befehle an Roboclaw geben
def fahre_rover_vorwaerts(geschwindigkeit):
drehe_rechten_motor_vorwaerts(geschwindigkeit)
drehe_linken_motor_vorwaerts(geschwindigkeit)
client.publish("RaspiRover/Bewegung", "vorwaerts")
client.publish("RaspiRover/Geschwindigkeit", geschwindigkeit)
return "OK"
def fahre_rover_rueckwaerts(geschwindigkeit):
drehe_rechten_motor_rueckwaerts(geschwindigkeit)
drehe_linken_motor_rueckwaerts(geschwindigkeit)
client.publish("RaspiRover/Bewegung", "rueckwaerts")
client.publish("RaspiRover/Geschwindigkeit", geschwindigkeit)
return "OK"
def drehe_rover_nach_rechts(geschwindigkeit):
drehe_rechten_motor_rueckwaerts(geschwindigkeit)
drehe_linken_motor_vorwaerts(geschwindigkeit)
client.publish("RaspiRover/Bewegung", "dreht rechts")
client.publish("RaspiRover/Geschwindigkeit", geschwindigkeit)
return "OK"
def drehe_rover_nach_links(geschwindigkeit):
drehe_rechten_motor_vorwaerts(geschwindigkeit)
drehe_linken_motor_rueckwaerts(geschwindigkeit)
client.publish("RaspiRover/Bewegung", "dreht links")
client.publish("RaspiRover/Geschwindigkeit", geschwindigkeit)
return "OK"
def stoppe_rover():
drehe_rechten_motor_vorwaerts(0)
drehe_linken_motor_vorwaerts(0)
client.publish("RaspiRover/Bewegung", "gestoppt")
client.publish("RaspiRover/Geschwindigkeit", 0)
return "OK"
def drehe_rechten_motor_vorwaerts(geschwindigkeit):
roboclaw.ForwardM1(0x80, geschwindigkeit)
return "OK"
def drehe_linken_motor_vorwaerts(geschwindigkeit):
roboclaw.ForwardM2(0x80, geschwindigkeit)
return "OK"
def drehe_rechten_motor_rueckwaerts(geschwindigkeit):
roboclaw.BackwardM1(0x80, geschwindigkeit)
return "OK"
def drehe_linken_motor_rueckwaerts(geschwindigkeit):
roboclaw.BackwardM2(0x80, geschwindigkeit)
return "OK"
# MQTT
def on_connect(client, userdata, flags, rc):
print("Connected with result code " + str(rc))
client = mqtt.Client()
client.on_connect = on_connect
client.username_pw_set("mqtt_user", password="mqttpwd")
client.connect("192.168.178.74", 1883, 60)
client.publish("RaspiRover/Bewegung", "gestoppt")
client.publish("RaspiRover/Geschwindigkeit", 0)
if __name__ == '__main__':
app.run(host="0.0.0.0", port=1337, debug=True)