Skip to content

Commit f324be3

Browse files
author
sidey79
committed
fix(docs): improve documentation clarity and formatting across multiple files
1 parent 0572d15 commit f324be3

16 files changed

+110
-80
lines changed

.devcontainer/.devcontainer.env.sample

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@ MQTT_USERNAME=
1313
# Optional: Leer lassen, wenn keine Authentifizierung erforderlich ist.
1414
MQTT_PASSWORD=
1515

16-
# Das Basis-Topic für Signalduino Nachrichten.
17-
# Nachrichten werden unter $MQTT_TOPIC/<protokoll_id> veröffentlicht.
18-
# Befehle werden unter $MQTT_TOPIC/commands/# erwartet.
19-
MQTT_TOPIC=signalduino/messages
16+
# Das Basis-Topic (Root-Präfix) für MQTT-Kommunikation.
17+
# Der Code hängt automatisch '/v1' an, um das Basis-Topic zu versionieren (z.B. 'signalduino/v1').
18+
# Nachrichten werden unter $MQTT_TOPIC/v1/state/messages veröffentlicht.
19+
# Befehle werden unter $MQTT_TOPIC/v1/commands/# erwartet.
20+
MQTT_TOPIC=signalduino
2021

2122
# Signalduino Verbindungseinstellungen (für direkte Verwendung in main.py)
2223
# Wähle entweder eine serielle Verbindung ODER eine TCP-Verbindung.

docs/01_user_guide/installation.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
[NOTE]
44
====
5-
PySignalduino ist noch in Entwicklung. Es gibt bisher keine stabile Version – nutzen Sie die Software mit entsprechender Vorsicht.
6-
====
5+
PySignalduino ist noch in Entwicklung.
6+
Es gibt bisher keine stabile Version – nutzen Sie die Software mit entsprechender Vorsicht.
77
88
== Voraussetzungen
99

docs/01_user_guide/mqtt_api.adoc

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
= MQTT API Reference
2-
:doctype: book
3-
:icons: font
4-
:toc: left
5-
:toclevels: 2
2+
:doctype: book :icons: font :toc: left :toclevels: 2
63
:sectnums:
74

85
[[_mqtt_introduction]]
@@ -12,7 +9,9 @@ Die MQTT-Schnittstelle ermöglicht die Steuerung des PySignalduino-Gateways und
129

1310
=== Topics und Struktur
1411

15-
Die Basis aller Topics ist `<base_topic>/v1`, wobei `<base_topic>` standardmäßig `signalduino` ist. Alle Beispiele verwenden `signalduino/v1` als Basis.
12+
Der **Standard-Topic** für alle MQTT-Operationen ist `signalduino/v1`.
13+
Dieser Wert kann über die Umgebungsvariable `MQTT_TOPIC` oder den CLI-Parameter `--mqtt-topic` angepasst werden. Wenn nur der Basis-Topic (z.B. `foo`) gesetzt wird, ist der finale Topic immer versionsspezifisch: `foo/v1`.
14+
Alle nachfolgenden Beispiele verwenden `signalduino/v1` als Basis.
1615

1716
|===
1817
| Zweck | Topic-Format | Anmerkungen

docs/01_user_guide/usage.adoc

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ include::../../main.py[lines=55..84]
5454

5555
==== Heartbeat-Funktionalität
5656

57-
Der Publisher sendet regelmäßig einen Heartbeat („online“) unter `{topic}/status`, solange die Verbindung besteht. Bei Verbindungsabbruch wird „offline“ gepublished.
57+
Der Publisher sendet regelmäßig einen Heartbeat („online“) unter `{topic}/status`, solange die Verbindung besteht.
58+
Bei Verbindungsabbruch wird „offline“ gepublished.
5859

5960
==== Beispiel: Manuelle Nutzung des MqttPublisher
6061

@@ -106,7 +107,9 @@ Die folgenden Befehle werden unterstützt (Auswahl):
106107

