let there be docs
This commit is contained in:
commit
cb5b7a201b
8 changed files with 196 additions and 0 deletions
0
README.md
Normal file
0
README.md
Normal file
17
docs/index.md
Normal file
17
docs/index.md
Normal file
|
|
@ -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.
|
||||||
24
docs/logger.md
Normal file
24
docs/logger.md
Normal file
|
|
@ -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.
|
||||||
90
docs/receiver.md
Normal file
90
docs/receiver.md
Normal file
|
|
@ -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.
|
||||||
37
docs/send_test_data.md
Normal file
37
docs/send_test_data.md
Normal file
|
|
@ -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
|
||||||
6
main.py
Normal file
6
main.py
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
def main():
|
||||||
|
print("Hello from mkdocs!")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
15
mkdocs.yml
Normal file
15
mkdocs.yml
Normal file
|
|
@ -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
|
||||||
|
|
||||||
7
pyproject.toml
Normal file
7
pyproject.toml
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
[project]
|
||||||
|
name = "mkdocs"
|
||||||
|
version = "0.1.0"
|
||||||
|
description = "Add your description here"
|
||||||
|
readme = "README.md"
|
||||||
|
requires-python = ">=3.13"
|
||||||
|
dependencies = []
|
||||||
Loading…
Add table
Add a link
Reference in a new issue