Änderungen von Dokument Datenbus

Zuletzt geändert von holymoly am 2023/05/09 18:11

Von Version 3.1
bearbeitet von holymoly
am 2023/05/09 18:11
Änderungskommentar: Es gibt keinen Kommentar für diese Version
Auf Version 1.1
bearbeitet von admin
am 2021/11/08 18:17
Änderungskommentar: Es gibt keinen Kommentar für diese Version

Zusammenfassung

Details

Seiteneigenschaften
Dokument-Autor
... ... @@ -1,1 +1,1 @@
1 -XWiki.holymoly
1 +XWiki.admin-0
Inhalt
... ... @@ -1,19 +1,12 @@
1 -(% class="wikigeneratedid" %)
2 -
1 += Datenbus =
3 3  
4 -(% class="wikigeneratedid" %)
5 -~-~--Outdated~-~-- wurde mit WLEDs umgesetzt da kein Interesse am Datenbus bestand. Bleibt als Doku für holymoly erhalten
6 -
7 -
8 -
9 -(% class="wikigeneratedid" id="HDatenbus" %)
10 10  Der Space wird eine Menge von Aktoren, Sensoren und aktuell noch nicht definierte Dinge betreiben. Damit nicht jedesmal ein neues Protokoll zur Kommunikation gelernt werden muss wurde beschlossen mit Dingen über MQTT zu kommunizieren.
11 11  
12 -== MQTT ==
5 +== MQTT ==
13 13  
14 14  MQTT ist ein offenes und standardisiertes Protokoll. Die Standardisierung wird durch die Organization for the Advancement of Structured Information Standards geleitet[[http://mqtt.org/]]. Das Format der zu übertragenden Daten, der eigentlich Payload, bleibt dabei dem Anwender überlassen. MQTT regelt hierbei nur den Austausch der selbst definierten Daten.
15 15  
16 -=== Topics ===
9 +=== Topics ===
17 17  
18 18  MQTT kann Daten einfach sortieren/kontextualisieren. Dafür werden sogenannte Topics verwendet. Topics bilden Pfade (ähnlich Dateipfaden) in den man Daten veröffentlichen oder von denen man Daten lesen kann (schreiben und lesen wird auch publish und subscribe genannt). So kann man zum Beispiel folgende Struktur erstellen:
19 19  
... ... @@ -29,13 +29,19 @@
29 29  * /space/meetingroom/temperature
30 30  {{/code}}
31 31  
32 -{{code}}* /space/meetingroom/moisture{{/code}} Wenn man alle Temperaturen empfangen will (subscribe) kann man mit Wildcards arbeiten. So kann man im folgendem Beispiel alle defineirten Temperaturen empfangen:
25 +{{code}}
26 +* /space/meetingroom/moisture
27 +{{/code}} Wenn man alle Temperaturen empfangen will (subscribe) kann man mit Wildcards arbeiten. So kann man im folgendem Beispiel alle defineirten Temperaturen empfangen:
33 33  
34 -{{code}}* /space/+/temperature{{/code}} Will man alle Werte empfangen kann man folgende Definition verwenden:
29 +{{code}}
30 +* /space/+/temperature
31 +{{/code}} Will man alle Werte empfangen kann man folgende Definition verwenden:
35 35  
36 -{{code}}* /space/#{{/code}} Das # Zeichen darf nur am Ende der Topic Definition eingesetzt werden.
33 +{{code}}
34 +* /space/#
35 +{{/code}} Das # Zeichen darf nur am Ende der Topic Definition eingesetzt werden.
37 37  
38 -==== Topicstruktur des ZTL ====
37 +==== Topicstruktur des ZTL ====
39 39  
40 40  Innerhalb des Spaces wird folgende Struktur für Topics empfohlen:
41 41  
... ... @@ -49,32 +49,40 @@
49 49  * /light/space/livingroom/LedStripe1/debug
50 50  {{/code}}
51 51  
52 -===== Beispiel für Licht =====
51 +===== Beispiel für Licht =====
53 53  
54 54  Damit nur die Lampe "LedStripe1" gesteuert wird sendet man Meldungen an
55 55  
56 -{{code}}* /light/space/livingroom/LedStripe1{{/code}} Damit alle Lampen im "livingroom" gesteuert werden sendet man Meldungen an
55 +{{code}}
56 +* /light/space/livingroom/LedStripe1
57 +{{/code}} Damit alle Lampen im "livingroom" gesteuert werden sendet man Meldungen an
57 57  
58 -{{code}}* /light/space/livingroom{{/code}} Damit alle Lampen im "space" gesteuert werden sendet man Meldungen an
59 +{{code}}
60 +* /light/space/livingroom
61 +{{/code}} Damit alle Lampen im "space" gesteuert werden sendet man Meldungen an
59 59  
60 -{{code}}* /light/space{{/code}} Debug Informationen für Lampe "LedStripe1"
63 +{{code}}
64 +* /light/space
65 +{{/code}} Debug Informationen für Lampe "LedStripe1"
61 61  
62 -{{code}}* /light/space/livingroom/LedStripe1/debug{{/code}} Debug Informationen für alle Lampen
67 +{{code}}
68 +* /light/space/livingroom/LedStripe1/debug
69 +{{/code}} Debug Informationen für alle Lampen
63 63  
64 64  {{code}}
65 65  * /light/#/#/#/debug
66 66  {{/code}}
67 67  
68 -=== Payload ===
75 +=== Payload ===
69 69  
70 70  Die später verwendeten Dinge werden unterschiedliche Anforderungen für den Datenaustausch haben. Im folgenden Abschnitt werden diese Anforderungen Kategorisiert. Für die Implementierung soll eine möglichst flache JSON Struktur verwendet werden. Dinge könne mehrere dieser Anforderungen gleichzeitig implementiert haben.
71 71  
72 -==== Command ====
79 +==== Command ====
73 73  
74 74  Der Typ Command wird für Kommunikation benötigt bei der das Ding den Payload nur empfängt und intern verarbeitet. Das Ding wird keine Rückmeldung an den Empfänger senden. Beipiel:
75 75  
76 76  {{code}}
77 -* Licht -> an oder aus
84 +* Licht -> an oder aus
78 78  {{/code}}
79 79  
80 80  {{code}}
... ... @@ -89,10 +89,10 @@
89 89   "g": 255, //Used by the client to set the action green color -> ignored if device can only on/off
90 90   "b": 255, //Used by the client to set the action blue color -> ignored if device can only on/off
91 91   "w": 255 //Used by the client to set the action white color -> ignored if device can only on/off
92 -}
99 +}
93 93  {{/code}}
94 94  
95 -==== Request ====
102 +==== Request ====
96 96  
97 97  Der Typ Request wird für Kommunikation benötigt bei der der Sender Werte vom Ding anfordert. Beispiel:
98 98  
... ... @@ -122,7 +122,7 @@
122 122  }
123 123  {{/code}}
124 124  
125 -==== State ====
132 +==== State ====
126 126  
127 127  Der Typ State wird verwendet damit das Ding selbständig Werte an einen Empfänger senden kann. Beispiel:
128 128  
... ... @@ -160,7 +160,7 @@
160 160  }
161 161  {{/code}}
162 162  
163 -=== Typen ===
170 +=== Typen ===
164 164  
165 165  Typen definieren die möglichen Aktoren/Sensoren im Netzwerk. Die Datenstruktur wird im jeweiligen Wiki Beitrag gepflegt. Die möglichen Typen werden hier aufgeführt.
166 166