107108
==== Persistenz-Funktionalität
108109

109-
Befehle, die die Hardware-Konfiguration ändern (z. B. `write_register`, `set_patable`), werden in der Regel im EEPROM des SIGNALDuino persistent gespeichert. Die Persistenz wird durch die Firmware gewährleistet; PySignalduino sendet lediglich die entsprechenden Kommandos.
110+
Befehle, die die Hardware-Konfiguration ändern (z.
111+
B. `write_register`, `set_patable`), werden in der Regel im EEPROM des SIGNALDuino persistent gespeichert.
112+
Die Persistenz wird durch die Firmware gewährleistet; PySignalduino sendet lediglich die entsprechenden Kommandos.
110113

111114
==== Nutzung über MQTT
112115

docs/02_developer_guide/architecture.adoc

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
== Übersicht
44

5-
PySignalduino ist modular aufgebaut und trennt die Protokolldefinitionen (JSON) strikt von der Verarbeitungslogik (Python). Seit der Migration zu asyncio (Version 0.9.0) folgt das System einer ereignisgesteuerten, asynchronen Architektur, die auf asyncio-Tasks und -Queues basiert. Dies ermöglicht eine effiziente Verarbeitung von Sensordaten, Kommandos und MQTT-Nachrichten ohne Blockierung.
5+
PySignalduino ist modular aufgebaut und trennt die Protokolldefinitionen (JSON) strikt von der Verarbeitungslogik (Python).
6+
Seit der Migration zu asyncio (Version 0.9.0) folgt das System einer ereignisgesteuerten, asynchronen Architektur, die auf asyncio-Tasks und -Queues basiert.
7+
Dies ermöglicht eine effiziente Verarbeitung von Sensordaten, Kommandos und MQTT-Nachrichten ohne Blockierung.
68

79
== Kernkomponenten
810

@@ -154,9 +156,10 @@ Die Sitemap wird durch das Python-Skript `tools/generate_sitemap.py` generiert,
154156

155157
Das Skript kann manuell ausgeführt werden:
156158

157-
```bash
159+
[source,bash]
160+
----
158161
python tools/generate_sitemap.py --build-dir build/site/html --output sitemap.xml --branch main
159-
```
162+
----
160163

161164
=== robots.txt-Konfiguration
162165

docs/02_developer_guide/contribution.adoc

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
[NOTE]
44
====
5-
Da PySignalduino noch in aktiver Entwicklung ist, können sich Code-Strukturen und APIs schnell ändern. Bitte synchronisieren Sie Ihren Fork regelmäßig mit dem upstream-Repository.
6-
====
5+
Da PySignalduino noch in aktiver Entwicklung ist, können sich Code-Strukturen und APIs schnell ändern.
6+
Bitte synchronisieren Sie Ihren Fork regelmäßig mit dem upstream-Repository.
77
88
Beiträge zum Projekt sind willkommen!
99
@@ -23,7 +23,7 @@ Das Projekt verwendet `poetry` für die Abhängigkeitsverwaltung. Installieren S
2323
2424
[source,bash]
2525
----
26-
include::../../examples/bash/install_dev_deps.sh[]
26+
include::../examples/bash/install_dev_deps.sh[]
2727
----
2828
2929
Oder verwenden Sie `poetry install` (falls Poetry konfiguriert ist).
@@ -42,25 +42,36 @@ Das Projekt folgt PEP 8. Verwenden Sie `black` für automatische Formatierung un
4242
4343
[source,bash]
4444
----
45-
include::../../examples/bash/format_code.sh[]
45+
include::../examples/bash/format_code.sh[]
4646
----
4747
4848
Es gibt keine strikte CI-Prüfung, aber konsistenter Stil wird erwartet.
4949
50+
=== Dokumentationsstil
51+
52+
Für alle AsciiDoc-Dateien im `docs/` Verzeichnis ist die Regel "Ein Satz pro Zeile" verpflichtend.
53+
Dies erleichtert die Überprüfung von Änderungen mittels `git diff`.
54+
55+
[NOTE]
56+
====
57+
Jeder Satz muss auf einer neuen Zeile beginnen.
58+
Ein Satz endet typischerweise mit einem Punkt (`.`), Ausrufezeichen (`!`) oder Fragezeichen (`?`).
59+
Achten Sie darauf, dass Codeblöcke und Tabellen nicht betroffen sind.
60+
5061
== Tests ausführen
5162

