SixML - Control

Kontrollnachrichten werden benutzt, um Aktionen in Diensten auszulösen. Außerdem erfolgt über diese Nachrichten der Zugriff auf einfache Dienstwerte sowie die Aktualisierung des Gerätenamens.

Kontrollnachrichten enthalten aus Platzgründen nur Referenzen auf nötige Informationen und sind deshalb nur im Kontext der Geräte- und Dienstbeschreibung (Typ, Geräte-ID, Diensttyp und Einheit) interpretierbar.

 

 

Lesen von Dienstwerten

Eine Anfrage für einen Dienstwert (z.B. für einen Identifikationsdienst) hat folgenden Aufbau:

ControlRequest.ServiceValue, DeviceID, ServiceID*

26-1-33-42-1-20-72-1-01-0
	
1 Byte                                  26                                      ControlRequest
  1 Byte                                1                                       
  1 Byte                                33                                      ServiceValue
1 Byte                                  42                                      DeviceID
  1 Byte                                1                                       
  1 Byte                                20                                      20
1 Byte                                  72                                      ServiceID
  1 Byte                                1                                       
  1 Byte                                01                                      1
1 Byte                                  0                                       EndOfPacket

<ControlRequest class="ServiceValue" >
  <DeviceID>20</DeviceID>
  <ServiceID>1</ServiceID>
</ControlRequest>
	

ControlResponse.ServiceValue

Die Antwort hat den folgenden Aufbau:

ControlResponse.ServiceValue, DeviceID, ServiceID, ServiceValue

27-2-33-01-42-1-20-72-1-01-76-9-255-00-00-00-98-00-00-00-98-0
	
1 Byte                                  27                                      ControlResponse
  1 Byte                                2                                       
  2 Bytes                               33-01                                   class:ServiceValue;result:Ok
1 Byte                                  42                                      DeviceID
  1 Byte                                1                                       
  1 Byte                                20                                      20
1 Byte                                  72                                      ServiceID
  1 Byte                                1                                       
  1 Byte                                01                                      1
1 Byte                                  76                                      ServiceValue
  1 Byte                                9                                       
  9 Bytes                               255-00-00-00-98-00-00-00-98             0xFF-00-00-00-62-00-00-00-62
1 Byte                                  0                                       EndOfPacket

<ControlResponse class="ServiceValue" result="Ok" >
  <DeviceID>20</DeviceID>
  <ServiceID>1</ServiceID>
  <ServiceValue>0xFF-00-00-00-62-00-00-00-62</ServiceValue>
</ControlResponse>

Es ist ebenfalls möglich, GetServiceValue ohne ServiceID aufzurufen. In diesem Fall erstellt das Gerät eine Nachricht mit den aktuellen Werten aller Dienste des Gerätes, welche einzeln in ServiceContainer verpackt werden (vergleichbar einer Event-Nachricht).

 

 

Setzen von Dienstwerten

Ein Befehl an einen einfachen Aktor hat den folgenden Aufbau:

ControlRequest.SetServiceValue, DeviceID, ServiceID, ServiceValue

26-1-34-42-1-20-72-1-40-76-1-01-0
	
1 Byte                                  26                                      ControlRequest
  1 Byte                                1                                       
  1 Byte                                34                                      SetServiceValue
1 Byte                                  42                                      DeviceID
  1 Byte                                1                                       
  1 Byte                                20                                      20
1 Byte                                  72                                      ServiceID
  1 Byte                                1                                       
  1 Byte                                40                                      40
1 Byte                                  76                                      ServiceValue
  1 Byte                                1                                       
  1 Byte                                01                                      1
1 Byte                                  0                                       EndOfPacket

<ControlRequest class="SetServiceValue" >
  <DeviceID>20</DeviceID>
  <ServiceID>40</ServiceID>
  <ServiceValue>1</ServiceValue>
</ControlRequest>

ControlResponse.SetServiceValue

Die Antwort hat den folgenden Aufbau:

ControlResponse.SetServiceValue, DeviceID, ServiceID

27-2-34-01-42-1-20-72-1-40-0
	
1 Byte                                  27                                      ControlResponse
  1 Byte                                2                                       
  2 Bytes                               34-01                                   class:SetServiceValue;result:Ok
1 Byte                                  42                                      DeviceID
  1 Byte                                1                                       
  1 Byte                                20                                      20
1 Byte                                  72                                      ServiceID
  1 Byte                                1                                       
  1 Byte                                40                                      40
