Home Assistant - Nuki Bridge 2.0

Home Assistant - Nuki Bridge 2.0

Uwielbiam możliwości Home Assistant i tworzenia zaawansowanych automatyzacji na podstawie tego co mamy już w domu! Tutaj pokażę co możemy zrobić z naszym zamkiem NUKI (w tym co możemy z niego odczytać).

Na wstępie muszę wyjaśnić, że przedstawiam tutaj wersję Combo a więc Smart Lock + Bridge (WiFi), jeżeli nie wiem jak to działa, przeczytaj: Nuki Combo 2.0 (Smart Lock + Bridge) a dodatkowo: Smart zamek w Google Home na przykładzie Nuki urządzenie trafiło do mnie ze sklepu Z-Home.pl.

IoT class: Local Polling

Rozczarowanie

Pierwsze a zarazem ostatnie rozczarowanie - mimo, że NUKI posiada czujnik otwarcia drzwi i wykorzystuje go w swoich wewnętrznych automatyzacjach, nie możemy go odczytać w Home Assistant. Więc nie wiemy kiedy drzwi są otwarte - jedynie możemy odczytać stan zamka :( 

Możemy wysłać 3 polecenia:

  • lock - zamknięcie zamka
  • unlock - otwarcie zamka - wymagany kod PIN!
  • open - otarcie zamka oraz naciśnięcie klamki (skutkuje to uchyleniem drzwi) - wymagany kod PIN!
  • nie możemy wysłać lock n go (nie do końca opisuję to na w punkcie bezpieczeństwo)  

Konfiguracja

Musimy ustalić stałe IP dla Nuki Bridge w ustawieniach naszego routera jak w sumie w każdym innym urządzeniu sterowanym lokalnie.

Następnie na telefonie wchodzimy w aplikację i na zarządzenie naszym NUKI BRIDGE (nie mylić z NUKI LOCK) - trzymamy przycisk na obudowie NUKI BRIDGE aż go aplikacja wykryje i włączamy w aplikacji w telefonie HTTP API. Kopiujemy API token (to nie jest to samo co WEB API). Ten token jest krótki (6 - 20 znaków).

lock:
  - platform: nuki
    host: 192.168.0.59
    token: aaf1cu

Automatyzacje 

Ja oczywiście używam do automatyzacji Node-RED i wygląda to np. tak:

Jak widzicie moją automatyzację oparłem na zamku górnym: Czujnik otwarcia / zamknięcia - drzwi / okien Xiaomi Aqara Zigbee - sprawdzanie stanu zamka drzwi wejściowych - do którego NUKI nie jest wpięty - jak go otworzę to się ma NUKI otworzyć a jak zamknę to NUKI też zamknąć. A jak wychodzę bez kluczy to się zamknie tylko NUKI. Oczywiście to postawione jest tylko testowo ale zabezpiecza nas na ewentualność wyładowania się telefonu gdy nie mamy w zamku sprzęgła czy też otwierania jednym kluczem kilku zamków. 

[
    {
        "id": "6eb94779.187888",
        "type": "server-state-changed",
        "z": "af8908f3.ef9e38",
        "name": "Lock Door Hallway close? ",
        "server": "b3e9b226.7fd0c",
        "version": 1,
        "exposeToHomeAssistant": false,
        "haConfig": [
            {
                "property": "name",
                "value": ""
            },
            {
                "property": "icon",
                "value": ""
            }
        ],
        "entityidfilter": "binary_sensor.0x00158d00044b7364_contact",
        "entityidfiltertype": "exact",
        "outputinitially": false,
        "state_type": "str",
        "haltifstate": "on",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "outputs": 2,
        "output_only_on_state_change": true,
        "x": 150,
        "y": 640,
        "wires": [
            [
                "57385ace.5de4e4",
                "55597f4.34f2f8"
            ],
            [
                "941a05d9.987488"
            ]
        ]
    },
    {
        "id": "ed8b6fcf.6158e",
        "type": "api-current-state",
        "z": "af8908f3.ef9e38",
        "name": "Lock Door Hallway close? ",
        "server": "b3e9b226.7fd0c",
        "version": 1,
        "outputs": 2,
        "halt_if": "on",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "override_topic": false,
        "entity_id": "binary_sensor.0x00158d00044b7364_contact",
        "state_type": "str",
        "state_location": "payload",
        "override_payload": "msg",
        "entity_location": "data",
        "override_data": "msg",
        "blockInputOverrides": false,
        "x": 570,
        "y": 640,
        "wires": [
            [
                "a52a261a.4ffe08"
            ],
            []
        ]
    },
    {
        "id": "57385ace.5de4e4",
        "type": "trigger",
        "z": "af8908f3.ef9e38",
        "op1": "",
        "op2": "",
        "op1type": "nul",
        "op2type": "payl",
        "duration": "5",
        "extend": true,
        "units": "min",
        "reset": "",
        "bytopic": "all",
        "name": "",
        "x": 370,
        "y": 640,
        "wires": [
            [
                "ed8b6fcf.6158e"
            ]
        ]
    },
    {
        "id": "82bf21f4.ef8df",
        "type": "api-call-service",
        "z": "af8908f3.ef9e38",
        "name": "Zamek w drzwiach...",
        "server": "b3e9b226.7fd0c",
        "version": 1,
        "debugenabled": false,
        "service_domain": "tts",
        "service": "google_translate_say",
        "entityId": "media_player.mini_hallway",
        "data": "{\"message\":\"Zamek w drzwiach wejściowych dalej otwarty!\",\"language\":\"pl\"}",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "payload",
        "output_location_type": "msg",
        "mustacheAltTags": false,
        "x": 1020,
        "y": 600,
        "wires": [
            [
                "a2706f29.cc3e4"
            ]
        ]
    },
    {
        "id": "a52a261a.4ffe08",
        "type": "api-current-state",
        "z": "af8908f3.ef9e38",
        "name": "Awesome w domu?",
        "server": "b3e9b226.7fd0c",
        "version": 1,
        "outputs": 2,
        "halt_if": "home",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "override_topic": false,
        "entity_id": "group.awesome_people",
        "state_type": "str",
        "state_location": "payload",
        "override_payload": "msg",
        "entity_location": "data",
        "override_data": "msg",
        "blockInputOverrides": false,
        "x": 790,
        "y": 640,
        "wires": [
            [
                "82bf21f4.ef8df",
                "62b44261.bca51c"
            ],
            []
        ]
    },
    {
        "id": "e39f2a37.3b9148",
        "type": "api-call-service",
        "z": "af8908f3.ef9e38",
        "name": "Lock Home Door",
        "server": "b3e9b226.7fd0c",
        "version": 1,
        "debugenabled": false,
        "service_domain": "lock",
        "service": "lock",
        "entityId": "lock.home_door",
        "data": "",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "payload",
        "output_location_type": "msg",
        "mustacheAltTags": false,
        "x": 850,
        "y": 780,
        "wires": [
            []
        ]
    },
    {
        "id": "de90aafe.0c9138",
        "type": "api-call-service",
        "z": "af8908f3.ef9e38",
        "name": "Unlock Home Door",
        "server": "b3e9b226.7fd0c",
        "version": 1,
        "debugenabled": false,
        "service_domain": "lock",
        "service": "unlock",
        "entityId": "lock.home_door",
        "data": "{\"code\":\"6008\"}",
        "dataType": "json",
        "mergecontext": "",
        "output_location": "payload",
        "output_location_type": "msg",
        "mustacheAltTags": false,
        "x": 630,
        "y": 580,
        "wires": [
            []
        ]
    },
    {
        "id": "9a3df0c8.c5199",
        "type": "api-current-state",
        "z": "af8908f3.ef9e38",
        "name": "Lock Door Hallway close? ",
        "server": "b3e9b226.7fd0c",
        "version": 1,
        "outputs": 2,
        "halt_if": "on",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "override_topic": false,
        "entity_id": "binary_sensor.0x00158d00044b7364_contact",
        "state_type": "str",
        "state_location": "payload",
        "override_payload": "msg",
        "entity_location": "data",
        "override_data": "msg",
        "blockInputOverrides": false,
        "x": 570,
        "y": 740,
        "wires": [
            [],
            [
                "e39f2a37.3b9148"
            ]
        ]
    },
    {
        "id": "941a05d9.987488",
        "type": "trigger",
        "z": "af8908f3.ef9e38",
        "op1": "",
        "op2": "",
        "op1type": "nul",
        "op2type": "payl",
        "duration": "5",
        "extend": true,
        "units": "s",
        "reset": "",
        "bytopic": "all",
        "name": "",
        "x": 360,
        "y": 740,
        "wires": [
            [
                "9a3df0c8.c5199"
            ]
        ]
    },
    {
        "id": "55597f4.34f2f8",
        "type": "api-current-state",
        "z": "af8908f3.ef9e38",
        "name": "Awesome w domu?",
        "server": "b3e9b226.7fd0c",
        "version": 1,
        "outputs": 2,
        "halt_if": "home",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "override_topic": false,
        "entity_id": "group.awesome_people",
        "state_type": "str",
        "state_location": "payload",
        "override_payload": "msg",
        "entity_location": "data",
        "override_data": "msg",
        "blockInputOverrides": false,
        "x": 390,
        "y": 580,
        "wires": [
            [],
            [
                "de90aafe.0c9138"
            ]
        ]
    },
    {
        "id": "62b44261.bca51c",
        "type": "api-current-state",
        "z": "af8908f3.ef9e38",
        "name": "Home Door  close? ",
        "server": "b3e9b226.7fd0c",
        "version": 1,
        "outputs": 2,
        "halt_if": "unlocked",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "override_topic": false,
        "entity_id": "lock.home_door",
        "state_type": "str",
        "state_location": "payload",
        "override_payload": "msg",
        "entity_location": "data",
        "override_data": "msg",
        "blockInputOverrides": false,
        "x": 830,
        "y": 720,
        "wires": [
            [
                "e39f2a37.3b9148"
            ],
            []
        ]
    }
]

Czyli możemy zupełnie zrezygnować z używania aplikacji NUKI i zarządzać zamkiem przez HA np. na podstawie zalogowania się do sieci WiFi/BT czy innej automatyzacji jak np. Alarm szczekający pies 

Bezpieczeństwo

Sterowanie działa tylko z sieci lokalnej. Tylko, że to jest normalny URL i wygląda tak (można go wpisać w przeglądarkę): http://192.168.0.59:8080/lockAction?token=aaf1cu&nukiId=487800093&action=3&noWait=1 i teraz ciekawostka, jak zmienimy action=4 to po prostu mamy lock n go - czyli każdy zalogowany w naszej sieci WiFi może takie polecenie wysłać znając ID i token - który idzie sobie po http...

Oczywiście port, token i ip możemy zmieniać (dwa pierwsze w aplikacji, ostatnie na routerze). Więc nie jest tak źle ;) 

Podsumowanie

Sam zamek jest po prostu genialnym uzupełnieniem smart home ale czy mamy do niego zaufanie aby używać go na co dzień? Jestem ciekaw Waszych opinii. Dla mnie zamykanie zamka drzwi jest po prostu genialnie ale czy otwieranie też, tego nie jestem już taki pewien...


Chcesz wiedzieć więcej? Dołącz do naszej grupy na FB - będzie nam też miło jak polubisz nasz Fanpage!