Skip to content

Commit 47012d9

Browse files
authored
Merge pull request #7 from RFD-FHEM/feat/docsHistory
Improve docs with history and ai instructions
2 parents 80ffc54 + 57a12f0 commit 47012d9

File tree

7 files changed

+370
-1
lines changed

7 files changed

+370
-1
lines changed

AGENTS.md

Lines changed: 198 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ This file provides guidance to agents when working with code in this repository.
1212
## Verification Execution
1313
- Das Hauptprogramm für Verifizierungen sollte wie folgt gestartet werden:
1414
`python3 main.py --timeout 1`
15+
oder um eine längere Laufzeit zu analysieren:
16+
`python3 main.py --timeout 30`
1517

1618
## Mandatory Documentation and Test Maintenance
1719

@@ -46,4 +48,199 @@ Diese Richtlinie gilt für alle AI-Agenten, die Code oder Systemkonfigurationen
4648
- [ ] Gesamte Testsuite (`pytest`) ohne Fehler durchgelaufen
4749
- [ ] Änderungen mit den Projekt‑Konventionen konsistent
4850

49-
Diese Richtlinie gewährleistet, dass Code‑Änderungen nicht isoliert, sondern im Kontext des gesamten Projekts betrachtet werden und die langfristige Wartbarkeit sowie die Zuverlässigkeit der Software erhalten bleibt.
51+
Diese Richtlinie gewährleistet, dass Code‑Änderungen nicht isoliert, sondern im Kontext des gesamten Projekts betrachtet werden und die langfristige Wartbarkeit sowie die Zuverlässigkeit der Software erhalten bleibt.
52+
53+
## Architecture-First Development Process
54+
55+
Dieser Abschnitt definiert den verbindlichen Arbeitsablauf für die Entwicklung neuer Funktionen im PySignalduino-Projekt. Der zentrale Grundsatz lautet: **Jede neue Funktion beginnt mit einer vorausschauenden Erweiterung der Architekturdokumentation.** Diese dokumentierte Architektur dient als die einzige verbindliche Spezifikation und der primäre Leitfaden für alle nachfolgenden Implementierungsschritte.
56+
57+
### Grundprinzipien
58+
59+
1. **Architektur vor Code:** Design-Entscheidungen müssen zuerst in der Dokumentation reflektiert und abgestimmt werden, bevor jeglicher Code geschrieben wird.
60+
2. **Dokumentation als Single Source of Truth:** Die Architekturdokumentation ist die autoritative Referenz für alle Implementierungsentscheidungen.
61+
3. **Traceability:** Jede Code-Änderung muss auf eine spezifische Architekturentscheidung zurückführbar sein.
62+
4. **Compliance-Checks:** Implementierungen müssen regelmäßig auf Konformität mit der dokumentierten Architektur überprüft werden.
63+
64+
### Vier-Phasen-Prozess
65+
66+
#### Phase 1: Architekturdefinition mit verbindlichem Architekturproposal
67+
- **Ziel:** Erstellung eines vollständigen Architekturproposals, das alle Design-Entscheidungen dokumentiert
68+
- **Aktivitäten:**
69+
- Anforderungsanalyse und Scope-Definition
70+
- Erstellung von Architekturdiagrammen (Mermaid, PlantUML)
71+
- Definition von Schnittstellen und Datenmodellen
72+
- Risikoanalyse und Alternativenbewertung
73+
- Erstellung eines Architecture Decision Record (ADR)
74+
- **Deliverables:**
75+
- Architekturproposal im AsciiDoc-Format
76+
- Mermaid-Diagramme für Komponenten- und Sequenzabläufe
77+
- ADR im `docs/architecture/decisions/` Verzeichnis
78+
- Review-Protokoll mit Genehmigung durch Architecture Owner
79+
80+
#### Phase 2: Implementierungsplanung basierend auf genehmigter Architektur
81+
- **Ziel:** Detaillierte Planung der Implementierungsschritte unter strikter Einhaltung der Architektur
82+
- **Aktivitäten:**
83+
- Aufteilung in konkrete Arbeitspakete (Tasks)
84+
- Definition von Akzeptanzkriterien für jede Komponente
85+
- Planung von Teststrategien (Unit, Integration, System)
86+
- Ressourcen- und Zeitplanung
87+
- Erstellung von Mockups/Prototypen für kritische Pfade
88+
- **Deliverables:**
89+
- Implementierungsplan mit Task-Breakdown
90+
- Testplan mit Coverage-Zielen
91+
- Prototypen für Risikokomponenten
92+
- Genehmigung durch Feature Developer und Reviewer
93+
94+
#### Phase 3: Implementierung mit strikter Konformität zur Architektur
95+
- **Ziel:** Code-Entwicklung unter ständiger Referenzierung der Architekturdokumentation
96+
- **Aktivitäten:**
97+
- Iterative Entwicklung gemäß Implementierungsplan
98+
- Regelmäßige Architektur-Compliance-Checks
99+
- Dokumentation von Abweichungen und deren Begründung
100+
- Kontinuierliche Integration und Code-Reviews
101+
- Anpassung der Dokumentation bei notwendigen Änderungen
102+
- **Deliverables:**
103+
- Vollständiger implementierter Code
104+
- Aktualisierte Dokumentation (Inline-Kommentare, Docstrings)
105+
- Testsuite mit ausreichender Coverage
106+
- Compliance-Report gegenüber Architekturproposal
107+
108+
#### Phase 4: Validation & Integration mit Architektur-Compliance-Checks
109+
- **Ziel:** Validierung der Implementierung gegen Architekturanforderungen und Integration in das Gesamtsystem
110+
- **Aktivitäten:**
111+
- Ausführung aller Tests (Unit, Integration, System)
112+
- Architektur-Compliance-Review durch Architecture Owner
113+
- Performance- und Sicherheitsaudits
114+
- Integrationstests mit bestehenden Komponenten
115+
- Endgültige Dokumentationsprüfung
116+
- **Deliverables:**
117+
- Testberichte und Coverage-Report
118+
- Compliance-Zertifizierung durch Architecture Owner
119+
- Finalisierte Dokumentation
120+
- Merge-Request mit vollständiger Nachweisbarkeit
121+
122+
### Rollen und Verantwortlichkeiten
123+
124+
#### Architecture Owner
125+
- **Verantwortlichkeiten:**
126+
- Genehmigung von Architekturproposals
127+
- Durchführung von Architektur-Reviews
128+
- Compliance-Checks während der Implementierung
129+
- Finale Freigabe für Integration
130+
- **Befugnisse:**
131+
- Veto-Recht bei Architekturverstößen
132+
- Anforderung von Design-Änderungen
133+
- Genehmigung von ADRs
134+
135+
#### Feature Developer
136+
- **Verantwortlichkeiten:**
137+
- Erstellung von Architekturproposals
138+
- Implementierung gemäß genehmigter Architektur
139+
- Dokumentation von Design-Entscheidungen
140+
- Durchführung von Selbst-Checks auf Compliance
141+
- **Befugnisse:**
142+
- Vorschlag von Architekturalternativen
143+
- Beantragung von Architektur-Änderungen via ADR
144+
- Code-Reviews für Teammitglieder
145+
146+
#### Reviewer
147+
- **Verantwortlichkeiten:**
148+
- Code-Review mit Fokus auf Architekturkonformität
149+
- Prüfung der Testabdeckung
150+
- Validierung der Dokumentationsaktualität
151+
- Sicherstellung der Wartbarkeit
152+
- **Befugnisse:**
153+
- Blockierung von Merge-Requests bei Compliance-Problemen
154+
- Anforderung zusätzlicher Tests
155+
- Empfehlung für Architecture Owner
156+
157+
### Architecture Documentation Standards
158+
159+
#### AsciiDoc-Templates
160+
Alle Architekturdokumente müssen den standardisierten Templates folgen:
161+
- **Architekturproposal:** `docs/architecture/templates/proposal_template.adoc`
162+
- **ADR (Architecture Decision Record):** `docs/architecture/templates/adr_template.adoc`
163+
- **Komponentenbeschreibung:** `docs/architecture/templates/component_template.adoc`
164+
165+
#### Mermaid-Diagramme
166+
- **Verpflichtende Diagrammtypen:**
167+
- Komponentendiagramm (Component Diagram)
168+
- Sequenzdiagramm (Sequence Diagram)
169+
- Zustandsdiagramm (State Diagram) bei komplexen Zustandsmaschinen
170+
- **Einbettung:** Direkte Einbettung in AsciiDoc-Dokumente via `[mermaid]`-Block
171+
- **Versionierung:** Diagramme müssen im `docs/architecture/diagrams/` Verzeichnis als `.mmd`-Dateien gespeichert werden
172+
173+
#### ADRs (Architecture Decision Records)
174+
- **Format:** Lightweight ADR gemäß MADR-Standard
175+
- **Speicherort:** `docs/architecture/decisions/`
176+
- **Nummerierung:** Sequentiell (ADR-001, ADR-002, ...)
177+
- **Inhalt:** Kontext, Entscheidung, Konsequenzen, Alternativen
178+
179+
### Erweiterte Checkliste vor dem Commit
180+
181+
Diese Checkliste erweitert die bestehende Checkliste um Architektur-spezifische Prüfpunkte:
182+
183+
#### Architektur-Compliance
184+
- [ ] Architekturproposal liegt vor und ist genehmigt
185+
- [ ] ADR für alle wesentlichen Design-Entscheidungen erstellt
186+
- [ ] Implementierung folgt den spezifizierten Schnittstellen
187+
- [ ] Keine Verletzung von Architekturprinzipien (z.B. Single Responsibility)
188+
- [ ] Datenmodelle entsprechen den definierten Schemata
189+
190+
#### Dokumentation
191+
- [ ] Architekturdokumentation aktualisiert (AsciiDoc-Dateien)
192+
- [ ] Mermaid-Diagramme auf Aktualität geprüft
193+
- [ ] Inline-Kommentare und Docstrings angepasst
194+
- [ ] API-Referenzen konsistent mit Implementierung
195+
- [ ] README.md und andere Markdown-Dateien geprüft
196+
197+
#### Tests
198+
- [ ] Bestehende Tests angepasst und erfolgreich ausgeführt
199+
- [ ] Neue Tests für geänderte/neue Logik erstellt
200+
- [ ] Architektur-spezifische Integrationstests vorhanden
201+
- [ ] Test-Coverage mindestens 80% für neue Komponenten
202+
- [ ] Gesamte Testsuite (`pytest`) ohne Fehler durchgelaufen
203+
204+
#### Code-Qualität
205+
- [ ] Code-Review durch Reviewer durchgeführt
206+
- [ ] Architektur-Compliance-Check durch Architecture Owner
207+
- [ ] Linting (`ruff`, `black`) ohne Fehler
208+
- [ ] Type-Checks (`mypy`) erfolgreich
209+
- [ ] Änderungen mit den Projekt-Konventionen konsistent
210+
211+
### Prozessvisualisierung
212+
213+
```mermaid
214+
flowchart TD
215+
A[Neue Funktionsanforderung] --> B[Phase 1: Architekturdefinition]
216+
B --> C{Architekturproposal<br/>genehmigt?}
217+
C -->|Ja| D[Phase 2: Implementierungsplanung]
218+
C -->|Nein| B
219+
D --> E[Phase 3: Implementierung]
220+
E --> F[Regelmäßige Compliance-Checks]
221+
F --> G{Compliance<br/>verletzt?}
222+
G -->|Ja| H[ADR für Änderung<br/>oder Rückführung]
223+
H --> E
224+
G -->|Nein| I[Phase 4: Validation & Integration]
225+
I --> J{Alle Tests bestanden<br/>und Compliance ok?}
226+
J -->|Ja| K[Merge & Deployment]
227+
J -->|Nein| I
228+
229+
subgraph "Architektur-Governance"
230+
L[Architecture Owner Review]
231+
M[ADR Management]
232+
N[Compliance Monitoring]
233+
end
234+
235+
B --> L
236+
D --> L
237+
I --> L
238+
H --> M
239+
F --> N
240+
```
241+
242+
### Verbindlichkeit
243+
244+
Dieser Architecture-First Development Process ist für **alle** neuen Funktionen und wesentlichen Änderungen verbindlich. Ausnahmen sind nur bei kritischen Bugfixes erlaubt und müssen durch einen Emergency-ADR dokumentiert werden. Jede Abweichung vom Prozess muss vom Architecture Owner genehmigt werden.
245+
246+
Die Einhaltung dieses Prozesses gewährleistet, dass Design-Entscheidungen bewusst getroffen, dokumentiert und nachvollziehbar sind, was die langfristige Wartbarkeit, Skalierbarkeit und Qualität des PySignalduino-Projekts sicherstellt.