5263
Das Projekt nutzt `pytest`. Stellen Sie sicher, dass `requirements-dev.txt` installiert ist.
5364

5465
[source,bash]
5566
----
56-
include::../../examples/bash/run_pytest.sh[]
67+
include::../examples/bash/run_pytest.sh[]
5768
----
5869

5970
Für spezifische Testmodule:
6071

6172
[source,bash]
6273
----
63-
include::../../examples/bash/run_specific_tests.sh[]
74+
include::../examples/bash/run_specific_tests.sh[]
6475
----
6576

6677
=== Asyncio-Tests
@@ -91,7 +102,7 @@ Coverage-Bericht generieren:
91102

92103
[source,bash]
93104
----
94-
include::../../examples/bash/coverage_report.sh[]
105+
include::../examples/bash/coverage_report.sh[]
95106
----
96107

97108
Der Bericht wird im Verzeichnis `htmlcov/` erstellt.

docs/02_developer_guide/index.adoc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22

33
Dieser Abschnitt beschreibt die Architektur, wie man zur Entwicklung beitragen kann (Contributing) und wie man Tests durchführt.
44

5-
include::architecture.adoc[]
6-
include::contribution.adoc[]
5+
include::architecture.adoc[] include::contribution.adoc[]
76

87
== Weitere Ressourcen
98

docs/architecture/decisions/ADR-001-mqtt-get-frequency.adoc

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
= 001. Implementierung des MQTT-Befehls get/frequency
2-
:author: Roo
3-
:revdate: 2026-01-03
4-
:status: Accepted
2+
:author: Roo :revdate: 2026-01-03 :status: Accepted
53

64
[[status]]
75
== Status

docs/architecture/decisions/ADR-002-mqtt-command-dispatcher.adoc

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
= ADR 002: Verwendung des MqttCommandDispatcher für die MQTT-Befehlsbehandlung
2-
:doctype: article
3-
:encoding: utf-8
4-
:lang: de
5-
:status: Accepted
6-
:decided-at: 2026-01-04
7-
:decided-by: Roo (Architekt)
2+
:doctype: article :encoding: utf-8 :lang: de :status: Accepted :decided-at: 2026-01-04 :decided-by: Roo (Architekt)
83

94
[[kontext]]
105
== Kontext
@@ -40,4 +35,4 @@ Die hartcodierte `if/elif`-Logik in `signalduino/mqtt.py` wird durch die Verwend
4035
[[alternativen]]
4136
== Alternativen
4237
* **Beibehaltung der if/elif-Kette:** Dies wurde abgelehnt, da es gegen die Prinzipien der Wartbarkeit und der Single Responsibility Principle (SRP) verstößt.
43-
* **Anderer Dispatch-Mechanismus:** Die Verwendung des vorhandenen `MqttCommandDispatcher` ist die pragmatischste Lösung, da die Klasse bereits existiert und die Validierungsinfrastruktur bietet.
38+
* **Anderer Dispatch-Mechanismus:** Die Verwendung des vorhandenen `MqttCommandDispatcher` ist die pragmatischste Lösung, da die Klasse bereits existiert und die Validierungsinfrastruktur bietet.

docs/architecture/decisions/ADR-003-cc1101-parameter-set-logic.adoc

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
11
= 003. Verwendung von CC1101-Standardformeln für Frequenz und Datenrate
2-
:revdate: 2026-01-04
3-
:status: Accepted
2+
:revdate: 2026-01-04 :status: Accepted
43

