# \[Tutoriel\] Ajouter des ampoules Milight avec Node Red dans Gladys

**URL:** <https://community.gladysassistant.com/t/tutoriel-ajouter-des-ampoules-milight-avec-node-red-dans-gladys/6608>\
**Category:** Tutoriels\
**Created:** [Octobre 15, 2021, 8:16 UTC](https://community.gladysassistant.com/t/tutoriel-ajouter-des-ampoules-milight-avec-node-red-dans-gladys/6608 "2021-10-15T20:16:05Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![spenceur](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/spenceur/32/1961_2.png) [@spenceur](https://community.gladysassistant.com/u/spenceur)\
**Post date:** [Octobre 15, 2021, 8:16 UTC](https://community.gladysassistant.com/t/tutoriel-ajouter-des-ampoules-milight-avec-node-red-dans-gladys/6608/1 "2021-10-15T20:16:06Z")

</div>

# Ajouter des ampoules Milight avec Node Red dans Gladys

### Table des Matières

1. [Configuration dans Gladys](#configuration-dans-gladys-3)
  1. [Pré requis](#pr-requis-4)
  2. [Etape](#etape-5)

2. [Configuration sur Node Red](#configuration-sur-node-red-6)
  1. [Pré requis](#pr-requis-7)
  2. [Etape](#etape-8)

3. [Extra](#extra-9)

Voici un exemple d’intégration, via node red dans Gladys 4, d’une ampoule milight de type color «&nbsp;fut017&nbsp;».

> **[KingLed – Mi-Light 6W E27 Dual White LED light Ampoule CCT. 2.4GHz RF...](https://www.amazon.fr/KingLed-Ampoule-Mi-Light-Variables-2700K-6500K/dp/B01MXSK2YO?tag=gladproj-21)**
>
> Achetez KingLed – Mi-Light 6W E27 Dual White LED light Ampoule CCT. 2.4GHz RF télécommandable, Dimmable, Sans Fil, FUT017 Code 0612 : Rubans à LED : Amazon.fr ✓ Livraison gratuite possible dès 25€

Bien entendu le connecteur sera a changer en fonction de votre ampoule.

## Configuration dans Gladys

### Pré requis

- Avoir configurer son broker MQTT sur Gladys
- Savoir se débrouiller un minimum dans la création de device virtuel

### Etape

1. Pour commencer il vous faut créer votre ampoule dans gladys via le service MQTT de cette manière :

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/6/6fd66ebd652579bee237583a74e678dae7140fdc.png)

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/5/5823165fa91c9e3ee8ff14efbb4deda5d51bc111.png)

1. Renseigné un nom, un id externe pour le serveur mqtt, la piece puis sauvegarder :

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/0/0d825f304edc2633bd2114c02b849a03f916922d.png)

1. Une fois cela fait ne quitter pas la page mais ajouter ces fonctionnalités :

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/e/e4e3f5724bd0cd019ae4ab24396fc35346d96f6b.png)

Voici l’exemple de mon ampoule se trouvant dans un projecteur cinéma :

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/2/247d2f833e2d56c1393cf75aee4d35ee87647c08.jpeg)

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/d/d70fad077f1c781306ea08cffcb3977d8ef91bfa.png)

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/0/01639812b543fa5fd8955f0295c4bc2d258eea70.png)

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/0/077f5322adfd498b38815f017418c9833299b35f.png)

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/7/76ab4eaca8cfe48aac614ffefe41c63af16c6195.png)

La configuration côté Gladys est terminé, nous allons passer sur node red.

## Configuration sur Node Red

### Pré requis

- Installer le package node-red-contrib-milight-2 (la version 3 j’ai rencontré des problèmes de connexion aléatoire)
- Avoir configurer la connexion mqtt dans node red pour la connexion avec Gladys

### Etape

1. Ajouter un noeud mqtt in pour chaque fonctionnalités précédemment créées : ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/8/84be65628d944b2ac30713441d4b636b887d41d7.png)  
(Allumer, Luminosité, Couleur, Saturation, Température)
2. Pour chacun des noeuds configurer la connexion a Gladys 4, puis y ajouter le topic créé automatiquement dans gladys :

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/3/3355f981c6ef34ff68e85231183a8bc52184c38a.png)  
 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/e/efa808fdf4b99dbb4d8031fe904fb37c9868a1e6.png)