1 Byte                                  0                                       EndOfPacket

<ControlResponse class="SetServiceValue" result="Ok" >
  <DeviceID>20</DeviceID>
  <ServiceID>40</ServiceID>
</ControlResponse>

Bietet ein Gerät nur einen einzigen Dienst an, kann die ServiceID entfallen.

 

 

Aktionen

Komplexe Geräte können über die in der Dienstbeschreibung definierten Aktionen gesteuert werden. Das Beispiel zeigt den Aufruf der Funktion GAttrIdx(in uint8 idx, out string key, out string val) des Attribute-Dienstes und hat den folgenden Aufbau:

ControlRequest.Action, DeviceID, ServiceID, ActionContainer [ActionID, ArgumentContainer [ArgumentID, Value]* ]	
	
26-1-32-42-1-20-72-1-02-81-11-82-01-01-91-06-92-01-01-36-01-00-0

1 Byte                                  26                                      ControlRequest
  1 Byte                                1                                       
  1 Byte                                32                                      Action
1 Byte                                  42                                      DeviceID
  1 Byte                                1                                       
  1 Byte                                20                                      20
1 Byte                                  72                                      ServiceID
  1 Byte                                1                                       
  1 Byte                                02                                      2
1 Byte                                  81                                      ActionContainer
  1 Byte                                11                                      
      1 Byte                            82                                      ActionID
        1 Byte                          1                                       
        1 Byte                          01                                      1
      1 Byte                            91                                      ArgumentContainer
        1 Byte                          6                                       
            1 Byte                      92                                      ArgumentID
              1 Byte                    1                                       
              1 Byte                    01                                      1
            1 Byte                      36                                      Value
              1 Byte                    1                                       
              1 Byte                    00                                      0
1 Byte                                  0                                       EndOfPacket

<ControlRequest class="Action" >
  <DeviceID>20</DeviceID>
  <ServiceID>2</ServiceID>
  <ActionContainer>
    <ActionID>1</ActionID>
    <ArgumentContainer>
      <ArgumentID>1</ArgumentID>
      <Value>0</Value>
    </ArgumentContainer>
  </ActionContainer>
</ControlRequest>

Für Aktionen und Argumente werden nur IDs und Werte übertragen. Die ArgumentID 1 beschreibt also den idx-Eingangsparameter, es wird das 1.Element (idx = 0) abgefragt. Die Gültigkeit von Action-Nachrichten lässt sich also anhand der zugehörigen Dienstbeschreibung überprüfen.

ControlResponse.Action

Die Antwort auf diesen Befehl hat den folgenden Aufbau:

ControlResponse.Action, DeviceID, ServiceID, ActionContainer [ActionID, ArgumentContainer [ArgumentID, Value]* ]

27-2-32-01-42-1-20-72-1-02-81-27-82-01-01-91-10-92-01-02-36-05-79-119-110-101-114-91-10-92-01-03-36-05-80-101-116-101-114-0

1 Byte                                  27                                      ControlResponse
  1 Byte                                2                                       
  2 Bytes                               32-01                                   class:Action;result:Ok
1 Byte                                  42                                      DeviceID
  1 Byte                                1                                       
  1 Byte                                20                                      20
1 Byte                                  72                                      ServiceID
  1 Byte                                1                                       
  1 Byte                                02                                      2
1 Byte                                  81                                      ActionContainer
  1 Byte                                27                                      
      1 Byte                            82                                      ActionID
        1 Byte                          1                                       
        1 Byte                          01                                      1
      1 Byte                            91                                      ArgumentContainer
        1 Byte                          10                                      
            1 Byte                      92                                      ArgumentID
              1 Byte                    1                                       
              1 Byte                    02                                      2
            1 Byte                      36                                      Value
              1 Byte                    5                                       
              5 Bytes                   79-119-110-101-114                      'Owner'
      1 Byte                            91                                      ArgumentContainer
        1 Byte                          10                                      
            1 Byte                      92                                      ArgumentID
              1 Byte                    1                                       
              1 Byte                    03                                      3
            1 Byte                      36                                      Value
              1 Byte                    5                                       
              5 Bytes                   80-101-116-101-114                      'Peter'
1 Byte                                  0                                       EndOfPacket

