Composants

Documentation du 13 avril 2012

Pour permettre de développer les drivers, voici une explication détaillée de classe gérant les composants.

Stockage

Variables stockant les devices dans le serveur mais non partagée avec les clients:
Public Shared withevent _ListDevices as Arraylist

Fonctions et Propriétés partagées (via interface SOAP) par le serveur

  • Property Devices() As ArrayList 'Liste des devices : retourne la liste des devices (via _listdevices)
  • Function SaveDevice(ByVal deviceId As String, ByVal name As String, ByVal address As String, ByVal image As String, ByVal enable As Boolean, ByVal Iddriver As string) As String 'Créer un nouveau device (si ID=vide) ou sauvegarder la modification du device (si ID est complété)
  • Function DeleteDevice(ByVal deviceId As String) As Integer 'Supprimer un device identifié par son Id

Déclaration des paramètres ou valeur des Devices

Les paramètres (Id, Name, Enable...) ou valeur (Status, Value...) des Devices seront déclarés comme des Propertys.

De ce fait grâce à la fonction « Public Function ListProperty(ByVal OBjet As Object) As ArrayList » celle-ci permettra de retourner pour un device donné l'ensemble des noms des propriétés propres à celui-ci. Cela facilitera les interfaces pour la création et la gestion des devices et des triggers car le serveur ne doit pas gérer une liste de propriétés propre à chaque type de device et cela pérennisera le système.

Commandes des Devices

Chaque commande des devices sera déclarées comme un Sub.

A chaque lancement d'un Sub aucun retour de la commande envoyée n'est effectué au serveur, c'est le driver propre au device qui loggera la réussite ou non du traitement de la commande.

De ce fait grâce à la fonction « Public Function ListMethod(ByVal Objet As Object) As ArrayList » celle-ci permettra de retourner pour un device donné l'ensemble des noms des commandes propres à celui-ci. Cela facilitera les interfaces pour la création et la gestion des devices et des scénarios car le serveur ne doit pas gérer une liste de commandes propre à chaque type de device et cela pérennisera le système.

De plus grâce à la commande « CallByName(objet, nomcommand, CallType.Method, parametres) », n'importe quel objet (serveur, driver, script, macros...) peut envoyer une commande (nomcommand) avec des paramètres si besoin (parametres) à un device (objet) très facilement sans se soucier du code, ce qui permet à ne pas revoir le code du serveur pour chaque commande pouvant être ajoutée à un device, ce qui pérennise le système.

Event commun à tous type de Device envoyé au serveur

Public Event DeviceChanged(ByVal Id As String, ByVal Property As String, ByVal Parametre As Object)

A chaque event généré par le changement de propriété (si besoin) d'un device celui-ci envoi au serveur son Id (ID), le nom de la propriété (Property) qui a été changée et sa valeur (Parametre).

Cette event sera récupéré pour les logs ou la gestion des triggers (lancement d'un programme pour vérifier si un trigger est impacté)

Lien entre Un Driver et Un Device

Chaque Device aura une propritété Driver as Objet qui fera référence à l'objet de son Driver affecté, ce qui lui permettra d'envoyer des commandes au Driver lui envoyant la commande et le reflet de son objet ce qui permet au driver d'accéder à toutes ses propriétés, Ex : MonDevice.Driver.On(Me)

Chaque Driver héritera de la classe serveur ce qui lui permettra d'accéder à la liste des Devices (via la variable _ListDevice), de ce fait si un driver veut écrire une valeur de propriété à un device, il va chercher dans la liste le device correspondant (via son adresse, son type et s'il lui est affecté) et va écrire la valeur voulue. L'avantage est que le serveur ne gère rien (au niveau du code) la communication (en read/write/event) entre les devices et les drivers et pérenise le système.


Propriétés communes à tous type de Device

Classe DeviceGenerique

NOM

Type

DESCRIPTION

