Änderungen von Dokument Datenbus

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

Von Version 2.1
bearbeitet von admin
am 2021/11/08 18:17
Ä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
Inhalt
... ... @@ -1,11 +1,12 @@
1 -(% class="wikigeneratedid" id="HDatenbus" %)
1 += Datenbus =
2 +
2 2  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.
3 3  
4 -== MQTT ==
5 +== MQTT ==
5 5  
6 6  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.
7 7  
8 -=== Topics ===
9 +=== Topics ===
9 9  
10 10  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:
11 11  
... ... @@ -21,13 +21,19 @@
21 21  * /space/meetingroom/temperature
22 22  {{/code}}
23 23  
24 -{{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:
25 25  
26 -{{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:
27 27  
28 -{{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.
29 29  
30 -==== Topicstruktur des ZTL ====
37 +==== Topicstruktur des ZTL ====
31 31  
32 32  Innerhalb des Spaces wird folgende Struktur für Topics empfohlen:
33 33  
... ... @@ -41,32 +41,40 @@
41 41  * /light/space/livingroom/LedStripe1/debug
42 42  {{/code}}
43 43  
44 -===== Beispiel für Licht =====
51 +===== Beispiel für Licht =====
45 45  
46 46  Damit nur die Lampe "LedStripe1" gesteuert wird sendet man Meldungen an
47 47  
48 -{{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
49 49  
50 -{{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
51 51  
52 -{{code}}* /light/space{{/code}} Debug Informationen für Lampe "LedStripe1"
63 +{{code}}
64 +* /light/space
65 +{{/code}} Debug Informationen für Lampe "LedStripe1"
53 53  
54 -{{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
55 55  
56 56  {{code}}
57 57  * /light/#/#/#/debug
58 58  {{/code}}
59 59  
60 -=== Payload ===
75 +=== Payload ===
61 61  
62 62  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.
63 63  
64 -==== Command ====
79 +==== Command ====
65 65  
66 66  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:
67 67  
68 68  {{code}}
69 -* Licht -> an oder aus
84 +* Licht -> an oder aus
70 70  {{/code}}
71 71  
72 72  {{code}}
... ... @@ -81,10 +81,10 @@
81 81   "g": 255, //Used by the client to set the action green color -> ignored if device can only on/off
82 82   "b": 255, //Used by the client to set the action blue color -> ignored if device can only on/off
83 83   "w": 255 //Used by the client to set the action white color -> ignored if device can only on/off
84 -}
99 +}
85 85  {{/code}}
86 86  
87 -==== Request ====
102 +==== Request ====
88 88  
89 89  Der Typ Request wird für Kommunikation benötigt bei der der Sender Werte vom Ding anfordert. Beispiel:
90 90  
... ... @@ -114,7 +114,7 @@
114 114  }
115 115  {{/code}}
116 116  
117 -==== State ====
132 +==== State ====
118 118  
119 119  Der Typ State wird verwendet damit das Ding selbständig Werte an einen Empfänger senden kann. Beispiel:
120 120  
... ... @@ -152,7 +152,7 @@
152 152  }
153 153  {{/code}}
154 154  
155 -=== Typen ===
170 +=== Typen ===
156 156  
157 157  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.
158 158