|
| 1 | += PySignalduino – Asynchrone MQTT-Bridge für SIGNALDuino |
| 2 | +:sectlinks: |
| 3 | + |
| 4 | +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. |
| 5 | + |
| 6 | +=== Entwicklungsstatus |
| 7 | + |
| 8 | +[NOTE] |
| 9 | +.Entwicklungsstatus |
| 10 | +==== |
| 11 | +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. |
| 12 | +==== |
| 13 | + |
| 14 | +=== PySignalduino vs. Original |
| 15 | +PySignalduino ist keine direkte Portierung, sondern eine Neuimplementierung mit folgenden Unterschieden: |
| 16 | +* *Asynchrone Verarbeitung*:: Statt Threads wird `asyncio` verwendet. |
| 17 | +* *MQTT-Integration*:: Eingebaute MQTT-Bridge für nahtlose Integration in IoT-Ökosysteme. |
| 18 | +* *Moderne Python-Praktiken*:: Typisierung, strukturierte Logging, Konfiguration über Umgebungsvariablen. |
| 19 | + |
| 20 | +== Controller-Code und Firmware |
| 21 | + |
| 22 | +Die SIGNALDuino-Firmware (Microcontroller-Code) wird in einem separaten Repository entwickelt: |
| 23 | + |
| 24 | +* *GitHub Repository*:: https://github.com/RFD-FHEM/SIGNALDuino |
| 25 | +* *Aktuelle Version*:: v4.0.0 |
| 26 | +* *Unterstützte Hardware*:: |
| 27 | +** Arduino Nano mit CC1101 |
| 28 | +** ESP32-basierte Boards (z.B. ESP32-DevKitC) |
| 29 | +** Maple Mini (STM32) |
| 30 | +* *Build-Anleitungen*:: Das Repository enthält PlatformIO-Konfigurationen und Arduino-IDE-Projektdateien für einfache Kompilierung. |
| 31 | + |
| 32 | +== Hauptmerkmale |
| 33 | + |
| 34 | +* **Vollständig asynchron** – Basierend auf `asyncio` für hohe Performance und einfache Integration in asynchrone Anwendungen. |
| 35 | +* **MQTT-Integration** – Automatisches Publizieren dekodierter Nachrichten in konfigurierbare Topics und Empfang von Steuerbefehlen (z.B. `version`, `set`, `mqtt`). |
| 36 | +* **Unterstützte Transporte** – Serielle Verbindung (über `pyserial-asyncio`) und TCP-Verbindung. |
| 37 | +* **Umfangreiche Protokollbibliothek** – Portierung der originalen FHEM‑SIGNALDuino‑Protokolle mit `SDProtocols` und `SDProtocolData`. |
| 38 | +* **Konfiguration über Umgebungsvariablen** – Einfache Einrichtung ohne Codeänderungen. |
| 39 | +* **Ausführbares Hauptprogramm** – `main.py` bietet eine sofort einsatzbereite Lösung mit Logging, Signalbehandlung und Timeout‑Steuerung. |
| 40 | +* **Komprimierte Datenübertragung** – Effiziente Payload‑Kompression für MQTT‑Nachrichten. |
| 41 | + |
| 42 | +== Demo |
| 43 | + |
| 44 | +=== MQTT-CLI-Integration |
| 45 | + |
| 46 | +image::docs/pysignalduino_cli.apng[PySignalduino CLI Demo] |
| 47 | + |
| 48 | +=== FHEMweb-Integration |
| 49 | + |
| 50 | +image::docs/pysignalduino_fhemweb.apng[PySignalduino FHEMweb Demo] |
| 51 | + |
| 52 | +== Projektstruktur |
| 53 | + |
| 54 | +[source,text] |
| 55 | +---- |
| 56 | +PySignalduino/ |
| 57 | +├── signalduino/ # Hauptpaket |
| 58 | +│ ├── controller.py # Asynchroner Controller |
| 59 | +│ ├── mqtt.py # MQTT‑Publisher/Subscriber |
| 60 | +│ ├── transport.py # Serielle/TCP‑Transporte (asyncio) |
| 61 | +│ ├── commands.py # Befehlsimplementierung |
| 62 | +│ └── ... |
| 63 | +├── sd_protocols/ # Protokollbibliothek (SDProtocols) |
| 64 | +├── tests/ # Umfangreiche Testsuite |
| 65 | +├── docs/ # Dokumentation (AsciiDoc) |
| 66 | +├── main.py # Ausführbares Hauptprogramm |
| 67 | +├── pyproject.toml # Paketkonfiguration |
| 68 | +└── requirements*.txt # Abhängigkeiten |
| 69 | +---- |
| 70 | + |
| 71 | +== Dokumentation |
| 72 | + |
| 73 | +Die vollständige Dokumentation und alle Anleitungen finden Sie auf der Hauptseite: |
| 74 | + |
| 75 | +* xref:docs/index.adoc[Zur vollständigen PySignalduino Dokumentation] |
| 76 | + |
| 77 | +== SEO & Sitemap |
| 78 | + |
| 79 | +Die Dokumentation wird automatisch mit einer dynamischen Sitemap (`sitemap.xml`) und branch‑spezifischen `robots.txt`‑Dateien versehen, um die Auffindbarkeit in Suchmaschinen zu verbessern. |
| 80 | + |
| 81 | +* *Sitemap‑Generierung*:: Das Skript xref:tools/generate_sitemap.py[tools/generate_sitemap.py] scannt den Build‑Output, weist Prioritäten und Update‑Frequenzen zu und generiert eine valide XML‑Sitemap gemäß sitemaps.org. |
| 82 | +* *Branch‑spezifische URLs*:: Für die Branches `main`, `preview` und `develop` werden unterschiedliche Base‑URLs verwendet. |
| 83 | +* *Integration in CI/CD*:: Der GitHub Actions Workflow link:.github/workflows/docs.yml[.github/workflows/docs.yml] generiert die Sitemap automatisch nach jedem Build und passt die `robots.txt` entsprechend an. |
| 84 | + |
| 85 | +Weitere Details zur Architektur finden Sie im xref:docs/02_developer_guide/architecture.adoc#dokumentations-infrastruktur-sitemap--seo[Architektur‑Dokument]. |
| 86 | + |
| 87 | +== Lizenz |
| 88 | + |
| 89 | +Dieses Projekt steht unter der MIT‑Lizenz – siehe xref:LICENSE[LICENSE] für Details. |
| 90 | + |
| 91 | +== Danksagung |
| 92 | + |
| 93 | +Basierend auf der originalen FHEM‑SIGNALDuino‑Implementierung von [@Sidey79](https://github.com/Sidey79) und der Community. |
0 commit comments