ID String Identification unique du device
Nom String Libellé de device (qui sert aussi à l'affichage)
Enable Boolean Activation du Device
Driver Objet Driver affecté (représentant l’objet déclaré du driver)
Description String Description qui peut être le modèle du device ou autre chose
Type String TEMPERATURE|HUMIDITE|APPAREIL|LUMIERE|CONTACT|TV…
Adresse1 String Adresse par défaut (pour le X10 par exemple)
Adresse2 String Adresse supplémentaire si besoin (cas du RFXCOM)
DateCreated DateTime Date et heure de création du device
LastChange DateTime Date et heure du dernier changement de propriétés (Value, Status…) correspondant à l’event généré
Refresh Integer Si X= 0 le serveur attend un event du driver pour mettre à jour la value du device (Cas du RFXCOM)
Si X>0 (cas du 1wire par ex) un timer propre au device se lance et effectue un mondevicetemp.Driver.ReadTemp(Me), le driver récupère l’adresse sur l’objet Me sachant que c’est un ReadTemp (donc température) va lire une température à l’adresse spécifié. Cependant un event d’un driver peut modifier la value d’un device même si un refresh a été paramétré
Modele String Modèle du composant
Solo Boolean Indique si le composant contient 1 ou plusieurs devices (cas switch 4 IO)
Picture String Adresse de son image

 

Propriétés communes aux Devices de type Value Double

Classe DeviceGeneriqueValue (Hérite de DeviceGenerique)

NOM Type Event Généré au serveur DESCRIPTION
Value Double OUI Valeur de température
ValueMin Double NON Valeur minimale que value peut avoir
ValueMax Double NON Valeur maximale que value peut avoir
ValueDef Double NON Valeur par défaut de Value au démarrage du Device(Vide = Value)
Precision Double NON Ne prendre en compte value que si elle change de + de “précision”.
Correction Double NON Correction en +/-/*/div à effectuer sur la value
Formatage String NON Ex : "0.0" (qui sera utilisé en vb.net par format(value, "0.0")

 

Les types spécifiques

Type TEMPERATURE

Classe DeviceGeneriqueValue

Propriétées supplémentaires

  • N/A

Commandes Possibles :

  • N/A

 

Type HUMIDITE

Classe DeviceGeneriqueValue

Propriétées supplémentaires

  • N/A

Commandes Possibles :

  • N/A 

 

Type  BATTERIE

Classe DeviceGenerique

Propriétées supplémentaires

NOM Type Event Généré au serveur DESCRIPTION
Value String OUI OK / Lo


Commandes Possibles :

  • N/A

Type  NIVRECEPTION

Classe DeviceGenerique

Propriétées supplémentaires

NOM Type Event Généré au serveur DESCRIPTION
Value Integer OUI 1..5


Commandes Possibles :

  • N/A

Type  TEMPERATURECONSIGNE

Classe DeviceGeneriqueValue

Propriétées supplémentaires

  • N/A

Commandes Possibles :

  • N/A

Type  ENERGIETOTALE

Classe DeviceGeneriqueValue

Propriétées supplémentaires

  • N/A

Commandes Possibles :

  • N/A

Type  ENERGIEINSTANTANEE

Classe DeviceGeneriqueValue

Propriétées supplémentaires

  • N/A

Commandes Possibles :

  • N/A

Type  PLUIETOTAL

Classe DeviceGeneriqueValue

Propriétées supplémentaires

  • N/A

Commandes Possibles :

  • N/A

Type  PLUIECOURANT

Classe DeviceGeneriqueValue

Propriétées supplémentaires

  • N/A

Commandes Possibles :

  • N/A

Type  VITESSEVENT

Classe DeviceGeneriqueValue

Propriétées supplémentaires

  • N/A

Commandes Possibles :

  • N/A

Type  DIRECTIONVENT

Classe DeviceGenerique

Propriétées supplémentaires

NOM Type Event Généré au serveur DESCRIPTION
Value String OUI Direction du vent


Commandes Possibles :

  • N/A

Type  UV

Classe DeviceGeneriqueValue

Propriétées supplémentaires

  • N/A

Commandes Possibles :

  • N/A

Type APPAREIL

Classe DeviceGenerique

Propriétées supplémentaires

NOM Type Event Généré au serveur DESCRIPTION
Value Boolean OUI TRUE=Allumé


Commandes Possibles :

  • ON : mondeviceprise.Driver.Write(Me,”On”)
  • OFF : mondeviceprise.Driver.Write(Me,”Off”)

 

Type LAMPE

Classe DeviceGenerique

Propriétées supplémentaires

NOM Type Event Généré au serveur DESCRIPTION
Value Integer (0…100) OUI Valeur de la variation, 0 éteint, 1..100 Variation



Commandes Possibles :

  • ON
  • OFF
  • DIM :    
    • 0 (OFF) : mondeviceprise.Driver.Write(Me,”Dim”,Value)
    • 1..100 (Variation) : mondeviceprise.Driver.Write(Me,”DIM”,Value)

Type CONTACT

Classe DeviceGenerique

Propriétées supplémentaires

NOM Type Event Généré au serveur DESCRIPTION
Value Boolean OUI Contact pouvant provenir RFID, contact porte, détecteur présence…


Commandes Possibles :

  • N/A

 

Type METEO

Classe DeviceGenerique

Meteo Via google weather, l’adresse du device correspondra au nom de la ville.
Ce type de device est autonome il n’a pas besoin de driver associé (au un driver virtuel).

Propriétées supplémentaires

NOM Type Event Généré au serveur DESCRIPTION
ConditionActuel String NON Condition actuelle « Nuageux »
TemperatureActuel String NON Température actuelle
HumiditeActuel String NON Humidité actuelle
IconActuel String NON Image du temps actuel
VentActuel String NON Vitesse du vent actuelle
JourToday String NON Nom du jour actuel « lundi »
MinToday String NON Température mini jour actuel
MaxToday String NON Température max jour actuel
IconToday String NON Image du temps du jour actuel
ConditionToday String NON Condition du temps actuel « Pluie »
JourJ1 String NON Nom du jour suivant (J+1) « mardi »
MinJ1 String NON Température mini à J+1
MaxJ1 String NON Température max à J+1
IconJ1 String NON Image du temps à J+1
ConditionJ1 String NON Condition du temps à J+1 « Orage »
JourJ2 String NON Nom du jour suivant (J+2) « mercredi »
MinJ2 String NON Température mini à J+2
MaxJ2 String NON Température max à J+2
IconJ2 String NON Image du temps à J+2
ConditionJ2 String NON Condition du temps à J+2 « Orage »
JourJ3 String NON Nom du jour suivant (J+3) « jeudi »
MinJ3 String NON Température mini à J+3
MaxJ3 String NON Température max à J+3
IconJ3 String NON Image du temps à J+3
ConditionJ3 String NON Condition du temps à J+3 « Orage »


Commandes Possibles :

  • N/A

 

Type AUDIO

Classe DeviceGenerique

Multizone en utilisant Foobar, l’adresse du device indiquera le fichier exécutable de Foobar représentant la zone (cuisine, sdB)
Ce type de device est autonome il n’a pas besoin de driver associé (au un driver virtuel).

Propriétées supplémentaires

NOM Type Event Généré au serveur DESCRIPTION
Value String OUI Représente le status du lecteur (Play, Pause, Stop)
Fichier String NON Fichier audio à lire (en local ou web)


Commandes Possibles :

  • Play
  • Pause
  • Stop
  • Random
  • Next
  • Previous
  • VolumeDown
  • VolumeUp
  • VolumeMute

 

Type MULTIMEDIA (TV, ampli…)

Classe DeviceGenerique

Ce device devra pouvoir apprendre des commandes supplémentaires en IR via USBUIRT.

Variables supplémentaires

NOM Type Event Généré au serveur DESCRIPTION
ListCommandName Arraylist NON Liste des commandes (power, programmeup…)
ListCommandData Arraylist NON Liste des code IR correspondant aux commandes
ListCommandRepeat Arraylist NON Liste contenant le nombre de fois à envoyer le code IR pour chaque commande


Valeurs par défaut au démarrage :

ListCommandName ListCommandData ListCommandRepeat

0

Power

0

0

1

ChannelUp

0

0

2

ChannelDown

0

0

3

VolumeUp

0

0

4

VolumeDown

0

0

5

Mute

0

0

6

Source

0

0

7

0

0

0

8

1

0

0

9

2

0

0

10

3

0

0

11

4

0

0

12

5

0

0

13

6

0

0

14

7

0

0

15

8

0

0

16

9

0

0


Propriétées supplémentaires

NOM Type Event Généré au serveur DESCRIPTION
Value String OUI Représente la dernière commande envoyée



Commandes Possibles :

  • SendCommand(NameCommand), e:NameCommand représente le nom de la commande (ex: Power) le device récupère le code IR associé et le nombre de fois à le transmettre et l’envoi au driver associé : mondevicetv.Driver.Write(Me,”SendCode”,Data,Repeat)

 

Type Freebox

Classe DeviceGenerique

L’adresse du device représentra l’adresse http de la freebox
Ce type de device est autonome il n’a pas besoin de driver associé (au un driver virtuel).

Propriétés supplémentaires

NOM Type Event Généré au serveur DESCRIPTION
Value String OUI Représente la dernière commande envoyée


Commandes Possibles :

  • Touche0
  • Touche1
  • Touche2
  • Touche3
  • Touche4
  • Touche5
  • Touche6
  • Touche7
  • Touche8
  • Touche9
  • VolumeUp
  • VolumeDown
  • OK
  • HAUT
  • BAS
  • GAUCHE
  • DROITE
  • MUTE
  • HOME
  • ENREGISTRER
  • RETOUR
  • PRECEDENT
  • PLAY
  • AVANCE
  • SUIVANT
  • BoutonROUGE
  • BoutonVERT
  • BoutonJAUNE
  • BoutonBLEU

 

Type VOLET

Classe DeviceGenerique

Propriétées supplémentaires

NOM Type Event Généré au serveur DESCRIPTION
Value Integer (0…100) OUI Valeur d’ouverture du volet


Commandes Possibles :

  • OPEN
  • CLOSE
  • VARIATION
    • 0 (OFF) : mondevicevolet.Driver.Write(Me,”Volet”,0)
    • 1..100 (Variation) : mondevicevolet.Driver.Write(Me,”Volet”,Value)

 

Type OBSCURITE

Classe DeviceGenerique

Propriétées supplémentaires

NOM Type Event Généré au serveur DESCRIPTION
Status Boolean OUI TRUE si nuit


Commandes Possibles :

  • N/A

 

Type SWITCH

Classe DeviceGenerique

Propriétées supplémentaires

NOM Type Event Généré au serveur DESCRIPTION
Value Boolean OUI TRUE=ON


Commandes Possibles :

  • N/A

Type TELECOMMANDE

Classe DeviceGenerique

Propriétées supplémentaires

NOM Type Event Généré au serveur DESCRIPTION
Value String OUI Reçoit la commande envoyée


Commandes Possibles :

  • N/A