Цель Nuki Hub — предоставить эффективный способ интеграции устройств Nuki в локальную платформу домашней автоматизации.
Программное обеспечение Nuki Hub работает на модуле ESP32 и действует как мост между устройствами Nuki и платформой домашней автоматизации.
Он связывается с Nuki Lock и/или Opener через Bluetooth (BLE) и использует MQTT для интеграции с другими системами.
Он раскрывает состояние блокировки (и многое другое) через MQTT и позволяет выполнять такие команды, как блокировка и разблокировка, а также изменять конфигурацию Nuki Lock/Opener через MQTT.
Nuki Hub не интегрируется с мобильным приложением Nuki и не может зарегистрироваться в качестве моста в официальном мобильном приложении Nuki.
Не стесняйтесь присоединяться к нам в Discord: https://discord.gg/9nPq85bP4p
Поддерживаемые устройства ESP32:
Не поддерживаемые устройства ESP32:
Поддерживаемые устройства Nuki:
Непроверено, но, вероятно, поддерживается:
Поддерживаемые Ethernet-устройства:
В качестве альтернативы Wi-Fi (который доступен на любом поддерживаемом ESP32) поддерживаются следующие модули ESP32 со встроенным проводным Ethernet:
В принципе, поддерживаются все устройства ESP32 (и варианты) со встроенным портом Ethernet, но может потребоваться дополнительная настройка с использованием опции «Пользовательская настройка локальной сети». Дополнительную информацию см. в разделе «Подключение через Ethernet».
Если WIFI6 абсолютно необходим: ESP32-C6
Если требуется PoE: Любое из вышеупомянутых устройств с PoE или любое другое устройство ESP в сочетании с модулем SPI Ethernet (W5500) и разветвителем PoE-Ethernet и USB типа B/C.
Если вам нужна максимальная производительность и вы собираетесь запустить одно или несколько из следующих действий:
ESP32-S3 с 2 МБ PSRAM или более (ищите ESP32-S3 с обозначением N>=4 и R>=2, например ESP32-S3 N16R8)
В общем, при покупке нового устройства размер и пара долларов больше или меньше не являются проблемой: ESP32-S3 с 2 МБ PSRAM или более.
ESP32-S3 — это двухъядерный процессор со множеством GPIO, возможностью увеличения оперативной памяти с помощью PSRAM, возможностью подключения модулей Ethernet через SPI и опциональным питанием устройства с помощью сплиттера PoE. Единственные функции, отсутствующие в ESP32-S3 по сравнению с другими устройствами ESP, — это возможность использовать некоторые модули Ethernet, поддерживаемые только оригинальным ESP32, и возможность подключения через WIFI6 (C6).
Особенность | Нуки Хаб | Нуки мост |
---|---|---|
API моста | х | |
Дистанционное управление умным замком | х | х |
Интеграция умного дома через Matter | х | |
Интеграция Apple HomeKit через Matter | х | |
MQTT API | х | x (только для моделей SL 3, 4 и 4 Pro) |
Поддержка проводной локальной сети | х | |
Питание через Ethernet (PoE) | x (если поддерживается модулем LAN/ESP) | |
Поддержка WLAN | х | x (только для моделей SL 3 и 4 Pro) |
Интеграция платформы домашней автоматизации | х | х |
Облачная поддержка | x (опционально через решение для умного дома) | х |
Безоблачная работа | х | х (начиная с прошивки 3.8.2) |
Официальная интеграция приложения Nuki | х | |
Nuki Smartlocks все модели | х | х |
Нуки открывалка | х | х |
Нуки-клавиатура (1.0 и 2.0) | х | х |
MQTT-шифрование | х | |
Детальный контроль доступа к MQTT API | х | |
Экспорт действий блокировки через MQTT API | х | |
Управление через GPIO | х | |
Гибридный режим для замков с подключением по Wi-Fi и Thread | х |
Если вы еще не заказали продукт Nuki, вы можете поддержать меня, используя мой код реферера при размещении заказа:
REF2BJHFVHZKK
Это также даст вам скидку 10% на ваш заказ.
Этот проект может свободно использоваться всеми. Однако, если вы хотите сделать пожертвование, вы можете купить мне кофе на ko-fi.com:
Прошить прошивку на ESP32. Самый простой способ установки — использовать веб-установщик с использованием совместимого браузера, например Chrome/Opera/Edge:
https://technyon.github.io/nuki_hub/
ПРИМЕЧАНИЕ. Webflash недоступен для ESP32-Solo1.
Альтернативно загрузите последнюю версию для вашей модели ESP32 с https://github.com/technyon/nuki_hub/releases.
Распакуйте zip-архив и прочитайте прилагаемый файл How-to-flash.txt, в котором приведены инструкции по установке «Espressif Flash Download Tools» или «esptool».
Включите ESP32, и должна появиться новая точка доступа Wi-Fi с именем «NukiHub».
Пароль точки доступа — «NukiHubESP32».
Подключите клиентское устройство к этой точке доступа и в браузере перейдите по адресу «http://192.168.4.1».
Используйте веб-интерфейс для подключения ESP к предпочитаемой сети Wi-Fi.
После настройки Wi-Fi ESP должен автоматически подключиться к вашей сети.
Чтобы настроить подключение к брокеру MQTT, сначала подключите клиентское устройство к той же сети Wi-Fi, к которой подключен ESP32.
В браузере перейдите к IP-адресу, назначенному ESP32 через DHCP (часто можно найти в веб-интерфейсе вашего интернет-маршрутизатора).
Затем нажмите «Изменить» под «Конфигурацией MQTT» и введите адрес и порт (обычно 1883) вашего MQTT-брокера, а также имя пользователя и пароль, если этого требует ваш MQTT-брокер.
Прошивка поддерживает SSL-шифрование для MQTT, однако большинство людей, особенно домашних пользователей, этим не пользуются.
В этом случае оставьте все поля, начинающиеся с «MQTT SSL», пустыми. В противном случае см. раздел «Шифрование MQTT» данного README.
Убедитесь, что «Сопряжение Bluetooth» включено для устройства Nuki, включив этот параметр в официальном приложении Nuki в «Настройки» > «Функции и конфигурация» > «Кнопка и светодиод». После включения настройки нажмите кнопку на устройстве Nuki и удерживайте ее несколько секунд.
Сопряжение должно происходить автоматически при включении ESP32.
Если сопряжение прошло успешно, в веб-интерфейсе должно появиться сообщение «Сопряжено: Да».
Узлы MQTT, такие как состояние блокировки и уровень заряда батареи, теперь должны отражать сообщаемые значения блокировки.
Примечание. Nuki Hub можно запустить рядом с Nuki Bridge. Это не рекомендуется (кроме случаев использования гибридного режима) и приведет к чрезмерному разряду аккумулятора и может привести к отсутствию обновлений на любом устройстве. Чтобы разрешить это, включите «Зарегистрировать как приложение» перед сопряжением. В противном случае регистрация Bridge будет отменена при сопряжении с Nuki Hub.
Гибридный режим позволяет вам использовать официальную реализацию Nuki MQTT на Nuki Lock 3.0 Pro, Nuki Lock 4.0 или Nuki Lock 4.0 Pro в сочетании с Nuki Hub.
Дополнительную информацию см. в гибридном режиме.
Устройства ESP32 имеют ограниченный объем свободной оперативной памяти.
В версии 9.01 Nuki Hub с подключенным только Nuki Lock ожидаемый свободный объем оперативной памяти/кучи составляет около:
Этот свободный объем оперативной памяти может быть уменьшен (временно) при определенных действиях (например, при изменении конфигурации устройства Nuki) или постоянно при включении следующих действий:
Доступную на данный момент ОЗУ/кучу можно найти на информационной странице веб-конфигуратора Nuki Hub.
Когда в ESP32 заканчивается доступная оперативная память, это устройство может выйти из строя или может произойти иное непредвиденное поведение.
Nuki Hub позволяет использовать встроенную PSRAM в обычных двоичных файлах, когда она доступна.
PSRAM обычно имеет размер 2, 4 или 8 МБ и, таким образом, значительно увеличивает доступные 320 КБ внутренней оперативной памяти.
В принципе невозможно исчерпать ОЗУ, когда доступен PSRAM. Вы можете проверить на информационной странице веб-конфигуратора, доступен ли PSRAM.
Обратите внимание, что доступны две сборки Nuki Hub для ESP32-S3.
Один для устройств без или с Quad SPI PSRAM и один для устройств с Octal SPI PSRAM.
Если ваше устройство ESP32-S3 имеет PSRAM, но оно не обнаружено, прошейте другой двоичный файл S3.
В браузере перейдите по IP-адресу, назначенному ESP32.
Пункт меню «Импорт/экспорт конфигурации» позволяет импортировать и экспортировать настройки NukiHub в формате JSON.
Создайте (частичную) резервную копию текущих настроек NukiHub, выбрав любой из следующих вариантов:
Оба вышеуказанных варианта не создают резервную копию данных сопряжения, поэтому вам придется вручную выполнить сопряжение устройств Nuki при импорте этого экспорта на устройство с заводскими настройками или на новое устройство.
Чтобы изменить настройки блокировки/открытия Nuki, установите тему configuration/action
на форматированное значение JSON с любым из следующих настройков. Несколько настроек могут быть изменены одновременно. См. Nuki Smart Lock API Basic Config, Nuki Smart Lock API Advanced Config, Nuki Open API Basic Config и API API Nouki API для получения дополнительной информации о доступных настройках.
Изменение настроек должно включено сначала в портале конфигурации. Проверьте настройки, которые вы хотите иметь в состоянии изменить в разделе «Конфигурация блокировки/открытия Nuki» в «Конфигурации уровня доступа» и сохранить конфигурацию.
Параметр | Использование | Возможные значения | Пример |
---|---|---|---|
имя | Название умного блокировки. | Буквенно -цифровая строка, максимальная длина 32 chars | { "name": "Frontdoor" } |
широта | Широта геопозиции умных замков. | Плавать | { "latitude": "48.858093" } |
долгота | Долгота геопозиции умных замков | Плавать | { "longitude": "2.294694" } |
Autounlatch | Будет ли дверь быть разобщенной путем ручного управления ручкой двери снаружи. | 1 = включено, 0 = отключено | { "autoUnlatch": "1" } |
SailingEnabled | Должна ли активировать режим спаривания через кнопку кнопки. | 1 = включено, 0 = отключено | { "pairingEnabled": "0" } |
кнопка с поддержкой | Должна ли кнопка быть включена. | 1 = включено, 0 = отключено | { "buttonEnabled": "1" } |
Ledenabled | Независимо от того, следует ли включать мигающий светодиод, чтобы сигнализировать о незапертой двери. | 1 = включено, 0 = отключено | { "ledEnabled": "1" } |
Ледбрайтнесс | Уровень яркости светодиода | 0 = выключен,…, 5 = макс. | { "ledBrightness": "2" } |
Timezoneoffset | Смещение часового пояса (UTC) за считанные минуты | Целое число между 0 и 60 | { "timeZoneOffset": "0" } |
DSTMode | Желаемый режим времени экономления дневного света. | 0 = отключен, 1 = европейский | { "dstMode": "0" } |
Fobaction1 | Желаемое действие, если nuki fob нажимается один раз. | «Нет действия», «разблокировать», «блокировка», «Lock N Go», «Интеллект» | { "fobAction1": "Lock n Go" } |
Fobaction2 | Желаемое действие, если плесень nuki нажимается дважды. | «Нет действия», «разблокировать», «блокировка», «Lock N Go», «Интеллект» | { "fobAction2": "Intelligent" } |
Фобакция3 | Желаемое действие, если плесень Nuki нажимается три раза. | «Нет действия», «разблокировать», «блокировка», «Lock N Go», «Интеллект» | { "fobAction3": "Unlock" } |
Singlelock | Следует ли выполнить только один блокировка или двойная блокировка | 0 = двойная блокировка, 1 = одиночная блокировка | { "singleLock": "0" } |
рекламная мода | Желаемый рекламный режим. | «Автоматический», «нормальный», «медленный», «самый медленный» | { "advertisingMode": "Normal" } |
часовой пояс | Текущий часовой пояс или «нет», если часовые пояса не поддерживаются | «Нет» или один из часовых часовых поясов от Nuki Timezones | { "timeZone": "Europe/Berlin" } |
UnlockedPositionOffsetDegrees | Смещение, которое изменяет разблокированное положение в градусах. | Целое число между -90 и 180 | { "unlockedPositionOffsetDegrees": "-90" } |
LockedPositionOffSetDegrees | Смещение, которое изменяет заблокированное положение в градусах. | Целое число между -180 и 90 | { "lockedPositionOffsetDegrees": "80" } |
SingLockedPositionOffsetDegrees | Смещение, которое изменяет одно заблокированное положение в градусах. | Целое число между -180 и 180 | { "singleLockedPositionOffsetDegrees": "120" } |
UnlockedToLockedTransitionOffSetDegrees | Смещение, которое изменяет положение, при котором переход от разблокированного к заблокированию происходит в градусах. | Целое число между -180 и 180 | { "unlockedToLockedTransitionOffsetDegrees": "180" } |
lockngotimeout | Тайм -аут для Lock 'n' Go за секунды | Целое число между 5 и 60 | { "lockNgoTimeout": "60" } |
SingleButtonPressaction | Желаемое действие, если кнопка нажимается один раз. | «Нет действия», «Интеллект», «разблокировать», «Lock», «Unlatch», «Lock N Go», «Показать статус» | { "singleButtonPressAction": "Lock n Go" } |
двойное рулон | Желаемое действие, если кнопка нажимается дважды. | «Нет действия», «Интеллект», «разблокировать», «Lock», «Unlatch», «Lock N Go», «Показать статус» | { "doubleButtonPressAction": "Show Status" } |
Отдельное | Внутренняя сторона используемого цилиндра отделена от внешней стороны. | 0 = не отстранен, 1 = отдельный | { "detachedCylinder": "1" } |
Тип батареи | Тип батарей, присутствующих в умном блоке. | «Алкали», «накопления», «Литий» | { "batteryType": "Accumulators" } |
AutomaticbatteryTypeedEtection | Можно ли автоматическое обнаружение типа батареи. | 1 = включено, 0 = отключено | { "automaticBatteryTypeDetection": "Lock n Go" } |
UnlatchDuration | Продолжительность за считанные секунды для удержания защелки в положении Unlatched. | Целое число между 1 и 30 | { "unlatchDuration": "3" } |
AutoLockTimeout | Секунды до тех пор, пока умный замок не перемещается после того, как он разблокирован. | Целое число между 30 и 1800 годами | { "autoLockTimeOut": "60" } |
Autounlockdisabled | Независимо от того, следует ли отключить разблокировку в целом. | 1 = автоматическое разблокировка отключена, 0 = автоматическое разблокировка включена | { "autoUnLockDisabled": "1" } |
Nightmodeenabled | Включен ли ночная мода. | 1 = включено, 0 = отключено | { "nightModeEnabled": "1" } |
Nightmodestarttime | Время запуска для Nightmode, если включено. | Время в формате «HH: MM» | { "nightModeStartTime": "22:00" } |
Nightmodeendtime | Время окончания Nightmode, если включено. | Время в формате «HH: MM» | { "nightModeEndTime": "07:00" } |
Nightmodeautolockenabled | Будь то автоматическая блокировка, должна быть включена во время ночного мода. | 1 = включено, 0 = отключено | { "nightModeAutoLockEnabled": "1" } |
Nightmodeautounlockdisabled | Независимо от того, следует ли отключить разблокировку во время ночного мода. | 1 = автоматическое разблокировка отключена, 0 = автоматическое разблокировка включена | { "nightModeAutoUnlockDisabled": "1" } |
NightmodeimmediateLockonstart | Должна ли дверь быть немедленно заблокирована при начале ночного момента. | 1 = включено, 0 = отключено | { "nightModeImmediateLockOnStart": "1" } |
AutoLockenabled | Включена ли автоматическая блокировка. | 1 = включено, 0 = отключено | { "autoLockEnabled": "1" } |
сразу же | Должен ли автоза блокировки выполнять сразу после закрытия двери. | 1 = включено, 0 = отключено | { "immediateAutoLockEnabled": "1" } |
AutoupPadateEnabled | Должны ли автоматические обновления прошивки быть включены. | 1 = включено, 0 = отключено | { "autoUpdateEnabled": "1" } |
перезагрузчик | Немедленно перезагрузите устройство Nuki | 1 = перезагрузка Nuki | { "rebootNuki": "1" } |
Параметр | Использование | Возможные значения | Пример |
---|---|---|---|
имя | Имя новичка. | Буквенно -цифровая строка, максимальная длина 32 chars | { "name": "Frontdoor" } |
широта | Широта геопозиции новичков. | Плавать | { "latitude": "48.858093" } |
долгота | Долгота геопозиции новичков | Плавать | { "longitude": "2.294694" } |
SailingEnabled | Должна ли активировать режим спаривания через кнопку кнопки. | 1 = включено, 0 = отключено | { "pairingEnabled": "0" } |
кнопка с поддержкой | Должна ли кнопка быть включена. | 1 = включено, 0 = отключено | { "buttonEnabled": "1" } |
LEDFLASHENABLED | Независимо от того, следует ли включать мигающий светодиод для сигнала CM или RTO. | 1 = включено, 0 = отключено | { "ledFlashEnabled": "1" } |
Timezoneoffset | Смещение часового пояса (UTC) за считанные минуты | Целое число между 0 и 60 | { "timeZoneOffset": "0" } |
DSTMode | Желаемый режим времени экономления дневного света. | 0 = отключен, 1 = европейский | { "dstMode": "0" } |
Fobaction1 | Желаемое действие, если nuki fob нажимается один раз. | «Нет действия», «перевернуть RTO», «активировать RTO», «Деактивировать RTO», «Open», «кольцо» | { "fobAction1": "Toggle RTO" } |
Fobaction2 | Желаемое действие, если плесень nuki нажимается дважды. | «Нет действия», «перевернуть RTO», «активировать RTO», «Деактивировать RTO», «Open», «кольцо» | { "fobAction2": "Open" } |
Фобакция3 | Желаемое действие, если плесень Nuki нажимается три раза. | «Нет действия», «перевернуть RTO», «активировать RTO», «Деактивировать RTO», «Open», «кольцо» | { "fobAction3": "Ring" } |
операционный мод | Желаемый режим работы | «Общие дверные открытели», «аналоговый интерком», «цифровой интерком», «Siedle», «TCS», «Bticino», «Siedle HTS», «Str», «Ritto», «Fermax», «Comelit», « Urmet Bibus "," Urmet 2voice "," Golmar "," SKS "," Spare " | { "operatingMode": "TCS" } |
рекламная мода | Желаемый рекламный режим. | «Автоматический», «нормальный», «медленный», «самый медленный» | { "advertisingMode": "Normal" } |
часовой пояс | Текущий часовой пояс или «нет», если часовые пояса не поддерживаются | «Нет» или один из часовых часовых поясов от Nuki Timezones | { "timeZone": "Europe/Berlin" } |
Intercomid | Идентификатор базы данных подключенной интерком. | Целое число | { "intercomID": "1" } |
Busmodeswitch | Метод переключения между данными и аналоговым режимом | 0 = нет, 1 = VSHORT CURE | { "busModeSwitch": "0" } |
короткометражный | Продолжительность короткого замыкания для переключения режима шины в MS. | Целое число | { "shortCircuitDuration": "250" } |
ElectricStrikedelay | Задержка в MS активации электрического удара в случае приведения в действие электрического удара RTO | Целое число между 0 и 30000 | { "electricStrikeDelay": "2080" } |
Marderelectrectrikedelay | Случайная задержка (3-7 с), чтобы имитировать человека внутри, ведущего электрический удар. | 1 = включено, 0 = отключено | { "randomElectricStrikeDelay": "1" } |
ElectricStrikeduration | Продолжительность в РС электрического удара. . | Целое число между 1000 и 30000 | { "electricStrikeDuration": "5000" } |
Divablertoafterring | Отключить RTO после кольца. | 1 = отключить RTO после кольца, 0 = не отключить RTO после кольца | { "disableRtoAfterRing": "0" } |
rtotimeout | Через этот период времени за считанные минуты RTO автоматически деактивируется | Целое число между 5 и 60 | { "rtoTimeout": "60" } |
Дверная состава | Будь то дверная звонок подавлен при кольце, CM и/или RTO активны | "Off", "CM", "RTO", "CM & RTO", "RING", "CM & RING", "RTO & RING", "CM & RTO & RING" | { "doorbellSuppression": "CM & Ring" } |
Дверной собор | Продолжительность в MS подавления двери. | Целое число между 500 и 10000 | { "doorbellSuppressionDuration": "2000" } |
звук | Кольцо звучит | «Нет звука», «звук 1», «звук 2», «звук 3» | { "soundRing": "No Sound" } |
звукопод | Открытый звук. | «Нет звука», «звук 1», «звук 2», «звук 3» | { "soundOpen": "Sound 1" } |
soundrto | Звук RTO. | «Нет звука», «звук 1», «звук 2», «звук 3» | { "soundRto": "Sound 2" } |
soundcm | Звук CM. | «Нет звука», «звук 1», «звук 2», «звук 3» | { "soundCm": "Sound 3" } |
звуковое подтверждение | Звуковое подтверждение | 0 = нет звука, 1 = звук | { "soundConfirmation": "1" } |
Soundlevel | Уровень звука для новичка | Целое число между 0 и 255 | { "soundLevel": "200" } |
SingleButtonPressaction | Желаемое действие, если кнопка нажимается один раз. | «Нет действия», «перевернуть RTO», «активировать RTO», «Деактивировать RTO», «Toggle CM», «Активировать CM», «Деактивировать CM», «Open» | { "singleButtonPressAction": "Open" } |
двойное рулон | Желаемое действие, если кнопка нажимается дважды. | «Нет действия», «перевернуть RTO», «активировать RTO», «Деактивировать RTO», «Toggle CM», «Активировать CM», «Деактивировать CM», «Open» | { "doubleButtonPressAction": "No Action" } |
Тип батареи | Тип батарей, присутствующих в умном блоке. | «Алкали», «накопления», «Литий» | { "batteryType": "Accumulators" } |
AutomaticbatteryTypeedEtection | Можно ли автоматическое обнаружение типа батареи. | 1 = включено, 0 = отключено | { "automaticBatteryTypeDetection": "1" } |
перезагрузчик | Немедленно перезагрузите устройство Nuki | 1 = перезагрузка Nuki | { "rebootNuki": "1" } |
Пример использования для изменения нескольких настроек одновременно:
{ "buttonEnabled": "1", "lockngoTimeout": "60", "automaticBatteryTypeDetection": "1" }
{ "fobAction1": "Unlock", "fobAction2": "Intelligent", "nightModeImmediateLockOnStart": "1" }
Результат последнего действия изменения конфигурации будет опубликовано в тему configuration/commandResult
MQTT в качестве данных JSON.
Данные JSON будут включать узел, называемый «общий», и узел для каждого настройки, который Nuki Hub обнаружил в действии.
Возможные значения для «общего» узла - «novalidpinset», «Invalidjson», «InvalidConfig», «Успех» и «NoChange».
Возможные значения для узла для каждого настройки - «без изменений», «novalueSet», «Invalidvalue», «Valuetoolong», «Доступный», «Успех», «Неудачный», «Тайм -аут», «Работа», «НЕТПРЕЗВЕРКА», «Ошибка "и" неопределенного "
Пример:
{"advertisingMode":"success","general":"success"}
Если Home Assistant Discovery включено (см. В разделе «Помощник Home Assistant Discovery этого чтения») Nuki Hub создаст объекты практически для всех вышеперечисленных настройки.
После первоначальной установки прошивки Nuki Hub через последовательное соединение можно развернуть дальнейшие обновления через обновление OTA из браузера.
В портале конфигурации выберите «Обновление прошивки» на главной странице.
Самый простой способ обновить Nuki Hub, если Nuki Hub подключен к Интернету, - это выбрать «Обновление до последней версии».
Это загрузит новейший Uki Hub и Nuki Hub Updater и автоматически обновляет оба приложения.
Nuki Hub перезагрузится 3 раза во время этого процесса, который займет около 5 минут.
Если вы включили «разрешить обновление с использованием MQTT», вы также можете использовать обновление Home Assistant или написать «1» в тему nukihub/maintanance/update
чтобы запустить процесс обновления.
В качестве альтернативы вы можете выбрать двоичный файл из вашей файловой системы для обновления Nuki Hub или Nuki Hub Updator вручную
Вы можете обновить Nuki Hub только от обновления Nuki Hub и обновить обновление только из Nuki Hub
Вы можете перезагрузиться с Nuki Hub в обновляющий и наоборот, выбрав опцию перезагрузки со страницы «Обновление обновления».
Когда вы находитесь в правильном приложении, вы можете загрузить новый двоичный файл, нажав «Обзор» и выбрав новый «nuki_hub [poard] .bin» или «nuki_hub_updater [poard] .bin» и выберите «Загрузить файл».
Примерно через минуту новая прошивка должна быть установлена после того, что ESP автоматически перезагрузится в обновленный двоичный файл.
Выбор неправильного двоичного файла приведет к неудачному обновлению
Примечание для обновления пользователей с Nuki Hub 8.35 или ниже:
Обновление до версии 9.00 требует изменения в таблице разделов ESP32.
Пожалуйста, следуйте инструкциям для первой установки один раз при обновлении до Nuki Hub 9.00 из более ранней версии.
Ваши настройки не будут затронуты при обновлении приведенных выше инструкций (не выбирайте устройство стирания при обновлении с помощью WebFlash).
Связь через MQTT может быть зашифрована SSL.
Чтобы включить шифрование SSL, предоставьте необходимую информацию на странице конфигурации MQTT.
Поддерживаются следующие конфигурации:
CA, CERT и KEY пусты -> Нет шифрования
CA заполнен, но сертификат и ключ пусты -> зашифровано MQTT
CA, CERT и KEY заполнены -> зашифровано MQTT с клиентом Vaildation
Пример создания сертификата для вашего сервера 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
Это программное обеспечение поддерживает MQTT Discovery для интеграции Nuki Hub с домашним помощником.
Чтобы включить автоматическое открытие, включите флажок на странице «Конфигурация MQTT».
После включения, блокировки и/или открытия Nuki и связанных с ними объекты должны автоматически появляться на вашем домашнем помощнике MQTT.
Следующее отображение между службами домашнего помощника и командами Nuki настроено при включении AutoDiscovery:
Smartlock | Нович (по умолчанию) | Новичок (альтернатива) | |
---|---|---|---|
lock.lock | Замок | Отключить кольцо, чтобы открыть | Отключить непрерывный режим |
lock.unlock | Разблокировать | Включить кольцо открыть | Включить непрерывный режим |
lock.open | Разоблачение | Электрический ударный привод | Электрический ударный привод |
Примечание. MQTT Discovery использует сохраняемые сообщения MQTT для хранения конфигураций устройств. Чтобы избежать конфигураций сирот на вашем брокере, сначала отключите автоосказование, если вы больше не хотите использовать это программное обеспечение. Сохраняемые сообщения автоматически очищаются при неосуществлении и при изменении/отключении темы автоматического открытия на странице конфигурации MQTT.
ПРИМЕЧАНИЕ2: Домашний помощник может быть настроен вручную, используя интеграцию блокировки MQTT, но это не рекомендуется
Если клавиатура подключена к блокировке, коды клавиатуры могут быть добавлены, обновлены и удаляются. Это должно включить сначала в портале конфигурации. Проверьте «Добавить, изменить и удалить коды клавиатуры» в «Конфигурации уровня доступа» и сохранить конфигурацию.
Информация о текущих кодах клавиатуры опубликована как данные JSON по теме MQTT «[Lock/Opener]/клавиатура/JSON».
Это должно быть включено отдельно, проверяя «публикацию кодов клавиатуры» информации «в разделе« Конфигурация уровня доступа »и сохранив конфигурацию. По соображениям безопасности сам код не опубликован, если только он явно включен в настройки Nuki Hub. По умолчанию опубликовано максимум 10 записей.
Чтобы изменить настройки клавиатуры блокировки/открытия Nuki, установите тему [lock/opener]/keypad/actionJson
на значение форматированного JSON, содержащее следующие узлы.
Узел | Удалить | Добавлять | Обновлять | Проверять | Использование | Возможные значения |
---|---|---|---|---|---|---|
действие | Необходимый | Необходимый | Необходимый | Необходимый | Действие для выполнения | «Удалить», «добавить», «Обновление», «Проверка» |
кодиад | Необходимый | Не используется | Необходимый | Необходимый | Идентификатор кода существующего кода для удаления или обновления | Целое число |
код | Не используется | Необходимый | Необязательный | Необходимый | Код для создания или обновления | 6-значное целое число без нуля, не может начать с "12" |
включено | Не используется | Не используется | Необязательный | Не используется | Включить или отключить код, всегда включенный при добавлении | 1 = включено, 0 = отключено |
имя | Не используется | Необходимый | Необязательный | Не используется | Имя кода для создания или обновления | Строка, максимум 20 chars |
сроки | Не используется | Необязательный | Необязательный | Не используется | Если это разрешение ограничено для доступа только в определенное время, требуется включено = 1 | 1 = включено, 0 = отключено |
разрешен от | Не используется | Необязательный | Необязательный | Не используется | Начальная метка времени, с которой должен быть разрешен доступ (требуется включено = 1 и Timelimited = 1) | "Yyyy-mm-dd HH: MM: SS" |
разрешен | Не используется | Необязательный | Необязательный | Не используется | Конечная временная метка до тех пор, пока не будет разрешен доступ (требуется включено = 1 и Timelimited = 1) | "Yyyy-mm-dd HH: MM: SS" |
разрешенные дни | Не используется | Необязательный | Необязательный | Не используется | Будни, по которым должен быть разрешен доступ (требуется включено = 1 и временное значение = 1) | Массив дней: «Пн», «Вт», «Ср», «Чт», «Пт» «Сит», «Солнце» |
разрешен от времени | Не используется | Необязательный | Необязательный | Не используется | Время начала в день, с которого должен быть разрешен доступ (требуется включено = 1 и Timelimited = 1) | "HH: мм" |
разрешено | Не используется | Необязательный | Необязательный | Не используется | Время окончания в день, пока не должен быть допустим доступ (требуется включено = 1 и временное значение = 1) | "HH: мм" |
Примеры:
{ "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" }
Результат последнего действия изменения клавиатуры будет опубликовано в тему [lock/opener]/configuration/commandResultJson
MQTT.
Возможные значения - «novalidpinset», «keypadcontroldisabled», «keypadnotavailable», «Keypaddisabled», «InvalidConfig», «Invalidjson», «NoactionSet», «Invalidaction», «nooxistingCodeidet», «Nonameset», «novalidcodeSet», «nocodeset», «Nonameset», «novalidcodeSet», «nocestestet», «Nonameset». , "InvalidAllowedFrom", "InvalidAllowedUtlil", «InvalidAllowedFromTime», «InvalidAlhangleDitLiteMe», «Успех», «Неудачный», «Тайм -аут», «Работа», «НЕТПОРИРОВАН», «ОШИБКА» и «Неопределенный».
Если клавиатура подключена к блокировке, коды клавиатуры могут быть добавлены, обновлены и удаляются. Это должно включить сначала в портале конфигурации. Проверьте «Добавить, изменить и удалить коды клавиатуры» в «Конфигурации уровня доступа» и сохранить конфигурацию.
Информация о кодах опубликована в разделе «Клавиатура/code_x», x, запускающуюся с 0 вверх по количеству настроенных кодов. Это должно быть включено отдельно, проверяя «публикацию кодов клавиатуры» информации «в разделе« Конфигурация уровня доступа »и сохранив конфигурацию. По умолчанию опубликовано максимум 10 записей.
По соображениям безопасности сам код не опубликован, если только он явно включен в настройки Nuki Hub. Чтобы изменить коды клавиатуры, настраивается структура команды в разделе клавиатура/команда:
Чтобы изменить коды клавиатуры, первые четыре узла параметров должны быть установлены в зависимости от команды:
** Примечание: правила для кодов:
После установки необходимых параметров напишите действие, которое будет выполнено в командный узел. Например, чтобы добавить код:
Записи TimeControl могут быть добавлены, обновлены и удалены. Это должно включить сначала в портале конфигурации. Проверьте «Добавить, изменить и удалять записи TimeControl» в «Конфигурации уровня доступа» и сохранить конфигурацию.
Информация о текущих записях TimeControl опубликована как данные JSON по теме «[Lock/Opener]/TimeControl/JSON» MQTT.
Это должно быть включено отдельно, проверяя «публикацию информации о записях TimeControl» в «Конфигурации уровня доступа» и сохранения конфигурации. По умолчанию опубликовано максимум 10 записей.
Чтобы изменить настройки блокировки/открытия Nuki/открытия, установите тему [lock/opener]/timecontrol/actionJson
на значение форматированного JSON, содержащее следующие узлы.
Узел | Удалить | Добавлять | Обновлять | Использование | Возможные значения |
---|---|---|---|---|---|
действие | Необходимый | Необходимый | Необходимый | Действие для выполнения | "Удалить", "добавить", "Обновление" |
intryId | Необходимый | Не используется | Необходимый | Идентификатор записи существующей записи для удаления или обновления | Целое число |
включено | Не используется | Не используется | Необязательный | Включить или отключить запись, всегда включенная при добавлении | 1 = включено, 0 = отключено |
будние дни | Не используется | Необязательный | Необязательный | Будни, по которым следует выявить выбранное действие блокировки (требуется включено = 1) | Массив дней: «Пн», «Вт», «Ср», «Чт», «Пт» «Сит», «Солнце» |
время | Не используется | Необходимый | Необязательный | Время, в которое следует выполнять выбранное действие блокировки (требуется включено = 1) | "HH: мм" |
блокировка | Не используется | Необходимый | Необязательный | Действие блокировки, которое должно быть выполнено в выбранные будние дни в выбранное время (требуется включено = 1) | Для блокировки Nuki: «Разблокировать», «Замок», «Unlatch», «lockngo», «lockngounlatch», «Fulllock». Для новичка Nuki: «Activaterto», «deactivaterto», «ElectricStrikeActuation», «ActivateCM», «DeActivatecm |
Примеры:
{ "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" }
Записи авторизации могут быть обновлены и удалены. Это должно включить сначала в портале конфигурации. Проверьте «Изменить и удалить записи авторизации» в разделе «Конфигурация уровня доступа» и сохранить конфигурацию. В настоящее время (пока) невозможно добавить записи авторизации таким образом.
Информация о текущих записях авторизации опубликована как данные JSON по теме «[Lock/Opener]/Authorization/json» MQTT.
Это должно быть включено отдельно, проверяя «публикацию записей авторизации» в разделе «Конфигурация уровня доступа» и сохранив конфигурацию. По умолчанию опубликовано максимум 10 записей.
Чтобы изменить настройки авторизации блокировки/открытия Nuki, установите тему [lock/opener]/authorization/action
на форматированное значение JSON, содержащее следующие узлы.
Узел | Удалить | Добавлять | Обновлять | Использование | Возможные значения |
---|---|---|---|---|---|
действие | Необходимый | Необходимый | Необходимый | Действие для выполнения | "Удалить", "добавить", "Обновление" |
authid | Необходимый | Не используется | Необходимый | Идентификатор AUTH существующей записи для удаления или обновления | Целое число |
включено | Не используется | Не используется | Необязательный | Включить или отключить авторизацию, всегда включенные на добавление | 1 = включено, 0 = отключено |
имя | Не используется | Необходимый | Необязательный | Имя авторизации для создания или обновления | Строка, максимум 20 chars |
удаленная | Не используется | Необязательный | Необязательный | Если это разрешение разрешено удаленный доступ, требуется включен = 1 | 1 = включено, 0 = отключено |
сроки | Не используется | Необязательный | Необязательный | Если это разрешение ограничено для доступа только в определенное время, требуется включено = 1 | 1 = включено, 0 = отключено |
разрешен от | Не используется | Необязательный | Необязательный | Начальная метка времени, с которой должен быть разрешен доступ (требуется включено = 1 и Timelimited = 1) | "Yyyy-mm-dd HH: MM: SS" |
разрешен | Не используется | Необязательный | Необязательный | Конечная временная метка до тех пор, пока не будет разрешен доступ (требуется включено = 1 и Timelimited = 1) | "Yyyy-mm-dd HH: MM: SS" |
разрешенные дни | Не используется | Необязательный | Необязательный | Будни, по которым должен быть разрешен доступ (требуется включено = 1 и временное значение = 1) | Массив дней: «Пн», «Вт», «Ср», «Чт», «Пт» «Сит», «Солнце» |
разрешен от времени | Не используется | Необязательный | Необязательный | Время начала в день, с которого должен быть разрешен доступ (требуется включено = 1 и Timelimited = 1) | "HH: мм" |
разрешено | Не используется | Необязательный | Необязательный | Время окончания в день, пока не должен быть допустим доступ (требуется включено = 1 и временное значение = 1) | "HH: мм" |
Примеры:
{ "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" }
Замок можно контролировать с помощью GPIO. Чтобы вызвать действия, подключение к земле должно присутствовать при аренде 300 мс (или +3,3 В для «Общего ввода (раскрытия)»).
Чтобы включить управление GPIO, перейдите на страницу «Конфигурация GPIO», где каждый GPIO может настроен для определенной роли:
Если вы предпочитаете подключаться к Ethernet вместо Wi-Fi, вы либо используете один из поддерживаемых модулей ESP32 со встроенным Ethernet (см. Раздел «Поддерживаемые устройства»), либо подключите отдельный модуль Spi Ethernet.
В настоящее время поддерживаются модуль Wiznet W5X00 (W5100, W5200, W5500), DN9051 и KSZ8851SNL.
Чтобы использовать поддерживаемый модуль, прошивайте прошивку, подключите через Wi-Fi и выберите правильное сетевое оборудование в разделе «Конфигурация сети».
Чтобы подключить внешний модуль W5X00 в ESP, используйте эту схему проводки:
Теперь подключитесь через Wi-Fi и измените сетевое оборудование на «Generic W5500».
Если оборудование Ethernet не обнаруживается или инициализировано должным образом после изменения сетевого устройства, Wi-Fi будет использоваться в качестве запасного.
Примечание. Модули LAN8720 поддерживаются только на ESP32 и ESP32-SOLO1, а не на ESP32-S3, ESP32-C3 или ESP-C6
К сожалению, ESP32 имеют проблемы с некоторыми точками доступа и переподключением.
В качестве обходного пути вы можете перейти к «конфигурации сети» и включить «перезагрузку при отключении».
Это перезагрузит ESP, как только он будет отключен от Wi-Fi.
Кроме того, это уменьшает тайм -аут портала конфигурации до трех минут, чтобы предотвратить застрявшую в режиме конфигурации ESP в случае, если точка доступа временно не в сети.
Если это по -прежнему не исправляет разъединения, и ESP становится недоступной, опция «перезагрузить таймер» может использоваться в качестве последнего средства.
Он перезагрузит ESP после настроенного количества времени.
Во-первых, убедитесь, что версия прошивки устройства Nuki обновлена, более старые версии имеют проблемы со спасением.
Затем попробуйте стереть вспышку ESP32, а затем (повторно) прошивая прошивку.
Чтобы стереть вспышку, используйте инструмент для загрузки Espressif и нажмите кнопку «Стереть».
После этого прошивая прошивку, как описано в файле «HOW-FLASH.TXT» или с использованием WebFlash.
Кроме того, проверьте, что спаривание разрешено. В приложении Nuki смартфона перейдите к «Настройкам» -> «Функции и конфигурации» -> «Кнопка и светодиод» и убедитесь, что «соединение Bluetooh» включено.
Затем нажмите кнопку в течение нескольких секунд, пока светодиодный свет не останется.
Примечание о единице M5Stack POESP32. Здесь начальный прием Bluetooth очень плохой (диапазон менее одного метра). Причина в том, что модуль не имеет антенны на печатной плате, а только разъем IPEX. Модернизируя внешнюю антенну SMA (IPEX или другие имена U.FL, IPAX, IPX, AMC, MHF, UMCC), Bluetooth/Wi-Fi работает на несколько метров.
Убедитесь, что вы используете хотя бы версию 2023.8.0 домашнего помощника.
Домашние помощники внесли изменения в MQTT Auto Discovery, которые нарушают поддержку более старой версии, и Nuki Hub принял эти изменения.
К сожалению, это означает, что более старые версии домашнего помощника больше не поддерживаются реализацией Discovery Nuki Hub.
Согласно Nuki, это дизайн и часть спецификации Pro Lock.
Вы можете использовать либо встроенный Wi-Fi, либо мост (который Nuki Hub регистрирует AS).
Или используйте Nuki Hub в гибридном режиме с помощью Wi-Fi или потока, см. Hybrid Mode
Использование оба одновременно не поддерживается.
Некоторые функциональные возможности ограничены прошивкой блокировки (или открывателя) и доступны только в случае предоставления PIN -кода.
При настройке блокировки (или открытия) вы должны установить PIN -код в приложении Nuki Smartphone.
Перейдите на страницу учетных данных Nuki Hub, введите этот PIN -код и нажмите «Сохранить».
Проверьте основную страницу конфигуратора, чтобы увидеть, действителен ли введенный вывод
См. Предыдущий пункт, эта функция нуждается в правильном выводе, который будет настроен.
Убедитесь, что параметр «Unlatch» проверяется в разделе «Конфигурация уровня доступа».
Независимость может быть вызвана с помощью службы Lock.Open.
В качестве альтернативы кнопка «Unlatch» выставлена через Home Assistant Discovery.
Эта кнопка отключена по умолчанию, но может быть включена в Home Assistant UI.
При использовании нескольких устройств Nuki необходимо настроить различные пути для каждого устройства.
Перейдите к «конфигурации MQTT» и измените «Путь MQTT Nukihub» в «Базовой конфигурации MQTT», по крайней мере, для одного из устройств.
Это часто является результатом включения «регистрации в качестве приложения», когда не использует гибридный режим (официальное сосуществование MQTT / Nuki Hub).
Это заставит Nuki Hub постоянно запрашивать замки и, как таковые, приводят к чрезмерной стоке батареи.
Чтобы предотвратить это поведение, нераспространено Nuki Hub, отключите «регистр как приложение» и повторную партию.
Никогда не включайте «Зарегистрироваться в качестве приложения», если вы не собираетесь использовать мост Nuki в дополнение к Nuki Hub или вы используете гибридный режим!
Docker (предпочтительный)
См. Readme в каталоге Docker для инструкций по строительству с использованием Docker.
Платформа IO, инструкции для Debian Linux Distro (например, 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
Это стороннее программное обеспечение для устройств Nuki.
Этот проект или любой из его авторов не связаны с Nuki Home Solutions GmbH.
Пожалуйста, обратитесь к официальным продуктам и поддержке официального веб -сайта Nuki:
https://nuki.io/
Для получения дополнительной лицензии проверьте включенный файл лицензии.