Vera : la domotique Z-Wave dans Constellation


#1

Original publié sur: https://developer.myconstellation.io/package-library/vera/

Sommaire1 Installation2 Détails du package2.1 Les Settings2.2 Les StateObjects2.3 Les MessageCallbacks3 Quelques exemples Le package Vera vous permet de connecter la box domotique Z-Wave Vera dans Constellation. L’état des différents périphériques est publié en tant que StateObjects et des MessageCallbacks vous permettent de déclencher des scènes ou piloter les équipements. Le code source est disponible…


#2

Il ne manque plus que SetHeatTemperature pour les vannes thermostatiques et thermostats ! J’installe ce week-end :wink: Merci pour tous ces beaux plug-ins


#3

Oui en effet, je n’ai pas implémenté ce type de device ! Le code est sur GitHub n’hésites pas à l’enrichir :slightly_smiling_face:


#4

Salut Sébastien,

Sauf erreur de ma part il manque aussi les « Light sensor » dans les stateObjects du package.

Je les ajouterai au GitHub dès que possible :).


#5

Bonjour,

J’ai installé constellation ce wk afin de l’implémenter dans mon système Graylog-Elasticsearch-kibana. Ce qui devrait me faciliter la vie :slightly_smiling_face:

Premier test du package Vera et petit souci dès le démarrage. Il check bien mes scène présentent sur ma vera puis crash du package :slightly_frowning_face:

[Constellation/Vera] 15:22:11 : Critical Error : System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
  at System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (TKey key) [0x0001e] in <9790d962aaad40deb63d33029ba0d2f6>:0 
  at VeraNet.Objects.Devices.SecuritySensor.InitializeProperties (System.Collections.Generic.Dictionary`2[TKey,TValue] values) [0x00027] in <2a0311cea49a47c097e9912bb2b2b860>:0 
  at VeraNet.VeraController.LoadVeraObjects[TObject] (System.Collections.Generic.Dictionary`2[TKey,TValue] jsonValues, System.String jsonKey, System.Collections.ObjectModel.ObservableCollection`1[T] listToLoad, System.Func`2[T,TResult] createObje
ct) [0x00075] in <2a0311cea49a47c097e9912bb2b2b860>:0 
  at VeraNet.VeraController.RequestVera () [0x000c1] in <2a0311cea49a47c097e9912bb2b2b860>:0 
  at VeraNet.VeraController.WaitForFullRequest () [0x00016] in <2a0311cea49a47c097e9912bb2b2b860>:0 
  at Vera.Program.OnStart () [0x000c2] in <fb722b0f7a16445b9020e82276e597ba>:0 
  at Constellation.Package.PackageHost.Start (System.Type packageType, System.String constellationUri, System.String sentinelName, System.String packageName, System.String accessKey) [0x0028b] in <4950b72700184416909a1567032a3f29>:0

J’imagine qu’il y a un souci avec un de mes périphériques mais de là a faire crasher le package, je pige pas.

Un petit coup de pouce ?!

Merci


#6

Hum visiblement un device de type “security sensor” qui ne comporte pas une propriété attendue !

Le code est sur github : https://github.com/myconstellation/constellation-packages/tree/master/Vera

Si tu as un Visual Studio, le plus simple serait de lancer le package en mode debug pour voir la propriété qui lui manque pour proposer une solution.

Autrement si tu m’ouvre temporairement un accès à ta Vera pour tester le package en debug depuis chez moi connecté sur ta vera je pourrais fournir le correctif qui va bien.

A+


#7

Bonjour,
nouveau sur le forum et sur constellation, savez-vous s’il est possible de récupérer (en c#) le mode d’une box vera lite (mode : à la maison, la nuit, en voyage…). Je ne trouve pas cette info à travers les StateObjects.
Merci.


#8

Bonjour José,

Écrite en 2012, ma libraire VeraNet ne supportait pas (encore) le “House Mode” (à l’époque en version 1.5 cette fonctionnalité n’existait pas).

J’ai donc regardé ce WE les docs et retrouvé toutes les informations sur cette page : http://wiki.micasaverde.com/index.php/House_Modes#Get_.E2.80.9CMode.E2.80.9D_variable_value

En fait le mode est contenu dans le JSON de résultant du “lu_sdata” qu’utilise la librairie pour récupérer les infos de la Vera. J’ai donc pu en 2 lignes de code le rajouter au modèle.

Seulement en cas de changement de mode, la requête partielle (full=0) en long-pooling utilisée par ma librairie ne comporte pas cette information ! Autrement dit impossible de savoir via le système actuel si le mode change !

J’ai donc creusé le fonctionnement de l’interface UI7. A la fin de chaque requête de status chargée également en “long-pooling”, elle demande la variable “mode_change_time” pour connaitre l’heure du prochain changement de mode (30 secondes de délai avant un armement).

Dans le cas de ma lib, j’ai gardé ce même principe en interrogeant directement la variable “mode” après chaque requête “sdata”. En cas de changement de mode, un événement nommé HouseModeChanged est levé. Bien entendu une méthode “SetHouseMode” permet de changer le mode courant de la Vera.

De ce fait j’ai mis à jour le package Vera en version 1.7 pour exploiter cette nouvelle lib.

A l’heure où j’écris ces lignes le serveur de build a déjà publié la mise à jour sur le store, il suiffit de mettre à jour le package depuis la console Constellation :
image

Dans le StateObject représentant la Vera, vous trouverez une nouvelle propriété “HouseMode” représentant le mode courant :
image

Les modes sont décrits dans Constellation : 0-None, 1-Home, 2-Away, etc…
image

Aussi un nouveau MessageCallback nommé “SetHouseMode” permet de changer de mode vos applicatifs connectés à votre Constellation :

Bien à vous,

Sébastien


#9

Bonjour Sébastien,
merci beaucoup pour cette réponse et cette adaptation du code très rapides.
Bonne journée.


#10

Bonjour,
afin de commander des luminaires, je dispose de modules Fibaro (prise commutateur Z-wave) gérés par la box Véra. Grace au package Véra pour Constellation, les luminaires sont commandés via une application Cordova en consommant le StateObject de type VeraNet.Switch. Cependant, ce SO ne permet pas de savoir si l’objet est réellement connecté. Par exemple, si le module Fibaro est débranché, le SO renvoi le dernier status connu. Dans l’application propriétaire de Véra, le module apparait aussi connecté, mais une alarme indique que le module est déconnecté. Existe-t-il un moyen via constellation de récupérer cette information de déconnexion ? Peut-on récupérer les alarmes de Véra par exemple ?
Merci.