# 🖨️ 3D-Drucker Status API 📊

Willkommen beim Blueprint der 3D-Drucker Status API! Diese API ermöglicht es Ihnen, den Status mehrerer über LAN verbundener 3D-Drucker zu überwachen und Druckaufträge an sie zu senden.

## 🌟 Funktionen

- 🔍 Abrufen des Status von 3D-Druckern, einschließlich ihres aktuellen Status, Fortschrittes und Temperatur.
- 📥 Senden von Druckaufträgen an verfügbare 3D-Drucker.
- 💾 Speichern und Aktualisieren des Status jedes Druckers in einer SQLite-Datenbank.

## 🛠️Verwendete Technologien

- 🐍 Python
- 🌶️ Flask
- 🗄️ SQLite
- 🌐 HTTP-Anfragen

## 📋 Verordnungen

Bevor Sie die API starten, stellen Sie sicher, dass Sie folgendes haben:

- Python 3.x installiert
- Flask und python-dotenv-Bibliotheken installiert (`pip install flask python-dotenv`)
- Eine Liste von IP-Adressen der 3D-Drucker, die Sie überwachen möchten

## 🚀 Erste Schritte

1. Klonen Sie das Repository:
   ```
   git clone https://git.i.mercedes-benz.com/TBA-Berlin-FI/MYP
   ```

2. Installieren Sie die erforderlichen Abhängigkeiten:
   ```
   pip install -r requirements.txt
   ```

3. Erstellen Sie eine `.env`-Datei im Projektverzeichnis und geben Sie die IP-Adressen Ihrer 3D-Drucker an:
   ```
   PRINTER_IPS=192.168.0.10,192.168.0.11,192.168.0.12
   ```

4. Starten Sie das Skript, um die SQLite-Datenbank zu erstellen:
   ```
   python create_db.py
   ```

5. Starten Sie den API-Server:
   ```
   python app.py
   ```

6. Die API ist unter `http://localhost:5000` erreichbar.

## 📡 API-Endpunkte

- `GET /printer_status`: Rufen Sie den Status aller 3D-Drucker ab.
- `POST /print_job`: Senden Sie einen Druckauftrag an einen bestimmten 3D-Drucker.

## 📝 API-Nutzung

### Druckerstatus abrufen

Senden Sie eine `GET`-Anfrage an `/printer_status`, um den Status aller 3D-Drucker abzurufen.

Antwort:
```json
[
  {
    "ip": "192.168.0.10",
    "status": "frei",
    "progress": 0,
    "temperature": 25
  },
  {
    "ip": "192.168.0.11",
    "status": "besetzt",
    "progress": 50,
    "temperature": 180
  },
  ...
]
```

### Druckauftrag senden

Senden Sie eine `POST`-Anfrage an `/print_job` mit der folgenden JSON-Last, um einen Druckauftrag an einen bestimmten 3D-Drucker zu senden:

```json
{
  "printer_ip": "192.168.0.10",
  "file_url": "http://example.com/print_file.gcode"
}
```

Antwort:
```json
{
  "message": "Druckauftrag gestartet"
}
```


## 📄 Lizenz

- --> Noch nicht verfügbar