SixML - Discovery

Diese Seite beschreibt den Austausch von Nachrichten, mit denen Geräte ihre Existenz bekanntgeben bzw. Klienten nach Geräten suchen können. Diese Nachrichten enthalten rudimentäre Informationen, um Klienten später den Abruf der Gerätebeschreibung aus einem lokalen Cache (bevorzugt) oder vom Gerät selbst zu ermöglichen.

Passive Geräteentdeckung

Dienstanbietende Geräte verkünden ihre Existenz über Announcement-Nachrichten. Tupel mit * sind optional.

	
DiscoveryInformation, SDLVersion, DeviceID, DeviceDescriptionDate, DeviceFlags*, ServiceTypeList*, ServiceExtendedTypeList*

21-1-01-2-2-01-00-42-1-20-41-5-07-221-07-29-00-45-2-00-04-46-4-40-03-02-20-0

1 Byte                                  21                                      DiscoveryInformation
  1 Byte                                1                                       
  1 Byte                                01                                      DeviceAnnouncement
1 Byte                                  2                                       SDLVersion
  1 Byte                                2                                       
  2 Bytes                               01-00                                   1.0
1 Byte                                  42                                      DeviceID
  1 Byte                                1                                       
  1 Byte                                20                                      20
1 Byte                                  41                                      DeviceDescriptionDate
  1 Byte                                5                                       
  5 Bytes                               07-221-07-29-00                         29.7.2013
1 Byte                                  45                                      DeviceFlags
  1 Byte                                2                                       
  2 Bytes                               00-04                                   ServiceMapping:DirectIDs;EncryptionSupport:Yes
1 Byte                                  46                                      ServiceTypeList
  1 Byte                                4                                       
  4 Bytes                               40-03-02-20                             DigitalOutput;Persistence;Attribute;ServiceManagement
1 Byte                                  0                                       EndOfPacket

<DiscoveryInformation class="DeviceAnnouncement" >
  <SDLVersion>1.0</SDLVersion>
  <DeviceID>20</DeviceID>
  <DeviceDescriptionDate>29.7.2013</DeviceDescriptionDate>
  <DeviceFlags ServiceMapping="DirectIDs" EncryptionSupport="Yes" ></DeviceFlags>
  <ServiceTypeList>DigitalOutput;Persistence;Attribute;ServiceManagement</ServiceTypeList>
</DiscoveryInformation>
SDLVersion 

Die über das SDLVersion-Tupel übertragene Version besteht aus Haupt- (1 Byte) und Unterversion (1 Byte). Der vorliegende Standard hat die Version 1.0. Nachrichten späterer Protokollschritte (Beschreibung, Aktionen und Ereignisse) enthalten keine Versionsinformationen. Aufgrund der in jeder Nachricht übertragenen DeviceID kann die vom Gerät verwendete Nachrichtenstruktur (die sich in Folgeversionen evtl. ändert) bestimmt werden.

DeviceID 

Die DeviceID identifiziert ein Gerät eindeutig innerhalb des gesamten Netzes. Sie ist 1-8 Bytes lang. Kann die Eindeutigkeit durch das Verbinden mehrerer Netze nicht garantiert werden, ist das Gateway für die Erweiterung/Verkürzung der ID vor der Weiterleitung von Nachrichten zuständig. Bei einer ID kürzer als 8 Bytes werden die oberen Bytes als 0 angenommen. Die IDs 0..10, 255 und 65535 sind unzulässig.

DeviceDescriptionDate 

DeviceDescriptionDate enthält das Erstellungsdatum der aktuellen Gerätebeschreibung. Diese Information ermöglicht es Klienten, bei Bedarf die aktualisierte Beschreibung vom Gerät abzufragen, z.B. bei Änderung des Gerätenamens. Das Format ist [JahrMSB, JahrLSB, Monat, Tag, Revision]. Hat das Gerät keinen Zugriff auf aktuelle Datumsinformationen, so wird das Jahr als 0xFFFF übertragen, Monat, Tag und Revision werden in diesem Fall als zusammenhängende fortlaufende Nummer (0..16777215) interpretiert.

