Nuki 5.0 Pro
Ultra-responsive ESPHome external component for the Nuki 5.0 Pro smart lock. Runs the BLE stack on a dedicated FreeRTOS task so the ESPHome main loop never bloc
ESP32 Nuki FreeRTOS: W5500 Ethernet과 BLE를 이용한 스마트 도어록 브리지
PROJECT DESCRIPTION
ESP32 Nuki FreeRTOS는 Nuki Smart Lock을 Home Assistant에서 제어할 수 있도록 만든 오픈소스 프로젝트입니다.
이 프로젝트에서 ESP32-S3는 두 장치 사이를 연결하는 Bridge 역할을 합니다.
Home Assistant와는 W5500 Ethernet으로 통신
Nuki Smart Lock과는 BLE로 통신
사용자가 Home Assistant에서 문 잠금 또는 잠금 해제 명령을 보내면, 명령은 Ethernet을 통해 ESP32-S3로 전달됩니다.
ESP32-S3는 이 명령을 BLE 신호로 바꾸어 Nuki Smart Lock에 전달합니다.
WHAT IS NUKI SMART LOCK?
Nuki Smart Lock은 일반 출입문 안쪽에 설치하는 전동식 스마트 도어록입니다.
도어록 내부의 모터가 기존 열쇠나 실린더를 실제로 회전시켜 문을 잠그거나 열어 줍니다.
사용자는 다음과 같은 방식으로 도어록을 제어할 수 있습니다.
- Nuki 스마트폰 App
- Nuki Keypad
- Nuki Fob
- Matter 기반 스마트홈 시스템
- Home Assistant와 같은 외부 플랫폼
Nuki Smart Lock Pro 5th Generation은 기존 실린더를 교체하지 않고 문 안쪽에 장착하는 방식입니다.
Nuki Smart Lock Ultra는 더 작은 크기와 빠른 동작을 목표로 개발된 모델이며, 전용 Universal Cylinder와 함께 사용됩니다.
이 프로젝트는 Nuki Smart Lock과 ESP32-S3를 BLE로 직접 연결합니다.
WHY THIS PROJECT WAS DEVELOPED
ESPHome은 일반적으로 네트워크 통신, 센서 처리, 장치 제어를 하나의 Main Loop에서 실행합니다.
하지만 BLE 통신은 다음과 같은 작업을 수행하기 때문에 시간이 오래 걸릴 수 있습니다.
- 주변 BLE 장치 검색
- Nuki 도어록 연결
- Pairing 및 인증
- 잠금 또는 잠금 해제 명령 전송
- 도어록 응답 대기
- 현재 상태 확인
- 연결 실패 시 재시도
- BLE 작업이 Main Loop를 오래 점유하면 Home Assistant 통신도 느려질 수 있습니다.
- 예를 들어 Nuki 연결이 지연될 경우 다음과 같은 문제가 발생할 수 있습니다.
- Home Assistant 명령 응답 지연
- Ethernet 통신 지연
- 잠금 상태 업데이트 지연
- 다른 ESPHome 기능 정지
- Watchdog Timeout 발생
BLE 응답이 늦어져도 Home Assistant API와 Ethernet 통신이 같이 멈추지 않도록 네트워크 작업과 BLE 작업을 서로 다른 CPU Core에 분리했습니다
KEY FEATURES
W5500 Wired Ethernet
Home Assistant와 ESP32-S3 사이를 안정적인 유선 LAN으로 연결합니다.
BLE Smart Lock Control
ESP32-S3가 BLE를 이용해 Nuki Smart Lock에 직접 명령을 전달합니다.
Dual-core Processing
Ethernet과 ESPHome은 Core 1에서, Nuki BLE 통신은 Core 0에서 실행됩니다.
Non-blocking Operation
BLE 연결이 지연되더라도 Home Assistant API와 Ethernet 통신이 함께 멈추는 문제를 줄입니다.
Immediate Command Processing
FreeRTOS Queue를 이용해 Lock과 Unlock 명령을 빠르게 처리합니다.
Home Assistant Lock Entity
Home Assistant의 기본 Lock UI와 자동화 기능을 사용할 수 있습니다.
Local Network Control
Nuki Cloud나 별도의 Wi-Fi Bridge에만 의존하지 않고 로컬 네트워크에서 도어록을 제어할 수 있습니다.DUAL-CORE ARCHITECTURE
ESP32-S3에는 두 개의 CPU Core가 있습니다.
이 프로젝트는 두 Core의 역할을 분리합니다.
Home Assistant
→ W5500 Ethernet
→ ESP32-S3
→ BLE
→ Nuki Smart Lock
도어록 상태는 반대 방향으로 전달됩니다.
Nuki Smart Lock
→ BLE
→ ESP32-S3
→ W5500 Ethernet
→ Home Assistant
쉽게 말하면 ESP32-S3가 유선 네트워크와 Bluetooth 도어록 사이에서 통역기 역할을 하는 것입니다
Core 0: Nuki BLE
Core 0은 Nuki 도어록과의 BLE 통신을 담당합니다.
주요 작업은 다음과 같습니다.
- Nuki 도어록 검색
- BLE 연결
- Pairing
- Lock 및 Unlock 명령
- Door Latch 해제
- 현재 Lock 상태 확인
- BLE 연결 유지
- 통신 실패 시 재시도
따라서 Nuki 도어록의 응답이 늦더라도 Home Assistant와 Ethernet 통신은 계속 동작할 수 있습니다.
HOW COMMANDS ARE PROCESSED
Home Assistant에서 명령이 들어오면 ESPHome이 직접 BLE 통신을 실행하지 않습니다.
대신 명령을 FreeRTOS Command Queue에 저장합니다.
그다음 Core 0에서 실행되는 BLE Task가 Queue에서 명령을 꺼내 Nuki Smart Lock에 전달합니다.
지원되는 주요 명령은 다음과 같습니다.
- Lock
- Unlock
- Unlatch
- Lock ’n’ Go
- Pair
- Unpair
동작 흐름은 다음과 같습니다.
Home Assistant에서 Unlock 선택
→ ESP32가 Unlock 명령 수신
→ 명령을 Queue에 저장
→ BLE Task가 명령 확인
→ Nuki Smart Lock에 Unlock 전달
→ 도어록 상태 확인
→ Home Assistant에 상태 업데이트
Queue를 사용하는 이유는 ESPHome Network Task와 BLE Task가 서로 기다리지 않고 독립적으로 동작하게 하기 위해서입니다.
LOCK STATE UPDATE
Nuki Smart Lock의 상태는 BLE를 통해 ESP32-S3로 전달됩니다.
ESP32-S3는 받은 상태를 Home Assistant에서 이해할 수 있는 Lock 상태로 변환합니다.
대표적인 상태는 다음과 같습니다.
| Nuki 상태 | Home Assistant 상태 |
|---|---|
| Locked | Locked |
| Unlocked | Unlocked |
| Unlatched | Unlocked |
| Locking | Locking |
| Unlocking | Unlocking |
| Motor Blocked | Jammed |
예를 들어 도어록 모터가 물리적으로 움직이지 못하면 Home Assistant에는 Jammed 상태로 표시할 수 있습니다.
이를 이용해 사용자에게 경고 알림을 보내는 자동화도 만들 수 있습니다.
W5500 ETHERNET CONFIGURATION
테스트 설정에서는 ESP32-S3 DevKitC-1과 WIZnet W5500을 사용합니다.
W5500은 SPI 방식으로 ESP32-S3와 연결됩니다.
| Signal | ESP32-S3 Pin |
|---|---|
| SPI Clock | GPIO12 |
| MOSI | GPIO11 |
| MISO | GPIO13 |
| Chip Select | GPIO10 |
| Interrupt | GPIO9 |
| Reset | GPIO14 |
ESPHome 설정에서는 Ethernet Type이 W5500으로 지정되어 있습니다.
W5500은 다음 역할을 담당합니다.
- Home Assistant 연결
- ESPHome Native API 통신
- Lock 명령 전달
- Lock 상태 전송
- Logger 및 진단 통신
- 유선 LAN 연결
W5500은 Nuki Smart Lock과 직접 통신하지 않습니다.
Nuki Smart Lock과 ESP32-S3 사이는 BLE로 연결되고, ESP32-S3와 Home Assistant 사이는 W5500 Ethernet으로 연결됩니다.
따라서 ESP32-S3는 Nuki Smart Lock의 Bluetooth 통신 범위 안에 설치해야 합니다.
POSSIBLE APPLICATIONS
이 프로젝트는 다음과 같은 용도로 활용할 수 있습니다.
- Home Assistant 스마트 도어록
- 유선 Ethernet 기반 Smart Home Gateway
- 사무실 출입문 제어
- 숙박시설 객실 도어록 관리
- 출입 상태 알림
- 야간 자동 잠금
- 보안 시스템 연동
- BLE 장치용 Ethernet Gateway
- Wi-Fi가 불안정한 장소의 스마트홈 장치
- FreeRTOS Dual-core 학습
- ESPHome External Component 개발 예제
CONCLUSION
ESP32 Nuki FreeRTOS는 Home Assistant와 Nuki Smart Lock 사이를 연결하는 스마트 도어록 Bridge입니다.
ESP32-S3는 Home Assistant와는 W5500 Ethernet으로 통신하고, Nuki Smart Lock과는 BLE로 통신합니다.
가장 중요한 특징은 Network 작업과 BLE 작업을 서로 다른 CPU Core에 분리한 것입니다.
덕분에 Nuki Smart Lock 연결이나 응답이 늦어지더라도 Home Assistant와 Ethernet 통신이 함께 멈추는 문제를 줄일 수 있습니다.
전체 구조는 다음 한 줄로 정리할 수 있습니다.
Home Assistant
→ W5500 Ethernet
→ ESP32-S3
→ BLE
→ Nuki Smart Lock
즉, 이 프로젝트는 유선 Ethernet의 안정성과 BLE 스마트 도어록 제어 기능을 결합한 Home Assistant용 로컬 스마트 도어록 Gateway입니다.