<ControlResponse class="Action" result="Ok" >
  <DeviceID>20</DeviceID>
  <ServiceID>2</ServiceID>
  <ActionContainer>
    <ActionID>1</ActionID>
    <ArgumentContainer>
      <ArgumentID>2</ArgumentID>
      <Value>Owner</Value>
    </ArgumentContainer>
    <ArgumentContainer>
      <ArgumentID>3</ArgumentID>
      <Value>Peter</Value>
    </ArgumentContainer>
  </ActionContainer>
</ControlResponse>

Enthält die Aktion keine Ein- oder Ausgabeparameter, kann der ActionContainer auch weggelassen werden. In diesem Fall wird die ActionID auf dem Toplevel (wie Device- und ServiceID) übertragen. Bietet das Gerät nur einen Dienst an, muss die ServiceID nicht übertragen werden.

 

 

Element-Eigenschaften lesen

Eigenschaften elementbasierter Dienste werden über ElementPropertyValues-Requests abgerufen. Es können beliebig kombinierte Eigenschaften eines Elements oder gleiche Eigenschaften für mehrere Elemente abgerufen werden, z.B. HW-Version und SW-Version für den Identification-Dienst oder die Namen und der Erfüllungsgrad der 4., 5. und 8. Aufgabe für einen TaskManagement-Dienst. ElementPropertyValues-Requests haben den folgenden Aufbau:

ControlRequest.ElementPropertyValues, DeviceID, ServiceID, ElementListIndex ODER ElementListIndexMask, ElementValueIDMask
	
26-1-37-42-1-20-72-1-01-117-1-00-112-1-66-0	

1 Byte                                  26                                      ControlRequest
  1 Byte                                1                                       
  1 Byte                                37                                      ElementPropertyValues
1 Byte                                  42                                      DeviceID
  1 Byte                                1                                       
  1 Byte                                20                                      20
1 Byte                                  72                                      ServiceID
  1 Byte                                1                                       
  1 Byte                                01                                      1
1 Byte                                  117                                     ElementListIndex
  1 Byte                                1                                       
  1 Byte                                00                                      0
1 Byte                                  112                                     ElementValueIDMask
  1 Byte                                1                                       
  1 Byte                                66                                      66
1 Byte                                  0                                       EndOfPacket

<ControlRequest class="ElementPropertyValues" >
  <DeviceID>20</DeviceID>
  <ServiceID>1</ServiceID>
  <ElementListIndex>0</ElementListIndex>
  <ElementValueIDMask>66</ElementValueIDMask>
</ControlRequest>

Der ElementListIndex identifiziert ein einzelnes Element, ElementListIndexMask fragt Eigenschaften mehrerer Elemente gleichzeitig ab (z.B. 0x03 -> 1. und 2. Element). ElementValueIDMask identifiziert die angefragten Eigenschaften.

66 = (1 << Identification.PropertyIDManufacturer) |
     (1 << Identification.PropertyIDSWVersion)

ControlResponse.ElementPropertyValues

Die Antwort auf diesen Befehl hat den folgenden Aufbau:

ControlResponse.ElementPropertyValues, DeviceID, ServiceID, ElementValues ODER ElementListValues, ElementValueIDMask
	
27-2-37-01-42-1-20-72-1-01-114-12-07-88-84-82-79-78-73-67-03-49-46-48-112-1-66-0	
	
1 Byte                                  27                                      ControlResponse
  1 Byte                                2                                       
  2 Bytes                               37-01                                   class:ElementPropertyValues;result:Ok
1 Byte                                  42                                      DeviceID
  1 Byte                                1                                       
  1 Byte                                20                                      20
1 Byte                                  72                                      ServiceID
  1 Byte                                1                                       
  1 Byte                                01                                      1
1 Byte                                  114                                     ElementValues
  1 Byte                                12                                      
  12 Bytes                              07-88-84-82-79-78-73-67-03-49-46-48     0x07-58-54-52-4F-4E-49-43-03-31-2E-30
1 Byte                                  112                                     ElementValueIDMask
  1 Byte                                1                                       
  1 Byte                                66                                      HexValue:0x42;DecValue:66
1 Byte                                  0                                       EndOfPacket

<ControlResponse class="ElementPropertyValues" result="Ok" >
  <DeviceID>20</DeviceID>
  <ServiceID>1</ServiceID>
  <ElementValues>0x07-58-54-52-4F-4E-49-43-03-31-2E-30</ElementValues>
  <ElementValueIDMask HexValue="0x42" >66</ElementValueIDMask>