1. Ajouter un noeud «&nbsp;function&nbsp;» pour chaque noeuds «&nbsp;mqtt in&nbsp;» : ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/e/ef568c8dba8a3990465a041fb80707db1b22e4a9.png)
2. Editer le noeud «&nbsp;function&nbsp;» en fonction de la fonctionnalité tel qui suit :

- _Allumer_

```auto
msg.payload = msg.payload === '1' ? 'on' : 'off';
return msg;

```

- _Couleur_

```auto
const rgb = intToRgb(msg.payload);
msg.payload = `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`;
msg.command = 'rgb';
return msg;

function intToRgb(intColor) {
  const red = intColor >> 16;
  const green = (intColor - (red << 16)) >> 8;
  const blue = intColor - (red << 16) - (green << 8);

  return [red, green, blue];
}

```

- _Luminosité_

```auto
msg.command = 'brightness';
return msg;

```

- _Saturation_

```auto
msg.command = 'saturation';
return msg;

```

- _Température_

```auto
msg.command = 'temperature';
return msg;

```

1. Ajouter un noeud «&nbsp;milight&nbsp;» : ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/3/3b9eb26d3e080ab3b19272f48e6221657d2de2fb.png)
2. Ajouter la configuration en rapport a votre box milight tel que l’exemple suivant :  
 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/b/b290c4c5c420eaa7205cbb07038af0ea65a8498d.png)

ps : Adapter Bridge Type et Bulb Type en fonction de votre configuration.

1. Il ne vous reste plus qu’a relier comme les noeuds entres eux et déployer :  
 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/8/849bd33b9985623fed48616d856f3ce38195c77b.png)

Voila maintenant il ne vous reste plus qu’a copié ce flow et adapter vos topic et zone pour contrôler vos ampoules une a une.

## Extra

Voici mon flow (pensez a modifier les topics, ip, zone etc ..)

