El objetivo de Nuki Hub es ofrecer una forma eficaz de integrar dispositivos Nuki en una plataforma local de domótica.
El software Nuki Hub se ejecuta en un módulo ESP32 y actúa como puente entre los dispositivos Nuki y una plataforma de domótica.
Se comunica con un Nuki Lock y/o Opener a través de Bluetooth (BLE) y utiliza MQTT para integrarse con otros sistemas.
Expone el estado de bloqueo (y mucho más) a través de MQTT y permite ejecutar comandos como bloquear y desbloquear, así como cambiar la configuración de Nuki Lock/Opener a través de MQTT.
Nuki Hub no se integra con la aplicación móvil de Nuki, no puede registrarse como puente en la aplicación móvil oficial de Nuki.
No dudes en unirte a nosotros en Discord: https://discord.gg/9nPq85bP4p
Dispositivos ESP32 compatibles:
Dispositivos ESP32 no compatibles:
Dispositivos Nuki compatibles:
No probado pero probablemente compatible:
Dispositivos Ethernet compatibles:
Como alternativa a Wi-Fi (que está disponible en cualquier ESP32 compatible), se admiten los siguientes módulos ESP32 con Ethernet por cable incorporado:
En principio, todos los dispositivos ESP32 (y variantes) con puerto Ethernet incorporado son compatibles, pero pueden requerir una configuración adicional utilizando la opción "Configuración de LAN personalizada". Consulte la sección "Conexión a través de Ethernet" para obtener más información.
Si WIFI6 es absolutamente necesario: ESP32-C6
Si se requiere PoE: Cualquiera de los dispositivos mencionados anteriormente con PoE o cualquier otro dispositivo ESP en combinación con un módulo Ethernet SPI (W5500) y un divisor PoE a Ethernet y USB tipo B/C.
Si desea el máximo rendimiento y tiene intención de ejecutar alguno o varios de los siguientes:
Un ESP32-S3 con 2 MB de PSRAM o más (busque un ESP32-S3 con la designación N>=4 y R>=2 como un ESP32-S3 N16R8)
En general a la hora de comprar un dispositivo nuevo cuando el tamaño y un par de dólares más o menos no son un problema: Un ESP32-S3 con 2MB de PSRAM o más.
El ESP32-S3 es una CPU de doble núcleo con muchos GPIO, capacidad para ampliar la RAM usando PSRAM, capacidad para conectar módulos Ethernet a través de SPI y, opcionalmente, alimentar el dispositivo con un divisor PoE. Las únicas funciones que le faltan al ESP32-S3 en comparación con otros dispositivos ESP es la capacidad de usar algunos módulos Ethernet que solo son compatibles con el ESP32 original y la capacidad de conectarse a través de WIFI6 (C6).
Característica | Centro Nuki | Puente Nuki |
---|---|---|
API de puente | incógnita | |
Control remoto de bloqueo inteligente | incógnita | incógnita |
Integración de hogar inteligente a través de Matter | incógnita | |
Integración de Apple HomeKit a través de Matter | incógnita | |
API MQTT | incógnita | x (solo para modelos SL 3, 4 y 4 Pro) |
Compatibilidad con LAN cableada | incógnita | |
Alimentación a través de Ethernet (PoE) | x (si es compatible con el módulo LAN/ESP) | |
soporte inalámbrico | incógnita | x (solo para modelos SL 3 y 4 Pro) |
Integración de la plataforma de domótica | incógnita | incógnita |
Soporte en la nube | x (opcional a través de la solución smarthome) | incógnita |
Operación sin nube | incógnita | x (desde firmware 3.8.2) |
Integración oficial de la aplicación Nuki | incógnita | |
Nuki Smartlocks todos los modelos | incógnita | incógnita |
Abridor Nuki | incógnita | incógnita |
Teclado Nuki (1.0 y 2.0) | incógnita | incógnita |
Cifrado MQTT | incógnita | |
Control de acceso detallado de la API MQTT | incógnita | |
Exportación de acciones de bloqueo a través de API MQTT | incógnita | |
Control vía GPIO | incógnita | |
Modo híbrido para cerraduras conectadas WiFI y Thread | incógnita |
Si aún no has pedido tu producto Nuki, puedes ayudarme utilizando mi código de referencia al realizar tu pedido:
REF2BJHFVHZKK
Esto también te dará un 10% de descuento en tu pedido.
Este proyecto es de uso gratuito para todos. Sin embargo, si tienes ganas de donar, puedes invitarme a un café en ko-fi.com:
Actualice el firmware a un ESP32. La forma más sencilla de instalar es utilizar el instalador web utilizando un navegador compatible como Chrome/Opera/Edge:
https://technyon.github.io/nuki_hub/
NOTA: Webflash no está disponible para ESP32-Solo1
Alternativamente, descargue la última versión para su modelo ESP32 desde https://github.com/technyon/nuki_hub/releases
Desempaquete el archivo zip y lea el archivo how-to-flash.txt incluido para obtener instrucciones de instalación para "Espressif Flash Download Tools" o "esptool".
Encienda el ESP32 y debería aparecer un nuevo punto de acceso Wi-Fi llamado "NukiHub".
La contraseña del punto de acceso es "NukiHubESP32".
Conecte un dispositivo cliente a este punto de acceso y en un navegador navegue hasta "http://192.168.4.1".
Utilice la interfaz web para conectar el ESP a su red Wi-Fi preferida.
Después de configurar Wi-Fi, el ESP debería conectarse automáticamente a su red.
Para configurar la conexión al corredor MQTT, primero conecte su dispositivo cliente a la misma red Wi-Fi a la que está conectado el ESP32.
En un navegador, navegue hasta la dirección IP asignada al ESP32 a través de DHCP (que a menudo se encuentra en la interfaz web de su enrutador de Internet).
Luego haga clic en "Editar" debajo de "Configuración MQTT" e ingrese la dirección y el puerto (generalmente 1883) de su corredor MQTT y un nombre de usuario y contraseña si su corredor MQTT lo requiere.
El firmware admite el cifrado SSL para MQTT, sin embargo, la mayoría de las personas, especialmente los usuarios domésticos, no lo utilizan.
En ese caso, deje en blanco todos los campos que comiencen con "MQTT SSL". De lo contrario, consulte la sección "Cifrado MQTT" de este README.
Asegúrate de que el "emparejamiento Bluetooth" esté activado en el dispositivo Nuki activando este ajuste en la aplicación oficial de Nuki en "Ajustes" > "Funciones y configuración" > "Botón y LED". Después de activar la configuración, presione el botón del dispositivo Nuki durante unos segundos.
El emparejamiento debe ser automático cuando el ESP32 está encendido.
Cuando el emparejamiento se realiza correctamente, la interfaz web debería mostrar "Emparejado: Sí".
Los nodos MQTT, como el estado de la cerradura y el nivel de la batería, ahora deberían reflejar los valores informados de la cerradura.
Nota: Es posible utilizar Nuki Hub junto a un Nuki Bridge. Esto no se recomienda (a menos que se utilice el modo híbrido) y provocará un consumo excesivo de batería y puede provocar que cualquiera de los dispositivos pierda actualizaciones. Habilite "Registrarse como aplicación" antes del emparejamiento para permitir esto. De lo contrario, al emparejar el Nuki Hub se cancelará el registro del Bridge.
El modo híbrido permite utilizar la implementación oficial de Nuki MQTT en un Nuki Lock 3.0 Pro, Nuki Lock 4.0 o Nuki Lock 4.0 Pro en combinación con Nuki Hub.
Consulte modo híbrido para obtener más información.
Los dispositivos ESP32 tienen una cantidad limitada de RAM libre disponible.
En la versión 9.01 de Nuki Hub, con sólo un Nuki Lock conectado, la cantidad libre esperada de RAM/Heap disponible es aproximadamente:
Esta cantidad de RAM libre se puede reducir (temporalmente) mediante determinadas acciones (como cambiar la configuración del dispositivo Nuki) o de forma continua al habilitar lo siguiente:
La RAM/Heap disponible actualmente se puede encontrar en la página de información del configurador web de Nuki Hub.
Cuando el ESP32 se queda sin RAM disponible, este dispositivo puede fallar o puede ocurrir un comportamiento inesperado.
Nuki Hub permite el uso de PSRAM integrada en los archivos binarios normales siempre que esté disponible.
La PSRAM suele tener un tamaño de 2, 4 u 8 MB y, por lo tanto, aumenta considerablemente los 320 kb de RAM interna disponible.
Es básicamente imposible quedarse sin RAM cuando PSRAM está disponible. Puede comprobar en la página de información del configurador web si PSRAM está disponible.
Tenga en cuenta que hay dos versiones de Nuki Hub disponibles para el ESP32-S3.
Uno para dispositivos sin PSRAM SPI cuádruple o sin PSRAM y otro para dispositivos con PSRAM SPI octal.
Si su dispositivo ESP32-S3 tiene PSRAM pero no se detecta, actualice el otro binario S3.
En un navegador navegue hasta la dirección IP asignada al ESP32.
La opción de menú "Importar/Exportar configuración" permite importar y exportar la configuración de NukiHub en formato JSON.
Cree una copia de seguridad (parcial) de la configuración actual de NukiHub seleccionando cualquiera de las siguientes opciones:
Ninguna de las opciones anteriores realizará una copia de seguridad de los datos de emparejamiento, por lo que tendrás que emparejar manualmente los dispositivos Nuki al importar esta exportación en un restablecimiento de fábrica o en un dispositivo nuevo.
Para cambiar la configuración de bloqueo/abridor de NUKI, Establezca el tema configuration/action
en un valor formateado JSON con cualquiera de las siguientes configuraciones. Se pueden cambiar múltiples configuraciones a la vez. Consulte la configuración básica de la API de bloqueo inteligente Nuki, la configuración avanzada de la API Smart Lock Smart Nuki, la configuración básica de API NUKI APROY y la configuración avanzada de API de API NUKI para obtener más información sobre la configuración disponible.
Cambiar la configuración debe habilitarse primero en el portal de configuración. Verifique la configuración que desea poder cambiar en el "control de configuración de bloqueo/apertura nuki" en "Configuración de nivel de acceso" y guarde la configuración.
Configuración | Uso | Valores posibles | Ejemplo |
---|---|---|---|
nombre | El nombre del bloqueo inteligente. | Cadena alfanumérica, longitud máxima 32 caracteres | { "name": "Frontdoor" } |
latitud | La latitud de la geoposición de los bloqueos inteligentes. | Flotar | { "latitude": "48.858093" } |
longitud | La longitud de la geoposición de los bloqueos inteligentes | Flotar | { "longitude": "2.294694" } |
autounlatch | Si la puerta se desbloqueará o no operando manualmente una manija de la puerta desde el exterior. | 1 = habilitado, 0 = deshabilitado | { "autoUnlatch": "1" } |
emparejilado | Se debe habilitar si activar o no el modo de emparejamiento a través del botón. | 1 = habilitado, 0 = deshabilitado | { "pairingEnabled": "0" } |
butotonable | Si el botón debe habilitarse o no. | 1 = habilitado, 0 = deshabilitado | { "buttonEnabled": "1" } |
ledenable | Si el LED parpadeante debe habilitarse o no para indicar una puerta desbloqueada. | 1 = habilitado, 0 = deshabilitado | { "ledEnabled": "1" } |
Ledbrightness | El nivel de brillo del LED | 0 = apagado, ..., 5 = max | { "ledBrightness": "2" } |
TimionzoneOffset | El compensación de zona horaria (UTC) en minutos | Entero entre 0 y 60 | { "timeZoneOffset": "0" } |
dstmode | El modo de tiempo de ahorro de verano deseado. | 0 = deshabilitado, 1 = europeo | { "dstMode": "0" } |
fobacción1 | La acción deseada, si se presiona un fob nuki una vez. | "Sin acción", "desbloquear", "bloquear", "bloquear n go", "inteligente" | { "fobAction1": "Lock n Go" } |
fobacción2 | La acción deseada, si un fob nuki se presiona dos veces. | "Sin acción", "desbloquear", "bloquear", "bloquear n go", "inteligente" | { "fobAction2": "Intelligent" } |
fobacción3 | La acción deseada, si un fob nuki se presiona tres veces. | "Sin acción", "desbloquear", "bloquear", "bloquear n go", "inteligente" | { "fobAction3": "Unlock" } |
soltera | Si solo se debe realizar un bloqueo o bloqueo doble | 0 = bloqueo doble, 1 = bloqueo único | { "singleLock": "0" } |
publicidad | El modo de publicidad deseado. | "Automático", "normal", "lento", "más lento" | { "advertisingMode": "Normal" } |
zona horaria | La zona horaria actual o "ninguno" si las zonas horarias no son compatibles | "Ninguno" o una de las zonas horarias de Nuki TimeZons | { "timeZone": "Europe/Berlin" } |
desbloqueado de los delitos | Compensación que altera la posición desbloqueada en grados. | Entero entre -90 y 180 | { "unlockedPositionOffsetDegrees": "-90" } |
LockedPositionOffSetDegrees | Compensación que altera la posición bloqueada en grados. | Entero entre -180 y 90 | { "lockedPositionOffsetDegrees": "80" } |
SingleLockedPositionOffSetDegrees | Compensación que altera la posición bloqueada única en grados. | Entero entre -180 y 180 | { "singleLockedPositionOffsetDegrees": "120" } |
desbloqueado | Compensación que altera la posición donde la transición de desbloqueada a bloqueada ocurre en grados. | Entero entre -180 y 180 | { "unlockedToLockedTransitionOffsetDegrees": "180" } |
Lockngotimeut | Tiempo de espera para Lock 'n' Go en segundos | Entero entre 5 y 60 | { "lockNgoTimeout": "60" } |
SingleButtonPressaction | La acción deseada, si el botón se presiona una vez. | "No acción", "inteligente", "desbloquear", "bloquear", "Unchatch", "Lock n Go", "Show Status" | { "singleButtonPressAction": "Lock n Go" } |
DoubleButtonPressaction | La acción deseada, si el botón se presiona dos veces. | "No acción", "inteligente", "desbloquear", "bloquear", "Unchatch", "Lock n Go", "Show Status" | { "doubleButtonPressAction": "Show Status" } |
desplegable | Donde el lado interno del cilindro usado se separa del lado exterior. | 0 = no separado, 1 = separado | { "detachedCylinder": "1" } |
type de batería | El tipo de baterías presentes en el bloqueo inteligente. | "Álcali", "acumuladores", "litio" | { "batteryType": "Accumulators" } |
automaticbatterytypedetetection | Si la detección automática del tipo de batería está habilitada. | 1 = habilitado, 0 = deshabilitado | { "automaticBatteryTypeDetection": "Lock n Go" } |
desaprenditación | Duración en segundos para mantener el pestillo en posición desatense. | Entero entre 1 y 30 | { "unlatchDuration": "3" } |
AUTOLOCKTIMEOUT | Segundos hasta que el bloqueo inteligente se vuelve a rellenar después de haber sido desbloqueado. | Entero entre 30 y 1800 | { "autoLockTimeOut": "60" } |
autounlockdisable | Si el desbloqueo automático debe deshabilitarse en general. | 1 = desbloqueo automático desactivado, 0 = desbloqueo automático habilitado | { "autoUnLockDisabled": "1" } |
NightModeenable | Si NightMode está habilitado. | 1 = habilitado, 0 = deshabilitado | { "nightModeEnabled": "1" } |
NightmodeStarttime | Hora de inicio para el moderno si está habilitado. | Tiempo en formato "HH: MM" | { "nightModeStartTime": "22:00" } |
NightModeendtime | Hora de finalización para el moderno si está habilitado. | Tiempo en formato "HH: MM" | { "nightModeEndTime": "07:00" } |
NightModeautolockEnabled | Si el bloqueo automático debe habilitarse durante el nombre de noche. | 1 = habilitado, 0 = deshabilitado | { "nightModeAutoLockEnabled": "1" } |
NightmodeaUtoUnlockDisable | Si el desbloqueo automático debe deshabilitarse durante el nombre de noche. | 1 = desbloqueo automático desactivado, 0 = desbloqueo automático habilitado | { "nightModeAutoUnlockDisabled": "1" } |
NightModeModiatelockonStart | Si la puerta debe bloquearse inmediatamente en el inicio de Nightmode. | 1 = habilitado, 0 = deshabilitado | { "nightModeImmediateLockOnStart": "1" } |
autolockenable | Si el bloqueo automático está habilitado. | 1 = habilitado, 0 = deshabilitado | { "autoLockEnabled": "1" } |
inmediatiAteutolockEnable | Si el bloqueo automático debe realizarse inmediatamente después de que se haya cerrado la puerta. | 1 = habilitado, 0 = deshabilitado | { "immediateAutoLockEnabled": "1" } |
autoupdateEnabled | Si se deben habilitar las actualizaciones automáticas de firmware. | 1 = habilitado, 0 = deshabilitado | { "autoUpdateEnabled": "1" } |
rebootnuki | Reiniciar el dispositivo Nuki inmediatamente | 1 = reiniciar nuki | { "rebootNuki": "1" } |
Configuración | Uso | Valores posibles | Ejemplo |
---|---|---|---|
nombre | El nombre del abridor. | Cadena alfanumérica, longitud máxima 32 caracteres | { "name": "Frontdoor" } |
latitud | La latitud de los abridores de geoposición. | Flotar | { "latitude": "48.858093" } |
longitud | La longitud de los abridores de geoposición | Flotar | { "longitude": "2.294694" } |
emparejilado | Se debe habilitar si activar o no el modo de emparejamiento a través del botón. | 1 = habilitado, 0 = deshabilitado | { "pairingEnabled": "0" } |
butotonable | Si el botón debe habilitarse o no. | 1 = habilitado, 0 = deshabilitado | { "buttonEnabled": "1" } |
LEDFLASHENABLED | Si el LED parpadeante debe habilitarse o no para indicar CM o RTO. | 1 = habilitado, 0 = deshabilitado | { "ledFlashEnabled": "1" } |
TimionzoneOffset | El compensación de zona horaria (UTC) en minutos | Entero entre 0 y 60 | { "timeZoneOffset": "0" } |
dstmode | El modo de tiempo de ahorro de verano deseado. | 0 = deshabilitado, 1 = europeo | { "dstMode": "0" } |
fobacción1 | La acción deseada, si se presiona un fob nuki una vez. | "Sin acción", "Toggle RTO", "Active RTO", "Desactivate RTO", "abierto", "anillo" | { "fobAction1": "Toggle RTO" } |
fobacción2 | La acción deseada, si un fob nuki se presiona dos veces. | "Sin acción", "Toggle RTO", "Active RTO", "Desactivate RTO", "abierto", "anillo" | { "fobAction2": "Open" } |
fobacción3 | La acción deseada, si un fob nuki se presiona tres veces. | "Sin acción", "Toggle RTO", "Active RTO", "Desactivate RTO", "abierto", "anillo" | { "fobAction3": "Ring" } |
modo operativo | El modo de operación deseado | "Opener de la puerta genérica", "analógico intercomunicador", "intercomunicador digital", "siedle", "tcs", "bticino", "Siedle hts", "str", "ritto", "fermax", "comelit", ",", " Urmet Bibus "," Urmet 2Voice "," Golmar "," sks "," repuesto " | { "operatingMode": "TCS" } |
publicidad | El modo de publicidad deseado. | "Automático", "normal", "lento", "más lento" | { "advertisingMode": "Normal" } |
zona horaria | La zona horaria actual o "ninguno" si las zonas horarias no son compatibles | "Ninguno" o una de las zonas horarias de Nuki TimeZons | { "timeZone": "Europe/Berlin" } |
intercométido | ID de base de datos del intercomunicador conectado. | Entero | { "intercomID": "1" } |
busmodeswitch | Método para cambiar entre datos y modo analógico | 0 = ninguno, 1 = circuito VShort | { "busModeSwitch": "0" } |
cortocircuición | Duración del cortocircuito para la conmutación del modo de bus en MS. | Entero | { "shortCircuitDuration": "250" } |
Electricstrikedelay | Retraso en la EM de la activación de la huelga eléctrica en caso de una actuación de huelga eléctrica por RTO | Entero entre 0 y 30000 | { "electricStrikeDelay": "2080" } |
RandomElectricStrikEdelay | Retraso aleatorio (3-7) para simular a una persona dentro de la huelga eléctrica. | 1 = habilitado, 0 = deshabilitado | { "randomElectricStrikeDelay": "1" } |
eduración eléctrica | Duración en la EM de la actuación de huelga eléctrica. . | Entero entre 1000 y 30000 | { "electricStrikeDuration": "5000" } |
desactivación | Si deshabilitar RTO tras anillo. | 1 = deshabilitar RTO después del anillo, 0 = No deshabilite RTO después del anillo | { "disableRtoAfterRing": "0" } |
rtotimeut | Después de este período de tiempo en minutos, RTO se desactiva automáticamente | Entero entre 5 y 60 | { "rtoTimeout": "60" } |
timbellsupresión | Si el timbre se suprime cuando el anillo, CM y/o RTO están activos | "Off", "cm", "rto", "cm & rto", "anillo", "cm & ring", "rto & ring", "cm & rto & ring" | { "doorbellSuppression": "CM & Ring" } |
puerta de la altura | Duración en la EM de la supresión del timbre. | Entero entre 500 y 10000 | { "doorbellSuppressionDuration": "2000" } |
rango de sonido | El sonido del anillo | "No Sound", "Sound 1", "Sound 2", "Sound 3" | { "soundRing": "No Sound" } |
Soundopen | El sonido abierto. | "No Sound", "Sound 1", "Sound 2", "Sound 3" | { "soundOpen": "Sound 1" } |
Soundrto | El sonido rto. | "No Sound", "Sound 1", "Sound 2", "Sound 3" | { "soundRto": "Sound 2" } |
sonar | El sonido cm. | "No Sound", "Sound 1", "Sound 2", "Sound 3" | { "soundCm": "Sound 3" } |
Confirmación sonora | Confirmación de sonido | 0 = sin sonido, 1 = sonido | { "soundConfirmation": "1" } |
hojas de sonido | El nivel de sonido para el abridor | Entero entre 0 y 255 | { "soundLevel": "200" } |
SingleButtonPressaction | La acción deseada, si el botón se presiona una vez. | "No Action", "Toggle RTO", "Active RTO", "Desactivate RTO", "Toggle CM", "Active CM", "Desactivate CM", "abierto" | { "singleButtonPressAction": "Open" } |
DoubleButtonPressaction | La acción deseada, si el botón se presiona dos veces. | "No Action", "Toggle RTO", "Active RTO", "Desactivate RTO", "Toggle CM", "Active CM", "Desactivate CM", "abierto" | { "doubleButtonPressAction": "No Action" } |
type de batería | El tipo de baterías presentes en el bloqueo inteligente. | "Álcali", "acumuladores", "litio" | { "batteryType": "Accumulators" } |
automaticbatterytypedetetection | Si la detección automática del tipo de batería está habilitada. | 1 = habilitado, 0 = deshabilitado | { "automaticBatteryTypeDetection": "1" } |
rebootnuki | Reiniciar el dispositivo Nuki inmediatamente | 1 = reiniciar nuki | { "rebootNuki": "1" } |
Uso de ejemplo para cambiar múltiples configuraciones a la vez:
{ "buttonEnabled": "1", "lockngoTimeout": "60", "automaticBatteryTypeDetection": "1" }
{ "fobAction1": "Unlock", "fobAction2": "Intelligent", "nightModeImmediateLockOnStart": "1" }
El resultado de la última acción de cambio de configuración se publicará en el tema configuration/commandResult
MQTT como datos JSON.
Los datos JSON incluirán un nodo llamado "General" y un nodo para cada configuración que Nuki Hub detectó en la acción.
Los valores posibles para el nodo "general" son "NovalidPinset", "Invalidjson", "InvalidConfig", "éxito" y "NoChange".
Los valores posibles para el nodo por configuración son "sin cambios", "NovalueSet", "invalidvalue", "valuetoolong", "accessdened", "éxito", "fallido", "tiempo de espera", "trabajando", "no se apagó", "error "y" indefinido "
Ejemplo:
{"advertisingMode":"success","general":"success"}
Si el descubrimiento del asistente de inicio está habilitado (consulte la sección de descubrimiento de asistente de inicio de este readme) Nuki Hub creará entidades para casi todas las configuraciones anteriores.
Después de la instalación inicial del firmware del centro nuki a través de la conexión serie, se pueden implementar más actualizaciones a través de la actualización OTA desde un navegador.
En el portal de configuración, seleccione "Actualización de firmware" en la página principal.
La forma más fácil de actualizar Nuki Hub, si Nuki Hub está conectado a Internet, es seleccionar "Actualizar a la última versión".
Esto descargará el último actual Nuki Hub y Nuki Hub Updater y actualizará automáticamente ambas aplicaciones.
Nuki Hub se reiniciará 3 veces durante este proceso, que tomará unos 5 minutos.
Si ha habilitado "Permitir actualizar usando MQTT", también puede usar el actualizador de asistente de inicio o escribir "1" al tema nukihub/maintanance/update
para iniciar el proceso de actualización.
Alternativamente, puede seleccionar un archivo binario de su sistema de archivos para actualizar Nuki Hub o el Nuki Hub Updator manualmente
Solo puede actualizar Nuki Hub desde el UPDATER NUKI HUB y actualizar el actualizador solo desde Nuki Hub
Puede reiniciar desde Nuki Hub al Updater y Vice Versa seleccionando la opción Reiniciar en la página "Firware Update"
Cuando esté en la aplicación correcta, puede cargar el nuevo binario haciendo clic en "Examinar" y seleccione el nuevo "Nuki_hub [Board] .Bin" o "Nuki_hub_Updater [Board] .Bin" Archivo y seleccione "Archivo de carga".
Después de aproximadamente un minuto, se debe instalar el nuevo firmware después de que el ESP se reiniciará automáticamente al binario actualizado.
Seleccionar el binario incorrecto conducirá a una actualización no exitosa
Nota para los usuarios actualizando desde Nuki Hub 8.35 o inferior:
La actualización de la versión 9.00 requiere un cambio en la tabla de partición del ESP32.
Siga las instrucciones para la instalación por primera vez una vez cuando se actualice a Nuki Hub 9.00 desde una versión anterior.
Su configuración no se verá afectada al actualizar el uso de las instrucciones anteriores (no seleccione Borrar el dispositivo al actualizar con WebFlash).
La comunicación a través de MQTT se puede encriptar SSL.
Para habilitar el cifrado SSL, proporcione la información necesaria en la página de configuración de MQTT.
Se admiten las siguientes configuraciones:
CA, Cert y Key están vacíos -> Sin cifrado
CA se llena pero el certificado y la clave están vacíos -> MQTT encriptado
CA, CERT y KEY se llenan -> MQTT encriptado con Vaildation del cliente
Ejemplo de creación de certificados para su servidor MQTT:
# make a ca key
openssl genpkey -algorithm RSA -out ca.key
# make a CA cert
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/C=US/ST=YourState/L=YourCity/O=YourOrganization/OU=YourUnit/CN=YourCAName"
# make a server key
openssl genpkey -algorithm RSA -out server.key
# Make a sign request, MAKE SURE THE CN MATCHES YOUR MQTT SERVERNAME
openssl req -new -key server.key -out server.csr -subj "/C=US/ST=YourState/L=YourCity/O=YourOrganization/OU=YourUnit/CN=homeserver.local"
# sign it
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 3650
Este software admite MQTT Discovery para integrar Nuki Hub con Home Assistant.
Para habilitar el autodescubrimiento, habilite la casilla de verificación en la página "Configuración MQTT".
Una vez habilitado, el bloqueo y/o abridor de Nuki y las entidades relacionadas deben aparecer automáticamente en los dispositivos MQTT de su asistente de origen.
La siguiente asignación entre los servicios de asistente de inicio y los comandos Nuki se configura al habilitar el autodescubrimiento:
Smartlock | Abrener (predeterminado) | Abridor (alternativa) | |
---|---|---|---|
Lock.lock | Cerrar | Desactivar el anillo para abrir | Deshabilitar el modo continuo |
bloqueo | Descubrir | Habilitar el anillo para abrir | Habilitar el modo continuo |
bloqueo. Abre | Abrir alzando el picaporte | Actuación de huelga eléctrica | Actuación de huelga eléctrica |
Nota: MQTT Discovery utiliza mensajes MQTT retenidos para almacenar configuraciones de dispositivos. Para evitar configuraciones huérfanas en su corredor, primero deshabilite el autodescubrimiento primero si ya no desea usar este software. Los mensajes retenidos se borran automáticamente cuando no se emparejan y al cambiar/deshabilitar el tema de autodescubrimiento en la página de configuración de MQTT.
Nota 2: El asistente de inicio se puede configurar manualmente utilizando la integración de bloqueo MQTT, pero esto no se recomienda
Si un teclado está conectado al bloqueo, se pueden agregar, actualizar y eliminar códigos de teclado. Esto tiene que habilitar primero en el portal de configuración. Verifique "Agregar, modificar y eliminar códigos de teclado" en "Configuración de nivel de acceso" y guarde la configuración.
La información sobre los códigos de teclado actuales se publica como datos JSON para el tema "[Lock/Abridor]/Keypad/JSON" MQTT.
Esto debe habilitarse por separado mediante la verificación "Publicar información de códigos de teclado" en "Configuración de nivel de acceso" y guardando la configuración. Por razones de seguridad, el código en sí no se publica, a menos que esto esté habilitado explícitamente en la configuración del centro de Nuki. Por defecto, se publican un máximo de 10 entradas.
Para cambiar la configuración del teclado NUKI Lock/Opener, establezca el tema [lock/opener]/keypad/actionJson
a un valor formateado JSON que contiene los siguientes nodos.
Nodo | Borrar | Agregar | Actualizar | Controlar | Uso | Valores posibles |
---|---|---|---|---|---|---|
acción | Requerido | Requerido | Requerido | Requerido | La acción para ejecutar | "Eliminar", "agregar", "actualizar", "verificar" |
CodeID | Requerido | No usado | Requerido | Requerido | La ID de código del código existente para eliminar o actualizar | Entero |
código | No usado | Requerido | Opcional | Requerido | El código para crear o actualizar | Integer de 6 dígitos sin cero, no puede comenzar con "12" |
activado | No usado | No usado | Opcional | No usado | Habilitar o deshabilitar el código, siempre habilitado en ADD | 1 = habilitado, 0 = deshabilitado |
nombre | No usado | Requerido | Opcional | No usado | El nombre del código para crear o actualizar | Cadena, max 20 chars |
con timelimitado | No usado | Opcional | Opcional | No usado | Si esta autorización está restringida al acceso solo en ciertos momentos, requiere habilitado = 1 | 1 = habilitado, 0 = deshabilitado |
permitido desde | No usado | Opcional | Opcional | No usado | La marca de tiempo de inicio desde la cual se debe permitir el acceso (requiere habilitado = 1 y timelimitado = 1) | "Yyyy-MM-DD HH: MM: SS" |
permitido hacia abajo | No usado | Opcional | Opcional | No usado | La marca de tiempo final hasta que se permita el acceso (requiere habilitado = 1 y timelimitado = 1) | "Yyyy-MM-DD HH: MM: SS" |
Día de fines de semana permitidos | No usado | Opcional | Opcional | No usado | De lunes a viernes en los que se debe permitir el acceso (requiere habilitado = 1 y timelimitado = 1) | Variedad de días: "lon", "martes", "casado", "thu", "viernes" "sentado", "sol" |
permitido desde tiempo | No usado | Opcional | Opcional | No usado | La hora de inicio por día desde la cual se debe permitir el acceso (requiere habilitado = 1 y TimeLimited = 1) | "HH: MM" |
permitido | No usado | Opcional | Opcional | No usado | La hora de finalización por día hasta que se permita el acceso (requiere habilitado = 1 y timelimitado = 1) | "HH: MM" |
Ejemplos:
{ "action": "delete", "codeId": "1234" }
{ "action": "add", "code": "589472", "name": "Test", "timeLimited": "1", "allowedFrom": "2024-04-12 10:00:00", "allowedUntil": "2034-04-12 10:00:00", "allowedWeekdays": [ "wed", "thu", "fri" ], "allowedFromTime": "08:00", "allowedUntilTime": "16:00" }
{ "action": "update", "codeId": "1234", "enabled": "1", "name": "Test", "timeLimited": "1", "allowedFrom": "2024-04-12 10:00:00", "allowedUntil": "2034-04-12 10:00:00", "allowedWeekdays": [ "mon", "tue", "sat", "sun" ], "allowedFromTime": "08:00", "allowedUntilTime": "16:00" }
El resultado de la última acción de cambio de teclado se publicará en el tema [lock/opener]/configuration/commandResultJson
MQTT.
Los valores posibles son "NovalidPinset", "keypadControledIlbiled", "keypadNotavailable", "keypadDisabled", "invalidConfig", "invalidjson", "noactionSet", "InvalidAction", "NoexistingCodeidSet", "nonamameset", "NovalidcodeSet", "nocodeset" "nocodeset" , "InvalidalwedFrom", "Invalidallweduntiltil", "InvalidallowedFromtime", "InvalidalloweduntIntiTiMe", "éxito", "fallido", "tiempo de espera", "trabajando", "NotPaired", "Error" y "Undefinado".
Si un teclado está conectado al bloqueo, se pueden agregar, actualizar y eliminar códigos de teclado. Esto tiene que habilitar primero en el portal de configuración. Verifique "Agregar, modificar y eliminar códigos de teclado" en "Configuración de nivel de acceso" y guarde la configuración.
La información sobre los códigos se publica en "Keypad/Code_X", x Comenzando desde 0 hasta el número de códigos configurados. Esto debe habilitarse por separado mediante la verificación "Publicar información de códigos de teclado" en "Configuración de nivel de acceso" y guardando la configuración. Por defecto, se publican un máximo de 10 entradas.
Por razones de seguridad, el código en sí no se publica, a menos que esto esté habilitado explícitamente en la configuración del centro de Nuki. Para modificar los códigos de teclado, se configura una estructura de comando en el teclado/comando:
Para modificar los códigos de teclado, los primeros cuatro nodos de parámetros deben establecerse según el comando:
** Nota: las reglas para los códigos son:
Después de establecer los parámetros necesarios, escriba la acción que se ejecutará en el nodo de comando. Por ejemplo, para agregar un código:
Las entradas de TimeControl se pueden agregar, actualizar y eliminar. Esto tiene que habilitar primero en el portal de configuración. Verifique "Agregar, modificar y eliminar las entradas de TimeControl" en "Configuración de nivel de acceso" y guarde la configuración.
La información sobre las entradas actuales de TimeControl se publica como datos JSON al tema MQTT "[Lock/Opener]/TimeControl/JSON".
Esto debe habilitarse por separado mediante la verificación de "Publicar información de entradas de TimeControl" en "Configuración de nivel de acceso" y guardando la configuración. Por defecto, se publican un máximo de 10 entradas.
Para cambiar la configuración de NUKI Lock/Opener TimeControl, Establezca el tema [lock/opener]/timecontrol/actionJson
en un valor formateado JSON que contiene los siguientes nodos.
Nodo | Borrar | Agregar | Actualizar | Uso | Valores posibles |
---|---|---|---|---|---|
acción | Requerido | Requerido | Requerido | La acción para ejecutar | "Eliminar", "agregar", "actualización" |
entrada | Requerido | No usado | Requerido | La ID de entrada de la entrada existente para eliminar o actualizar | Entero |
activado | No usado | No usado | Opcional | Habilitar o deshabilitar la entrada, siempre habilitado en ADD | 1 = habilitado, 0 = deshabilitado |
entre semana | No usado | Opcional | Opcional | De lunes a viernes en los que debe ser exectado la acción de bloqueo elegido (requiere habilitado = 1) | Variedad de días: "lon", "martes", "casado", "thu", "viernes" "sentado", "sol" |
tiempo | No usado | Requerido | Opcional | El tiempo en que se debe ejecutar la acción de bloqueo elegido (requiere habilitado = 1) | "HH: MM" |
bloqueo | No usado | Requerido | Opcional | La acción de bloqueo que debe ejecutarse en los días de semana elegidos en el momento elegido (requiere habilitado = 1) | Para el bloqueo de Nuki: "desbloquear", "bloquear", "desapristación", "bloqueo", "lockngounlatch", "lock". Para el abridor Nuki: "activatero", "desactivaterto", "electricstrikeactuation", "activateCM", "DeactivateCM |
Ejemplos:
{ "action": "delete", "entryId": "1234" }
{ "action": "add", "weekdays": [ "wed", "thu", "fri" ], "time": "08:00", "lockAction": "Unlock" }
{ "action": "update", "entryId": "1234", "enabled": "1", "weekdays": [ "mon", "tue", "sat", "sun" ], "time": "08:00", "lockAction": "Lock" }
Las entradas de autorización se pueden actualizar y eliminar. Esto tiene que habilitar primero en el portal de configuración. Verifique "Modificar y eliminar las entradas de autorización" en "Configuración de nivel de acceso" y guarde la configuración. Actualmente no es (todavía) posible agregar entradas de autorización de esta manera.
La información sobre las entradas actuales de autorización se publica como datos JSON para el tema "[Lock/Apeners]/Authorization/JSON" MQTT.
Esto debe habilitarse por separado mediante la verificación de la "información de las entradas de autorización" en "Configuración de nivel de acceso" y guardando la configuración. Por defecto, se publican un máximo de 10 entradas.
Para cambiar la configuración de autorización de bloqueo/apertura de Nuki, establezca el tema [lock/opener]/authorization/action
a un valor formateado JSON que contiene los siguientes nodos.
Nodo | Borrar | Agregar | Actualizar | Uso | Valores posibles |
---|---|---|---|---|---|
acción | Requerido | Requerido | Requerido | La acción para ejecutar | "Eliminar", "agregar", "actualización" |
auténtico | Requerido | No usado | Requerido | La identificación de autenticación de la entrada existente para eliminar o actualizar | Entero |
activado | No usado | No usado | Opcional | Habilitar o deshabilitar la autorización, siempre habilitado en ADD | 1 = habilitado, 0 = deshabilitado |
nombre | No usado | Requerido | Opcional | El nombre de la autorización para crear o actualizar | Cadena, max 20 chars |
remotrealado | No usado | Opcional | Opcional | Si esta autorización se permite el acceso remoto, requiere habilitado = 1 | 1 = habilitado, 0 = deshabilitado |
con timelimitado | No usado | Opcional | Opcional | Si esta autorización está restringida al acceso solo en ciertos momentos, requiere habilitado = 1 | 1 = habilitado, 0 = deshabilitado |
permitido desde | No usado | Opcional | Opcional | La marca de tiempo de inicio desde la cual se debe permitir el acceso (requiere habilitado = 1 y timelimitado = 1) | "Yyyy-MM-DD HH: MM: SS" |
permitido hacia abajo | No usado | Opcional | Opcional | La marca de tiempo final hasta que se permita el acceso (requiere habilitado = 1 y timelimitado = 1) | "Yyyy-MM-DD HH: MM: SS" |
Día de fines de semana permitidos | No usado | Opcional | Opcional | De lunes a viernes en los que se debe permitir el acceso (requiere habilitado = 1 y timelimitado = 1) | Variedad de días: "lon", "martes", "casado", "thu", "viernes" "sentado", "sol" |
permitido desde tiempo | No usado | Opcional | Opcional | La hora de inicio por día desde la cual se debe permitir el acceso (requiere habilitado = 1 y TimeLimited = 1) | "HH: MM" |
permitido | No usado | Opcional | Opcional | La hora de finalización por día hasta que se permita el acceso (requiere habilitado = 1 y timelimitado = 1) | "HH: MM" |
Ejemplos:
{ "action": "delete", "authId": "1234" }
{ "action": "update", "authId": "1234", "enabled": "1", "name": "Test", "timeLimited": "1", "allowedFrom": "2024-04-12 10:00:00", "allowedUntil": "2034-04-12 10:00:00", "allowedWeekdays": [ "mon", "tue", "sat", "sun" ], "allowedFromTime": "08:00", "allowedUntilTime": "16:00" }
El bloqueo se puede controlar a través de GPIO. Para activar acciones, una conexión a tierra debe estar presente para At Arrendamiento 300ms (o para +3.3V para "Entrada general (desplegable)").
Para habilitar el control de GPIO, vaya a la página "Configuración de GPIO" donde cada GPIO puede configurarse para un rol específico:
Si prefiere conectarse a través de Ethernet en lugar de Wi-Fi, usa uno de los módulos ESP32 compatibles con Ethernet incorporado (consulte la sección "Dispositivos compatibles") o conecte un módulo SPI Ethernet SPI.
Actualmente, se admite el módulo Wiznet W5X00 (W5100, W5200, W5500), DN9051 y KSZ8851SNL.
Para usar un módulo compatible, flashe el firmware, conéctese a través de Wi-Fi y seleccione el hardware de red correcto en la sección "Configuración de red".
Para conectar un módulo W5X00 externo al ESP, use este esquema de cableado:
Ahora conecte a través de Wi-Fi y cambie el hardware de la red a "W5500 genérico".
Si el hardware Ethernet no se detecta o inicializa correctamente después de cambiar el dispositivo de red, Wi-Fi se utilizará como alternativa.
Nota: Los módulos LAN8720 solo se admiten en ESP32 y ESP32-SOLO1, no en ESP32-S3, ESP32-C3 o ESP-C6
Desafortunadamente, el ESP32 tiene problemas con algunos puntos de acceso y la reconectación de falla.
Como solución, puede navegar a "Configuración de red" y habilitar "reiniciar en la desconexión".
Esto reiniciará el ESP tan pronto como se desconecte de Wi-Fi.
Además, esto reduce el tiempo de espera del portal de configuración a tres minutos para evitar que el ESP se estance en el modo de configuración en caso de que un punto de acceso esté fuera de línea temporalmente.
Si esto todavía no soluciona las desconexiones y el ESP se vuelve inalcanzable, la opción "Reiniciar temporizador" se puede usar como último recurso.
Reiniciará el ESP después de una cantidad de tiempo configurada.
Primero, asegúrese de que la versión de firmware del dispositivo Nuki esté actualizado, las versiones más antiguas tienen problemas de emparejamiento.
A continuación, intente borrar el flash ESP32 y luego (re) flashear el firmware.
Para borrar el flash, use la herramienta de descarga de espressif y haga clic en el botón "Borrar".
Luego flash el firmware como se describe en el archivo "How-To-Flash.txt" o usando WebFlash.
Además, verifique que el emparejamiento esté permitido. En la aplicación NUKI Smartphone, vaya a "Configuración" -> "Características y configuración" -> "Botón y LED" y asegúrese de que "Emparejamiento Bluetooh" esté habilitado.
A continuación, presione el botón durante varios segundos hasta que la luz LED permanezca encendida.
Una nota sobre la unidad M5Stack POESP32. Aquí la recepción inicial de Bluetooth es muy pobre (rango menos de un metro). La razón es que el módulo no tiene una antena en la PCB, sino solo un conector IPEX. Al modernizar una antena SMA externa (IPEX u otros nombres U.FL, IPAX, IPX, AMC, MHF, UMCC), Bluetooth/Wi-Fi funciona a través de varios metros.
Asegúrese de estar utilizando al menos la versión 2023.8.0 de Home Assistant.
Los desarrolladores asistentes de origen han realizado cambios en el descubrimiento automático MQTT que rompen el soporte para la versión anterior y Nuki Hub ha adoptado estos cambios.
Desafortunadamente, esto significa que las versiones más antiguas de Home Assistant no son respaldadas por la implementación de Nuki Hub Discovery.
Según Nuki, esto es por diseño y parte de la especificación del bloqueo Pro.
Puede usar el Wi-Fi incorporado o un puente (que Nuki Hub se registra como).
O use el cubo nuki en modo híbrido usando wi-fi o hilo, consulte el modo híbrido
El uso de ambos al mismo tiempo no es compatible.
Alguna funcionalidad está restringida por el firmware de bloqueo (o abreler) y solo se puede acceder cuando se proporciona el PIN.
Al configurar el bloqueo (o abreler), debe configurar un PIN en la aplicación Nuki Smartphone.
Navegue a la página de credenciales del centro de Nuki, ingrese este PIN y haga clic en Guardar.
Verifique la página principal del configurador para ver si el PIN ingresado es válido
Consulte el punto anterior, esta funcionalidad necesita configurarse el PIN correcto.
Asegúrese de que la opción "Unlatch" se verifique en "Configuración de nivel de acceso".
El desactivado se puede activar utilizando el servicio Lock.
Alternativamente, se expone un botón de "Unlatch" a través del descubrimiento del asistente de inicio.
Este botón está deshabilitado de forma predeterminada, pero se puede habilitar en la interfaz de usuario del Asistente de inicio.
Al usar múltiples dispositivos Nuki, se deben configurar diferentes rutas para cada dispositivo.
Navegue a "Configuración MQTT" y cambie la "ruta MQTT Nukihub" en "Configuración BASIC MQTT" para al menos uno de los dispositivos.
Esto a menudo es el resultado de habilitar "registrarse como aplicación" cuando no se usa el modo híbrido (coexistancia oficial MQTT / Nuki Hub).
Hacerlo hará que Nuki Hub consulte constantemente el bloqueo y, como tal, cause un drenaje de batería excesivo.
Para prevenir este comportamiento, impagar el centro nuki, deshabilitar "Regístrese como aplicación" y volver a par.
¡Nunca habilite "Registrarse como aplicación" a menos que tenga la intención de usar un puente Nuki además de Nuki Hub o esté utilizando el modo híbrido!
Docker (preferido)
Consulte el ReadMe en el directorio de Docker para obtener instrucciones sobre la construcción usando Docker.
Plataforma IO, Instrucciones para Linux Distro con sede en Debian (por ejemplo, Ubuntu)
apt-get update
apt-get install -y git python3 pip make
python3 -m venv .venv
source .venv/bin/activate
git clone https://github.com/technyon/nuki_hub --recursive
cd nuki_hub
# install tools platformio and esptool
make deps
# build all binary boards
make updater
make release
Este es un software de terceros para dispositivos Nuki.
Este proyecto o cualquiera de sus autores no están asociados con Nuki Home Solutions GmbH.
Consulte los productos y soporte oficiales al sitio web oficial de Nuki:
https://nuki.io/
Para obtener más detalles de la licencia, consulte el archivo de licencia incluido.