Eclipse Vorto

Auteur: Antoine Duquennoy

=Description=

Le langage Vorto est un language de programmation développé sur la base d'autres langages bien connus comme Java, mais avec l'objectif d'exprimer les fonctionnalités des périphériques d'une manière propre et fluide. Il est à la fois intuitif à comprendre par les gens et traitable par les machines. En tirant parti de ce language dédié, vous pouvez facilement décrire les capacités et les fonctionnalités d'un périphérique. Le language est un projet open-source lancé par la fondation Eclipse, plusieurs entreprises contribuent régulièrement au maintient et au développement du projet, comme Robert Bosch GmbH, ThingWorx, IAS Universität Stuttgart, FZI ou Hahn Schickard.

=Repository=

Le Vorto Repository est une plateforme publique où les fabricants d'appareils partagent des modèles d'information sur les appareils avec d'autres parties prenantes de l'IoT.

=Intégration=

Vorto fournit un plugin Eclipse (SDK) qui aide les développeurs d'IoT à intégrer les périphériques décrits avec les plateformes IoT afin de construire des solutions IoT riches. Il simplifie et réduire le temps de développement particulièrement pour les nouveaux développeurs.

=Fonctionnement du language Vorto= ![help_dsl_elements.png](https://github.com/eclipse/vorto/blob/development/core-bundles/docs/images/help_dsl_elements.png?raw=true)

Information Model
Un Information Model décrit un périphérique particulier, il contient des Function Blocks.

Exemple
infomodel IoTOctopus {

functionblocks { mandatory accelerometer as Accelerometer mandatory barometer as Barometer } }

Function Block
Un Function Block fournit une vue abstraite d'un périphérique aux applications qui souhaitent utiliser les fonctionnalités de ces périphériques. Il s'agit donc d'un ensemble cohérent et autonome de propriétés et de capacités (potentiellement réutilisables). Les propriétés qu'un Function Block peut définir sont classées comme suit :


 * Configuration Propriétés - _Lecture et Ecriture_ propriétés qui peuvent être définies sur le périphérique.
 * Status Propriétés - _Lecture seule_ propriétés indiquant l'état actuel du périphérique.
 * Fault Propriétés - _Lecture seule_ propriétés indiquant les états de défaillance du périphérique.
 * Event Propriétés - _Lecture seule_ propriétés qui sont publiées par le périphérique, par exemple en cas de changement d'état.
 * Operations - Les fonctionnalités qui peuvent être invoquées sur le périphérique, qui peuvent entraîner des changements d'état du périphérique ou donner des informations supplémentaires sur les métadonnées.

Exemple
functionblock Accelerometer {

status { mandatory xValue as float "The measured value along the X axis." optional yValue as float "The measured value along the Y axis." optional zValue as float "The measured value along the Z axis." }

event { DataChanged { xValue as float yValue as float zValue as float }		SensorCalibrated {} }	operations { reset returns boolean } }

Datatypes (Entity and Enums)
Les Data types et les Enums sont des composants réutilisables qui décrivent des données spécifiques et sont généralement référencés par des Function Blocks. Les Data types peuvent faire référence à d'autres Data types et Enums.

Exemple Enum :
namespace com.mycompany.common.types version 1.0.0

enum EnableDisable { enabled, disabled }

Exemple Entity :
namespace com.mycompany.common.types version 1.0.0

entity Color { mandatory red as int  mandatory green as int  mandatory blue as int  }