```auto
[
    {
        "id": "f9f8f221204ee3c0",
        "type": "tab",
        "label": "Flow 3",
        "disabled": false,
        "info": ""
    },
    {
        "id": "ac342eaf54ef2eaa",
        "type": "mqtt in",
        "z": "f9f8f221204ee3c0",
        "name": "Allumer",
        "topic": "gladys/device/mqtt:projecteur/feature/mqtt:projecteur-allumer/state",
        "qos": "2",
        "datatype": "auto",
        "broker": "d4dd08180f860b0e",
        "nl": false,
        "rap": true,
        "rh": 0,
        "x": 70,
        "y": 120,
        "wires": [
            [
                "4f2df4ecbd1f994c"
            ]
        ]
    },
    {
        "id": "d0cc861e9c276a0a",
        "type": "mqtt in",
        "z": "f9f8f221204ee3c0",
        "name": "Luminosité",
        "topic": "gladys/device/mqtt:projecteur/feature/mqtt:projecteur-luminosite/state",
        "qos": "2",
        "datatype": "auto",
        "broker": "d4dd08180f860b0e",
        "nl": false,
        "rap": true,
        "rh": 0,
        "x": 100,
        "y": 220,
        "wires": [
            [
                "052e9712c29fee8f"
            ]
        ]
    },
    {
        "id": "4f2df4ecbd1f994c",
        "type": "function",
        "z": "f9f8f221204ee3c0",
        "name": "",
        "func": "msg.payload = msg.payload === '1' ? 'on' : 'off';\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 260,
        "y": 140,
        "wires": [
            [
                "f698f083e6fb1c3f"
            ]
        ]
    },
    {
        "id": "052e9712c29fee8f",
        "type": "function",
        "z": "f9f8f221204ee3c0",
        "name": "",
        "func": "msg.command = 'brightness';\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 270,
        "y": 240,
        "wires": [
            [
                "f698f083e6fb1c3f"
            ]
        ]
    },
    {
        "id": "4be8a6865ec71a53",
        "type": "mqtt in",
        "z": "f9f8f221204ee3c0",
        "name": "Couleur",
        "topic": "gladys/device/mqtt:projecteur/feature/mqtt:projecteur-couleur/state",
        "qos": "2",
        "datatype": "auto",
        "broker": "d4dd08180f860b0e",
        "nl": false,
        "rap": true,
        "rh": 0,
        "x": 70,
        "y": 40,
        "wires": [
            [
                "2953be4d64f19a5a"
            ]
        ]
    },
    {
        "id": "2953be4d64f19a5a",
        "type": "function",
        "z": "f9f8f221204ee3c0",
        "name": "",
        "func": "const rgb = intToRgb(msg.payload);\nmsg.payload = `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`;\nmsg.command = 'rgb';\nreturn msg;\n\nfunction intToRgb(intColor) {\n const red = intColor >> 16;\n const green = (intColor - (red << 16)) >> 8;\n const blue = intColor - (red << 16) - (green << 8);\n\n return [red, green, blue];\n}",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 220,
        "y": 60,
        "wires": [
            [
                "f698f083e6fb1c3f"
            ]
        ]
    },
    {
        "id": "2b570fa1345f22db",
        "type": "mqtt in",
        "z": "f9f8f221204ee3c0",
        "name": "Saturation",
        "topic": "gladys/device/mqtt:projecteur/feature/mqtt:projecteur-saturation/state",
        "qos": "2",
        "datatype": "auto",
        "broker": "d4dd08180f860b0e",
        "nl": false,
        "rap": true,
        "rh": 0,
        "x": 100,
        "y": 300,
        "wires": [
            [
                "794310d6a6d5169b"
            ]
        ]
    },
    {
        "id": "794310d6a6d5169b",
        "type": "function",
        "z": "f9f8f221204ee3c0",
        "name": "",
        "func": "msg.command = 'saturation';\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 270,
        "y": 320,
        "wires": [
            [
                "f698f083e6fb1c3f"
            ]
        ]
    },
    {
        "id": "201ddc93bd0ed84c",
        "type": "mqtt in",
        "z": "f9f8f221204ee3c0",
        "name": "Temperature",
        "topic": "gladys/device/mqtt:projecteur/feature/mqtt:projecteur-temperature/state",
        "qos": "2",
        "datatype": "auto",
        "broker": "d4dd08180f860b0e",
        "nl": false,
        "rap": true,
        "rh": 0,
        "x": 130,
        "y": 400,
        "wires": [
            [
                "713b068948cf83fa"
            ]
        ]
    },
    {
        "id": "713b068948cf83fa",
        "type": "function",
        "z": "f9f8f221204ee3c0",
        "name": "",
        "func": "msg.command = 'temperature';\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 340,
        "y": 400,
        "wires": [
            [
                "f698f083e6fb1c3f"
            ]
        ]
    },
    {
        "id": "f698f083e6fb1c3f",
        "type": "MiLight",
        "z": "f9f8f221204ee3c0",
        "name": "MiLight",
        "bridgetype": "v6",
        "bulbtype": "fullColor",
        "zone": "1",
        "ip": "192.168.1.89",
        "broadcast": true,
        "x": 686.5894470214844,
        "y": 246.19509887695312,
        "wires": []
    },
    {
        "id": "d4dd08180f860b0e",
        "type": "mqtt-broker",
        "name": "Gladys4",
        "broker": "mqtt://192.168.1.59",
        "port": "1883",
        "clientid": "",
        "usetls": false,
        "protocolVersion": "4",
        "keepalive": "60",
        "cleansession": true,
        "birthTopic": "",
        "birthQos": "0",
        "birthRetain": "false",
        "birthPayload": "",
        "birthMsg": {},
        "closeTopic": "",
        "closeQos": "0",
        "closeRetain": "false",
        "closePayload": "",
        "closeMsg": {},
        "willTopic": "",
        "willQos": "0",
        "willRetain": "false",
        "willPayload": "",
        "willMsg": {},
        "sessionExpiry": ""
    }
]

```

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Octobre 18, 2021, 2:12 UTC](https://community.gladysassistant.com/t/tutoriel-ajouter-des-ampoules-milight-avec-node-red-dans-gladys/6608/2 "2021-10-18T02:12:58Z")

</div>

Merci pour ce super tutoriel @spenceur, c’est très précis !! 🙂
