EVENTDISTR: Unterschied zwischen den Versionen

Aus Stratum 0
Wechseln zu:Navigation, Suche
(NowPlaying: Null-Pakete, um beendete Wiedergabe zu signalisieren)
K (NowPlaying: Beispiel repariert)
Zeile 75: Zeile 75:
 
  0000060: 312e 2043 686f 7275 733a 204b 6f6d 6d74  1. Chorus: Kommt
 
  0000060: 312e 2043 686f 7275 733a 204b 6f6d 6d74  1. Chorus: Kommt
 
  0000070: 2c20 6968 7220 54c3 b663 6874 6572 2e2e  , ihr T..chter..
 
  0000070: 2c20 6968 7220 54c3 b663 6874 6572 2e2e  , ihr T..chter..
  0000080: 2e00
+
  0000080: 2e00                                     ..
  
 
Beispiel: Die Wiedergabe im Frickelraum wurde beendet und es folgt kein weiteres Lied.
 
Beispiel: Die Wiedergabe im Frickelraum wurde beendet und es folgt kein weiteres Lied.

Version vom 20. Juni 2013, 04:11 Uhr

EVENTDISTR
Beispiel-Paket in Wireshark
Beispiel-Paket in Wireshark
Beschreibung: Paketspezifikation für Events aller Art
Kontakt: Daniel Bohrer, chrissi^
Status: aktiv (Was heißt das?)

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.

Format

Der Payload der UDP-Pakete hat folgenden Aufbau:

Offset (Byte) Inhalt Bemerkung
0 EVENTDISTR Magic String zur Erkennung des Protokolls
10 v Trennzeichen
11 Protokollversion Version des Protokolls in ASCII. Zur Zeit wird Version 2 eingesetzt: ASCII "2" == 50 == 0x32. (Siehe auch #Changelog)
12 ; Trennzeichen
13-… Event=Wert Name des Events, optional gefolgt von einem Trennzeichen (ASCII "=" == 61 == 0x3D) und einem zusätzlichem Wert. Es ist zu beachten, dass einige Implementierungen unter Umständen nicht das komplette Event verarbeiten, sondern auf eine bestimmte Länge beschränkt sind. Generell 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. Das Event kann optional die Werte RISING oder FALLING 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 RISING oder FALLING 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:
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)

Falls durch Implementierungen eine Begrenzung der Paketgröße vorgenommen wird, wird empfohlen, längere Zeichenketten von Interpret und Title an geeigneten Stellen durch „...“ abzukürzen.

Das Versenden eines NowPlaying-Events macht alle vorher gesendeten NowPlaying-Events ungültig. Alternativ kann in diesem Fall auch ein NowPlaying-Event gesendet werden, in dem die Felder Interpret und Title die leere Zeichenkette enthalten (z.B. wenn das Ende einer Playlist erreicht wurde und kein neuer Titel folgt).

Beispiel: Im Frickelraum wird gerade „J. S. Bach: St Matthew Passion, Part I: No. 1. Chorus: Kommt, ihr Töchter, helft mir klagen (Chorus, Soprano in ripieno)“ von „Cologne Chamber Orchestra“ gespielt.

0000000: 4556 454e 5444 4953 5452 7632 3b4e 6f77  EVENTDISTRv2;Now
0000010: 506c 6179 696e 673d 4100 436f 6c6f 676e  Playing=A.Cologn
0000020: 6520 4368 616d 6265 7220 4f72 6368 6573  e Chamber Orches
0000030: 7472 6100 4a2e 2053 2e20 4261 6368 3a20  tra.J. S. Bach: 
0000040: 5374 204d 6174 7468 6577 2050 6173 7369  St Matthew Passi
0000050: 6f6e 2c20 5061 7274 2049 3a20 4e6f 2e20  on, Part I: No. 
0000060: 312e 2043 686f 7275 733a 204b 6f6d 6d74  1. Chorus: Kommt
0000070: 2c20 6968 7220 54c3 b663 6874 6572 2e2e  , ihr T..chter..
0000080: 2e00                                     ..

Beispiel: Die Wiedergabe im Frickelraum wurde beendet und es folgt kein weiteres Lied.

0000000: 4556 454e 5444 4953 5452 7632 3b4e 6f77  EVENTDISTRv2;Now
0000010: 506c 6179 696e 673d 4100 0000            Playing=A...

VirtualMsg

Zum Ankündigungen von Nachrichten aus dem virtuellen Raum im Space. Die Nachricht kann z. 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?
siehe auch StratumPing

Changelog

Version Datum Änderung
v2 2013-06-19 100-Byte-Beschränkung aufgehoben, Größe ist jetzt implementierungsspezifisch. --Daniel Bohrer 02:06, 19. Jun. 2013 (CEST)

Implementierungen

  • pyEventdistr: Python-Paket mit einigen Scripts um EVENTDISTR-Pakete zu generieren und empfangen (von comawill)