You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/architecture/proposals/fhem_mqtt_integration.adoc
+64-13Lines changed: 64 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -59,7 +59,20 @@ Ein neues FHEM-Modul, das die MQTT-Nachrichten von PySignalDuino abonniert und i
59
59
|**Notwendige Änderungen** | **FHEM:** Neues Perl-Modul (z.B. `98_PySignalDuinoBridge.pm` oder `00_PySignalDuinoBridge.pm`) muss erstellt werden, das den JSON-Payload empfängt, `preamble` und `payload` verknüpft.
60
60
|===
61
61
62
-
=== Option 3: Anpassung in PySignalDuino (FHEM-Mode)
62
+
=== Option 3: Direkte SIGNALduino-Integration über MQTT-Wrapper (`SD_MQTT.pm`)
63
+
64
+
PySignalDuino publiziert Nachrichten an den `MQTT-Broker`, und das `SIGNALduino`-Modul in FHEM abonniert diese Nachrichten direkt über eine interne Wrapper-Logik (`SD_MQTT.pm`), die `MQTT2_Dispatcher` nutzt, wodurch die Notwendigkeit eines separaten `MQTT2_DEVICE` entfällt.
65
+
66
+
[cols="1,3"]
67
+
|===
68
+
|Kriterium | Beschreibung
69
+
|**Vorteile** | **Nahtlose Integration**. Fühlt sich für den Nutzer wie ein USB/Netzwerk-Signalduino an, aber über MQTT. Kein separates `MQTT2_DEVICE` oder Bridge-Modul nötig. Nutzt die bestehende Dispatch-Logik von `SIGNALduino`.
70
+
|**Nachteile** | Erfordert Anpassung am `SIGNALduino`-Modul (via Wrapper).
71
+
|**Implementierungsaufwand (grob)** | **Mittel**. Implementierung des Wrappers `SD_MQTT.pm` und Integration in `00_SIGNALduino.pm`.
72
+
|**Notwendige Änderungen** | **FHEM:** `00_SIGNALduino.pm` muss erweitert werden, um `SD_MQTT` zu laden. Konfiguration eines `MQTT2_CLIENT` (Broker).
73
+
|===
74
+
75
+
=== Option 3b: Anpassung in PySignalDuino (FHEM-Mode)
63
76
64
77
PySignalDuino wurde bereits angepasst, um die Felder `preamble` und `payload` zu senden, die zusammen dem FHEM-Dispatch-Format entsprechen.
65
78
@@ -93,13 +106,13 @@ PySignalDuino publiziert die demodulierten Nachrichten in einem standardisierten
|**1, 1b, 2** | Standardisiertes JSON | Konvertierung/Parsing in FHEM notwendig. | **Gut.** Diese Systeme können JSON nativ und effizient parsen, benötigen aber eigene Logik (Templates/Scripts) zur Interpretation der Rohdaten, wenn FHEM dies nicht übernimmt.
97
-
|**3** | FHEM-spezifischer String (z.B. P49#...) | Direkte Integration in FHEM möglich. | **Schlecht.** HA/Node-RED müssten proprietäre FHEM-Strings parsen oder PySignalDuino müsste doppelt senden (JSON + String), was Bandbreite/Performance kostet.
109
+
|**1, 1b, 2, 3** | Standardisiertes JSON | Konvertierung/Parsing in FHEM notwendig. | **Gut.** Diese Systeme können JSON nativ und effizient parsen, benötigen aber eigene Logik (Templates/Scripts) zur Interpretation der Rohdaten, wenn FHEM dies nicht übernimmt.
110
+
|**3b** | FHEM-spezifischer String (z.B. P49#...) | Direkte Integration in FHEM möglich. | **Schlecht.** HA/Node-RED müssten proprietäre FHEM-Strings parsen oder PySignalDuino müsste doppelt senden (JSON + String), was Bandbreite/Performance kostet.
98
111
|**4** | Dekodiertes JSON (Werte) | Keine Dispatch-Logik nötig; direkte Nutzung der Readings. | **Exzellent.** Der "Gold Standard". MQTT-Nachrichten sind selbsterklärend und sofort nutzbar. Ermöglicht Plug & Play.
99
112
|===
100
113
101
114
**Fazit:**
102
-
* Varianten, die das standardisierte JSON von PySignalDuino beibehalten (Option 1, 1b, 2), sind für eine Koexistenz gut geeignet.
115
+
* Varianten, die das standardisierte JSON von PySignalDuino beibehalten (Option 1, 1b, 2, 3), sind für eine Koexistenz gut geeignet.
103
116
* **Option 4** ist der klare Gewinner für moderne IoT-Landschaften (HA, Node-RED), erfordert aber den größten Aufwand in PySignalDuino.
104
117
105
118
@@ -214,7 +227,45 @@ sequenceDiagram
214
227
D ->> D: Handle Message
215
228
....
216
229
217
-
=== Option 3: Anpassung in PySignalDuino (FHEM-Mode)
230
+
=== Option 3: Direkte SIGNALduino-Integration über MQTT-Wrapper (`SD_MQTT.pm`)
231
+
232
+
**FHEM-Konfiguration:**
233
+
[source,fhem]
234
+
----
235
+
# tag::broker_config[]
236
+
# 4. Define the MQTT Client (Broker Connection)
237
+
# 'mqtt' is the hostname of the broker service in docker-compose.yml
|**Wartbarkeit** | Schlecht | Gut (Code ist versionierbar) | Sehr gut (gekapseltes Modul) | Gut (Wrapper kapselt Logik) | Schlecht | Sehr gut (zentral in Python)
0 commit comments