Difference between revisions of "Eclipse Vorto"

From air
Jump to navigation Jump to search
Line 37: Line 37:
 
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 :
 
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.
+
** 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.
+
** 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.
+
** 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.
+
** 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.
+
** 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===
 
===Exemple===
   
 
<pre>
 
<pre>
 
 
functionblock Accelerometer {
 
functionblock Accelerometer {
   
Line 78: Line 77:
   
 
<pre>
 
<pre>
 
 
namespace com.mycompany.common.types
 
namespace com.mycompany.common.types
 
version 1.0.0
 
version 1.0.0
Line 86: Line 84:
 
disabled
 
disabled
 
}
 
}
 
 
</pre>
 
</pre>
   
Line 92: Line 89:
   
 
<pre>
 
<pre>
 
 
namespace com.mycompany.common.types
 
namespace com.mycompany.common.types
 
version 1.0.0
 
version 1.0.0

Revision as of 20:17, 7 April 2019

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 <MIN 0, MAX 255>
	mandatory green as int <MIN 0, MAX 255>
	mandatory blue as int <MIN 0, MAX 255>
}