L’intégration Nuki pour home assistant est un peu limitée pour le moment. Voici comment j’ai simplement intégré un nuki lock dans mon système en utilisant l’API json locale.
Pré requis
- Définissez une adresse IP fixe sur votre bridge nuki (ma préférence est via une entrée statique dans mon serveur DHCP). Chez moi, ce sera 192.168.0.50.
- Avoir ouvert l’accès local sur votre nuki bridge et définit un mot de passe que vous connaissez. (appelé « montoken » sur la suite de l’article)
Configuration des secrets
On commence par se créer 2 secrets : un pour récupérer des informations, l’autre pour effectuer des actions.
nuki_lock_api_action: 'http://192.168.0.50:8080/lockAction?nukiId=monid&action={{ action }}&token=montoken'
nuki_lock_api_info: 'http://192.168.0.50:8080/list?token=montoken'
Notez qu’il y a un nukiId à renseigner. Vous pourrez le retrouver en invokant
http://192.168.0.50:8080/list?token=montoken
et vous obtiendrez quelque chose qui ressemble à cela : ( l’id est 123456789 ici et la date est volontairement incohérente)
[{"deviceType": 0, "nukiId": 123456789, "name": "Porte", "firmwareVersion": "1.13.1", "lastKnownState": {"mode": 2, "state": 1, "stateName": "locked", "batteryCritical": false, "batteryCharging": false, "batteryChargeState": 34, "timestamp": "2050-11-32T04:01:24+00:00"}}]
Configuration
Commande rest
On commande par créer une commande REST
rest_command:
nuki_command:
url: !secret nuki_lock_api_action
timeout: 20
Notez le timeout à 20.
Le Nuki Bridge est mono threadé, ce qui signifie qu’il ne sait faire qu’une seule chose à la fois. Donc s’il est en train de vous répondre s’il est verrouillé ou pas, il ne peut pas immédiatement fermer le verrou et vice-versa.
Puis on crée une commande pour récupérer les informations régulièrement :
rest:
- resource: !secret nuki_lock_api_info
scan_interval: 30
sensor:
- name: nuki_info_raw
json_attributes_path: "$[0].lastKnownState"
value_template: "OK"
json_attributes:
- state
- stateName
- batteryCritical
- batteryChargeState
Mise en forme
On met en forme les informations récupérer en brut précédemment.
template:
- binary_sensor:
- name: nuki_porte_etat
state: "{{ is_state_attr('sensor.nuki_info_raw','state', 3) }}"
device_class: lock
- name: nuki_porte_battery_critical
state: "{{ is_state_attr('sensor.nuki_info_raw', 'batteryCritical', true) }}"
device_class: battery
- sensor:
- name: nuki_porte_battery
state: "{{ state_attr('sensor.nuki_info_raw','batteryChargeState') }}"
device_class: battery
Ce qui donne :
Et on peut également utiliser le templace « lock » prévu à cet effet.
lock:
- platform: template
name: Verrou Porte entree
# value_template: true
value_template: "{{ is_state('binary_sensor.nuki_porte_etat', 'true') }}"
lock:
service: rest_command.nuki_command
data:
action: 2
unlock:
service: rest_command.nuki_command
data:
action: 3
Ce qui donne :
et on a l’historique bien sûr 🙂
Voici le détail des codes « action » :
Code | Action | Signification |
1 | unlock | Ouvre le verrou |
2 | lock | Ferme le verrou |
3 | unlatch | Ouvre le verrou et la gache |
4 | lock’n’go | Déverrouille et verrouille à nouveau après un délai configuré |
5 | lock’n’go with unlatch | Idem que #4 mais avec la gache |
bonjour,
merci pour ces informations super intéressante.
en ce qui me concerne, j’ai installé l’application Nuki sur Home Assistant.
le problème c’est que quand j’ouvre la porte en appuyant le bouton de la serrure qui exécuté un lock’n’go, Home Assistant ne voit pas le serrure fermé et l’affiche ouverte.
ma Nuki smart lock est connecté via un bridge