Open Building Information Exchange (oBIX)

From air
Revision as of 02:13, 14 February 2014 by Laurent.Lemke (talk | contribs)
Jump to navigation Jump to search

Open Building Information Exchange (oBIX) est un standard OASIS mené par divers industriels dans le domaine du batiment intelligent.

oBIX vise a s'affranchir des protocoles des devices (sensors/actuators/web-services exterieurs/...) en les décrivant en tant qu'objet XML suivant un Modèle Objet. Ces objet sont via les avec les diverses possibilités qu'offre oBIX.

Ce standard se base sur une architecture RESTful qui est indépendante des protocoles pouvant être utilisé de manière sous-jacente (HTTP, SOAP, COAP, ...).

Actuellement la specification en est a la version 1.1, dispo ici: http://docs.oasis-open.org/obix/obix/v1.1/csprd02/obix-v1.1-csprd02.pdf

Modèle Objet

Tel que détaillé en Section 4 de la spécificiation, les objets oBIX respectent un modèle correspondant au type primitif d'objet

Exemple: Un objet "Int" possède 4 attributs: max, min, unit (= l'unité de la valeur °C, cm, min..), val (= valeur). Et hérite d'un objet de type primitif Obj lui même ayant des attributs, l'un des plus important attribut étant href représentant une URI qui va permettre d'atteindre l'objet.

Par ailleurs, les Facets du langage XSD (Xml Schema Definition) peuvent être utilisés en plus des attributs pour annoter l'objet.

Une notion essentielle dans le standard oBIX est le typage de chaque objet décrit dans la section suivante.

Objet

Les objets oBIX suivent tous le modèle d'objet comme évoqué en section précédente. Ces derniers peuvent servir à décrire l'état d'une lampe. Typiquement, l'objet "Bool" de type primitif sera utilisé ici:

<obj href="/uri/to/access/Lamp">
    <bool name="state" val="off"/>
</obj>

Afin de pouvoir avoir des modèles d'objets plus poussés, et réutilisable/extensible, oBIX permet l'utilisation de types.

Type d'objet

Les objets de type primitif peuvent être typés dans oBIX par ce qui est nommé des "Contracts" (section 7 spécif.).

Un contract représente le template(<=> squelette) d'un objet Exemple pour le contract obix:Weekday définissant les jours de la semaine:

<enum href="obix:Weekday" range="#Range">
  <list href="#Range" is="obix:Range">
    <obj name="sunday" />
    <obj name="monday" />
    <obj name="tuesday" />
    <obj name="wednesday" />
    <obj name="thursday" />
    <obj name="friday" />
    <obj name="saturday" />
  </list>
</enum>

Ici le contract utilise un autre contract obix:Range. Ce dernier est défini comme suit:

<list href="obix:Range" of="obix:obj"/>

Il ne s'agit en fait que d'un contrat permettant de définir des listes d'objets. Dans le contexte du contract obix:Weekday, ces objets étant des jours de la semaine.

La notion de type recouvre une notion importante dans oBIX qui est l'héritage multiple (Section 7.4). Il est possible de spécifier une liste d'objet dont on hérite, via l'attribut

is="parent1 parent2 etc.."

Il est alors possible de redéfinir les attributs, ces derniers doivent être redéfini de manière cohérente.

De même l'héritage multiple doit être cohérent (pas d'attribut contradictoire dans 2 classes différentes dont on hérite par ex.). On parle alors de Contract Compatibility (section 7.7)


Opérations

TODO