README.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,49 @@
22

33
Dieses Projekt ist eine moderne Python-Implementierung der SIGNALDuino-Protokolle mit vollständiger **asyncio**-Unterstützung und integrierter **MQTT-Bridge**. Es ermöglicht die Kommunikation mit SIGNALDuino-Hardware (über serielle Schnittstelle oder TCP) und veröffentlicht empfangene Signale sowie empfängt Steuerbefehle über MQTT.
44

5+
## Projektgeschichte
6+
7+
PySignalduino ist Teil des **RFD-FHEM**-Ökosystems, das ursprünglich als Perl-basierte Lösung für die Hausautomationssoftware FHEM begann. Die Entwicklung lässt sich in folgende Meilensteine unterteilen:
8+
9+
### Ursprung: RFD-FHEM und SIGNALDuino
10+
- **2010er Jahre**: Die RFD-FHEM-Community entwickelte Hardware- und Softwarelösungen für die Funkkommunikation mit 433/868 MHz Geräten.
11+
- **SIGNALDuino-Hardware**: Ein Arduino-basierter Transceiver mit CC1101 Funkmodul, der als kostengünstige Alternative zu kommerziellen Lösungen entstand.
12+
- **Perl-Implementierung**: Die ursprüngliche Protokollimplementierung erfolgte in Perl als FHEM-Modul `00_SIGNALduino.pm`.
13+
14+
### Migration zu Python
15+
- **2020er Jahre**: Mit der wachsenden Popularität von Python und MQTT entstand der Bedarf nach einer moderneren, asynchronen Lösung.
16+
- **PySignalduino**: Diese Bibliothek portiert die Perl-Protokolle (`SD_Protocols.pm`, `SD_ProtocolData.pm`) in eine native Python-Implementierung.
17+
- **Asynchrone Architektur**: Vollständige `asyncio`-Integration für bessere Performance und einfachere Integration in moderne IoT-Systeme.
18+
19+
### Community-Entwicklung
20+
- **Open Source**: Das Projekt wird von einer aktiven Community auf GitHub gepflegt und weiterentwickelt.
21+
- **Firmware-Entwicklung**: Die SIGNALDuino-Firmware wird parallel im Repository [RFD-FHEM/SIGNALDuino](https://github.com/RFD-FHEM/SIGNALDuino) entwickelt.
22+
- **Version 3.5.0**: Die aktuelle Firmware-Version bietet erweiterte Funktionen wie WiFi-Unterstützung für ESP32-basierte Boards.
23+
24+
### Entwicklungsstatus
25+
26+
> **⚠️ Entwicklungsstatus**
27+
>
28+
> PySignalduino befindet sich noch in aktiver Entwicklung und hat noch kein offizielles Release veröffentlicht. Die API kann sich zwischen Versionen ändern. Entwickler sollten bei der Verwendung Vorsicht walten lassen und auf mögliche Breaking Changes vorbereitet sein.
29+
30+
### PySignalduino vs. Original
31+
PySignalduino ist keine direkte Portierung, sondern eine Neuimplementierung mit folgenden Unterschieden:
32+
- **Asynchrone Verarbeitung**: Statt Threads wird `asyncio` verwendet.
33+
- **MQTT-Integration**: Eingebaute MQTT-Bridge für nahtlose Integration in IoT-Ökosysteme.
34+
- **Moderne Python-Praktiken**: Typisierung, strukturierte Logging, Konfiguration über Umgebungsvariablen.
35+
36+
## Controller-Code und Firmware
37+
38+
Die SIGNALDuino-Firmware (Microcontroller-Code) wird in einem separaten Repository entwickelt:
39+
40+
- **GitHub Repository**: https://github.com/RFD-FHEM/SIGNALDuino
41+
- **Aktuelle Version**: v3.5.0
42+
- **Unterstützte Hardware**:
43+
- Arduino Nano mit CC1101
44+
- ESP32-basierte Boards (z.B. ESP32-DevKitC)
45+
- Maple Mini (STM32)
46+
- **Build-Anleitungen**: Das Repository enthält PlatformIO-Konfigurationen und Arduino-IDE-Projektdateien für einfache Kompilierung.
47+
548
## Hauptmerkmale
649

750
* **Vollständig asynchron** – Basierend auf `asyncio` für hohe Performance und einfache Integration in asynchrone Anwendungen.

docs/01_user_guide/index.adoc

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,80 @@
33

44
Der Benutzer-Leitfaden enthält Anweisungen zur Installation, Konfiguration und grundlegenden Verwendung von PySignalduino.
55

6+
== Was ist PySignalduino?
7+
8+
PySignalduino ist eine moderne Python-Bibliothek zur Kommunikation mit **SIGNALDuino**-Hardware – einem Arduino-basierten Transceiver für 433/868 MHz Funkkommunikation. Die Bibliothek bietet:
9+
10+
* **Asynchrone Verarbeitung**: Vollständige `asyncio`-Integration für nicht-blockierende Operationen.
11+
* **MQTT-Bridge**: Eingebaute MQTT-Unterstützung für nahtlose Integration in Smart-Home-Systeme.
12+
* **Protokollbibliothek**: Portierung der originalen FHEM‑SIGNALDuino‑Protokolle (`SD_Protocols.pm`, `SD_ProtocolData.pm`) in Python.
13+
* **Moderne Transporte**: Unterstützung für serielle und TCP-Verbindungen.
14+
15+
=== Unterschied zum Original
16+
PySignalduino ist keine direkte Portierung des Perl‑FHEM‑Moduls, sondern eine Neuimplementierung mit folgenden Schwerpunkten:
17+
18+
* **Asynchrone Architektur**: Statt Threads wird `asyncio` verwendet, was bessere Skalierbarkeit und einfachere Integration in asynchrone Anwendungen ermöglicht.
19+
* **Typisierung**: Vollständige Typ‑Annotations für bessere Code‑Qualität und IDE‑Unterstützung.
20+
* **Konfiguration über Umgebungsvariablen**: Einfache Einrichtung ohne Codeänderungen.
21+
* **Umfangreiche Testsuite**: Hohe Testabdeckung zur Gewährleistung der Stabilität.
22+
23+
=== Entwicklungsstatus
24+
25+
[WARNING]
26+
====
27+
**Entwicklungsstatus**
28+
29+
PySignalduino befindet sich noch in aktiver Entwicklung und hat noch kein offizielles Release veröffentlicht. Die API kann sich zwischen Versionen ändern. Entwickler sollten bei der Verwendung Vorsicht walten lassen und auf mögliche Breaking Changes vorbereitet sein.
30+
====
31+
32+
=== Zielgruppe
33+
PySignalduino richtet sich an:
34+
35+
* **Entwickler**, die SIGNALDuino‑Hardware in Python‑Projekte integrieren möchten.
36+
* **Smart‑Home‑Enthusiasten**, die eine MQTT‑Bridge für ihre Funkgeräte benötigen.
37+
* **Integratoren**, die bestehende FHEM‑Installationen um moderne Python‑Komponenten erweitern wollen.
38+
39+
== Architektur-Übersicht
40+
41+
PySignalduino folgt einer modular aufgebauten Architektur:
42+
43+
[source,plantuml]
44+
----
45+
include::../../docs/diagrams/architecture.puml[]
46+
----
47+
48+
Die Hauptkomponenten sind:
49+
50+
1. **Transport Layer** (`signalduino.transport`):
51+
* `SerialTransport` – Asynchrone serielle Kommunikation über `pyserial-asyncio`.
52+
* `TcpTransport` – TCP‑Socket‑Verbindung.
53+
54+
2. **Parser Layer** (`signalduino.parser`):
55+
* `MCParser`, `MNParser`, `MSParser`, `MUParser` – Verarbeitung der verschiedenen SIGNALDuino‑Nachrichtentypen.
56+
57+
3. **Protokollbibliothek** (`sd_protocols`):
58+
* `SDProtocols` – Hauptklasse für Protokollerkennung und ‑dekodierung.
59+
* `SDProtocolData` – Datenstrukturen für Protokolldefinitionen.
60+
61+
4. **Controller** (`signalduino.controller`):
62+
* `SignalduinoController` – Zentrale Steuerungsklasse, koordiniert Transport, Parser und MQTT.
63+
64+
5. **MQTT‑Integration** (`signalduino.mqtt`):
65+
* `MqttPublisher` – Asynchroner MQTT‑Client für Publikation und Subscription.
66+
67+
6. **Befehls‑API** (`signalduino.commands`):
68+
* `SignalduinoCommands` – Umfassende Schnittstelle zur Steuerung der SIGNALDuino‑Firmware.
69+
70+
== Schnellstart
71+
72+
Für einen schnellen Einstieg folgen Sie diesen Schritten:
73+
74+
1. **Installation**: Siehe link:installation.adoc[Installationsanleitung].
75+
2. **Konfiguration**: Setzen Sie die erforderlichen Umgebungsvariablen (z.B. `SIGNALDUINO_SERIAL_PORT`, `MQTT_HOST`).
76+
3. **Programm starten**: Führen Sie `python3 main.py` aus.
77+
4. **MQTT‑Nachrichten überwachen**: Abonnieren Sie das Topic `signalduino/messages`, um dekodierte Signale zu empfangen.
78+
79+
Ausführliche Anleitungen finden Sie in den folgenden Kapiteln.
80+
681
include::installation.adoc[]
782
include::usage.adoc[]

docs/01_user_guide/installation.adoc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
= Installation
22

3+
[NOTE]
4+
====
5+
PySignalduino ist noch in Entwicklung. Es gibt bisher keine stabile Version – nutzen Sie die Software mit entsprechender Vorsicht.
6+
====
7+
38
== Voraussetzungen
49

510
* Python 3.8 oder höher

docs/01_user_guide/usage.adoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,8 @@ Die Log-Ausgabe zeigt den Status von Transport, Parser und MQTT.
210210

211211
=== Bekannte Probleme und Workarounds
212212

213+
* **Entwicklungsstatus**: Da PySignalduino noch in aktiver Entwicklung ist, können sich Verhalten und API zwischen Commits ändern. Bei unerwartetem Verhalten prüfen Sie bitte die aktuelle Codebasis und melden Sie Issues auf GitHub.
214+
213215
* **`aiomqtt`-Versionen:** Verwenden Sie `aiomqtt>=2.0.0`. Ältere Versionen können Inkompatibilitäten aufweisen.
214216
* **Windows und asyncio:** Unter Windows kann es bei seriellen Verbindungen zu Problemen mit asyncio kommen. Verwenden Sie `asyncio.ProactorEventLoop` oder weichen Sie auf TCP-Transport aus.
215217
* **Memory Leaks:** Bei langem Betrieb können asyncio-Tasks Speicher verbrauchen. Stellen Sie sicher, dass abgeschlossene Tasks garbage-collected werden. Verwenden Sie `asyncio.create_task` mit Referenzen, um Tasks später abbrechen zu können.

docs/02_developer_guide/contribution.adoc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
= Beitrag leisten (Contributing)
22

3+
[NOTE]
4+
====
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+
====
7+
38
Beiträge zum Projekt sind willkommen!
49

510
== Workflow

0 commit comments

Comments
 (0)