Tuto Nuki & Lifedomus
#1
Bonjour,

Je me permets de reprendre le tuto original de Jonathan HSD pour l'intégration des serrures Nuki à la Lifedomus.
Son tuto fonctionnait parfaitement bien si vous aviez  UNE Nuki connectée à un bridge.
Mon besoin était de contrôler PLUSIEURS serrures avec UN bridge.
Son travail m'a énormément aidé à généraliser ce besoin, et je vous partage le fruit de mes recherches.

J'ai pris une approche un peu différente qui correspond à ce que j'ai fait pour Surveillance Station : je "comprenais" ce que j'y avais fait, mais je n'arrive pas à comprendre toutes les astuces de Jonathan (nous n'avons évidemment pas le même niveau de compétences).

Cette serrure et tous les accessoires nécessaires peuvent être trouvés ici :
http://homesweetshop.eu/produit/pack-ser...ombo-nuki/
Il s'agit du bundle Serrure Nuki et son bridge afin de pouvoir le piloter à distance et d'avoir accès à son API : https://nuki.io/fr/api/ (Bridge http-API)

Le but étant de récupérer son état d'ouverture/fermeture et l'état des piles + envoyer les différentes commandes disponibles ouverture, déverrouillage et verrouillage.

1. Activation API

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
- mettre la Bridge en mode maintenance
- Une fois arrivé dans la section de gestion de la Bridge, presser 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_NUKIx
(où x prend les valeurs de 0 à nbr de Nuki connectés au Bridge - 1)

Voici un exemple de retour de cette URL/API :

Code :
    [
     {
       "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",
       "lastKnownState": {
         "state": 1,
         "stateName": "locked",
         "batteryCritical": false,
         "timestamp": "2019-01-12T14:47:54+00:00"
       }
     }
    ]

2. Rappel sur les actions et les états disponibles.

Pour l’état 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 : porte en cours d’ouverture
(bien comprendre la différence entre déverrouillé et ouverture)

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

3. Création du connecteur Universel http

Lancer votre Config Studio puis dans les connecteurs du pack Connectivité Avancée, ajouter un connecteur Universel HTTP.

Entrez les paramètres suivant :

Label : Nuki API
IP ou nom de domaine : IP_NUKI:PORT_NUKI
Token URL : TOKEN_NUKI
Persistance… : Vrai

Y insérer le code JavaScript suivant :
Code :
    obj = JSON.parse(trame)
    ldprint (obj)
    try {
        for (i=0; i < 500; i++) {
            ldprint ("Nuki" + i + "_Name = " + obj[i].name)
            eval ("Nuki" + i + "_Name = obj[" + i + "].name")
    
            ldprint ("Nuki" + i + "_Id = " + obj[i].nukiId)
            ldprint ("typeof Nuki" + i + "_Id = " + typeof obj[i].nukiId)
            eval ("Nuki" + i + "_Id = obj[" + i + "].nukiId")
            
            ldprint ("Nuki" + i + "_State = " + obj[i].lastKnownState.state)
            ldprint ("typeof Nuki" + i + "_State = " + typeof obj[i].lastKnownState.state)
            eval ("Nuki" + i + "_State = obj[" + i + "].lastKnownState.state")        
    
            ldprint ("Nuki" + i + "_BatteryCritical = " + obj[i].lastKnownState.batteryCritical)
            ldprint ("typeof Nuki" + i + "_BatteryCritical = " + typeof obj[i].lastKnownState.batteryCritical)
            eval ("Nuki" + i + "_BatteryCritical = obj[" + i + "].lastKnownState.batteryCritical")        
    
            ldprint ("Nuki" + i + "_Timestamp = " + obj[i].lastKnownState.timestamp)
            eval ("Nuki" + i + "_Timestamp = obj[" + i + "].lastKnownState.timestamp")        
        }
    }
    catch (err) {
        ldprint ("error at i = " + i)
    }
Lire la suite dans le pdf joint, car soucis avec le forum ...


Pièces jointes
.pdf   Tuto - Nuki & Lifedomus.pdf (Taille : 336.1 Ko / Téléchargements : 98)
Likes Received: 179 in 132 posts
Likes Given: 150
Répondre
#2
Merci pour le partage !

J'en avais commandé une chez Orange mais elle est repartie à l'envoyeur pour non WAF compliance :(
Répondre
#3
je l'avais raté encore ce tuto ;-)

Toujours au top @jojo Amen-1fb6
Répondre
#4
hello,
je relance le sujet, je me rouille avec LS ;(.
Je vois pas la manière de configurer le token dans le connecteur avancé universel http !

Merci par avance.
Arnaud
Répondre
#5
Alors oui, c'est parfois un peut galère.
Pour le retrouver, j'ai choisi le Type d'Authentification = OAUTH, et ensuite dans le bas je vois le champ URL Token.
Essaye en savant ainsi puis en remettant le type d'Authentification = ?
Répondre
#6
(05-03-2019, 10:54 PM)jojo a écrit : Alors oui, c'est parfois un peut galère.
Pour le retrouver, j'ai choisi le Type d'Authentification = OAUTH, et ensuite dans le bas je vois le champ URL Token.
Essaye en savant ainsi puis en remettant le type d'Authentification = ?

Hello Jojo, merci pour la réponse. Effectivement, ca a l air de prendre en compte...
Mais c'est pas concluant :(
Rien dans le listener du connecteur (https://192.168.1.xxx:8443/listener?5&se...r_key=xxxx)
Rien dans http://192.168.1.xxx:8080/UniversalListen?trame=Nuki

et le connecteur se met en  error = Invalid credentials.

Bref, tjs aussi compliquée la LD...
Répondre
#7
as-tu bien activé l'api au niveau du bridge de la Nuki ?
Répondre
#8
(05-04-2019, 05:07 PM)jojo a écrit : as-tu bien activé l'api au niveau du bridge de la Nuki ?

Oui, oui, tout fonctionne très bien sous jeedom !
Répondre
#9
sur base du peu d'info en ma disposition, il m'est difficile de t'i
aider plus. La seule chose que je peux confirmer, c'est que cela fonctionne Nickel chez moi.
Likes Received: 179 in 132 posts
Likes Given: 150
Répondre
#10
(05-04-2019, 05:23 PM)jojo a écrit : sur base du peu d'info en ma disposition, il m'est difficile de t'i
aider plus. La seule chose que je peux confirmer, c'est que cela fonctionne Nickel chez moi.

je vais reprendre le tuto a tête reposée, pas à pas !
Merci et bon WE.
Répondre




Utilisateur(s) parcourant ce sujet : 1 visiteur(s)