diff --git a/.github/workflows/docs-latex.yml b/.github/workflows/docs-latex.yml
new file mode 100644
index 0000000..ece186b
--- /dev/null
+++ b/.github/workflows/docs-latex.yml
@@ -0,0 +1,39 @@
+name: Build LaTeX document
+run-name: ${{ GITHUB.ACTOR }} is compiling a Latex Document đ
+on:
+ workflow_dispatch:
+ push:
+ branches:
+ - main
+ paths:
+ - ".github/workflows/docs-latex.yml"
+ - "content/**"
+ - "main.tex"
+jobs:
+ build_latex:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Set up Git repository
+ uses: actions/checkout@v3
+ - name: Search for directory
+ run: ls -l
+ - name: Compile LaTeX document
+ uses: xu-cheng/latex-action@v2
+ with:
+ root_file: main.tex
+ latexmk_use_xelatex: true
+ - name: Upload PDF file as Release
+ uses: "marvinpinto/action-automatic-releases@latest"
+ with:
+ repo_token: "${{ secrets.GITHUB_TOKEN }}"
+ automatic_release_tag: "latest"
+ prerelease: true
+ title: "Development Build"
+ files: |
+ main.pdf
+ - name: Upload PDF file as Artifact
+ uses: actions/upload-artifact@v3
+ with:
+ name: Latex Dokumentation
+ path: main.pdf
+
diff --git a/.github/workflows/docs-markdown.yml b/.github/workflows/docs-markdown.yml
new file mode 100644
index 0000000..c7f7043
--- /dev/null
+++ b/.github/workflows/docs-markdown.yml
@@ -0,0 +1,34 @@
+name: Build Documentation from Markdown
+run-name: ${{ GITHUB.ACTOR }} is generating a Documentation from Markdown đ
+on:
+ workflow_dispatch:
+ push:
+ branches:
+ - main
+ paths:
+ - ".github/workflows/docs-markdown.yml"
+ - "docs/**"
+jobs:
+ build_markdown_documentation:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Set up Git repository
+ uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+ - name: Generate HTML from Markdown
+ uses: ldeluigi/markdown-docs@latest
+ with:
+ src: docs/
+ dst: ./gh-pages
+ title: Markdown Docs
+ language: de
+ icon: library
+ primary-color: indigo
+ secondary-color: indigo
+ hide-repository: false
+ - name: Deploy GitHub Pages
+ uses: peaceiris/actions-gh-pages@v3
+ with:
+ publish_dir: ./gh-pages
+ github_token: ${{ secrets.GITHUB_TOKEN }}
\ No newline at end of file
diff --git a/.github/workflows/docs-mkdocs.yml b/.github/workflows/docs-mkdocs.yml
new file mode 100644
index 0000000..3af763d
--- /dev/null
+++ b/.github/workflows/docs-mkdocs.yml
@@ -0,0 +1,28 @@
+name: Build Documentation with mkdocs
+run-name: ${{ GITHUB.ACTOR }} is generating a Documentation from Markdown đ
+on:
+ workflow_dispatch:
+ push:
+ branches:
+ - main
+ paths:
+ - ".github/workflows/docs-mkdocs.yml"
+ - "docs/**"
+jobs:
+ build_markdown_documentation:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Set up Git repository
+ uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+ - name: Generate HTML from Markdown
+ uses: actions/setup-python@v4
+ - run: pip install -r requirements.txt
+ - run: mkdocs build --clean
+ - run: mkdocs gh-deploy
+# - name: Deploy GitHub Pages
+# uses: peaceiris/actions-gh-pages@v3
+# with:
+# publish_dir: ./gh-pages
+# github_token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/docs/.pages b/docs/.pages
new file mode 100644
index 0000000..287bde8
--- /dev/null
+++ b/docs/.pages
@@ -0,0 +1,5 @@
+nav:
+ - Das Projekt: index.md
+ - Android APP: app.md
+ - PFC200: pfc200.md
+ - Android Quellcode: app_code.md
\ No newline at end of file
diff --git a/docs/app.md b/docs/app.md
new file mode 100644
index 0000000..7323162
--- /dev/null
+++ b/docs/app.md
@@ -0,0 +1,89 @@
+# Die Anwendung (APP)
+
+Um den Funktionsablauf des Endproduktes besser zu verstehen, wird hier nÀher auf die App eingegangen. Es wird erklÀrt, welche Funktionen enthalten sind und was zu erwarten ist, quasi wie eine kleine Betriebsanleitung.
+
+## Home und Navigation
+
+
+
+Auf dem Home Screen gibt es nicht viel zu sehen, lediglich den Hardware-Controller. Unter (1) kann die Navigation (siehe folgende Abbildung) aufgerufen werden. Alternativ kann diese mit einem Swipe von links nach rechts aufgerufen werden.
+
+
+
+Hier werden die verschiedenen MenĂŒpunkte aufgelistet:
+
+1. `Home`: Der Startbildschirm
+2. `Connect Device`: Die FunktionalitÀt, eine Verbindung mit dem GerÀt aufzubauen und dieses auf der Cloud zu registrieren.
+3. `Registered Devices`: Eine Liste von GerÀten, welche in der Cloud registriert sind.
+4. `Settings`: Einstellungen zur Verbindung mit der Cloud (Hostname, Username, Password)
+
+## Settings (Einstellungen)
+
+
+
+FĂŒr die volle FunktionstĂŒchtigkeit benötigt die App drei Angaben:
+
+1. die URL (Host ohne Schema und Pfad)
+2. Benutzername fĂŒr den Zugriff auf die Daten
+3. Passwort fĂŒr den Benutzer
+
+Sollten diese Daten nicht gegeben sein, kann die App nicht auf die Cloud zugreifen.
+
+## Connect Devices (Registrierung des GerÀtes)
+
+FĂŒr die Nutzung von Bluetooth erfordert die App Standort-Berechtiungungen. Beim Aufrufen der Scan-Funktion wird diese ĂŒber ein Popup angefragt. Wenn ein Scann gestartet wird, öffnet sich ein zweites Fenster. FĂŒr eine bessere FunktionalitĂ€t sollte der prĂ€zise Standort ausgewĂ€hlt werden.
+
+Es wird kein GPS verwendet, um den Standort von Nutzern auszulesen!
+
+
+
+
+
+Nachdem die Berechtigungen erteilt wurden, erscheint die Discovery Page. Diese dient dazu, Bluetooth GerÀte aus der NÀhe anzuzeigen und eine Verbindung aufzubauen.
+
+
+
+Eine Liste aus Bluetooth-Adaptern in der NĂ€he wird mit GerĂ€tenamen (falls verfĂŒgbar) und zugehöriger Hardware-Adresse angezeigt. Ein kurzer Klick auf den Eintrag startet eine Bluetooth Verbindung, ein langer Klick das Bluetooth Pairing.
+
+Legende:
+
+1. Ein Button, um zur Startseite zurĂŒck zu kehren. Wird dieser ausgelöst, werden alle bestehenden Verbindungen getrennt
+2. Entweder ein Indikator, um einen Suchvorgang anzuzeigen oder ein Button, um die Suche neu zu starten
+3. Eine Checkliste um die Voraussetzungen zu prĂŒfen. Wenn beide Harken grĂŒn sind, ist die Suche funktionstĂŒchtig. Beide Textfelder können angeklickt werden, um notwendige Ănderungen durchzufĂŒhren.
+4. Sollten die Harken nicht grĂŒn sein und ein klick auf's Textfeld nicht geholfen haben, kann man hier fĂŒr Benutzerrechte auf den zugehörigen Screen wechseln.
+5. Ein Indikator, falls eine Verbindung mit dem GerÀt hergestellt wurde (blaues Icon)
+6. Zeigt an, ob das GerÀt gepairt wurde
+7. Zeigt die SignalstÀrke an
+8. Hier wird der nÀchste Schritt nach einer Verbindung gestartet
+
+
+
+Dieser Screen fĂŒhrt die letzten Schritte durch. Eine Ăbersicht optionaler GerĂ€tedaten wird aufgelistet. ZusĂ€tzlich mit zwei Buttons, um das GerĂ€t erneut zu verbinden oder die Verbindung zu trennen.
+
+Darunter ist ein Textfeld gegeben. Hier wird die kĂŒnftige ID des GerĂ€tes eingetippt, und kann mit dem Button rechts bestĂ€tigt werden. Bei einer BestĂ€tigung wird zunĂ€chst die VerfĂŒgbarkeit der ID in der Cloud geprĂŒft. Sollte die ID (nicht) verfĂŒgbar sein, wird untem auf dem bildschirm eine kurze Benachrichtigung angezeigt (siehe folgende Abbildung). Danach wird dir ID an das GerĂ€t geschickt. Das GerĂ€t Antwortet mit einem Fingerprint, welcher zur Registrierung des GerĂ€tes verwendet wird. FĂŒr diesen Prozess fehlt der Ladeindikator, denn es benötigt ein wenig Geduld. Sollte die Registrierung (nicht) funktioniert haben, wird der Nutzer ĂŒber ein Popup informiert (siehe zweite folgende Abbildung).
+
+
+
+
+
+Lief der Prozess wie abgebildet ab, ist das GerÀt erfolgreich registriert wurden und ist einsatzbereit.
+
+## Registered Device (bereits registrierte GerÀte)
+
+
+
+Dieser Screen zeigt eine Liste von in der Cloud registrierten GerĂ€ten an. Diese werden anhand ihrer ID angezeigt. Hier kann ĂŒberprĂŒft werden, ob die verwendete ID auch in der Cloud gelistet ist.
+
+Legende:
+
+1. Ein Suchfeld, um die Liste zu filtern
+2. Ein Button, um die Suche zu bestÀtigen
+3. Entweder ein Indikator, um einen Suchvorgang anzuzeigen oder ein Button, um die Suche neu zu starten
+4. Der Listeneintrag (kann angeklickt werden)
+
+Wenn der Listeneintrag ausgewÀhlt wird, erscheint ein Popup.
+
+
+
+Das Popup zeigt sĂ€mtliche hinterlegte Informationen zu einem Eintrag in der Cloud an. Entweder wird die Anzeige fĂŒr genannte Informationen verwendet, oder das GerĂ€t kann ĂŒber Remote aus der Cloud entfernt werden.
+
diff --git a/docs/app_code.md b/docs/app_code.md
new file mode 100644
index 0000000..521683a
--- /dev/null
+++ b/docs/app_code.md
@@ -0,0 +1,70 @@
+# Flutter App
+
+Gerade fĂŒr zukĂŒnftige Entwickler wĂ€re ein GrundverstĂ€ndnis des Quellcodes vom Vorteil. Die App wurde mit Flutter entwickelt und benötigt daher ein VerstĂ€ndnis von Dart und im Kontext von Flutter das Wissen ĂŒber Widgets.
+
+## Vortwort
+
+KĂŒnftige Generationen könnten `dart doc` im Root-Verzeichnis der App ausfĂŒhren, um eine etwas deutlichere Doku zu erhalten. Daher wird oberflĂ€chlich auf einzelne Dateien eingegangen.
+
+## Ăbersicht
+
+Der grundlegende Code liegt unter `lib` und ist in mehrere Bereiche aufgeteilt.
+
+Die Struktur:
+
+1. `objects`: EigenstĂ€ndige Objekte, welche autonom ĂŒber verschiedene Seiten hinweg verwendet werden können.
+2. `schemas`: Objektklassen, die zum parsen fĂŒr Objekte verwendet werden.
+3. `screens`: SĂ€mtliche Widgets, welche Screens generieren.
+4. `widgets`: Widgets, welche autonom ĂŒber verschiedene Seiten hinweg verwendet werden können.
+
+Des weiteren werden die Dateien beschrieben, welche signifikant fĂŒr das Projekt zum VerstĂ€ndnis des Ablaufes sind.
+
+## Objects / bluetooth_object.dart
+
+die BluetoothObject-Klasse dient dazu, eine Bluetooth-Verbindung an ein Objekt zu binden und darin zu verwalten.
+
+### Methoden
+
+* `bondDevice(BuildContext context)`: startet ein Pairing oder trennt eine solche Verbindung.
+* `disconnectDevice()`: Trennt die Bluetooth-Verbindung zum GerÀt
+* `connectDevice()`: Verbindet die App zum GerĂ€t ĂŒber Bluetooth
+* `connectionOnListen(Uint8List data)`: Ein Event Listener, welcher bei eingehenden Daten ausschlĂ€gt. Die Methode wartet auf das ASCII-Symbol "10", um den Input auf den String "fingerprint {fingerprint}" zu untersuchen. "{fingerprint}" steht hierbei fĂŒr den Fingerprint der Key-File
+* `sendData(BuildContext context, String output)`: Nutzt die Bluetooth-Verbindung, um Daten encodiert als ASCII zu verschicken.
+* `_registerDevice()`: Startet die GerÀte-Registrierung
+* `_confirmRegistration(bool registered)`: Erzeugt einen BestÀtigungs-Katalog
+
+## Objects / cloud_service_api.dart
+
+Die CloudServiceAPI-Klasse dient dazu, um sich mit der Azure Cloud auszutauschen.
+Die Klasse enthÀlt Methoden, um mit der API zu interagieren, wie z.B. das Abrufen von GerÀtelisten,
+das Abrufen von GerÀteinformationen, das Erstellen von GerÀten
+und das ĂberprĂŒfen der VerfĂŒgbarkeit von GerĂ€tenamen.
+
+### Methoden
+
+* `getDevices()`:
+HTTP-GET-Aufruf an den Endpunkt /api/devices
+der API und gibt die Antwort als Liste von DeviceModel-Objekten zurĂŒck.
+* `getDeviceInfo(String deviceID)`:
+HTTP-GET-Aufruf an den Endpunkt /api/devices/{deviceID}
+der API und gibt die Antwort als DeviceInfoModel-Objekt zurĂŒck.
+* `getDevicesInfo()`:
+HTTP-GET-Aufruf an den Endpunkt /api/devices
+der API und gibt die Antwort als Liste von DeviceInfoModel-Objekten zurĂŒck.
+* `createDevice(String id, String pThumbprint, String sThumbprint)`:
+HTTP-POST-Aufruf an den Endpunkt /api/devices
+der API und erstellt ein neues GerĂ€t mit den ĂŒbergebenen Parametern id, primaryThumbprint, secondaryThumbprint.
+* `checkNameAvailability(String inputID)`:
+ĂberprĂŒft die VerfĂŒgbarkeit einer ID,
+indem die aktuelle Liste der GerÀte abgefragt wird und
+die ĂŒbergebene ID mit den vorhandenen IDs verglichen wird.
+* `showNameAvailabilityStatus(bool status)`:
+Zeigt eine Meldung an, ob die ID verfĂŒgbar ist oder nicht.
+* `reloadConfig()`:
+Erneuert die HTTP-Header mit den aktuellen Anmeldeinformationen.
+* `getInformation()`:
+HTTP-GET-Aufrufen der Endpunkt /api/app
+der API und gibt die Antwort als Map zurĂŒck.
+* `deleteDevice(String clientId)`:
+HTTP-DELETE-Aufruf an die Endpunkt /api/{id}
+und löscht das GerÀt in der Cloud
\ No newline at end of file
diff --git a/docs/assets/diagrams/ablauf_allgemein.jpg b/docs/assets/diagrams/ablauf_allgemein.jpg
new file mode 100644
index 0000000..4475a57
Binary files /dev/null and b/docs/assets/diagrams/ablauf_allgemein.jpg differ
diff --git a/docs/assets/diagrams/provisionierungssequenz.drawio b/docs/assets/diagrams/provisionierungssequenz.drawio
new file mode 100644
index 0000000..4718178
--- /dev/null
+++ b/docs/assets/diagrams/provisionierungssequenz.drawio
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/docs/assets/diagrams/provisionierungssequenz.drawio.jpg b/docs/assets/diagrams/provisionierungssequenz.drawio.jpg
new file mode 100644
index 0000000..1c9f6c4
Binary files /dev/null and b/docs/assets/diagrams/provisionierungssequenz.drawio.jpg differ
diff --git a/docs/assets/diagrams/provisionierungssequenz.drawio.png b/docs/assets/diagrams/provisionierungssequenz.drawio.png
new file mode 100644
index 0000000..8d45ce2
Binary files /dev/null and b/docs/assets/diagrams/provisionierungssequenz.drawio.png differ
diff --git a/docs/assets/sreenshots/screen_device-settings.png b/docs/assets/sreenshots/screen_device-settings.png
new file mode 100644
index 0000000..fd561b6
Binary files /dev/null and b/docs/assets/sreenshots/screen_device-settings.png differ
diff --git a/docs/assets/sreenshots/screen_device-settings_available.png b/docs/assets/sreenshots/screen_device-settings_available.png
new file mode 100644
index 0000000..347982e
Binary files /dev/null and b/docs/assets/sreenshots/screen_device-settings_available.png differ
diff --git a/docs/assets/sreenshots/screen_device-settings_registered.png b/docs/assets/sreenshots/screen_device-settings_registered.png
new file mode 100644
index 0000000..6ae6ced
Binary files /dev/null and b/docs/assets/sreenshots/screen_device-settings_registered.png differ
diff --git a/docs/assets/sreenshots/screen_discovery.png b/docs/assets/sreenshots/screen_discovery.png
new file mode 100644
index 0000000..ac62f2b
Binary files /dev/null and b/docs/assets/sreenshots/screen_discovery.png differ
diff --git a/docs/assets/sreenshots/screen_discovery_permissions-1.png b/docs/assets/sreenshots/screen_discovery_permissions-1.png
new file mode 100644
index 0000000..d8e9ab1
Binary files /dev/null and b/docs/assets/sreenshots/screen_discovery_permissions-1.png differ
diff --git a/docs/assets/sreenshots/screen_discovery_permissions-2.png b/docs/assets/sreenshots/screen_discovery_permissions-2.png
new file mode 100644
index 0000000..b703f32
Binary files /dev/null and b/docs/assets/sreenshots/screen_discovery_permissions-2.png differ
diff --git a/docs/assets/sreenshots/screen_home.png b/docs/assets/sreenshots/screen_home.png
new file mode 100644
index 0000000..386f3c4
Binary files /dev/null and b/docs/assets/sreenshots/screen_home.png differ
diff --git a/docs/assets/sreenshots/screen_navigation.png b/docs/assets/sreenshots/screen_navigation.png
new file mode 100644
index 0000000..f4d50eb
Binary files /dev/null and b/docs/assets/sreenshots/screen_navigation.png differ
diff --git a/docs/assets/sreenshots/screen_registered-devices.png b/docs/assets/sreenshots/screen_registered-devices.png
new file mode 100644
index 0000000..091daa6
Binary files /dev/null and b/docs/assets/sreenshots/screen_registered-devices.png differ
diff --git a/docs/assets/sreenshots/screen_registered-devices_info.png b/docs/assets/sreenshots/screen_registered-devices_info.png
new file mode 100644
index 0000000..b66ae96
Binary files /dev/null and b/docs/assets/sreenshots/screen_registered-devices_info.png differ
diff --git a/docs/assets/sreenshots/screen_settings.png b/docs/assets/sreenshots/screen_settings.png
new file mode 100644
index 0000000..073878d
Binary files /dev/null and b/docs/assets/sreenshots/screen_settings.png differ
diff --git a/docs/index.md b/docs/index.md
new file mode 100644
index 0000000..273466f
--- /dev/null
+++ b/docs/index.md
@@ -0,0 +1,22 @@
+# Das Projekt
+
+`Titel`: Out-Of-Band Provisioning fĂŒr industrielle IoT GerĂ€te
+
+## Kurze Projektbeschreibung:
+
+Die Provisionierung, also die initiale Einrichtung, von IoT-GerĂ€ten ist in vielen Szenarien eine Herausforderung. Oft ist es nicht möglich GerĂ€te vollstĂ€ndig konfiguriert auszuliefern. Die finale Konfiguration erfolgt dann erst im Feld durch die Anwender:innen. Eine besondere Herausforderung ist hierbei das Einrichten der Netzwerk- und Authentifizierungsdaten. Bei sogenannten Out-of-Band (OOB) Verfahren wird hierfĂŒr ein weiterer Kommunikationsweg wie WLAN, Bluetooth oder NFC genutzt. FĂŒr IoT-GerĂ€te im Consumerbereich wird dies oft mit einer App, sicher und nutzerfreundlich umgesetzt.
+
+## Ziel des Semesterprojektes
+
+Dieses Verfahren soll fĂŒr die Provisionierung einer linuxbasierten Steuerung umgesetzt werden. DafĂŒr werden zwei Implementierungen berĂŒcksichtigt:
+1. Der Provisionierungsprozess seitens der Steuerung
+2. Eine App, dich sich mit der Steuerung ĂŒber Bluetooth verbindet und diesen Prozess auslöst und das GerĂ€t in der Cloud registriert.
+
+## Verfahren im Ăberblick
+
+
+
+Der allgemeine Ablauf besteht zunĂ€chst aus drei Komponenten: Einem Azure IoT Hub (kĂŒnftig referenziert als die Cloud), einem WAGO PFC200 (kĂŒnftig referenziert als das GerĂ€t) mit Bluetooth-Dongle und einem Android-Smartphone mit einer eigens angefertigten App.
+Im Konzept verbindet sich die App mit einem passenden Bluetooth-Dongle. Ăber die Verbindung wird dem GerĂ€t erklĂ€rt, welche ID es erhĂ€lt, woraufhin auf dem GerĂ€t ein Zertifikat erzeugt wird. Das GerĂ€t ĂŒbertrĂ€gt ein Fingerprint des Zertifikates per Bluetooth an das Smartphone. Mit der ID und dem Fingerprint wird das GerĂ€t ĂŒber die App auf der Cloud registriert. Sollte das GerĂ€t korrekt konfiguriert sein, kann nun die Cloud mit dem GerĂ€t kommunizieren. Der genauere Verbindungsablauf wird folgend schematisch dargestellt:
+
+
diff --git a/docs/pfc200.md b/docs/pfc200.md
new file mode 100644
index 0000000..cf4f191
--- /dev/null
+++ b/docs/pfc200.md
@@ -0,0 +1,63 @@
+# PFC200 mit Bluetooth Dongle
+
+Um mit dem GerÀt arbeiten zu können, sollte verstanden werden, wie eine Verbindung aufgebaut wird und welche Skripte eingerichtet werden sollten.
+
+## Per SSH mit dem GerÀt verbinden
+1. sich per LAN physisch mit dem GerĂ€t verbinden (Ă€uĂerer Port)
+2. sich statisch eine IPv4-Adresse zuweisen (empfohlen: `192.168.123.10`)
+3. sich mit dem GerÀt per ssh verbinden: `ssh root@192.168.123.200`
+4. passwort: in grĂŒn auf dem GerĂ€t (Kleinbuchstaben)
+
+## Skripte
+
+Die Aufgaben des GerĂ€tes werden ĂŒber verschiedene Skripte durchgefĂŒhrt.
+
+**Hinweis**: Der Pfad fĂŒr jedes Skript ist hier mit aufgelistet. Eventuell mĂŒssten die Skripte mit `chmod +x ${Dateiname}` ausfĂŒhrbar gemacht werden.
+
+### (1) Initale Skripte
+
+Das Skript wird bei Systemstart ausgefĂŒhrt, um auto_read.sh automatisch auszufĂŒhren.
+
+Der Aufruf ĂŒber init.d lĂ€uft folgend ab:
+
+1. `/etc/inittab` startet `/etc/init.d/rcS`
+2. `/etc/init.d/rcS` startet alle Skripte unter `/etc/rc.d` mit dem Argument `start`, also auch `S99_init_bluetooth_listener`.Hierbei handelt es sich um einen Symlink `S99_init_bluetooth_listener -> /etc/init.d/initBluetoothListener`.
+
+### (2) auto_read.sh
+
+Das Skript konfiguriert das Bluetooth-Dongle fĂŒr eingehende Bluetooth-Verbindungen und startet einen Listening-Prozess auf diesem, um eingehende Strings direkt als Argument mit auto_cert.sh auszufĂŒhren.
+
+Dateipfad: `/home/script/auto_read.sh`
+
+Beispiel: `/home/script/auto_read.sh`
+
+### (3) auto_cert.sh
+
+Das Skript erzeugt aus mittels einer ID ein SSL-Zertifikat, womit das GerÀt sich in der Cloud authentifizieren kann, und konfiguriert entsprechend das GerÀt. Das Zertifikat benutzt einen RSA-Algorithmus und wird unter `/etc/ssl` abgelegt.
+
+Dateipfad: `/home/script/auto_cert.sh`
+
+Beispiel: `/home/script/auto_cert.sh example-ID`
+
+Parameter:
+
+* `$1 (first argument)`: Device ID
+
+
+### (4) auto_conf.sh
+
+Das Skript konfiguriert die `/etc/dataagent/dataagent.config` auf dem GerÀt entsprechend der Eingaben.
+* Die Einstellungen werden erst als Flag mit - benannt und dann wird der Wert hierzu angegeben (z.B. `-enabled true`).
+* Das Skript prĂŒft automatisch ob die Eingabe Sinn macht ( z.B. prĂŒft ob Eingabe Boolean ist) und gibt im Problemfall aus welche Eingabe nicht erlaubt ist.
+* Optionen welche nicht als Flag angegeben wurden werden automatisch geleert.
+
+Dateipfad: `/home/script/auto_conf.sh`
+
+Beispiel: `/home/script/auto_conf.sh -enabled true -clientid ${CN} -host example.azure-devices.net -usetls false`
+
+Parameter:
+
+* `-enabled`: gibt an ob der Konfigurations Slot aktiv ist
+* `-clientid`: ein String, der die ID des GerÀtes bestimmt
+* `-host`: die Cloud-URL
+* `-usetls`: gibt an ob tls benutzt werden soll
\ No newline at end of file
diff --git a/mkdocs.yml b/mkdocs.yml
new file mode 100644
index 0000000..96ca31d
--- /dev/null
+++ b/mkdocs.yml
@@ -0,0 +1,36 @@
+site_name: Documentation mkdocs-print-site-plugin
+repo_url: https://github.com/oob-provisioning-for-iot/dokumentation_provisioning_latex
+site_url: https://oob-provisioning-for-iot.github.io
+site_description:
+site_author: Justin Dretvic
+
+use_directory_urls: false
+
+theme:
+ name: material
+ palette:
+ # Palette toggle for light mode
+ - scheme: default
+ toggle:
+ icon: material/brightness-7
+ name: Switch to dark mode
+ # Palette toggle for dark mode
+ - scheme: slate
+ toggle:
+ icon: material/brightness-4
+ name: Switch to light mode
+
+plugins:
+ - search
+ - awesome-pages
+ - print-site:
+ add_to_navigation: true
+ add_full_urls: false
+ add_table_of_contents: true
+ toc_title: "Table of Contents"
+ toc_depth: 3
+ add_full_urls: false
+ enumerate_headings: true
+ enumerate_figures: true
+ add_cover_page: true
+ path_to_pdf: "assets/site.pdf"
\ No newline at end of file
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..bc9bf3b
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,29 @@
+bracex==2.3.post1
+certifi==2022.12.7
+charset-normalizer==3.0.1
+click==8.1.3
+colorama==0.4.6
+ghp-import==2.1.0
+idna==3.4
+Jinja2==3.1.2
+Markdown==3.3.7
+MarkupSafe==2.1.2
+mergedeep==1.3.4
+mkdocs==1.4.2
+mkdocs-awesome-pages-plugin==2.8.0
+mkdocs-material==9.0.6
+mkdocs-material-extensions==1.1.1
+mkdocs-print-site-plugin==2.3.4
+natsort==8.2.0
+packaging==23.0
+Pygments==2.14.0
+pymdown-extensions==9.9.2
+python-dateutil==2.8.2
+PyYAML==6.0
+pyyaml_env_tag==0.1
+regex==2022.10.31
+requests==2.28.2
+six==1.16.0
+urllib3==1.26.14
+watchdog==2.2.1
+wcmatch==8.4.1