54
== Context
65
Die Implementierung der MQTT SET-Befehle für CC1101-Parameter (Frequenz, Datenrate) erfordert die Umrechnung von physikalischen Werten (MHz, kBaud) in die spezifischen Registerwerte des CC1101-Chips.
76

87
Andere Parameter wie Bandbreite, Sensitivity und Rampl verwendeten früher spezielle, abstraktere Kommandos des Signalduino-Firmware-Protokolls (`C101`, `X4C`, `X5C`).
98

10-
Um die Steuerung der CC1101-Parameter zu konsolidieren, wurden die Spezialbefehle (`X4C`, `X5C`) in der Python-Implementierung durch generische Register-Writes (`W`) ersetzt, wobei die Umrechnungslogik (z.B. Index in Registerwert) in Python implementiert wurde.
9+
Um die Steuerung der CC1101-Parameter zu konsolidieren, wurden die Spezialbefehle (`X4C`, `X5C`) in der Python-Implementierung durch generische Register-Writes (`W`) ersetzt, wobei die Umrechnungslogik (z.B.
10+
Index in Registerwert) in Python implementiert wurde.
1111

1212
Für Frequenz und Datenrate existiert keine solche Abstraktion im Signalduino-Protokoll, oder die vorhandene Logik ist unvollständig/unzureichend für eine präzise Steuerung.
1313

1414

1515
== Decision
16-
Die Umrechnung von Frequenz (MHz) in die drei Registerwerte (FREQ2, FREQ1, FREQ0) und die Umrechnung der Datenrate (kBaud) in MDMCFG4/MDMCFG3-Registerwerte erfolgt *direkt* in der Python-Implementierung von `SignalduinoCommands` unter Verwendung der im CC1101-Datenblatt definierten Standardformeln (z.B. Freq = f_xosc * FREQ / 2^16).
16+
Die Umrechnung von Frequenz (MHz) in die drei Registerwerte (FREQ2, FREQ1, FREQ0) und die Umrechnung der Datenrate (kBaud) in MDMCFG4/MDMCFG3-Registerwerte erfolgt *direkt* in der Python-Implementierung von `SignalduinoCommands` unter Verwendung der im CC1101-Datenblatt definierten Standardformeln (z.B.
17+
Freq = f_xosc * FREQ / 2^16).
1718

1819
Diese Registerwerte werden dann über generische CC1101-Schreibbefehle des Signalduino-Protokolls (`W<RegisterAddress><Value>`) übertragen.
1920

@@ -28,4 +29,4 @@ Nach dem Senden aller Register-SET-Befehle muss die Methode `SignalduinoCommands
2829
* **Alternative 1: Nur Signalduino-Spezialbefehle verwenden:**
2930
* _Ablehnungsgrund:_ Für Frequenz und Datenrate gibt es keine oder keine ausreichend präzisen/dokumentierten Signalduino-Spezialbefehle, die eine Einstellung über MQTT in physikalischen Einheiten (MHz, kBaud) ermöglichen.
3031
* **Alternative 2: Berechnung in die Controller-Klasse verschieben:**
31-
* _Ablehnungsgrund:_ Die `SignalduinoCommands`-Klasse ist der logische Ort für die Umrechnung von physikalischen Einheiten in serielle Protokolle, da sie die Schnittstelle zum physischen Gerät darstellt. Die `SignalduinoController`-Klasse soll nur die MQTT-Payload entpacken.
32+
* _Ablehnungsgrund:_ Die `SignalduinoCommands`-Klasse ist der logische Ort für die Umrechnung von physikalischen Einheiten in serielle Protokolle, da sie die Schnittstelle zum physischen Gerät darstellt. Die `SignalduinoController`-Klasse soll nur die MQTT-Payload entpacken.

0 commit comments

Comments
 (0)