Archives du tag : Luup

Vera UI5 : Créer son propre Plugin

creer

Problématique

La création d’un plugin pour la box domotique Vera sous UI5 n’est pas une opération très simple et les tutoriels simples et en français pour en décrire les étapes ne sont pas légion sur Internet. Ce billet, rédigé sous la forme d’un tutoriel, à pour vocation de décrire les différentes étapes permettant la création d’un plugin équivalent au plugin Virtual ON/OFF Switches mais comportant 3 états plutôt que deux.

Ce billet n’est pas achevé. Il est cependant en standby pour une question de temps, mais aussi parce que la sortie de UI7 (personnellement, je ne l’attends pas avant 2015) va changer la donne.

Structure d’un Plugin

Un plugin Luup est composé de plusieurs fichiers dont certain sont optionnels.

4 fichiers permettent d’implémenter le fonctionnement du plugin.

  • D_GenericPlugin1.xml, Device description file (1) – Ce fichier est le principal, il permet de décrire le device implémenté par le plugin. C’est à partir de ce fichier que tous les autres sont atteints. Il s’agit en fait d’un fichier xml de spécification de device UPnP (UPnP device description file). Voici quelques liens utiles pour l’écriture de ce fichier : Luup Plugins ; Luup Plugins By Hand.
  • S_GenericPlugin1.xml, Service File (0 à n) – Ce fichier est optionnel car la Vera fournit déjà de nombreux Service File décrivant de besoins récurrents comme des switches on/off par exemple. Si les services du plugin n’existent pas déjà, il faut créer un ou plusieurs fichiers Service File et décrire l’implémentation dans le fichier Implementation file. Voici quelques liens utiles renseignant les Service File existants : Luup UPNP Files ; Luup Devices ; Luup UPnP Variables and Actions.
  • I_GenericPlugin1.xml, device Implementation file (1) – Ce fichier contient le code Lua nécessaire pour mettre en œuvre les services spécifiés dans le ou les fichiers Service File. Voici quelques liens utiles pour l’écriture de ce fichier : Luup Plugins By Hand ; Luup Declarations ; Luup Lua extensions.
  • L_GenericPlugin1.xml, Lua file (0 à n) – En principe, le code Lua est placé dans le fichier device Implementation file. Cependant, si le code est important, il peut être judicieux de le structurer en plusieurs fichier Lua file et de ne faire que des appels dans le fichier device Implementation file.

2 autres fichiers permettent d’implémenter la partie visuelle du plugin et son interaction dans l’interface UI5. Ces 2 fichiers sont optionnels, ils ne servent que si le plugin doit posséder une interface graphique.

  • D_GenericPlugin1.json, Device interface file(0 ou 1) – Ce fichier n’est utile que pour interagir avec le plugin directement depuis l’interface utilisateur. Dans le cas contraire, le plugin peut toujours être invoqué depuis des scènes, du code Luup, à partir d’appels URL… Ce fichier contient également les liens vers les icônes associés au plugin. Voici quelques liens utiles pour approfondir la questionr : Luup plugins: Static JSON file ; Luup plugin tabs.
  • J_GenericPlugin1.xml, JavaScript files (0 à n) – Appelés par le fichier JSON Device interface file ces fichiers ne sont utiles que pour implémenter des interactions bien particulières (autres que de simples affichages d’étiquettes, de boutons ou de curseurs) au niveau de l’interface.

Informations et sources

Publié dans Domotique, Tutoriels | Tagué , | Laisser un commentaire

Requêtes HTTP sur Vera Lite

Problématique
http

Il est important de pouvoir faire des requêtes HTTP sur un contrôleur domotique. C’est un moyen de communication qui permet de piloter la box depuis l’extérieur. Cela permet par exemple de développer sa propre interface web pour contrôler sa domotique ou encore mettre en œuvre une technique de push depuis un objet connecté (comme une box IPX800) vers la box domotique afin de notifier de tout changement d’état.

Requête locale et requête distante

Le début d’une requêtes HTTP est différent suivant que la requête est faite depuis le réseau local sur lequel se situe la Vera ou depuis l’extérieur.

  • Depuis le réseau local : http://<ip_Vera>:3480…
    Les sont à remplacer par la suite de la requête.
  • Depuis l’extérieur, le plus simple est de passer par les serveurs de la société Vera Smart Home Controllers : https://fwd1.mios.com/<login>/<password>/<n°vera>…
    Les sont à remplacer par la suite de la requête, fwd1 peut être remplacé par fwd2 ou fwd3.
    Je n’aime pas trop cette technique qui indique en clair dans l’url l’identifiant et le mot de passe et crée une dépendance au serveur de la société Vera.
  • Une autre technique depuis l’extérieur est de mettre en place une redirection de port sur le routeur. On peut alors par exemple écrire : http://<adresse_perso>:<port_redirigé>…
    L’inconvénient de cette technique est que n’importe qui trouvant ce port ouvert peut faire beaucoup de choses avec votre Vera.
  • Pour sécuriser l’accès à la Vera, sans utiliser les serveurs de la société Vera Smart Home Controllers, une solution consiste à passer par un VPN.
