Introduction
    • Un QA par Serrure Nuki (choix délibéré, car si plusieurs serrures, elles seraient dans différentes pièces) 
    • Vous devez avoir un Nuki bridge, car tout passe par lui (qui peut servir plusieurs serrures) (=> Nuki v1 ou v2)
    • Merci à @Lazer, @jjacques68, @Did, @fredokl, …, pour leurs précieux conseils   Objectif
    • récupérer l'état d'ouverture/fermeture 
    • récupérer l'état des piles (de la serrure et du keypad si associé)
    • envoyer commande d'ouverture
    • envoyer commande de déverrouillage (et simple clic sur l'icône)
    • envoyer commande de verrouillage (et simple clic sur l'icône)
    • envoyer commande de lock’n’go (verrouillage temporisé)
    • envoyer commande de lock’n’go précédé d’une ouverture de porte Activation API
La totalité de l'API est disponible ici : https://developer.nuki.io/page/documents/1/ Pour commencer, nous allons avoir besoin d’activer le mode Développeur via l’app sur Mobile. Cette manipulation peut être effectuée à l’installation du système :
- Vous tomberez sur une page de recherche des réseaux WIFI et sur la partie basse, cocher la case API HTTP.
OU
Si vous avez déjà installé votre Nuki, procéder comme suit :
- aller dans section gérer la Bridge (menu général de l'app -> Gérer mes appareils -> Bridge -> gérer la Bridge)
- mettre la Bridge en mode maintenance
- Une fois arrivé dans la section de gestion de la Bridge, pr   esser sur l'icône de Bridge puis activer le HTTP API.  Vous obtiendrez l’adresse IP du bridge, le port (par défaut le 8080) et surtout le token (jeton) à noter précieusement pour la suite de ce tuto.
Une fois ces éléments enregistrés terminer l’installation de la Nuki.
Pour la suite, on notera les éléments suivant :
    • IP du bridge = IP_NUKI
    • Port du bridge (par défaut le 8080) = PORT_NUKI
    • Token = TOKEN_NUKI Il reste encore à récupérer les IDs des NUKIs, pour cela ouvrir une page d’un navigateur internet.
Puis entrez l’url suivante :
http://IP_NUKI:PORT_NUKI/list?token=TOKEN_NUKI Vous devriez recevoir en retour l’état de vos Nukis avec leur nukiID qu’on notera par la suite ID_NUKI
Voici un exemple de retour de cette URL/API :
    [
     {
       "deviceType": 0,
       "nukiId": 123456789,
       "name": "Entrée",
       "firmwareVersion": "1.14.1",
       "lastKnownState": {
              "mode": 2,
              "state": 3,
              "stateName": "unlocked",
              "batteryCritical": false,
              "batteryCharging": false,
              "batteryChargeState": 34,
              "keypadBatteryCritical": false,
              "timestamp": "2022-07-24T07:45:45+00:00"
       }
     },
     {
       "deviceType": 0,
       "nukiId": 123456780,
       "name": "Cuisine",
       "firmwareVersion": "1.14.1",
       "lastKnownState": {
              "mode": 2,
              "state": 1,
              "stateName": "locked",
              "batteryCritical": false,
              "batteryCharging": false,
              "batteryChargeState": 62,
              "timestamp": "2022-07-24T20:00:06+00:00"
       }
     }
    ]   Résumé sur les actions et les états disponibles
Pour l’état (State) de la Nuki, nous obtenons une valeur numérique :
    0 : non calibré (à faire à l’installation pour que la Nuki sache se positionner)
    1 : verrouillé
    2 : déverrouillage en cours
    3 : déverrouillé
    4 : verrouillage en cours
    5 : porte ouverte
    6 : lock’n’go (verrouillage temporisé)
    7 : lock’n’g (porte en cours d’ouverture)
    (! bien comprendre la différence entre déverrouillé et ouverture)
    254 : moteur bloqué
    255 : erreur inconnue   Pour les actions possibles :
    1 : déverrouillage
    2 : verrouillage
    3 : ouverture porte
    4 : lock’n’go (verrouillage temporisé)
    5 : lock’n’go précédé d’une ouverture de porte   Variables du QA A partir de la v5.0 du code, des variables sont générées automatiquement pour pouvoir, par exemple, être facilement réutilisées dans GEA   Configuration du QA Toute la configuration personnelle se fait dans le fichier "config". Les informations suivantes doivent être complétées pour que le QA fonctionne.     • ip = IP_NUKI - 192.168.1.xxx
    • port = PORT_NUKI - 8080
    • token = TOKEN_NUKI - abcdef
    • id = ID_NUKI - 123456789
    • refresh = par défaut 10s (si inférieur, il affiche une erreur-. C'est l'intervalle de temps auquel le QA va interroger la serrure pour connaître son état.
  Icones
Ce QA est de type "Doorlock". Chargez d'abord ces deux icônes pour le statut du Nuki si batterie ok :
Ensuite ces deux ci pour batterie à remplacer : Chacun de ces sets de 2 icônes à UN id. Voir ici comment le récupérer. ID des icônes sous HC3 - La Home Center pour les nuls - Domotique-fibaro Une voit récupérés, les introduire ici dans le fichier "config" (remplacer 0 par le vrai ID) icones = { batteryOK = 0, batteryKO = 0, roomOpen = "", roomClose = "", } N.B. si vous laissez 0, le QA utilisera l'icône par défaut et ne la modifiera pas en fonction de l'état de la batterie. si vous laissez "" pour les icônes des pièces, le QA utilisera l'icône par défaut de la pièce, et ne la modifiera pas en fonction de l'état de la serrure.   Le QA   Nuki_v5.0.fqa si vous avez déjà la version >= 4.0 vous pouvez simplement remplacer le code par cette version du code (et supprimer toutes les variables) :   Nuki_v5.0_main.lua Nuki_v5.0_config.lua   Historique des versions -- v5.0 (12/02/2024) : fichier config au lieu de variables -- v4.2 (31/01/2024) : bug changement de statut -- v4.1 (31/01/2024) : icone de la pièce -- v4.0 (21/01/2024) : optimisation du code (écrire que si changement) -- QA de type DoorLock -- v3.0 (19/12/2022) : colorisation des labels -- v2.0 (14/11/2022) -- v1.0 (26/09/2022) : initial version   Idées d'utilisation
    • Verrouiller toutes les portes au coucher
    • Verrouiller toutes les portes lorsque l'alarme générale est branchée
    • Envoyer une notification quand il faut changer les piles d'une serrure   Limitations
Si le json ne sait pas retourner toutes les valeurs du tableau (car par exemple la serrure a perdu sa connexion avec la Bridge), les informations retournées peuvent ne pas être fiables.
Exemple 1 :
Si la serrure "Entrée" n'est plus connectée à la bridge, le json retourné ressemblera à ceci :
     {
       "nukiId": 123456789,
       "name": "Entrée",
     },
     {
       "nukiId": 123456780,
       "name": "Cuisine",
       "firmwareVersion": "1.7.3",
       "lastKnownState": {
         "state": 1,
         "stateName": "locked",
         "batteryCritical": false,
         "timestamp": "2019-01-12T14:47:54+00:00"
       }
     }
    ]
Exemple 2 :
Si la serrure "Cuisine" n'est plus connectée à la bridge, le json retourné ressemblera à ceci :
     {
       "nukiId": 123456789,
       "name": "Entrée",
       "lastKnownState": {
         "state": 1,
         "stateName": "locked",
         "batteryCritical": false,
         "timestamp": "2019-01-12T13:04:25+00:00"
       }
     },
     {
       "nukiId": 123456780,
       "name": "Cuisine",
       "firmwareVersion": "1.7.3",
     }
    ]