DeviceFlags 

ServiceTypes definieren die zur Verfügung stehenden Dienstarten. Innerhalb des Gerätes werden Dienste eindeutig über eine ServiceID identifiziert (denn ein Gerät kann Dienste gleichen Typs auch mehrfach anbieten). Das Tupel DeviceFlags beschreibt daher die Zuordnung von ServiceIDs zum ServiceType. Geräte, welche nur 1-Byte Diensttypen implementieren und für jeden Dienst genau eine Instanz bereitstellen, müssen für jeden Dienst als ServiceID den Wert des jeweiligen ServiceTypes nutzen. In diesem Fall ist eine eindeutige Ableitung der Service-ID für jeden Dienst möglich, was den Abruf der Gerätebeschreibung ersparen kann. Das Tupel muss nur übertragen werden, wenn das Gerät von diesem Standardverhalten abweicht (z.B. Nutzung von 2-Byte Diensttypen oder Bereitstellung mehrerer Dienste des gleichen Typs). In diesem Fall muss die Zuordnung der Dienst-ID zum Dienst-Typ über die Gerätebeschreibung ermittelt werden.

ServiceTypeList, ServiceExtendedTypeList 

Das Tupel ServiceTypeList enthält in einem Byte-Array alle vom Gerät implementierten kurzen Diensttypen. Dies erlaubt beschränkten Klienten, standardisierte Geräte ohne das Abrufen und Parsen der Gerätebeschreibung zu nutzen (unter der zusätzlichen Bedingung, dass jeder Service nur einmal vorkommt). Für standardisierte Geräte sind sämtliche Parameter detailliert festgelegt, so dass ein Abrufen der Beschreibung nicht unbedingt nötig ist (außer für die Nutzung optionaler oder herstellerspezifischer Dienste). Für erweiterte Diensttypen wird analog das Tupel ServiceExtendedTypeList verwendet. Ist das entsprechende Tupel leer, weil das Gerät z.B. keine erweiterten Dienste implementiert, so entfällt das entsprechende Tupel.

Passive Geräteabmeldung

Geräte, welche das Ende ihrer Funktionsfähigkeit in der unmittelbaren Zukunft absehen können (z.B. Programme nach dem Druck auf 'Beenden'), sollten eine DeviceRemoval-Nachricht schicken.

DiscoveryInformation, SDLVersion, DeviceID

21-1-02-2-2-01-00-42-1-20-0

1 Byte                                  21                                      DiscoveryInformation
  1 Byte                                1                                       
  1 Byte                                02                                      DeviceRemoval
1 Byte                                  2                                       SDLVersion
  1 Byte                                2                                       
  2 Bytes                               01-00                                   1.0
1 Byte                                  42                                      DeviceID
  1 Byte                                1                                       
  1 Byte                                20                                      0x14 (20)
1 Byte                                  0                                       EndOfPacket

<DiscoveryInformation class="DeviceRemoval" >
  <SDLVersion>1.0</SDLVersion>
  <DeviceID>20</DeviceID>
</DiscoveryInformation>
Aktive Geräteentdeckung

Suchnachrichten werden von Klienten gesendet, um bestimmte oder alle verfügbaren Geräte in angeschlossenen Netzen zu finden.

DiscoveryRequest, SDLVersion, DeviceID*, ServiceTypeList*, ServiceExtendedTypeList*

22-1-03-2-2-01-00-42-1-111-46-2-36-31-47-2-01-12-0-

1 Byte                                  22                                      DiscoveryRequest
  1 Byte                                1                                       
  1 Byte                                03                                      DeviceSearch
1 Byte                                  2                                       SDLVersion
  1 Byte                                2                                       
  2 Bytes                               01-00                                   1.0
