*Empty MediaWiki Message*
[stratum0-wiki.git] / EVENTDISTR.mw
index 7bbfd54..ef07709 100644 (file)
@@ -1,30 +1,83 @@
-Im Space gibt es ein standardisiertes Protokoll, wie Events über das Netzwerk verteilt werden. Das Protokoll baut auf UDP auf und benutzt Port 31337. Der Payload der UDP-Protokolle hat folgenden Aufbau:
+Im Space gibt es ein standardisiertes Protokoll, wie Events über das Netzwerk verteilt werden. Das Protokoll baut auf UDP auf und benutzt Port 31337. Die Pakete können sowohl als Unicast als auch als Broadcast oder Multicast gesendet werden.
 
+Der Payload der UDP-Pakete hat folgenden Aufbau:
+
+[[Datei:Beispiel UDP-Paket.jpg|thumb|300px|Beispiel-Paket in Wireshark]]
 {| class="prettytable"
-! Offset !! Inhalt !! Bemerkung
+! Offset (Byte) !! Inhalt !! Bemerkung
 |-
-| 0 || <tt>EVENTDISTR</tt> || Magic String zum Erkennen des Protokolls
+| 0 || <tt>EVENTDISTR</tt> || Magic String zur Erkennung des Protokolls
 |-
 | 10 || <tt>v</tt> || Trennzeichen
 |-
-| 11 || Protokollversion || Zur Zeit wird Version 1 eingesetzt: <tt>ord("1")</tt> == 49
+| 11 || Protokollversion || Zur Zeit wird nur Version 1 eingesetzt: ASCII "<tt>1</tt>" == 49 == 0x31
 |-
 | 12 || <tt>;</tt> || Trennzeichen
 |-
-| 13-… || Event-Informationen || siehe unten. Dieser Teil des Paketes darf eine maximale Länge von 100 Byte nicht überschreiten! (Andernfalls wird gebeten, das [http://www.ietf.org/rfc/rfc3514.txt Evil Flag] im IP-Header zu setzen.)
+| 13-… || <tt><i>Event</i>=<i>Wert</i></tt> || Name des Events, optional gefolgt von einem Trennzeichen (ASCII "<tt>=</tt>" == 61 == 0x3D) und einem zusätzlichem Wert. Dieser Teil des Paketes darf eine maximale Länge von 100 Byte nicht überschreiten! (Andernfalls wird gebeten, RFC 3514 zu beachten.)
 |}
 
 == Events ==
 Es folgt eine vollständige Auflistung der zur Zeit verwendeten Events.
 
-;DingDong
-:Die Klingel an einer der beiden Haustüren wurde betätigt. Wird vom [[Doorbell Extender]] im Frickelraum verarbeitet.
-;DoorUnten
-:Der Türoffnungsknopf am Doorbell Extender wurde betätigt. Wird vom [[Doorbell Extender]] an der Tür oben verarbeitet.
-;SpaceOpened
-:Wird vom [[statusberry]] gesendet, wenn der Space-Öffnungsstatus auf „offen“ gesetzt wird
-;SpaceClosed
-:Wird vom [[statusberry]] gesendet, wenn der Space-Öffnungsstatus auf „geschlossen“ gesetzt wird
+=== DingDong ===
+Die Klingel an einer der beiden Haustüren wurde betätigt. Wird vom [[Doorbell Extender]] im Frickelraum verarbeitet. Das Event kann optional die Werte <tt>RISING</tt> oder <tt>FALLING</tt> annehmen, um die steigende oder fallende Flanke zu kennzeichnen.
+
+Beispiel:
+ 0000000: 4556 454e 5444 4953 5452 7631 3b44 696e  EVENTDISTRv1;Din
+ 0000010: 6744 6f6e 673d 5249 5349 4e47            gDong=RISING
+
+=== DoorUnten ===
+Der Türoffnungsknopf am Doorbell Extender wurde betätigt. Wird vom [[Doorbell Extender]] an der Tür oben verarbeitet. Das Event kann optional die Werte <tt>RISING</tt> oder <tt>FALLING</tt> annehmen, um die steigende oder fallende Flanke zu kennzeichnen.
+
+Beispiel:
+ 0000   4556 454e 5444 4953 5452 7631 3b44 6f6f    EVENTDISTRv1;Doo
+ 0010   7255 6e74 656e 3d52 4953 494e 47           rUnten=RISING
+
+=== SpaceOpened ===
+Wird vom [[statusberry]] gesendet, wenn der Space-Öffnungsstatus auf „offen“ gesetzt wird. Es wird kein Wert gesendet.
+
+Beispiel: 
+ 0000000: 4556 454e 5444 4953 5452 7631 3b53 7061  EVENTDISTRv1;Spa
+ 0000010: 6365 4f70 656e 6564                      ceOpened
+
+=== SpaceClosed ===
+Wird vom [[statusberry]] gesendet, wenn der Space-Öffnungsstatus auf „geschlossen“ gesetzt wird. Es wird kein Wert gesendet.
+
+Beispiel: 
+ 0000000: 4556 454e 5444 4953 5452 7631 3b53 7061  EVENTDISTRv1;Spa
+ 0000010: 6365 436c 6f73 6564                      ceClosed
+
+=== NowPlaying ===
+Dient zur Ankündigung von aktuell gespielten Songtitel/Interpreten im Space. Der Wert besteht aus folgenden Feldern, die jeweils durch Nullbytes abgeschlossen sind:
+;Area: Teilbereich des Spaces, für den das Event gilt. Kann folgende Werte annehmen:
+:*<tt>A</tt> für den Teilbereich [[Frickelraum]]
+:*<tt>B</tt> für den Teilbereich [[Lounge]]
+:*<tt>0</tt> für den Teilbereich [[Bad]]
+:*<tt>K</tt> für den Teilbereich [[Küche]]
+;Interpret: Der Interpret des Musikstücks, das zur Zeit im Teilbereich des Spaces gespielt wird, kodiert im UTF-8-Zeichensatz (RFC 3629, ISO/IEC 10646-1:2000 Annex D)
+;Title: der Titel des Musikstücks, das zur Zeit im Teilbereich des Spaces gespielt wird, kodiert im UTF-8-Zeichensatz (RFC 3629, ISO/IEC 10646-1:2000 Annex D)
+
+Durch die Beschränkung der Payload auf 100 Byte sind die Felder ''Interpret'' und ''Title'' faktisch zusammen auf 87 Byte (jeweils inkl. abschließenden Nullbytes) beschränkt. Es wird empfohlen, größere Zeichenketten an geeigneten Stellen durch „<tt>...</tt>“ zu beenden.
+
+Beispiel: Im Frickelraum wird gerade „Carry on My Wayward Son“ von „Kansas“ gespielt.
+ 0000000: 4556 454e 5444 4953 5452 7631 3b4e 6f77  EVENTDISTRv1;Now
+ 0000010: 506c 6179 696e 673d 4100 4b61 6e73 6173  Playing=A.Kansas
+ 0000020: 0043 6172 7279 206f 6e20 4d79 2057 6179  .Carry on My Way
+ 0000030: 7761 7264 2053 6f6e 00                   ward Son.
+
+=== VirtualMsg ===
+Zum Ankündigungen von Nachrichten aus dem virtuellen Raum im Space. Die Nachricht kann z.&nbsp;B. aus dem IRC kommen und im Space auf einer LED-Leiste angezeigt werden. Der Wert des Events besteht aus der entsprechenden Nachricht, die angezeigt werden soll.
+
+Beispiel:
+ 0000000: 4556 454e 5444 4953 5452 7631 3b56 6972  EVENTDISTRv1;Vir
+ 0000010: 7475 616c 4d73 673d 3c6a 7261 6e64 6f6d  tualMsg=<jrandom
+ 0000020: 6861 636b 6572 3e20 6772 6164 206a 656d  hacker> grad jem
+ 0000030: 616e 6420 696d 2073 7061 6365 3f         and im space?
+
+== Implementierung ==
+Python-Paket mit einigen Scripts um EVENTDISTR-Pakete zu generieren und empfangen: https://github.com/stratum0/pyEventdistr
+:''siehe auch [[StratumPing]]''
 
 [[Kategorie:Dokumentation]]
 [[Kategorie:Infrastruktur]]
This page took 0.022094 seconds and 4 git commands to generate.