
XIAOMI SMART HOME – PRESENTATION ET INCLUSION DANS DOMOTICZ
Sommaire
Présentation
Nous allons maintenant entrer plus en profondeur dans son exploitation, et comme je commence à être feignant, mais aussi que cela est très visuel, je vous ai fait une vidéo pour vous expliquer les différents mouvements.
J’ai fait l’impasse sur deux mouvements :
- Air Swing
- Alerte
Exemples d’utilisation
Nous allons maintenant voir comment utiliser ce cube dans notre installation, en premier lieu, je vais vous « donner » un script LUA, qui va vous permettre de piloter la luminosité d’une ampoule dimmable, comme le ferait un bouton rotatif. Il faut savoir que le cube, en plus d’envoyer les informations de sens de rotation, envoie des valeurs. Ces valeurs positives ou négatives sont des équivalences d’angle et de temps, dans l’API on trouve ceci pour le cube {\ »rotate\ »:\ »25,500\ »} :- Rotate = Rotation
- 25 = Angle/3.6 soit ici : 90*3.6 = 25 : Nous avons tourné le cube dans le sens horaire de 90°
- 500 = le temps en millisecondes nécessaire pour faire cette rotation

Pilotage d’une ampoule à intensité variable
Plutôt que de vous filer le script tout fait, je vais vous l’expliquer par morceau qu’il faudra assembler pour avoir le résultat. Le principe de fonctionnement : Si le cube tourne en sens horaire, alors augmente la luminosité de l’ampoule de sa valeur actuelle + la valeur de la rotation avec un maximum à 100% : Exemple : Ampoule à 95%, le cube fait une rotation de +10 (10*3.6 = 36° dans le sens des aiguilles d’une montre) donc ampoule sera 90 + 10 = 105% sauf que l’on va lui dire que son max sera 100% Si le cube tourne en contre la montre, alors baisse la luminosité de l’ampoule de sa valeur actuelle – la valeur de la rotation avec un minimum à 0% qui va éteindre l’ampoule : Exemple : Ampoule à 25%, le cube fait une rotation de -50 (-50*3.6 = -180° dans le sens inverse aux aiguilles d’une montre ) donc ampoule sera 25 + -50 = -25% sauf que l’on va lui dire que son mini sera 0% On commence par récupérer les différentes valeurs nécessaires à notre calculif devicechanged['Xiaomi Cube Rotation'] then --après le commandarray, on se sert d'un changement de valeur du widget texte affichant la rotation comme du provocateur d’événement Bulbvalue = otherdevices_svalues['Appliques']; --On récupère la valeur actuelle de luminosité de l'ampoule à piloter RotValue = otherdevices_svalues['Xiaomi Cube Rotation']; --On récupère la valeur de rotation qui provoque le script RotValue = string.sub(RotValue, 1, string.len(RotValue) - 4) --On récupère l'angle à la mode xiaomi (donc enleve les 4 derniers caractères du widget texte NumericValue = tonumber(RotValue) --Lua est exigent, il faut transformer les caractères récupérés précédemment en valeur numériqueUne fois que nous avons les valeurs, on fait notre calcul :
CalcValue = (Bulbvalue + NumericValue) --CalcValue va être notre valeur finale à appliquer à l'ampoule (valeur actuelle de l ampoule + la valeur de rotation)On délimite les valeurs maximums et minimums de la valeur à appliquer
if CalcValue > 100 then CalcValue = 100 --valeur maximale à 100% elseif CalcValue < 0 then CalcValue = 0 --aleur minimale à 0% endEnfin on envoie l’ordre à l’ampoule avec sa nouvelle valeur :
commandArray['Appliques']='Set Level '..CalcValue..'' endEt voila ! Bien sûr c’est un script device, et il manque les commandArray de début et de fin, mais vous le saviez 😉 Ce qui nous donne en vrai :
Difficile de filmer de l’éclairage dans la pénombre, désolé.
Dans le salon
Après cette seconde vidéo (la maison ne recule devant aucun sacrifice !), je vous livre mon autre script device en LUA qui réagit au Cube placé dans le salon :-- chargement des modules package.path = package.path..";/home/nico/domoticz/scripts/lua/?.lua" require "modules" commandArray = {} if (devicechanged['Xiaomi Cube']=='tap_twice' and otherdevices['Sous Le Bar']=='Off') then groupOn('versaille') -- c'est un groupe qui gère tous les éclairages du salon - salle à manger ou tout est à 100% elseif (devicechanged['Xiaomi Cube']=='tap_twice' and otherdevices['Sous Le Bar']=='On') then groupOff('versaille') elseif (devicechanged['Xiaomi Cube']=='flip90') then switch('Eclairage TV') -- Allume mon hyperion dans une couleur jaune pleine lune elseif (devicechanged['Xiaomi Cube']=='flip180' and otherdevices['Appliques']=='Off') then groupOn('cube 180') -- original non ? ce groupe gère deux éclairages coté cheminée elseif (devicechanged['Xiaomi Cube']=='flip180' and otherdevices['Appliques']~='Off') then groupOff('cube 180') elseif devicechanged['Xiaomi Cube']=='free_fall' then switch('Meuble TV') -- toggle, switch, inverse l'état de la prise qui alimente mon meuble TV end return commandArrayAttention avec celui-ci ! il est fait pour travailler avec speedup domoticz ! Comme vous le voyez je n’utilise pas tous les ordres, il est dans une pièce à vivre, si je veux que ma moitié s’en serve, il faut que ce soit facile à utiliser, et surtout en complément d’autres boutons déjà en place. Il reste aussi plein d’autres fonctions à utiliser, comme le temps qui a été mis pour effectuer la rotation, qui peut aussi servir. Je vous laisse, j’ai reçu en exclu le nouveau cube multi-multi ordre, un vrai casse tète !