1 Byte                                  42                                      DeviceID
  1 Byte                                1                                       
  1 Byte                                111                                     0x6F (111)
1 Byte                                  46                                      ServiceTypeList
  1 Byte                                2                                       
  2 Bytes                               36-31                                   SensorInput;RelativeInput
1 Byte                                  47                                      ServiceExtendedTypeList
  1 Byte                                2                                       
  2 Bytes                               01-12                                   268
1 Byte                                  0                                       EndOfPacket

<DiscoveryRequest class="DeviceSearch" >
  <SDLVersion>1.0</SDLVersion>
  <DeviceID>111</DeviceID>
  <ServiceTypeList>SensorInput;RelativeInput</ServiceTypeList>
  <ServiceExtendedTypeList>268</ServiceExtendedTypeList>
</DiscoveryRequest>

Die einzelnen Dienste in ServiceTypeList und ServiceExtendedTypeList werden über ODER verknüpft, d.h. jedes Gerät beantwortet die Suchnachricht, welches mindestens einen der gesuchten Dienste implementiert. Die DeviceID und die angefragten Dienste werden durch UND verknüpft, d.h., nur Geräte mit passender DeviceID beantworten die Anfrage. Bei Abwesenheit von DeviceID oder ServiceTypeList wird ein alles einschließender Wert angenommen (z.B. 0 für alle Dienste).

Eine Suchnachricht für alle Geräte und Dienste sieht folgendermaßen aus:

DiscoveryRequest, SDLVersion

22-1-03-2-2-01-00-0

1 Byte                                  22                                      DiscoveryRequest
  1 Byte                                1                                       
  1 Byte                                03                                      DeviceSearch
1 Byte                                  2                                       SDLVersion
  1 Byte                                2                                       
  2 Bytes                               01-00                                   1.0
1 Byte                                  0                                       EndOfPacket

<DiscoveryRequest class="DeviceSearch" >
  <SDLVersion>1.0</SDLVersion>
</DiscoveryRequest>

Die Antwort auf Suchnachrichten entspricht bis auf den Nachrichtentyp den DeviceAnnouncement-Nachrichten.

DiscoveryResponse, SDLVersion, DeviceID, DeviceDescriptionDate, DeviceFlags*, ServiceTypeList*, ServiceExtendedTypeList*
			
23-1-01-2-2-01-00-42-1-20-41-5-07-221-07-29-00-45-2-00-04-46-4-50-03-02-20-0

1 Byte                                  23                                      DiscoveryResponse
  1 Byte                                1                                       
  1 Byte                                01                                      DeviceAnnouncement
1 Byte                                  2                                       SDLVersion
  1 Byte                                2                                       
  2 Bytes                               01-00                                   1.0
1 Byte                                  42                                      DeviceID
  1 Byte                                1                                       
  1 Byte                                20                                      20
1 Byte                                  41                                      DeviceDescriptionDate
  1 Byte                                5                                       
  5 Bytes                               07-221-07-29-00                         29.7.2013
1 Byte                                  45                                      DeviceFlags
  1 Byte                                2                                       
  2 Bytes                               00-04                                   ServiceMapping:DirectIDs;EncryptionSupport:Yes
1 Byte                                  46                                      ServiceTypeList
  1 Byte                                4                                       
  4 Bytes                               50-03-02-20                             DigitalOutput;Persistence;Attribute;ServiceManagement
1 Byte                                  0                                       EndOfPacket

<DiscoveryResponse class="DeviceAnnouncement" >
  <SDLVersion>1.0</SDLVersion>
  <DeviceID>20</DeviceID>
  <DeviceDescriptionDate>29.7.2013</DeviceDescriptionDate>
  <DeviceFlags ServiceMapping="DirectIDs" EncryptionSupport="Yes" ></DeviceFlags>
  <ServiceTypeList>DigitalOutput;Persistence;Attribute;ServiceManagement</ServiceTypeList>
</DiscoveryResponse>

 

 

NACHRICHTEN