</ControlResponse>

Wie bei Composite-Dienstwerten werden alle Eigenschaften als zusammenhängendes byte array übertragen. Über den ValueType der Properties und die ElementValueIDMask können die individuellen Bestandteile extrahiert werden, z.B.

{ Prop1.MSB, Prop1.LSB, Prop3.StringLength, Prop3.String[0], ... }.

Wurden mehrere Elemente angefragt, so werden die Werte in einem ElementListValues-Tupel übertragen. Dieses hat den Aufbau

{ Element1.DataLength, Element1.Data[0], ..., Element1.Data[Element1.DataLength-1], Element2.DataLength, Element2.Data[0], ... }

 

 

Element-Metawerte lesen

Für Elementlisten-Dienste sollen bei punktuellen Änderungen nicht alle Eigenschaften aller Elemente abgerufen werden. Deshalb besitzt jedes Element Metawerte, welche es erlauben, geänderte Bestandteile zu erkennen. Die Metawerte werden über ElementMetaValues-Requests abgefragt und haben den folgenden Aufbau:

ControlRequest.ElementMetaValues, DeviceID, ServiceID, ElementListIndex ODER ElementListIndexMask, ElementValueIDMask
	
26-1-35-42-1-20-72-1-78-118-1-03-112-1-14-0

1 Byte                                  26                                      ControlRequest
  1 Byte                                1                                       
  1 Byte                                35                                      ElementMetaValues
1 Byte                                  42                                      DeviceID
  1 Byte                                1                                       
  1 Byte                                20                                      20
1 Byte                                  72                                      ServiceID
  1 Byte                                1                                       
  1 Byte                                78                                      1
1 Byte                                  118                                     ElementListIndexMask
  1 Byte                                1                                       
  1 Byte                                03                                      3
1 Byte                                  112                                     ElementValueIDMask
  1 Byte                                1                                       
  1 Byte                                14                                      HexValue:0x0E;DecValue:14
1 Byte                                  0                                       EndOfPacket

<ControlRequest class="ElementMetaValues" >
  <DeviceID>20</DeviceID>
  <ServiceID>78</ServiceID>
  <ElementListIndexMask>3</ElementListIndexMask>
  <ElementValueIDMask HexValue="0x0E" >14</ElementValueIDMask>
</ControlRequest>
	

In diesem Beispiel werden die Metadaten des 1. und 2. Elements abgerufen (ElementListIndexMask 0x03). ElementValueIDMask identifiziert die angefragten Meta-Eigenschaften.

0x0E = (1 << MetaIDPropEvntID) | 
       (1 << MetaIDUpdateMask) |
       (1 << MetaIDInfoMask)

ControlResponse.ElementMetaValues

Die Antwort auf diesen Befehl hat den folgenden Aufbau:

ControlResponse.ElementMetaValues, DeviceID, ServiceID, ElementValues ODER ElementListValues, ElementValueIDMask

27-2-35-01-42-1-20-72-1-78-115-20-09-00-00-00-00-16-00-00-00-30-09-00-00-00-00-16-00-00-00-30-112-1-14-0

1 Byte                                  27                                      ControlResponse
  1 Byte                                2                                       
  2 Bytes                               35-01                                   class:ElementMetaValues;result:Ok
1 Byte                                  42                                      DeviceID
  1 Byte                                1                                       
  1 Byte                                20                                      20
1 Byte                                  72                                      ServiceID
  1 Byte                                1                                       
  1 Byte                                78                                      78
1 Byte                                  115                                     ElementListValues
  1 Byte                                20                                      
  20 Bytes                              09-00-00-00-00-16-00-00-00-30-09-00...  0x09-00-00-00-00-10-00-00-00-1E-09-00-00-00-00-10-00-00-00-1E
1 Byte                                  112                                     ElementValueIDMask
  1 Byte                                1                                       
  1 Byte                                14                                      HexValue:0x0E;DecValue:14
1 Byte                                  0                                       EndOfPacket

<ControlResponse class="ElementMetaValues" result="Ok" >
  <DeviceID>20</DeviceID>
  <ServiceID>78</ServiceID>
  <ElementListValues>0x09-00-00-00-00-10-00-00-00-1E-09-00-00-00-00-10-00-00-00-1E</ElementListValues>
  <ElementValueIDMask HexValue="0x0E" >14</ElementValueIDMask>
</ControlResponse>

