Après un premier article sur les dispositifs Philips Smartlink (hue & friends, LivingWhites et LivingColors…), en voici un deuxième sur la mise en œuvre de base de l’excellent module FHEM qui permet de piloter tous ces produits.
Définition initiale – HUEBridge
Avant d’intégrer les dispositifs Philips dans FHEM, il est préférable de bien les définir dans l’app hue (iOS ou Android), et en particulier de bien nommer les éléments : ça évitera un peu de configuration et beaucoup de confusion. Une fois que c’est fait :
Définir le pont (Hue bridge) , en passant la ligne de commande suivante dans l’interface web de FHEM (où philips-hue est le nom ou l’adresse IP du bridge Philips hue ) :
define bridge HUEBridge philips-hue
Puis appuyer sur le bouton d’association du bridge hue Philips (bouton du milieu), pour faire permettre à FHEM de s’associer au pont.
Les dispositifs Smartlink sont alors auto-découverts dans FHEM et se mettent dans la room « HUEDevice ». Les groupes hue sont regroupés sous « HUEDevice », les ampoules hue dans « colordimmer » et les LivingWhites et lux dans dimmer.
Appuyer sur le bouton « Save Config » dans FHEM de manière à sauvegarder le tout et ne pas avoir à refaire l’association au redémarrage de FHEM
Personnalisation de l’interface graphique FHEM
Thème et icônes
Personnellement j’aime bien le thème ios7. Les icônes du répertoire openautomation s’accordent bien avec. Pour les afficher à la place des icônes du thème de base, ajouter l’attribut suivant dans l’interface web (on peut aussi le faire pour l’interface WEBphone et WEBtablet, si on les a définies).
attr WEB iconPath openautomation:default
Le fichier iconalias.txt du répertoire /opt/fhem/www/images/openautomation permet de de définir des alias aux noms des fichiers du répertoire. Les auteurs ont donné des alias correspondant au nom des icônes par défaut, ce qui permet de les utiliser à la place.
Icônes supplémentaires
L’icône du pont (trouvée sur le forum FHEM) est ici
Personnalisation des LivingWhites
Par défaut une prise LivingWhites est affichée comme un variateur (dimmer), avec :
- une icône d’état,
- un variateur permettant de modifier la luminosité de la lampe,
- un lien « toggle » permettant de passer de on à off, en conservant la luminosité précédente
- des liens « on » et « off »
Si la prise est en mode on/off, il faut changer les attributs du HUEDevice pour ne pas afficher le variateur et les commandes associées :
attr HUEDevice5 subType switch attr HUEDevice5 webCmd toggle:on:off
Personnalisation des hue
Les attributs par défaut d’une lampe hue sont :
attr HUEDevice8 devStateIcon {(HUEDevice_devStateIcon($name),"toggle")} attr HUEDevice8 subType colordimmer attr HUEDevice8 webCmd rgb:rgb ff0000:rgb DEFF26:rgb 0000ff:toggle:on:off
ce qui les fait apparaître ainsi dans l’interface graphique :
- l’icône de statut est une ampoule éteinte ou un rectangle de la couleur et de l’intensité de l’ampoule, si cette dernière est allumée
- quand on clique sur la valeur RGB on obtient un sélecteur permettant de choisir couleur et intensité.
- 3 boutons permettent de choisir une couleur présélectionnée
On peut changer la visualisation :
- l’icône de statut peut représenter une ampoule de la couleur du luminaire, avec des rayons donnant une indication de la luminosité : il faut positionner l’attribut color-icons à 2
- on peut par exemple remplacer les points de couleur par un variateur :
attr plafonnier_palier webCmd rgb:pct:toggle:on:off
Les groupes
Ils permettent de faire varier d’une seule commande un ensemble de lampes ZLL.
On peut les lister tous avec une commande sur le Hue bridge :
get bridge groups
Ils sont de deux types : LightGroup et Room
Groupes de type Room
Les pièces de l’application Hue sont des HUEdevices de type Room.
Pour les lister :
list TYPE=HUEDevice:FILTER=i:type=Room name class
Groupes de type LightGroup
Pour les lister avec leur nom et les lampes correspondantes passer la commande
list TYPE=HUEDevice:FILTER=i:type=LightGroup name
Groupes par défaut
- Un groupe par défaut (avec l’ID 0) contient toutes les lampes et prises SmartLink
- Pour chaque télécommande associée au pont, un groupe (VRCn) est automatiquement créé, qui contient les lumières correspondantes.
Création et découverte de nouveaux groupes
Il est pratique de pouvoir créer ses propres groupes indépendamment de toute télécommande. Par exemple un groupe qui contient toutes les lampes mais exclut les prises qui ne gèrent pas un éclairage, ou un groupe qui couvre plusieurs pièces.
FHEM détecte bien ceux qui ont été créés par une application tierce, comme l’application Android Hue Control ou la très bonne application Windows et Windows Phone Huetro .
Il est maintenant possible de créer des groupes avec FHEM :
set bridge creategroup <name> <lights>
Commandes et Readings
State
Etat d’une lumière
Le statut (state) peut prendre les valeurs on, off, unreachable, dimXX% (où XX est la valeur la plus proche de 06,12,18,25,31,37,43,50,56,62,68,75,81,87,93,100
: ce sont les valeurs qui sont utilisées par le module FS20 qui constitue un peu le standard de FHEM)
État d’un groupe
Je trouve pratique de savoir si au moins une lampe d’un groupe est allumée. Pour le faire apparaître il faut ajouter
attr group stateFormat { sprintf("%s", ReadingsVal($name,"any_on","false") eq "false" ? "off" : "on") } attr group devStateIcon Initialized:rc_BLANK on:ios-on-blue:off off:ios-off:on
Couleurs et luminosité
Outre les commandes classiques (on, off, toggle),il y a moyen de changer les valeurs de couleur et luminosité des ampoules en utilisant plusieurs modèles de codage :
Modèle | paramètres | Exemple |
---|---|---|
xyY | x et y (coordonnées dans l’espace des couleurs CIE 1931) : xy, Y : bri (0-254) | set lampe1 xy 0.4595,0.4105 : bri 220 |
TSL | Teinte, saturation et luminosité : hue (~deg*182), sat (0-254), bri (0-254) | set lampe1 hue 14922 : sat 144 : bri 220 |
ct | température de couleur : color en Kelvins, ct en mireds (154-500, du plus froid au plus chaud) | set lampe1 color 2600 |
rgb | composantes de couleur rouge, vert et bleu : rgb (hexa) | set lampe1 rgb FFC698 |
- Les attributs bri et pct sont équivalents, bri étant codé de 0 à 254 et pct de 0 à 100
- Le mode de couleur courant est renseigné dans le Reading colormode. Il change automatiquement quand on envoie une commande dans un mode donné. Seuls les Readings correspondant au mode colormode sont pertinents à l’instant t : les autres valeurs ne sont pas mises à jour et ne reflètent pas la réalité
- Les Readings sont mis à jour soit lors du passage d’une commande,soit par le retour de polling de FHEM sur le pont hue qui indique les valeurs remontées elles-mêmes par le polling du pont sur les différents éléments du réseau ZLL. Ce qui explique des retours d’état pouvant être retardés d’une trentaine de secondes dans le pire des cas (hors surcharge de FHEM)
Transitions et effets
Il est possible de faire un effet de transition entre deux valeurs en rajoutant une valeur de transition
set lampe1 on : transitiontime 100 set lampe1 on 10 set lampe1 pct 100 : transitiontime 10
Quelques commandes permettent de faire des effets en s’appuyant directement sur l’API.
La commande alert fait clignoter l’ampoule :
- Pour clignoter une fois :
set lampe1 alert select
- Pour clignoter de manière régulière :
set lampe1 alert lselect
- et pour arrêter
set lampe1 alert none
La commande effect permet de faire changer la lumière de couleur en continu:set plafonnier_palier effect colorloop
On peut aussi utiliser les extensions set classiques, qui ne font pas appel aux capacités des lampes mais sont gérées par FHEM : allumer pendant x s, jusqu’à telle heure, clignoter à tel rythme etc.
Limitations à connaître
Le hub supporte environ 30 commandes par seconde,toutes lampes confondues (source), ce qui est une limitation si on veut faire des effets avec de nombreuses ampoules… et par ailleurs le puristes (même source) indiquent que les couleurs RGB ne sont pas exactes, mais pour une utilisation domotique je ne pense pas que c’est un problème.
Lamp stealing
Il est possible (depuis que l’API hue le permet -fin 2015-) d’associer des dispositifs Smartlink au pont Hue avec FHEM, même s’ils sont initialement associés à un autre pont. Cette manipulation qui était délicate auparavant est maintenant facilitée :
- mettre la lampe à proximité
- passer la commande suivante pour associer la lampe au nouveau pont :
set bridge touchlink
Conclusion
Voilà donc pour une mise en route de la solution. Le fil de discussion du forum contient des idées et exemples de code intéressants, comme par exemple faire un effet de flamme qui vacille, ou ajuster la température de couleur et l’intensité lumineuse en fonction de l’heure du jour. Ça fera peut-être l’objet d’un autre post, avec quelques autres applications pratiques.
Références
- Référence des commandes : HUEBridge HUEDevice (en anglais)
- Wiki (en allemand)
- fil de discussion du forum sur le module HUEDevice (en allemand)
- Hue Developer Program & son forum