FHEM et Philips hue : premiers pas

fhem-hueAprè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 Hue bridgeappuyer 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

switch vs dimmer

Choix du mode de la prise 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 »

LivingWhitesPlug-dimmer

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

LivingWhitesPlug-switch

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 :

ampoules hue dans fhem

  • 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 :

apparence dans fhem, perso modifiée

  • 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  HueGroup0
  • 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.

hue-colors-auto

set bloom effect colorloop

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 :

  1. mettre la lampe à proximité
  2. 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