Requête sur device ou scène
  • Requête pour modifier l’état d’un device de type On/Off :
    …/data_request?id=lu_action&DeviceNum=<device>&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=< état>
    </device>
    Les doivent être remplacés par le début de requête adapté, <device> par le numéro de device concerné et <état> par l’état désiré (0 ou 1).
    Exemple de requête complète :
    http://192.168.0.44:3480/data_request?id=lu_action&DeviceNum=19&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=1
  • Requête pour connaître l’état d’un device de type On/Off :
    …/data_request?id=variableget&DeviceNum=<device>&serviceId=urn:upnp-org:serviceId:SwitchPower1&Variable=Status
    </device>
    Les doivent être remplacés par le début de requête adapté et <device> par le numéro de device concerné.
    Exemple de requête complète :
    http://192.168.0.44:3480/data_request?id=variableget&DeviceNum=19&serviceId=urn:upnp-org:serviceId:SwitchPower1&Variable=Status
  • Lire ce billet pour savoir comment interagir avec un autre type de device
  • Requête pour exécuter une scène :
    …/data_request?id=lu_action&serviceId=urn:micasaverde-com:serviceId:HomeAutomationGateway1&action=RunScene&SceneNum=<num éro de scène>
    </num>
    Les doivent être remplacés par le début de requête adapté et <Numéro de scène> par le numéro de la scène à exécuter.
    Exemple de requête complète :
    http://192.168.0.44:3480/data_request?id=lu_action&serviceId=urn:micasaverde-com:serviceId:HomeAutomationGateway1&action=RunScene&SceneNum=18
(suite…)
Publié dans Domotique, Contrôleurs, Tutoriels | Tagué , | Laisser un commentaire

Vera : capturer une image depuis une caméra IP

Voici une petite fonction permettant, à partir d’une Vera Lite, de capturer une photo avec une caméra IP.

-- Capturer une image d'une caméra IP et la placer dans le fichier spécifié
-- requete : requête permettant la capture de l'image
-- cible   : le chemin de l'image (ex : "/root/img.jpg")
function josdCaptureImageCamera(camera, cible)
  local out=assert(io.open(cible, "wb"))
  local _,data=luup.inet.wget(requete)
  out:write(data)
  assert(out:close())
end

En complément, ce billet présente des requêtes permettant de capturer des images depuis des caméras IP D-Link. Ce billet propose une fonction permettant d’envoyer un courriel avec des images en pièce jointe.

Attention, ces captures peuvent consommer trop de ressources pour la Vera lite (cf. Vera Lite : Plantage sévère).

Sommaire Domotique sur ce blog

Publié dans Domotique, Tutoriels, Surveillance | Tagué , , | 5 commentaires

Luup et les Variables des Modules

Principes de fonctionnement

Propriétés d'un Module

Les variables d’un module (device) permettent de connaître, voir de modifier, l’état courant d’un module (allumé, éteint, température, niveau des batteries….). Dans l’interface de la Vera, pour accéder aux variables d’un module, il faut cliquer sur la petite clef à molette du module en question afin d’accéder à la boîte de dialogue des propriétés du module. Les variables du module se trouvent dans la partie inférieure de l’onglet Advanced de cette boite de dialogue comme illustré sur l’image ci-dessous.

(suite…)
Publié dans Domotique, Tutoriels | Tagué , | 2 commentaires

Luup debugging (Vera Lite)

debug

Introduction

L’un des gros avantage de la box domotique Vera Lite est de pouvoir développer ses propres fonctions en Lua. Les fonctions développées doivent être placées dans la fenêtre Edit Startup Lua (APPS → Develop Apps → Edit Startup Lua). Cependant debugguer du Luup sur la Vera n’est pas une chose facile car, avec l’interface UI5, l’éditeur de Luup est une toute petite fenêtre d’édition de texte simple. Cela implique plusieurs problèmes :

  • Comme la fenêtre est petite, une ligne de code se retrouve souvent sur plusieurs lignes se qui ne facilite pas la lecture
  • Pas de numérotation des lignes, aucune coloration syntaxique, encore moins d’auto-complétion…
  • Il faut sauver à chaque fois, en plusieurs cliques, puis attendre que la Vera redémarre le moteur Luup (plusieurs seconde)
  • Il faut déclencher l’exécution du code (parfois lié à un évènement par exemple)
  • Il faut scruter le fichier log ou les erreurs sont notifiées car la Vera ne signale pas d’erreur d’elle-même
  • Il faut bien déverminer les erreurs de syntaxe car elles ne sont pas toujours signalées dans le bon module
(suite…)
Publié dans Domotique, Tutoriels | Tagué , | 2 commentaires

Key Fob : Contrôle d’un lampadaire halogène

LampadaireOnBis

Objectif

L’objectif est de configurer la télécommande Z-Wave Key Fob d’Aeon Labs pour allumer, éteindre et moduler l’intensité lumineuse d’un lampadaire branché sur une prise Z-Wave de type variateur comme la prises AD142 d’Everspring par exemple.

La Key Fob fait très bien cela toute seule en l’utilisant en mode Group Mode et en associant directement un bouton à la prise variateur. Cependant, le Group Mode ne semble pas compatible avec la Vera Lite. De plus, le Group Mode ne permet pas d’utiliser toute la souplesse des scènes d’une box domotique.

Ce tutoriel explique comment paramétrer les comportements suivant avec la Vera Lite :

  • Appui long sur le bouton supérieur gauche pour éteindre le luminaire
  • Appui long sur le bouton supérieur droit pour allumer le luminaire
  • Appui court sur le bouton supérieur gauche pour diminuer l’intensité lumineuse
  • Appui court sur le bouton supérieur droit pour augmenter l’intensité lumineuse
(suite…)
Publié dans Domotique, Tutoriels, Modules | Tagué , , , , | Laisser un commentaire