commit cb5b7a201bbd114853b26878d8167fea27b203c4 Author: Roxi Dittberner Date: Mon Jun 15 19:56:55 2026 +0200 let there be docs diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..000ea34 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,17 @@ +# Welcome to MkDocs + +For full documentation visit [mkdocs.org](https://www.mkdocs.org). + +## Commands + +* `mkdocs new [dir-name]` - Create a new project. +* `mkdocs serve` - Start the live-reloading docs server. +* `mkdocs build` - Build the documentation site. +* `mkdocs -h` - Print help message and exit. + +## Project layout + + mkdocs.yml # The configuration file. + docs/ + index.md # The documentation homepage. + ... # Other markdown pages, images and other files. diff --git a/docs/logger.md b/docs/logger.md new file mode 100644 index 0000000..edbb8d5 --- /dev/null +++ b/docs/logger.md @@ -0,0 +1,24 @@ +# Dokumentation Calliope Projekt - Loggercode + +~~~ +def logwriter(val, logpath, warn): +with open(logpath, "a") as logfile: +~~~ + +- Definiert eine Funktion "logwriter", die die Daten "val" in die Logs hinzufügt. +- Durch "logpath" wird der Speicherort der Logs angegeben, welcher in diesem Fall, mit "with open(logpath,"a") as logfile", "a" ist. +- von "warn" werden Fehler oder ungerwöhnliche Ereignisse angegeben. + +~~~ +if not warn: +logfile.write("{}: Value was {}\n".format(time.time(), val)) +~~~ + +- Wenn es kein Fehler gibt, wird der Wert der Daten mit Zeit in den Logs angegeben. + +~~~ +else: +logfile.write("{}: WARNING! Value was {}, too high\n".format(time.time(), val))> +~~~ + +- Falls es doch einen Fehler gab, wird eine Warnung in den Logs angegeben mit dem Value und der Zeit. diff --git a/docs/receiver.md b/docs/receiver.md new file mode 100644 index 0000000..c097b30 --- /dev/null +++ b/docs/receiver.md @@ -0,0 +1,90 @@ +# Dokumentation Calliope Projekt - Empfängercode + +## Variablen +~~~ +data_store = [] +data_buffer = [] +times = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] +logpath = "log{}.txt".format(time.time()) +logs = True +~~~ + +- data_store als Speichervariable für alle während der Programmlaufzeit gelesenen Werte +- data_buffer als Puffer für die letzten 20 Werte +- times als feste Array von Werten für die Zeitachse des Diagramms +- logpath als Pfad für die Logdatei + - Dateiname wird aus "log", dem aktuellen UNIX-Zeitstempel und dem Suffix ".txt" erzeugt + +## "Empfang" von Testdaten +~~~ +try: + for data in send_test_data.data_test_forever(): + currentdata = json.loads(data) + data_store.append(currentdata["V"]) + data_buffer = data_store[-20:] +~~~ + +- Gesamte Programmlogik wird in einem try-Statement ausgeführt, um manuelles beenden durch den Nutzer ohne Fehlermeldung abfangen zu können. +- Erstellt eine Schleife, die über alle Ausgaben von send_test_data.data_test_forever() iteriert. + - Hier de facto eine Endlosschleife, da die Funktion für immer Daten ausgibt. +- Wandelt die JSON-Daten in ein Dictionary um. +- Die Daten mit dem Wert "V" in dem Dictioniary werden gespeichert. +- Nur die letzten 20 Werte bleiben gespeichert. + +## Diagramm +~~~ +fig, ax = plt.subplots() +~~~ + +- Erstellt ein Diagramm. + +### Warnung bei erhöhten Werten +~~~ +if currentdata["V"] > 160: + ax.set_facecolor('red') + ax.plot(times[:len(data_buffer)], data_buffer, 'k') + warn = True +~~~ + +- Prüft, ob der Wert "V" über 160 ist. +- Wenn dies der Fall ist, wird der Hintergrund des Fensters rot. +- Plottet die letzten 20 Werte in Schwarz als Graphen. +- Warnstatus auf "True" setzen. + +### Normales Verhalten (keine Warnung) +~~~ +else: + ax.plot(times[:len(data_buffer)], data_buffer) + warn = False +~~~ + +- Ist der Wert "V" nicht über 160, werden die letzten 20 Werte normal als Graph geplottet. +- Warnstatus auf "False" setzten. + +### Beschriften des Diagrammes +~~~ +ax.set_xlabel('Time [100 ms]') + ax.set_ylabel('Temperature') + ax.set_title('Temperature over time') + plt.xticks(np.arange(1, 21, 1)) + plt.yticks(np.arange(0, 257, 32)) + plt.show() + plt.close() +~~~ + +- Beschriftung der X-Achse +- Beschriftung der Y-Achse +- Beschriftung des Diagramms (Titel) +- Erstellung von Teilstrichen von 1 bis 20 in 1ner-Schritten auf der X-Achse. +- Erstellung von Teilstrichen von 0 bis 256 in 32er-Schritten auf der Y-Achse. +- Anzeigen des Diagramms +- Schließen des Diagramms + +## Logging +~~~ +if logs: + logwriter(currentdata["V"], logpath, warn) +~~~ + +- Loggt nur, wenn es aktiviert ist. +- Schreiben des aktuellen Wertes mit Zeit und Warnstatus in die Logdatei. diff --git a/docs/send_test_data.md b/docs/send_test_data.md new file mode 100644 index 0000000..f1158d2 --- /dev/null +++ b/docs/send_test_data.md @@ -0,0 +1,37 @@ +# Dokumentation Calliope Projekt - Sendercode + +## Funktion data_test +~~~ +def data_test(turns): + counter = 0 + for i in range(turns): + JSONstr = f'{{ "T" : {counter} , "V" : {random.randint(0, 255)} }}' + yield JSONstr + counter += 1 + sleep(0.1) +~~~ +- Definiert eine Funktion als Generator für eine begrenzte Anzahl an Durchläufen +- Erstellt ein Zähler "counter" +- Schleife, die sich so oft wiederholt, wie der Wert "turns". +- Der Variable T wird der Wert von "counter" zugeschrieben und der Variable "V" einen zufälligen Wert von 0-255. Danach werden sie in ein JSON-String geschrieben. +- Zurückgeben des JSON-Strings +- Erhöhung des Zählers um 1 +- 100ms warten + +## Funktion data_test_forever +~~~ +def data_test_forever(): + counter = 0 + while True: + JSONstr = f'{{ "T" : {counter} , "V" : {random.randint(0, 255)} }}' + yield JSONstr + counter += 1 + sleep(0.1) +~~~ +- Definiert eine Funktion als Generator für eine unbegrenzte Anzahl an Durchläufen +- Erstellt ein Zähler "counter" +- Schleife, die sich für immer wiederholt. +- Der Variable T wird der Wert von "counter" zugeschrieben und der Variable "V" einen zufälligen Wert von 0-255. Danach werden sie in ein JSON-String geschrieben. +- Zurückgeben des JSON-Strings +- Erhöhung des Zählers um 1 +- 100ms warten diff --git a/main.py b/main.py new file mode 100644 index 0000000..04325bc --- /dev/null +++ b/main.py @@ -0,0 +1,6 @@ +def main(): + print("Hello from mkdocs!") + + +if __name__ == "__main__": + main() diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..489b91a --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,15 @@ +site_name: Doc Testing +site_url: http://localhost +theme: + name: material + features: + - content.code.copy +markdown_extensions: + - pymdownx.highlight: + anchor_linenums: true + line_spans: __span + pygments_lang_class: true + - pymdownx.inlinehilite + - pymdownx.snippets + - pymdownx.superfences + diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..e11e9a3 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,7 @@ +[project] +name = "mkdocs" +version = "0.1.0" +description = "Add your description here" +readme = "README.md" +requires-python = ">=3.13" +dependencies = []