import RPi.GPIO as GPIO from flask import Flask, render_template, request import threading import time import pigpio pi = pigpio.pi() from src.einstellungen import * from src.schrittmotor import motor, motor_bewegen kamera_server = Flask(__name__) # Set each pin as an output and make it low: for pin in pins_out: pi.set_mode(pins_out[pin]['nr'], pigpio.OUTPUT) pi.set_pull_up_down(pins_out[pin]['nr'], pigpio.PUD_UP) pi.write(pins_out[pin]['nr'], 1) #GPIO.setup(pins_out[pin]['nr'], GPIO.OUT) #GPIO.output(pins_out[pin]['nr'], GPIO.HIGH) for pin in pins_in: pi.set_mode(pins_in[pin]['nr'], pigpio.INPUT) pi.set_pull_up_down(pins_in[pin]['nr'], pigpio.PUD_UP) #GPIO.setup(pins_in[pin]['nr'], GPIO.IN) #GPIO.output(pins_out['kamera']['nr'], GPIO.LOW) pi.write(pins_out['kamera']['nr'], 0) m1 = motor('drehen', m1_a1, m1_b1, m1_a2, m1_b2, m1_t1, m1_t2, m1_te, m1_es, 1, 180) m2 = motor('kippen', m2_a1, m2_b1, m2_a2, m2_b2, m2_t1, m2_t2, m2_te, m2_es, 1, 90) m3 = motor('zoom', m3_a1, m3_b1, m3_a2, m3_b2, m3_t1, m3_t2, m3_te, m3_es, 0, 50) m1.eichen() m2.eichen() m3.eichen() #m1.vorwaerts(100) #m1.stop() #m2.stop() @kamera_server.route("/") def main(): # For each pin, read the pin state and store it in the pins dictionary: for pin in pins_out: #pins_out[pin]['state'] = GPIO.input(pins_out[pin]['nr']) pins_out[pin]['state'] = pi.read(pins_out[pin]['nr']) for pin in pins_in: #pins_in[pin]['state'] = GPIO.input(pins_in[pin]['nr']) pins_in[pin]['state'] = pi.read(pins_in[pin]['nr']) # Put the pin dictionary into the template data dictionary: templateData = { 'pins' : pins_out, 'pins_in' : pins_in, 'pos_1' : str(m1.pos), 'pos_2' : str(m2.pos), 'pos_3' : str(m3.pos) } # Pass the template data into the template main.html and return it to the user return render_template('main.html', **templateData) # The function below is executed when someone requests a URL with the pin number and action in it: @kamera_server.route("//") def action(changePin, action): # Convert the pin from the URL into an integer: # Get the device name for the pin being changed: deviceName = pins_out[changePin]['name'] changePin = pins_out[changePin]['nr'] # If the action part of the URL is "on," execute the code indented below: if action == "on": # Set the pin high: #GPIO.output(changePin, GPIO.HIGH) pi.write(changePin, 0) # Save the status message to be passed into the template: message = "Turned " + deviceName + " on." if action == "off": #GPIO.output(changePin, GPIO.LOW) pi.write(changePin, 1) message = "Turned " + deviceName + " off." # For each pin, read the pin state and store it in the pins dictionary: for pin in pins_out: #pins_out[pin]['state'] = GPIO.input(pins_out[pin]['nr']) pins_out[pin]['state'] = pi.read(pins_out[pin]['nr']) for pin in pins_in: #pins_in[pin]['state'] = GPIO.input(pins_in[pin]['nr']) pins_in[pin]['state'] = pi.read(pins_in[pin]['nr']) # Along with the pin dictionary, put the message into the template data dictionary: templateData = { 'pins' : pins_out, 'pins_in' : pins_in, 'pos_1' : str(m1.pos), 'pos_2' : str(m2.pos), 'pos_3' : str(m3.pos) } return render_template('main.html', **templateData) @kamera_server.route("/position//////") def motor_test(drehen, pos1, kippen, pos2, zoom, pos3): if drehen == "drehen": p1 = int(pos1) else: p1 = m1.pos if kippen == "kippen": p2 = int(pos2) else: p2 = m2.pos if zoom == "zoom": p3 = int(pos3) else: p3 = m3.pos while m1.aktiv == 1 or m2.aktiv == 1 or m3.aktiv == 1: print('warten') time.sleep(1) th1 = motor_bewegen(m1, p1) th2 = motor_bewegen(m2, p2) th3 = motor_bewegen(m3, p3) th1.join() th2.join() th3.join() return 'Drehen: ' + str(m1.pos) + ', Kippen: ' + str(m2.pos) + ', Zoom: ' + str(m3.pos) @kamera_server.route("/eichen") def motor_eichen(): m1.eichen() m2.eichen() m3.eichen() templateData = { 'pins' : pins_out, 'pins_in' : pins_in, 'pos_1' : str(m1.pos), 'pos_2' : str(m2.pos), 'pos_3' : str(m3.pos) } return render_template('main.html', **templateData) if __name__ == "__main__": kamera_server.run(host='0.0.0.0')