let there be docs
This commit is contained in:
commit
cb5b7a201b
8 changed files with 196 additions and 0 deletions
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.
|
||||
Loading…
Add table
Add a link
Reference in a new issue