Create server.py
This commit is contained in:
parent
c5819d0ca8
commit
4793bdaf71
@ -1,5 +1,6 @@
|
|||||||
from flask import Flask, jsonify
|
from flask import Flask, jsonify, request
|
||||||
import requests
|
import requests
|
||||||
|
import sqlite3
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
|
||||||
@ -10,20 +11,35 @@ printers = [
|
|||||||
"192.168.0.12"
|
"192.168.0.12"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# SQLite-Datenbank initialisieren
|
||||||
|
def init_db():
|
||||||
|
conn = sqlite3.connect('printers.db')
|
||||||
|
c = conn.cursor()
|
||||||
|
c.execute('''CREATE TABLE IF NOT EXISTS printers
|
||||||
|
(ip TEXT PRIMARY KEY, status TEXT)''')
|
||||||
|
for printer_ip in printers:
|
||||||
|
c.execute("INSERT OR IGNORE INTO printers (ip, status) VALUES (?, ?)", (printer_ip, "frei"))
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
@app.route('/printer_status', methods=['GET'])
|
@app.route('/printer_status', methods=['GET'])
|
||||||
def get_printer_status():
|
def get_printer_status():
|
||||||
printer_status = []
|
printer_status = []
|
||||||
|
conn = sqlite3.connect('printers.db')
|
||||||
|
c = conn.cursor()
|
||||||
|
|
||||||
for printer_ip in printers:
|
for printer_ip in printers:
|
||||||
|
c.execute("SELECT status FROM printers WHERE ip = ?", (printer_ip,))
|
||||||
|
status = c.fetchone()[0]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Sende eine GET-Anfrage an den 3D-Drucker, um den Status abzufragen
|
|
||||||
response = requests.get(f"http://{printer_ip}/api/printer/status")
|
response = requests.get(f"http://{printer_ip}/api/printer/status")
|
||||||
|
|
||||||
if response.status_code == 200:
|
if response.status_code == 200:
|
||||||
status_data = response.json()
|
status_data = response.json()
|
||||||
printer_status.append({
|
printer_status.append({
|
||||||
"ip": printer_ip,
|
"ip": printer_ip,
|
||||||
"status": status_data["status"],
|
"status": status,
|
||||||
"progress": status_data["progress"],
|
"progress": status_data["progress"],
|
||||||
"temperature": status_data["temperature"]
|
"temperature": status_data["temperature"]
|
||||||
})
|
})
|
||||||
@ -42,7 +58,39 @@ def get_printer_status():
|
|||||||
"temperature": None
|
"temperature": None
|
||||||
})
|
})
|
||||||
|
|
||||||
|
conn.close()
|
||||||
return jsonify(printer_status)
|
return jsonify(printer_status)
|
||||||
|
|
||||||
|
@app.route('/print_job', methods=['POST'])
|
||||||
|
def submit_print_job():
|
||||||
|
print_job = request.json
|
||||||
|
printer_ip = print_job["printer_ip"]
|
||||||
|
file_url = print_job["file_url"]
|
||||||
|
|
||||||
|
conn = sqlite3.connect('printers.db')
|
||||||
|
c = conn.cursor()
|
||||||
|
c.execute("SELECT status FROM printers WHERE ip = ?", (printer_ip,))
|
||||||
|
status = c.fetchone()[0]
|
||||||
|
|
||||||
|
if status == "frei":
|
||||||
|
try:
|
||||||
|
response = requests.post(f"http://{printer_ip}/api/print_job", json={"file_url": file_url})
|
||||||
|
|
||||||
|
if response.status_code == 200:
|
||||||
|
c.execute("UPDATE printers SET status = 'besetzt' WHERE ip = ?", (printer_ip,))
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
return jsonify({"message": "Druckauftrag gestartet"}), 200
|
||||||
|
else:
|
||||||
|
conn.close()
|
||||||
|
return jsonify({"message": "Fehler beim Starten des Druckauftrags"}), 500
|
||||||
|
except:
|
||||||
|
conn.close()
|
||||||
|
return jsonify({"message": "Drucker nicht erreichbar"}), 500
|
||||||
|
else:
|
||||||
|
conn.close()
|
||||||
|
return jsonify({"message": "Drucker ist nicht frei"}), 400
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
init_db()
|
||||||
app.run(host='0.0.0.0', port=5000)
|
app.run(host='0.0.0.0', port=5000)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user