# Développement intégration Nuki

**URL:** <https://community.gladysassistant.com/t/developpement-integration-nuki/9729>\
**Category:** Développement\
**Created:** [Septembre 30, 2025, 3:27 UTC](https://community.gladysassistant.com/t/developpement-integration-nuki/9729 "2025-09-30T15:27:00Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![ProtZ](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/protz/32/1641_2.png) [@ProtZ](https://community.gladysassistant.com/u/ProtZ)\
**Post date:** [Septembre 30, 2025, 3:27 UTC](https://community.gladysassistant.com/t/developpement-integration-nuki/9729/1 "2025-09-30T15:27:00Z")

</div>

# Le projet à date

## Features

Le service ajoute la possibilité de :

- contrôler les serrures connectées de marque Nuki :verrouiller, déverouiller
- remonter certaines informations dans Gladys (niveau de batterie, état de la serrure)

## Screenshot

 ![nuki_dashboard_boxes](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/e/b/eb6473ba753f49e4841de9c9bc6451a95c04c979.png)  
 ![nuki_integration_devices](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/4/9/49b113b9d6ec83fc9d3829e678f90b02d92db4a7.png)

# Intégration

Il y a 2 intégrations possibles (en choisir une car faire les 2 en même temps n’a pas vraiment d’intérêt)

## Clé API NukiWeb

_Prérequis : Gladys doit avoir accès à internet à tout moment_

1. Activer et configurer votre accompte Nuki Web [Configuration Nuki Web]  
([https://help.nuki.io/hc/fr/articles/360016485718-Activer-et-désactiver-un-compte-Nuki-Web#:~:text=Activez%20Nuki%20Web%20dans%20l,dans%20l’App%20de%20Nuki.](https://help.nuki.io/hc/fr/articles/360016485718-Activer-et-d%C3%A9sactiver-un-compte-Nuki-Web#:~:text=Activez%20Nuki%20Web%20dans%20l,dans%20l%E2%80%99App%20de%20Nuki.))

 ![nukiweb](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/9/d/9dc74ce43e7251192683f0a462c65e350ca0d044.png)

 ![nukiweb_auth](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/6/2/62d2aded020801bfca56e0b86fd53cb8c91a4807.png)

1. Configurer le service Nuki dans Gladys en y ajoutant la clé API puis en faisant un scan HTTP  
 ![nuki_integration_configuration](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/d/5/d53182e04ce2c535cff5091d7ef6f642981bda76.png)

 ![nuki_integration_discover_http](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/d/7/d742a4b791a9eac9d0c78bfd2d8547b2d6759e64.png)

## MQTT

_Prérequis : Le MQTT de Gladys est configuré et fonctionnel_

1. Configurer le mqtt dans l’application Nuki (utiliser l’IP local du mqtt, pas le nom de domaine) [Configuration Nuki avec MQTT](https://help.nuki.io/hc/fr/articles/14052016143249-Activation-et-configuration-via-l-App-Nuki)  

2. Aller directement dans la découverte MQTT du service Nuki dans Gladys pour y voir vos appareils

 ![nuki_integration_discover_mqtt](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/b/8/b8d52925a5633d92e67b2197a2a16783b544a307.png)

## Roadmap

- Faire la documentation (quoique celle-ci est pas trop mal)
- Intégrer la notion de trigger (qui ou quoi a ouvert la serrure, par ex : User1 a ouvert la serrure, la serrure a procédé à un auto-lock …)
- Adapter la partie scène au bouton de serrure
- Adapter la partie graphique (afficher les états)

# Installation

L’image nukidev de test est [ici](https://hub.docker.com/r/ngeissel/gladys/tags).

# Pour plus d’informations

[RFTM](https://github.com/ngeissel/Gladys/tree/nuki/server/services/nuki) 😉

# Appel aux testeurs et à la communauté

J’appelle aux gens qui ont ce type d’appareil et qui sont en capacité de faire des tests, à me faire leurs retours.

Je possède une Nuki v3 (donc pas dispo avec Matter)

A votre dispo pour des informations complémentaires.

---

<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 1, 2025, 7:10 UTC](https://community.gladysassistant.com/t/developpement-integration-nuki/9729/2 "2025-10-01T07:10:02Z")

</div>

Merci pour ce développement @ProtZ, ça a l’air top 🙂

Pour la documentation, tu peux faire une PR sur ce repo :

> **[GitHub - GladysAssistant/v4-website: Gladys Assistant website](https://github.com/GladysAssistant/v4-website)**
>
> Gladys Assistant website

La documentation, c’est des fichiers markdown dans ce dossier (pour l’article en anglais) :

> **[v4-website/docs/integrations at master · GladysAssistant/v4-website](https://github.com/GladysAssistant/v4-website/tree/master/docs/integrations)**
>
> Gladys Assistant website. Contribute to GladysAssistant/v4-website development by creating an account on GitHub.

Et ici pour l’article en français :

> **[v4-website/i18n/fr/docusaurus-plugin-content-docs/current/integrations at master...](https://github.com/GladysAssistant/v4-website/tree/master/i18n/fr/docusaurus-plugin-content-docs/current/integrations)**
>
> Gladys Assistant website. Contribute to GladysAssistant/v4-website development by creating an account on GitHub.

Pour écrire la documentation, je te conseille de faire tes screenshots en anglais puis en français dans Gladys, puis d’écrire la documentation en français, et de demander à ChatGPT de te traduire l’article.

---

<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 3, 2025, 1:25 UTC](https://community.gladysassistant.com/t/developpement-integration-nuki/9729/3 "2025-10-03T13:25:53Z")

</div>

Pour info, j’ai mentionné ce sujet dans la newsletter qui partira demain matin 🙂

J’espère qu’on aura des testeurs ! Si on n’a personne d’ici la semaine prochaine, on pourra quand même avancer vu que tu as testé de ton côté.

---

<div class="post-metadata">

**Author:** ![ProtZ](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/protz/32/1641_2.png) [@ProtZ](https://community.gladysassistant.com/u/ProtZ)\
**Post date:** [Octobre 3, 2025, 6:28 UTC](https://community.gladysassistant.com/t/developpement-integration-nuki/9729/4 "2025-10-03T18:28:30Z")

</div>

Top, je viens de faire la PR pour la doc, par contre je ne sais pas le tester 😕

---

<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 4, 2025, 8:11 UTC](https://community.gladysassistant.com/t/developpement-integration-nuki/9729/5 "2025-10-04T08:11:48Z")

</div>

Je pense qu’il y a un petit souci sur ta PR, elle modifie plus de 1300 fichiers 😃

Essaie de repartir de master et de créer tes fichiers à nouveaux.

 ![Screenshot 2025-10-04 at 10.10.31](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/f/5/f5f1219326c544fcce4855620ceee5fe3998b0a6.png)

Pour tester ensuite en local, toutes les instructions sont dans le README : [GitHub - GladysAssistant/v4-website: Gladys Assistant website](https://github.com/GladysAssistant/v4-website)

---

<div class="post-metadata">

**Author:** ![ProtZ](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/protz/32/1641_2.png) [@ProtZ](https://community.gladysassistant.com/u/ProtZ)\
**Post date:** [Octobre 4, 2025, 10:11 UTC](https://community.gladysassistant.com/t/developpement-integration-nuki/9729/6 "2025-10-04T10:11:17Z")

</div>

Désolé, j’ai fait le boulet.  
Refait proprement à l’instant. Mais impossible de tester en local sans creuser un peu plus :

```auto

Error: Illegal return statement
  
  - dev.html.template.ejs:5 ./node_modules/html-webpack-plugin/lib/loader.js!./node_modules/@docusaurus/core/lib/webpack/templates/dev.html.template.ejs
    [v4-website]/[@docusaurus]/core/lib/webpack/templates/dev.html.template.ejs:5:1

```

---

<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 6, 2025, 7:21 UTC](https://community.gladysassistant.com/t/developpement-integration-nuki/9729/7 "2025-10-06T07:21:00Z")

</div>

Tu es en quelle version de Node.js ? Il faut utiliser Node \>= 18. De mon côté je suis en Node 22

---

<div class="post-metadata">

**Author:** ![ProtZ](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/protz/32/1641_2.png) [@ProtZ](https://community.gladysassistant.com/u/ProtZ)\
**Post date:** [Octobre 7, 2025, 5:19 UTC](https://community.gladysassistant.com/t/developpement-integration-nuki/9729/8 "2025-10-07T17:19:16Z")

</div>

Pareil v22.14.0 ☹

---

<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 8, 2025, 5:38 UTC](https://community.gladysassistant.com/t/developpement-integration-nuki/9729/9 "2025-10-08T17:38:43Z")

</div>

Je suis en v22.18.0, après je sais pas si ça change grand chose.

Tu as bien fais `git clone` puis `yarn` et enfin `npm start` ?

Je viens de refaire le test à partir d’un repo vierge pour m’assurer que tout était bon, et tout marche 🤔

---

<div class="post-metadata">

**Author:** ![StephaneB](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/stephaneb/32/15443_2.png) [@StephaneB](https://community.gladysassistant.com/u/StephaneB)\
**Post date:** [Octobre 24, 2025, 7:56 UTC](https://community.gladysassistant.com/t/developpement-integration-nuki/9729/10 "2025-10-24T07:56:46Z")

</div>

Je réagis un peu tard, mais j’ai une série Nuki (si toujours besoin de tester…)

---

<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 24, 2025, 12:30 UTC](https://community.gladysassistant.com/t/developpement-integration-nuki/9729/11 "2025-10-24T12:30:08Z")

</div>

Toujours preneur de testeurs @StephaneB !

---

<div class="post-metadata">

**Author:** ![StephaneB](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/stephaneb/32/15443_2.png) [@StephaneB](https://community.gladysassistant.com/u/StephaneB)\
**Post date:** [Octobre 25, 2025, 9:25 UTC](https://community.gladysassistant.com/t/developpement-integration-nuki/9729/12 "2025-10-25T09:25:20Z")

</div>

Ok. Mais je n’ai pas bien compris dans le fil de cette discussion si c’était prêt à tester ou si il fallait attendre des modifs avant de pouvoir tester…

---

<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 27, 2025, 8:24 UTC](https://community.gladysassistant.com/t/developpement-integration-nuki/9729/13 "2025-10-27T08:24:40Z")

</div>

@ProtZ tu peux nous partager le tag de l’image Docker pour que @StephaneB puisse tester ?

Le lien que tu as posté dans ton post de base est un lien privé

---

<div class="post-metadata">

**Author:** ![ProtZ](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/protz/32/1641_2.png) [@ProtZ](https://community.gladysassistant.com/u/ProtZ)\
**Post date:** [Novembre 3, 2025, 6:56 UTC](https://community.gladysassistant.com/t/developpement-integration-nuki/9729/14 "2025-11-03T18:56:18Z")

</div>

Désolé, je n’avais pas vu que le lien était privé :

[https://hub.docker.com/r/ngeissel/gladys/tags](https://hub.docker.com/r/ngeissel/gladys/tags)

`docker pull ngeissel/gladys:nukidev`

merci @StephaneB, tiens moi au courant 🙂

---

<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:** [Décembre 1, 2025, 9:42 UTC](https://community.gladysassistant.com/t/developpement-integration-nuki/9729/15 "2025-12-01T09:42:27Z")

</div>

Salut @ProtZ,

Est-ce que ça te dirait de faire une nouvelle review en appel vidéo avec partage d’écran comme la dernière fois ?

Je suis dispo cet après-midi, ou tous les soirs de cette semaine, ou vendredi en journée.

J’aurais aimé des testeurs en réel, mais bon, tanpis, on ne va pas attendre éternellement 🙂

---

<div class="post-metadata">

**Author:** ![ProtZ](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/protz/32/1641_2.png) [@ProtZ](https://community.gladysassistant.com/u/ProtZ)\
**Post date:** [Décembre 5, 2025, 6:02 UTC](https://community.gladysassistant.com/t/developpement-integration-nuki/9729/16 "2025-12-05T18:02:20Z")

</div>

Hello @pierre-gilles ; on peut organiser ça oui par contre en ce moment je suis vraiment charrette avec le taf et les gosses 😕  
On se peut se synchro par MP ?

---

<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:** [Décembre 6, 2025, 7:58 UTC](https://community.gladysassistant.com/t/developpement-integration-nuki/9729/17 "2025-12-06T07:58:59Z")

</div>

Yes je t’envoie un MP !

---

<div class="post-metadata">

**Author:** ![StephaneB](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/stephaneb/32/15443_2.png) [@StephaneB](https://community.gladysassistant.com/u/StephaneB)\
**Post date:** [Décembre 7, 2025, 11:52 UTC](https://community.gladysassistant.com/t/developpement-integration-nuki/9729/18 "2025-12-07T11:52:53Z")

</div>

J’ai pris le temps de tester aujourd’hui cette nouvelle intégration. Désolé d’avoir zappé que je vous avais proposé de le faire…

Je me suis mis dans la situation suivante pour tester : A priori ne pas lire les explications de ce post, et me contenter de ce qui est écrit les pages de l’intégration. Et ne lire les explications de ce post que si nécessaire 😉

J’ai testé pour l’instant l’intégration Web. J’essaie de tester l’intégration MQTT plus tard dans la journée…

Mes suggestions pour améliorer l’intégration Web (mais globalement ça marche très bien, bravo !!!) :

- Dans la page intégrations\>Nuki
  - La page ‹&nbsp;appareils&nbsp;› affiche une explication intéressante quand on n’a pas encore de configuration MQTT (de mémoire, un texte qui explique qu’il y a deux façons de se connecter: soit en MQTT soit via NukiWeb). Mais dès qu’on a un MQTT configuré, cette explication n’apparait plus et on voit les deux boutons Découverte MQTT et Découverte Web. Je pense que l’explication devrait rester visible tant qu’on a pas fait de découverte d’appareil.
  - La page ‹&nbsp;Configuration&nbsp;› est en fait spécifique à la version ‹&nbsp;web&nbsp;›. Donc peut-être la renommer ‹&nbsp;Configuration Web&nbsp;›
  - Dans cette page ‹&nbsp;Configuration&nbsp;›, ajouter une précision à l’étape 1: "Si vous n’avez pas encore de compte Nuki Web, créez-en un en suivant les explications de [https://help.nuki.io/hc/fr/articles/360016485718-Activer-et-désactiver-un-compte-Nuki-Web](https://help.nuki.io/hc/fr/articles/360016485718-Activer-et-d%C3%A9sactiver-un-compte-Nuki-Web)
  - Sur la page NukiWeb, une clé API s’affiche en premier, mais je comprends que ce n’est pas la clé dont tu as besoin, et qu’il faut bien descendre un peu dans la page pour générer un jeton API. Peut-être que ta page configuraition pourrait préciser cela à l’étape 3 : «&nbsp;… (Attention, il ne s’agit pas de la clé OAuth2, mais bien d’un jeton à créer spécifiquement)&nbsp;». Et dans toutes les pages où tu utilises le terme Clé API, peut-être le remplacer par Jeton d’API ?
  - Quand on crée le jeton API sur NukiWeb, on peut cocher/décocher les droits à donner. Tu as besoin de tous ? Ca serait bien d’indiquer les droits à cocher qui te sont vraiment nécessaires, pour ne pas donner des droits en fait inutiles.
  - Quand la clé API est enregistrée dans Gladys, elle s’affiche avec des astérisques, et le bouton «&nbsp;Enregistrer la configuration&nbsp;» est actif. Je n’ai pas fait l’essai, mais si je clique à nouveau sur ce bouton, ça va écraser la vraie clé saisie précédemment (par exemple ‹&nbsp;qslkjhqdgiuyzeart&nbsp;›) par ‹&nbsp;qsl\*\*\*\*\*\*\*\*\*\*art&nbsp;› et ça ne marchera plus ? Je suggère de griser le bouton tant que rien de nouveau n’est saisi dans le champ Clé API…
  - Après la saisie d’une clé API valide, il pourrait y avoir un texte qui invite à aller sur la page «&nbsp;Découverte Web&nbsp;»
  - dans la page Découverte Web, le texte dit «&nbsp;Découverte automatique…&nbsp;» mais je n’ai pas compris tout de suite qu’il fallait quand même cliquer sur le bouton «&nbsp;Rechercher&nbsp;»

- Dans le dashboard, l’ajout de la serrure avec le widget Appareil est très clair, top. Juste un détail : un clic sur verrouiller/déverrouiller met un temps variable pour s’effectuer, entre ‹&nbsp;immédiat&nbsp;› et plusieurs secondes. Il pourrait peut-être y avoir une info qui invite à patienter, pour éviter des clics intempestifs ?

---

<div class="post-metadata">

**Author:** ![StephaneB](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/stephaneb/32/15443_2.png) [@StephaneB](https://community.gladysassistant.com/u/StephaneB)\
**Post date:** [Décembre 7, 2025, 1:27 UTC](https://community.gladysassistant.com/t/developpement-integration-nuki/9729/19 "2025-12-07T13:27:19Z")

</div>

Bon, ben je ne pourrai en fait pas tester le fonctionnement MQTT, car j’ai une serrure 3.0 et le MQTT n’est présent que sur la serrure 3.0 Pro et à partir de 4.0 🥲

Est-ce que c’est peut-être une précision à apporter dans l’explication initiale sur la page ‹&nbsp;Appareils&nbsp;› et dans la page ‹&nbsp;Découverte MQTT&nbsp;› ?

---

<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:** [Décembre 8, 2025, 8:16 UTC](https://community.gladysassistant.com/t/developpement-integration-nuki/9729/20 "2025-12-08T08:16:45Z")

</div>

Merci pour ton test @StephaneB avec des remarques très pertinentes !

> [@StephaneB](#):
>
> Dans le dashboard, l’ajout de la serrure avec le widget Appareil est très clair, top. Juste un détail : un clic sur verrouiller/déverrouiller met un temps variable pour s’effectuer, entre ‹ immédiat › et plusieurs secondes. Il pourrait peut-être y avoir une info qui invite à patienter, pour éviter des clics intempestifs ?

Normalement, dans Gladys, le clic doit être instantané, même si derrière l’action met plus de temps à être propagée à l’appareil connecté. C’est bien le cas où tu vois carrément un blocage de l’interface ?

[Page suivante](https://community.gladysassistant.com/t/developpement-integration-nuki/9729.md?page=2)