Die Meta-Eigenschaften werden als zusammenhängendes byte array im ElementListValues-Tupel übertragen, im Beispiel

{ Meta[0].Length, Meta[0].PropEvntID, Meta[0].UpdateMask[0], ..., Meta[0].InfoMask[0], ..., Meta[0].InfoMask[3], Meta[1].Length, ... }.

 

 

Element-Descriptive-Werte lesen

Für einige Dienste wie z.B. ErrorInformation oder PriceInformation gibt es Elementeigenschaften, die nur lesbar sind, relativ groß und sich selten oder nie ändern (z.B. Name und Beschreibung). Verliert der Klient nun eine PropEvntID für das Element, so müsste er diese Eigenschaften neu abrufen, da er nicht sicher sein kann, ob sich diese in der Zwischenzeit geändert haben. Um dies zu vermeiden, werden solche Eigenschaften nicht als PropertyValue, sondern als DescriptiveValue behandelt, die über eine eigene DescEvntID getrackt werden. ElementDescriptiveValues-Requests haben den folgenden Aufbau:

ControlRequest.ElementDescriptiveValues, DeviceID, ServiceID, ElementValues ODER ElementListValues, ElementValueIDMask
	
26-1-36-42-1-20-72-1-78-118-1-03-112-1-06-0

1 Byte                                  26                                      ControlRequest
  1 Byte                                1                                       
  1 Byte                                36                                      ElementDescriptiveValues
1 Byte                                  42                                      DeviceID
  1 Byte                                1                                       
  1 Byte                                20                                      20
1 Byte                                  72                                      ServiceID
  1 Byte                                1                                       
  1 Byte                                78                                      78
1 Byte                                  118                                     ElementListIndexMask
  1 Byte                                1                                       
  1 Byte                                03                                      3
1 Byte                                  112                                     ElementValueIDMask
  1 Byte                                1                                       
  1 Byte                                06                                      6
1 Byte                                  0                                       EndOfPacket

<ControlRequest class="ElementDescriptiveValues" >
  <DeviceID>20</DeviceID>
  <ServiceID>78</ServiceID>
  <ElementListIndexMask>3</ElementListIndexMask>
  <ElementValueIDMask>6</ElementValueIDMask>
</ControlRequest>
	

In diesem Beispiel werden die Descriptive-Daten des 1. und 2. Elements abgerufen (ElementListIndexMask 0x03). ElementValueIDMask identifiziert die angefragten Eigenschaften.

0x06 = (1 << DescriptiveIDName) | 
       (1 << DescriptiveIDDesc)

ControlResponse.ElementMetaValues

Die Antwort auf diesen Befehl hat den folgenden Aufbau:

ControlResponse.ElementDescriptiveValues, DeviceID, ServiceID, ElementValues ODER ElementListValues, ElementValueIDMask

27-2-36-01-42-1-20-72-1-78-115-60-29-11-79-118-101-114-118-111-108-116-97-103-101-16-86-111-108-116-97-103-101-32-116-111-111-32-104-105-103-104-29-12-85-110-100-101-114-118-111-108-116-97-103-101-15-67-117-114-114-101-110-116-32-116-111-111-32-108-111-119-112-1-06-0

1 Byte                                  27                                      ControlResponse
  1 Byte                                2                                       
  2 Bytes                               36-01                                   class:ElementDescriptiveValues;result:Ok
1 Byte                                  42                                      DeviceID
  1 Byte                                1                                       
  1 Byte                                20                                      20
1 Byte                                  72                                      ServiceID
  1 Byte                                1                                       
  1 Byte                                78                                      78
1 Byte                                  115                                     ElementListValues
  1 Byte                                60                                      
  60 Bytes                              29-11-79-118-101-114-118-111-108-11...  0x1D-0B-4F-76-65-72-76-6F-6C-74-61-67-65-10-56-6F-6C-74-61-67-65-20-74-6F-6F-20-68-69-67-68-1D-0C-55-6E-64-65-72-76-6F-6C-74-61-67-65-0F-43-75-72-72-65-6E-74-20-74-6F-6F-20-6C-6F-77
1 Byte                                  112                                     ElementValueIDMask
  1 Byte                                1                                       
  1 Byte                                06                                      6
1 Byte                                  0                                       EndOfPacket

