4.41 KB
Newer Older
# RWD050
sayegh's avatar
sayegh committed

AS's avatar
AS committed
3 4
Repository for the Smart Home Device Template (SDT).

Note that this project runs under Apache 2.0 license. Read the [LICENSE](LICENSE) in this repository, or refer to [](
AS's avatar
AS committed
6 7

Any contributions made to this project must comply with the forementioned license.
AS's avatar
AS committed

Andreas Kraft's avatar
Andreas Kraft committed
9 10
## Quick Links
- ['domain.xsd' Version 2.0](SDT/schema2.0/src/domain.xsd)
Andreas Kraft's avatar
Andreas Kraft committed
- [UML Diagram of the SDT 2.0](SDT/schema2.0/docs/images/SDT2.0_UML.png) ([source](SDT/schema2.0/docs/SDT_UML.uxf))
Andreas Kraft's avatar
Andreas Kraft committed
12 13

## Content
15 16 17

You can find further Information here:

18 19
- [SDT Components](SDT/schema2.0/docs/
- [SDT Build System](SDT/schema2.0/docs/
Andreas Kraft's avatar
Andreas Kraft committed
- [Examples](SDT/schema2.0/docs/ 
21 22
- [FAQ](SDT/schema2.0/docs/
- [Links & References](SDT/schema2.0/docs/
23 24

25 26

## Changes in 2.0
- Introduced RootDevice to support hierarchical embedded devices.
Andreas Kraft's avatar
Andreas Kraft committed
- Added new data types (byte, float, array, enum, date, time, datetime, blob, uri)
Andreas Kraft's avatar
Andreas Kraft committed
- Added ``readable`` and ``eventable`` to data points.
30 31
- Added otional ``<SerialNumber>``, ``<VendorURL>`` and ``<FirmwareVersion>`` elements to DeviceInfo
- Added optional ``<Doc>`` element to Event
Andreas Kraft's avatar
Andreas Kraft committed
- Changed the optionality of the ``<DataPoint>``'s ``type`` attribute to "required".
- Added [UML diagram](SDT/schema2.0/docs/
- Changed the namespace for the XSD from "" to "".

36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74

# To Be Discussed (Remove this later!)
## Versions
### Rational
A device vendor is free to add new functionality to a device and to change or to remove existing functionality from a device by a firmware update or changes in the configuration. These changes may mean that the device functionality and a description in SDT become "out of sync" because currently an application developer has only little means to associate a specific firmware version or device configuration to a version of a SDT description. 

Even then the developer needs to manage different versions of the same SDT device description because there might be devices of the same type but with different firmware versions/configurations on a network. 

The version information must be available to applications at runtime.

### Proposal
To solve this problem SDT components that can be influenced by firmware updates or configuration changes must be distinguishable by some kind of version scheme. Since different versions in the structure, attributes and elements of the SDT description as well as data types are already indicated by the "version number" of the SDT (e.g."") only the components that are instantiated for the devices etc need to indicate their current version.

The proposal is to add a *version* attribute to the following SDT components:

- RootDevice
- Device
- ModuleClass

*Event*, *Action* etc don't need an version number because a change in one of those components must be indicated by a different version  in the ModuleClass.

The *version* attribute is just a string value without a defined format.

### Further Discussion
Does HGI define the version format? Or is this up to the vendors to provide their own? 

At least the governing entity that managed all the different needs to define this format since it must be in agreement between the device vendors, driver provider, DAL provider and application developer.

Format suggestion: define the format of the version string as "major.minor.revision" with the following semantics for each number:

- **revision**: minimal change, internal bugfix, no change to data, formats or API.
- **minor**: Change to the API that could be incompatible to the previous version. Added or removed interfaces or modules, changes in data formats.
- **major**: Redesign of the overall structure and architecture.

The "numbers" could be just integer number, but may also contain letters, e.g. "1.0.1a".

## Domain / namespace
75 76 77 78 79
The SDL now uses the namespace "" as a namespace to identify the schema (also used for includes). The namespace is **not** a URL, but uniquely identifies the namespace and *should* be registered by HGI.

That said, most validating parsers expect **that the namesapce IS a valid URL** or that at least there is a server on the other end rejecting the request. A timeout / no connection / no answer / ... leads to an error.

Therefore, we cannot use the namespace "" because parsers don't get an answer from this address.
80 81

82 83