<ControlResponse class="ElementDescriptiveValues" result="Ok" >
  <DeviceID>20</DeviceID>
  <ServiceID>78</ServiceID>
  <ElementListValues>0x1D-0B-4F-76-65-72-76-6F-6C-74-61-67-65-10-56-6F-6C-74-61-67-65-20-74-6F-6F-20-68-69-67-68-1D-0C-55-6E-64-65-72-76-6F-6C-74-61-67-65-0F-43-75-72-72-65-6E-74-20-74-6F-6F-20-6C-6F-77</ElementListValues>
  <ElementValueIDMask>6</ElementValueIDMask>
</ControlResponse>

Die Descriptive-Eigenschaften werden als zusammenhängendes byte array im ElementListValues-Tupel übertragen, im Beispiel

{ Descriptive[0].Length, Descriptive[0].NameLength, Descriptive[0].Name[0], ..., Descriptive[0].DescriptionLength, Descriptive[0].Description[0], ..., Descriptive[1].Length, ... }.

 

 

Setzen des Gerätenamens

Über den folgenden Befehl kann der Name des Geräts geändert werden. Der Gerätename dient der einfachen Beschreibung z.B. für ein GUI:

ControlRequest.SetDeviceName, DeviceID, DeviceName
	
26-1-30-42-1-20-44-8-66-97-100-108-105-99-104-116-0

1 Byte                                  26                                      ControlRequest
  1 Byte                                1                                       
  1 Byte                                30                                      SetDeviceName
1 Byte                                  42                                      DeviceID
  1 Byte                                1                                       
  1 Byte                                20                                      20
1 Byte                                  44                                      DeviceName
  1 Byte                                8                                       
  8 Bytes                               66-97-100-108-105-99-104-116            Badlicht
1 Byte                                  0                                       EndOfPacket

<ControlRequest class="SetDeviceName" >
  <DeviceID>20</DeviceID>
  <DeviceName>Badlicht</DeviceName>
</ControlRequest>

Die Länge des Namens ist auf maximal 30 Byte beschränkt. Die Antwort auf diesen Befehl hat den folgenden Aufbau:

ControlResponse.SetDeviceNameResult, DeviceID
	
27-2-30-01-42-1-20-0

1 Byte                                  27                                      ControlResponse
  1 Byte                                2                                       
  2 Bytes                               30-01                                   class:SetDeviceName;result:Ok
1 Byte                                  42                                      DeviceID
  1 Byte                                1                                       
  1 Byte                                20                                      20
1 Byte                                  0                                       EndOfPacket

<ControlResponse class="SetDeviceName" result="Ok" >
  <DeviceID>20</DeviceID>
</ControlResponse>

 

 

Setzen der Geräte-Position

Über den folgenden Befehl kann die Position des Geräts geändert werden. Diese Funktion ist für stationäre Geräte gedacht, anderenfalls sind die entsprechenden Dienste GPS und LocalPosition zu nutzen.

ControlRequest.SetDeviceLocation, DeviceID, DeviceLocation
	
26-1-31-42-1-20-48-3-11-00-00-0

1 Byte                                  26                                      ControlRequest
  1 Byte                                1                                       
  1 Byte                                31                                      SetDeviceLocation
1 Byte                                  42                                      DeviceID
  1 Byte                                1                                       
  1 Byte                                20                                      20
1 Byte                                  48                                      DeviceLocation
  1 Byte                                3                                       
  3 Bytes                               11-00-00                                BathRoom
1 Byte                                  0                                       EndOfPacket

<ControlRequest class="SetDeviceLocation" >
  <DeviceID>20</DeviceID>
  <DeviceLocation>BathRoom</DeviceLocation>
</ControlRequest>

Die Payload des DeviceLocation-Tupels hat den Aufbau { LocationID, LocationIndex, Etage }. Etage wird als Int8 interpretiert, -1 ist dann z.B. der Keller. Die Antwort auf diesen Befehl hat den folgenden Aufbau:

ControlResponse.SetDeviceLocationResult, DeviceID
	
27-2-31-01-42-1-20-0

1 Byte                                  27                                      ControlResponse
  1 Byte                                2                                       
  2 Bytes                               31-01                                   class:SetDeviceLocation;result:Ok
1 Byte                                  42                                      DeviceID
  1 Byte                                1                                       
  1 Byte                                20                                      20
1 Byte                                  0                                       EndOfPacket

<ControlResponse class="SetDeviceLocation" result="Ok" >
  <DeviceID>20</DeviceID>
</ControlResponse>

 

 

NACHRICHTEN