Nuki Hub 的范围是提供一种有效的方法将 Nuki 设备集成到本地家庭自动化平台中。
Nuki Hub 软件在 ESP32 模块上运行,充当 Nuki 设备和家庭自动化平台之间的桥梁。
它通过蓝牙 (BLE) 与 Nuki 锁和/或开启器通信,并使用 MQTT 与其他系统集成。
它通过 MQTT 公开锁定状态(以及更多信息),并允许执行锁定和解锁等命令以及通过 MQTT 更改 Nuki Lock/Opener 配置。
Nuki Hub 不与 Nuki 移动应用程序集成,它无法在官方 Nuki 移动应用程序中将自己注册为桥接器。
欢迎加入我们的 Discord:https://discord.gg/9nPq85bP4p
支持的 ESP32 设备:
不支持的 ESP32 设备:
支持的 Nuki 设备:
未经测试但可能支持:
支持的以太网设备:
作为 Wi-Fi(可在任何受支持的 ESP32 上使用)的替代方案,支持以下具有内置有线以太网的 ESP32 模块:
原则上,支持所有具有内置以太网端口的 ESP32(及其变体)设备,但可能需要使用“自定义 LAN 设置”选项进行额外设置。有关详细信息,请参阅“通过以太网连接”部分。
如果绝对需要WIFI6:ESP32-C6
如果需要 PoE:任何上述带 PoE 的设备或任何其他 ESP 设备与 SPI 以太网模块 (W5500) 以及 PoE 至以太网和 USB 类型 B/C 分路器的组合
如果您想要最大性能并打算运行以下任意一个或多个:
具有 2MB 或更多 PSRAM 的 ESP32-S3(寻找 N>=4 且 R>=2 的 ESP32-S3,例如 ESP32-S3 N16R8)
一般来说,在购买新设备时,尺寸和多几美元都不是问题:具有 2MB 或更多 PSRAM 的 ESP32-S3。
ESP32-S3 是一款双核 CPU,具有许多 GPIO,能够使用 PSRAM 扩大 RAM,能够通过 SPI 连接以太网模块,并可选择使用 PoE 分离器为设备供电。与其他 ESP 设备相比,ESP32-S3 唯一缺少的功能是能够使用一些仅由原始 ESP32 支持的以太网模块以及通过 WIFI6 (C6) 连接的能力
特征 | 努基中心 | 贯桥 |
---|---|---|
桥接API | x | |
智能锁遥控器 | x | x |
通过 Matter 集成智能家居 | x | |
通过 Matter 集成 Apple HomeKit | x | |
MQTT API | x | x(仅适用于 SL 3、4 和 4 Pro 型号) |
有线局域网支持 | x | |
以太网供电 (PoE) | x(如果 LAN/ESP 模块支持) | |
无线局域网支持 | x | x(仅适用于 SL 3 和 4 Pro 型号) |
家庭自动化平台集成 | x | x |
云支持 | x(通过智能家居解决方案可选) | x |
无云操作 | x | x(自固件 3.8.2 起) |
官方 Nuki 应用程序集成 | x | |
Nuki 智能锁所有型号 | x | x |
努基揭幕战 | x | x |
Nuki 键盘(1.0 和 2.0) | x | x |
MQTT 加密 | x | |
MQTT API的细粒度访问控制 | x | |
通过 MQTT API 导出锁定操作 | x | |
通过 GPIO 控制 | x | |
WiFI 和 Thread 连接锁的混合模式 | x |
如果您尚未订购 Nuki 产品,您可以在下订单时使用我的推荐人代码来支持我:
REF2BJHFVHZKK
这也将为您的订单提供 10% 的折扣。
该项目可供所有人免费使用。不过,如果您想捐款,可以在 ko-fi.com 给我买杯咖啡:
将固件刷新到 ESP32。最简单的安装方法是使用 Chrome/Opera/Edge 等兼容浏览器使用 Web 安装程序:
https://technyon.github.io/nuki_hub/
注意:Webflash 不适用于 ESP32-Solo1
或者从 https://github.com/technyon/nuki_hub/releases 下载适用于您的 ESP32 模型的最新版本
解压 zip 存档并阅读随附的 how-to-flash.txt,了解“Espressif Flash 下载工具”或“esptool”的安装说明。
给 ESP32 通电,就会出现一个名为“NukiHub”的新 Wi-Fi 接入点。
接入点的密码是“NukiHubESP32”。
将客户端设备连接到此接入点,并在浏览器中导航到“http://192.168.4.1”。
使用 Web 界面将 ESP 连接到您首选的 Wi-Fi 网络。
配置 Wi-Fi 后,ESP 应自动连接到您的网络。
要配置与 MQTT 代理的连接,首先将您的客户端设备连接到 ESP32 所连接的同一 Wi-Fi 网络。
在浏览器中导航到通过 DHCP 分配给 ESP32 的 IP 地址(通常在互联网路由器的 Web 界面中找到)。
接下来,单击“MQTT 配置”下方的“编辑”,然后输入 MQTT 代理的地址和端口(通常为 1883)以及用户名和密码(如果 MQTT 代理需要)。
该固件支持 MQTT 的 SSL 加密,但大多数人,尤其是家庭用户不使用此功能。
在这种情况下,请将所有以“MQTT SSL”开头的字段留空。否则,请参阅本自述文件的“MQTT 加密”部分。
通过在官方 Nuki 应用程序的“设置”>“功能和配置”>“按钮和 LED”中启用此设置,确保 Nuki 设备启用“蓝牙配对”。启用设置后,按住 Nuki 设备上的按钮几秒钟。
当 ESP32 通电时,配对应该是自动的。
配对成功后,Web 界面应显示“已配对:是”。
锁状态和电池电量等 MQTT 节点现在应该反映锁报告的值。
注意:可以在 Nuki Bridge 旁边运行 Nuki Hub。不建议这样做(除非使用混合模式),并且会导致电池电量消耗过多,并可能导致任一设备丢失更新。在配对之前启用“注册为应用程序”以允许这样做。否则,在与 Nuki Hub 配对时,桥接器将被取消注册。
混合模式允许您在 Nuki Lock 3.0 Pro、Nuki Lock 4.0 或 Nuki Lock 4.0 Pro 上与 Nuki Hub 结合使用官方 Nuki MQTT 实现。
有关详细信息,请参阅混合模式。
ESP32 设备的可用 RAM 数量有限。
在仅连接 Nuki Lock 的 Nuki Hub 版本 9.01 上,预期的可用 RAM/堆可用量约为:
此可用 RAM 量可以通过某些操作(例如更改 Nuki 设备配置)或在启用以下功能时连续减少(暂时):
当前可用的 RAM/Heap 可以在 Nuki Hub 的 Web 配置器的信息页面上找到。
当 ESP32 耗尽可用 RAM 时,该设备可能会崩溃或发生意外行为。
Nuki Hub 确实允许在常规二进制文件上使用嵌入式 PSRAM(只要可用)。
PSRAM 的大小通常为 2、4 或 8MB,从而大大扩大了可用内部 RAM 的 320kb。
当 PSRAM 可用时,基本上不可能用完 RAM。您可以在 Web 配置器的信息页面上检查 PSRAM 是否可用。
请注意,适用于 ESP32-S3 的 Nuki Hub 有两种版本。
一种适用于不具有四路 SPI PSRAM 的设备,另一种适用于具有八路 SPI PSRAM 的设备。
如果您的 ESP32-S3 设备具有 PSRAM 但未检测到,请刷新其他 S3 二进制文件。
在浏览器中导航到分配给 ESP32 的 IP 地址。
“导入/导出配置”菜单选项允许以 JSON 格式导入和导出 NukiHub 设置。
通过选择以下任一选项来创建当前 NukiHub 设置的(部分)备份:
上述两个选项都不会备份配对数据,因此在恢复出厂设置或新设备上导入此导出时,您必须手动配对 Nuki 设备。
要更改NUKI锁定/开启器设置,将configuration/action
主题设置为使用以下任何设置的JSON格式值。可以一次更改多个设置。请参阅NUKI SMART LOCK API基本配置,NUKI Smart Lock API高级配置,NUKI Opener API基本配置和NUKI Opener API APPI高级配置,以获取有关可用设置的更多信息。
更改设置必须在配置门户中首先启用。在“访问级别配置”中检查您要在“ NUKI锁定/开启器配置控制”下更改的设置并保存配置。
环境 | 用法 | 可能的值 | 例子 |
---|---|---|---|
姓名 | 智能锁的名称。 | 字母数字字符串,最大长度32个字符 | { "name": "Frontdoor" } |
纬度 | 智能锁定地位的纬度。 | 漂浮 | { "latitude": "48.858093" } |
经度 | 智能锁的经度地理位置 | 漂浮 | { "longitude": "2.294694" } |
Autounlatch | 门是否应通过手动从外部操作门把手来解开门。 | 1 =启用,0 =禁用 | { "autoUnlatch": "1" } |
配对 | 是否应启用通过按钮激活配对模式。 | 1 =启用,0 =禁用 | { "pairingEnabled": "0" } |
纽扣 | 是否应启用该按钮。 | 1 =启用,0 =禁用 | { "buttonEnabled": "1" } |
LED 启用 | 是否应启用闪烁的LED来发出未锁定的门。 | 1 =启用,0 =禁用 | { "ledEnabled": "1" } |
Ledbrightness | LED亮度水平 | 0 = off,…,5 =最大 | { "ledBrightness": "2" } |
TimeZoneOffset | 时区偏移(UTC)在几分钟内 | 0到60之间的整数 | { "timeZoneOffset": "0" } |
dstmode | 所需的日光保存时间模式。 | 0 =禁用,1 =欧洲 | { "dstMode": "0" } |
fobaction1 | 如果按下nuki fob一次,则所需的动作。 | “无动作”,“解锁”,“锁”,“锁定n Go”,“智能” | { "fobAction1": "Lock n Go" } |
fobaction2 | 如果将Nuki FOB按两次,则期望的动作。 | “无动作”,“解锁”,“锁”,“锁定n Go”,“智能” | { "fobAction2": "Intelligent" } |
fobaction3 | 如果将Nuki FOB按三遍,则需要的动作。 | “无动作”,“解锁”,“锁”,“锁定n Go”,“智能” | { "fobAction3": "Unlock" } |
单轮 | 是否应仅执行单个锁或双锁 | 0 =双锁,1 =单锁 | { "singleLock": "0" } |
广告模式 | 所需的广告模式。 | “自动”,“正常”,“慢”,“最慢” | { "advertisingMode": "Normal" } |
时区 | 如果不支持时区,当前时区或“无” | “无”或Nuki时区的时区之一 | { "timeZone": "Europe/Berlin" } |
解锁positionOffSetDegrees | 抵消以程度改变未锁定位置的。 | -90至180之间的整数 | { "unlockedPositionOffsetDegrees": "-90" } |
lockedPositionOffSetDegrees | 抵消以程度改变锁定位置的情况。 | -180至90之间的整数 | { "lockedPositionOffsetDegrees": "80" } |
SingleLockedPositionOffSetDegrees | 抵消以程度改变单个锁定位置的情况。 | -180至180之间的整数 | { "singleLockedPositionOffsetDegrees": "120" } |
解锁TolockedTransitionOffsetDegrees | 抵消这种改变从解锁到锁定的过渡的位置发生的位置。 | -180至180之间的整数 | { "unlockedToLockedTransitionOffsetDegrees": "180" } |
lockngotimeout | 锁定的超时在几秒钟内 | 5到60之间的整数 | { "lockNgoTimeout": "60" } |
单按钮 | 所需的操作,如果按下了一次按钮。 | “无动作”,“智能”,“解锁”,“锁”,“ Unlack”,“锁定”,“显示状态” | { "singleButtonPressAction": "Lock n Go" } |
双键盘 | 所需的操作,如果按下了两次按钮。 | “无动作”,“智能”,“解锁”,“锁”,“ Unlack”,“锁定”,“显示状态” | { "doubleButtonPressAction": "Show Status" } |
脱粒型 | Wheter从外侧脱离所用圆柱体的内侧。 | 0 =不脱离,1 =分离 | { "detachedCylinder": "1" } |
电池类型 | 智能锁中存在的电池类型。 | “碱”,“蓄能器”,“锂” | { "batteryType": "Accumulators" } |
自动Batterytypedetection | 是否启用了电池类型的自动检测。 | 1 =启用,0 =禁用 | { "automaticBatteryTypeDetection": "Lock n Go" } |
未捕术 | 将闩锁保持在未打开位置的几秒钟内。 | 整数在1到30之间 | { "unlatchDuration": "3" } |
AutoLockTimeOut | 几秒钟,直到智能锁被解锁后重新锁定。 | 整数在30到1800之间 | { "autoLockTimeOut": "60" } |
Autounlockdisabled | 一般应该禁用自动解锁。 | 1 =自动解锁禁用,0 =启用自动解锁 | { "autoUnLockDisabled": "1" } |
噩梦 | 是否启用了噩梦。 | 1 =启用,0 =禁用 | { "nightModeEnabled": "1" } |
Nightmodestarttime | 如果启用了Nightmode的开始时间。 | 时间为“ HH:MM”格式 | { "nightModeStartTime": "22:00" } |
NightModeendTime | 如果启用了噩梦的结束时间。 | 时间为“ HH:MM”格式 | { "nightModeEndTime": "07:00" } |
Nightmodeautolockenable | 在噩梦中是否应启用自动锁。 | 1 =启用,0 =禁用 | { "nightModeAutoLockEnabled": "1" } |
Nightmodeautounlockdisabled | 在噩梦中是否应禁用自动解锁。 | 1 =自动解锁禁用,0 =启用自动解锁 | { "nightModeAutoUnlockDisabled": "1" } |
Nightmodeimmediatelockonstart | 是否应立即在噩梦开始锁定门。 | 1 =启用,0 =禁用 | { "nightModeImmediateLockOnStart": "1" } |
AutoLockenabled | 是否启用了自动锁。 | 1 =启用,0 =禁用 | { "autoLockEnabled": "1" } |
立即拟南芥 | 门关闭后是否应立即执行自动锁。 | 1 =启用,0 =禁用 | { "immediateAutoLockEnabled": "1" } |
AutoupDateEnabled | 是否应启用自动固件更新。 | 1 =启用,0 =禁用 | { "autoUpdateEnabled": "1" } |
rebootnuki | 立即重新启动NUKI设备 | 1 =重新启动nuki | { "rebootNuki": "1" } |
环境 | 用法 | 可能的值 | 例子 |
---|---|---|---|
姓名 | 开瓶器的名称。 | 字母数字字符串,最大长度32个字符 | { "name": "Frontdoor" } |
纬度 | 开瓶器地理位置的纬度。 | 漂浮 | { "latitude": "48.858093" } |
经度 | 开瓶器地理位置的经度 | 漂浮 | { "longitude": "2.294694" } |
配对 | 是否应启用通过按钮激活配对模式。 | 1 =启用,0 =禁用 | { "pairingEnabled": "0" } |
纽扣 | 是否应启用该按钮。 | 1 =启用,0 =禁用 | { "buttonEnabled": "1" } |
LEDFLASHENABLED | 是否应启用闪烁的LED来发信号CM或RTO。 | 1 =启用,0 =禁用 | { "ledFlashEnabled": "1" } |
TimeZoneOffset | 时区偏移(UTC)在几分钟内 | 0到60之间的整数 | { "timeZoneOffset": "0" } |
dstmode | 所需的日光保存时间模式。 | 0 =禁用,1 =欧洲 | { "dstMode": "0" } |
fobaction1 | 如果按下nuki fob一次,则所需的动作。 | “无动作”,“切换RTO”,“激活RTO”,“停用RTO”,“ open”,“ ring” | { "fobAction1": "Toggle RTO" } |
fobaction2 | 如果将Nuki FOB按两次,则期望的动作。 | “无动作”,“切换RTO”,“激活RTO”,“停用RTO”,“ open”,“ ring” | { "fobAction2": "Open" } |
fobaction3 | 如果将Nuki FOB按三遍,则需要的动作。 | “无动作”,“切换RTO”,“激活RTO”,“停用RTO”,“ open”,“ ring” | { "fobAction3": "Ring" } |
OpertMode | 所需的操作模式 | “通用门开启器”,“ Analogue Intercom”,“ Digital Intercom”,“ Siedle”,“ TCS”,“ Bticino”,“ Siedle hts”,“ str”,“ ritto”,“ ritto”,“ fermax”,“ fermax”,“ comelit”,“ comelit”,“ comelit”,“ urmet bibus”,“ urmet 2voice”,“ golmar”,“ sks”,“备用” | { "operatingMode": "TCS" } |
广告模式 | 所需的广告模式。 | “自动”,“正常”,“慢”,“最慢” | { "advertisingMode": "Normal" } |
时区 | 如果不支持时区,当前时区或“无” | “无”或Nuki时区的时区之一 | { "timeZone": "Europe/Berlin" } |
对间 | 连接对讲机的数据库ID。 | 整数 | { "intercomID": "1" } |
Busmodeswitch | 在数据和模拟模式之间切换的方法 | 0 =无,1 = vshort电路 | { "busModeSwitch": "0" } |
快速折叠 | 公交模式在MS中切换的短路持续时间。 | 整数 | { "shortCircuitDuration": "250" } |
Electrictrikedelay | 如果RTO进行电动罢工驱动时,电动罢工激活的MS延迟 | 0到30000之间的整数 | { "electricStrikeDelay": "2080" } |
RandomelectricsTrikedElay | 随机延迟(3-7)是为了模拟在动作电动罢工的内部的人。 | 1 =启用,0 =禁用 | { "randomElectricStrikeDelay": "1" } |
电气表现 | 电动驱动力驱动的持续时间。 。 | 1000至30000之间的整数 | { "electricStrikeDuration": "5000" } |
残疾人行动 | 是否在戒指后禁用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" } |
门贝尔斯披石 | 门铃抑制的持续时间。 | 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" } |
高音 | 开瓶器的声音级别 | 0到255之间的整数 | { "soundLevel": "200" } |
单按钮 | 所需的操作,如果按下了一次按钮。 | “无动作”,“切换RTO”,“激活RTO”,“停用RTO”,“切换CM”,“激活CM”,“停用CM”,“ Open” | { "singleButtonPressAction": "Open" } |
双键盘 | 所需的操作,如果按下了两次按钮。 | “无动作”,“切换RTO”,“激活RTO”,“停用RTO”,“切换CM”,“激活CM”,“停用CM”,“ Open” | { "doubleButtonPressAction": "No Action" } |
电池类型 | 智能锁中存在的电池类型。 | “碱”,“蓄能器”,“锂” | { "batteryType": "Accumulators" } |
自动Batterytypedetection | 是否启用了电池类型的自动检测。 | 1 =启用,0 =禁用 | { "automaticBatteryTypeDetection": "1" } |
rebootnuki | 立即重新启动NUKI设备 | 1 =重新启动nuki | { "rebootNuki": "1" } |
示例用法一次更改多个设置:
{ "buttonEnabled": "1", "lockngoTimeout": "60", "automaticBatteryTypeDetection": "1" }
{ "fobAction1": "Unlock", "fobAction2": "Intelligent", "nightModeImmediateLockOnStart": "1" }
最后一个配置更改操作的结果将以JSON数据发布到configuration/commandResult
MQTT主题。
JSON数据将包括一个名为“常规”的节点和一个NUKI中心在操作中检测到的每个设置的节点。
“常规”节点的可能值是“ Novalidpinset”,“ Invalidjson”,“ InvalidConfig”,“ Success”和“ Nochange”。
每次设置节点的可能值是“不变”,“ Novalueset”,“ InvalidValue”,“ valuetoolong”,“ accessDenied”,“成功”,“失败”,“超时”,“ Working”,“ Working”,“ notpaired”,“ erorge”,“错误”,“错误”和“未定义”
例子:
{"advertisingMode":"success","general":"success"}
如果启用了家庭助理发现(请参阅此README的“家庭助理发现”部分)Nuki Hub将为几乎所有上述设置创建实体。
通过串行连接最初安装NUKI HUB固件后,可以通过浏览器的OTA更新部署进一步的更新。
在配置门户中,从主页选择“固件更新”。
如果Nuki Hub连接到Internet,则升级NUKI集线器的最简单方法是选择“最新版本更新”。
这将下载最新的NUKI枢纽和Nuki Hub Updater,并自动升级这两个应用程序。
Nuki Hub将在此过程中重新启动3次,这将需要大约5分钟。
如果启用了“允许使用MQTT进行更新”,则还可以使用Home Assistans Updater或将“ 1”写入nukihub/maintanance/update
主题以开始更新过程。
另外,您可以从文件系统中选择一个二进制文件以更新NUKI HUB或NUKI HUB更新器
您只能从Nuki Hub Updater中更新NUKI HUB,并仅在NUKI HUB中更新更新程序
您可以通过从“放火器更新”页面中选择重新启动选项,从NUKI枢纽重新启动到更新程序,反之亦然
当您在正确的应用程序上时,您可以通过单击“浏览”来上传新的二进制文件,然后选择新的“ nuki_hub [board] .bin] .bin”或“ nuki_hub_ub_updater [board] .bin] .bin”文件,然后选择“上传文件”。
大约一分钟后,应安装新的固件后,ESP将自动重新启动到更新的二进制文件。
选择错误的二进制文件将导致失败的更新
注意从NUKI HUB 8.35或更低的用户升级:
更新版本9.00需要更改ESP32的分区表。
从较早版本更新为NUKI HUB 9.00时,请首次安装说明。
使用上述说明更新时,您的设置不会受到影响(使用WebFlash更新时,请勿选择擦除设备)。
可以对MQTT进行的通信进行SSL加密。
要启用SSL加密,请在MQTT配置页面中提供必要的信息。
支持以下配置:
CA,CERT和KEY是空的 - >无加密
ca已填充,但cent和键是空的 - >加密的mqtt
CA,CERT和密钥被填充 - >带有客户端的加密MQTT
为您的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锁定和/或开启器和相关实体应自动出现在您的Home Assistans MQTT设备中。
在启用自动发现时,设置了家庭助理服务与NUKI命令之间的以下映射:
SmartLock | 开瓶器(默认) | 开瓶器(替代方案) | |
---|---|---|---|
锁.锁 | 锁 | 禁用戒指以打开 | 禁用连续模式 |
lock.unlock | 开锁 | 使戒指打开 | 启用连续模式 |
锁。打开 | 打开 | 电动驱动 | 电动驱动 |
注意:MQTT Discovery使用保留的MQTT消息来存储设备配置。为了避免经纪人上的孤儿配置,如果您不再使用此软件,请首先禁用AutoDiscovery。在MQTT配置页面中,在不配对以及更改/禁用自动发现主题时,保留消息会自动清除。
Note2:可以使用MQTT锁集成手动设置家庭助理,但不建议这样做
如果将键盘连接到锁定,则可以添加,更新和删除键盘代码。这必须在配置门户中首先启用。检查“访问级别配置”下的“添加,修改和删除键盘代码”,然后保存配置。
有关当前键盘代码的信息以JSON数据发布到“ [锁/开启器]/键盘/JSON” MQTT主题。
需要通过检查“访问级别配置”下的“发布键盘代码信息”并保存配置,从而单独启用这一点。出于安全原因,除非在NUKI中心设置中明确启用了代码本身,否则代码本身。默认情况下,最多有10个条目。
要更改NUKI锁定/开启器键盘设置,将[lock/opener]/keypad/actionJson
主题设置为包含以下节点的JSON格式值。
节点 | 删除 | 添加 | 更新 | 查看 | 用法 | 可能的值 |
---|---|---|---|---|---|---|
行动 | 必需的 | 必需的 | 必需的 | 必需的 | 执行的动作 | “删除”,“添加”,“更新”,“检查” |
CodeId | 必需的 | 未使用 | 必需的 | 必需的 | 现有代码的代码ID删除或更新 | 整数 |
代码 | 未使用 | 必需的 | 选修的 | 必需的 | 创建或更新的代码 | 没有零的6位整数,不能以“ 12”开头 |
已启用 | 未使用 | 未使用 | 选修的 | 未使用 | 启用或禁用代码,始终在添加上启用 | 1 =启用,0 =禁用 |
姓名 | 未使用 | 必需的 | 选修的 | 未使用 | 创建或更新的代码名称 | 绳子,最大20个字符 |
限时 | 未使用 | 选修的 | 选修的 | 未使用 | 如果此授权仅限于在某些时间访问,则需要启用= 1 | 1 =启用,0 =禁用 |
允许从 | 未使用 | 选修的 | 选修的 | 未使用 | 允许允许访问的开始时间戳(需要启用= 1,timelimited = 1) | “ Yyyy-MM-DD HH:MM:SS” |
允许的 | 未使用 | 选修的 | 选修的 | 未使用 | 结束时间戳,直到允许访问(要求启用= 1,timelimited = 1) | “ Yyyy-MM-DD HH:MM:SS” |
允许的周日 | 未使用 | 选修的 | 选修的 | 未使用 | 应该允许访问的工作日(需要启用= 1,timelimited = 1) | 天数:“蒙上”,“星期二”,“ wed”,“ th”,“ fri”,sat“,“太阳” |
允许从时间 | 未使用 | 选修的 | 选修的 | 未使用 | 应允许访问访问的每天的开始时间(要求启用= 1,timelimited = 1) | “ HH:MM” |
允许的时间 | 未使用 | 选修的 | 选修的 | 未使用 | 每天的结束时间允许访问(要求启用= 1,timelimited = 1) | “ HH:MM” |
示例:
{ "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主题。
Possible values are "noValidPinSet", "keypadControlDisabled", "keypadNotAvailable", "keypadDisabled", "invalidConfig", "invalidJson", "noActionSet", "invalidAction", "noExistingCodeIdSet", "noNameSet", "noValidCodeSet", "noCodeSet" ,“无效的from”, “ Invalidalloweduntil”,“ Invalidallowedfromtime”,“ InvalidloadeLeduntiltime”,“成功”,“失败”,“超时”,“工作”,“ NOTPAIRED”,“错误”,“错误”和“未定义”。
如果将键盘连接到锁定,则可以添加,更新和删除键盘代码。这必须在配置门户中首先启用。检查“访问级别配置”下的“添加,修改和删除键盘代码”,然后保存配置。
有关代码的信息发表在“键盘/code_x”下,x从0开始,从0开始。需要通过检查“访问级别配置”下的“发布键盘代码信息”并保存配置,从而单独启用这一点。默认情况下,最多有10个条目。
出于安全原因,除非在NUKI中心设置中明确启用了代码本身,否则代码本身。要修改键盘代码,在键盘/命令下设置了命令结构:
要修改键盘代码,必须根据命令设置前四个参数节点:
**注意:代码规则是:
设置必要的参数后,将要执行的操作写入命令节点。例如,添加一个代码:
可以添加,更新和删除时间控制条目。这必须在配置门户中首先启用。检查“访问级别配置”下的“添加,修改和删除timecontrol条目”,然后保存配置。
有关当前时间控制条目的信息以JSON数据发布到“ [锁/开启器]/timecontrol/json” MQTT主题。
需要通过在“访问级别配置”下检查“ timecontrol条目信息”并保存配置来单独启用此功能。默认情况下,最多有10个条目。
要更改NUKI锁定/开启器timecontrol设置,将[lock/opener]/timecontrol/actionJson
主题设置为包含以下节点的JSON格式值。
节点 | 删除 | 添加 | 更新 | 用法 | 可能的值 |
---|---|---|---|---|---|
行动 | 必需的 | 必需的 | 必需的 | 执行的动作 | “删除”,“添加”,“更新” |
entryid | 必需的 | 未使用 | 必需的 | 现有条目的输入ID删除或更新 | 整数 |
已启用 | 未使用 | 未使用 | 选修的 | 启用或禁用该条目,始终在添加上启用 | 1 =启用,0 =禁用 |
工作日 | 未使用 | 选修的 | 选修的 | 应在其上选出的锁定操作的工作日(需要启用= 1) | 天数:“蒙上”,“星期二”,“ wed”,“ th”,“ fri”,sat“,“太阳” |
时间 | 未使用 | 必需的 | 选修的 | 应执行选定的锁定操作的时间(需要启用= 1) | “ HH:MM” |
锁定 | 未使用 | 必需的 | 选修的 | 应在选定时间在选定的工作日执行的锁定操作(需要启用= 1) | 对于Nuki锁:“解锁”,“锁”,“ Unlacke”,“ lockngo”,“ lokkngounlatch”,“ fulllock”。对于Nuki开瓶器:“ Activaterto”,“ Deactivaterto”,“ ElectricTrikeActuation”,“ 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数据发布到“ [锁/开启器]/授权/JSON” MQTT主题。
需要通过检查“访问级别配置”下的“发布授权条目信息”并保存配置来单独启用此功能。默认情况下,最多有10个条目。
要更改NUKI锁定/开启器授权设置,将[lock/opener]/authorization/action
主题设置为包含以下节点的JSON格式值。
节点 | 删除 | 添加 | 更新 | 用法 | 可能的值 |
---|---|---|---|---|---|
行动 | 必需的 | 必需的 | 必需的 | 执行的动作 | “删除”,“添加”,“更新” |
authid | 必需的 | 未使用 | 必需的 | 现有条目的验证ID删除或更新 | 整数 |
已启用 | 未使用 | 未使用 | 选修的 | 启用或禁用授权,始终在添加上启用 | 1 =启用,0 =禁用 |
姓名 | 未使用 | 必需的 | 选修的 | 创建或更新的授权名称 | 绳子,最大20个字符 |
remoteallow | 未使用 | 选修的 | 选修的 | 如果允许此授权远程访问,则需要启用= 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,timelimited = 1) | 天数:“蒙上”,“星期二”,“ wed”,“ th”,“ fri”,sat“,“太阳” |
允许从时间 | 未使用 | 选修的 | 选修的 | 应允许访问访问的每天的开始时间(要求启用= 1,timelimited = 1) | “ HH:MM” |
允许的时间 | 未使用 | 选修的 | 选修的 | 每天的结束时间允许访问(要求启用= 1,timelimited = 1) | “ HH:MM” |
示例:
{ "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控制锁。要触发动作,必须在300ms上存在与地面的连接(或“通用输入(下拉)”)。
要启用GPIO控件,请阅读“ GPIO配置”页面,每个GPIO都可以为特定角色配置E:
如果您希望连接到通过以太网而不是Wi-Fi连接,则要么使用带有内置以太网的支持的ESP32模块之一(请参阅“支持的设备”部分),要么将单独的SPI ETHERNET模块连接起来。
当前,支持Wiznet W5X00模块(W5100,W5200,W5500),DN9051和KSZ8851SNL芯片。
要使用受支持的模块,请刷新固件,通过Wi-Fi连接,然后在“网络配置”部分中选择正确的网络硬件。
要将外部W5X00模块连接到ESP,请使用此布线方案:
现在,通过Wi-Fi连接,然后将网络硬件更改为“通用W5500”。
如果更改网络设备后未正确检测到以太网硬件,则Wi-Fi将用作后备。
注意:LAN8720模块仅在ESP32和ESP32-SOLO1上支持,而不是ESP32-S3,ESP32-C3或ESP-C6
不幸的是,ESP32在某些访问点上存在问题,并且重新连接失败。
作为解决方法,您可以导航到“网络配置”,并启用“重新连接”。
一旦ESP与Wi-Fi断开连接,这将立即重新启动。
另外,这将配置门户超时减少到三分钟,以防止ESP暂时脱机。
如果这仍然无法修复断开连接并且ESP变得无法实现,则可以将“重新启动计时器”选项用作最后的手段。
它将在配置的时间后重新启动ESP。
首先,确保NUKI设备的固件版本是最新的,较旧的版本具有问题配对。
接下来,尝试擦除ESP32闪光灯,然后(重新)闪烁固件。
要擦除闪光灯,请使用Espressif下载工具,然后单击“擦除”按钮。
之后,如“ How-to-flash.txt”文件或使用WebFlash中所述的固件刷新固件。
另外,检查允许配对。在NUKI智能手机应用程序中,转到“设置” - >“功能和配置” - >“ button&led”,并确保启用了“ bluetooh配对”。
接下来,按下按钮几秒钟,直到LED灯保持点亮。
有关M5STACK POESP32单元的注释。在这里,初始蓝牙接收非常差(范围少于一米)。原因是该模块在PCB上没有天线,而是IPEX连接器。通过翻新外部SMA天线(IPEX或其他名称U.FL,IPAX,IPX,AMC,MHF,MHF,UMCC),蓝牙/Wi-Fi在几米上工作。
确保您至少正在使用家庭助理的2023.8.0版。
家庭助理开发人员已更改MQTT自动发现,该发现破坏了对较旧版本的支持,Nuki Hub采用了这些更改。
不幸的是,这意味着旧版本的家庭助理版本不再受Nuki Hub Discovery实现的支持。
根据Nuki的说法,这是设计和专业锁定规范的一部分。
您可以使用内置的Wi-Fi或桥梁(Nuki Hub登记为)。
或使用Wi-Fi或线程在混合模式下使用NUKI集线器,请参阅混合模式
同时不支持两者。
某些功能受锁(或开瓶)固件的限制,只有在提供引脚时才能访问。
设置锁定(或开启器)时,您必须在NUKI智能手机应用程序中设置PIN。
导航到NUKI枢纽凭据页面,输入此PIN并单击“保存”。
检查配置器的主页以查看输入的PIN是否有效
请参阅上几点,此功能需要配置正确的PIN。
确保在“访问级别配置”下检查“未打开”选项。
可以使用lock.open服务触发Unstrainding。
另外,通过家庭助理发现暴露了“未打开”按钮。
此按钮默认情况下是禁用的,但可以在Home Assistant UI中启用。
使用多个NUKI设备时,必须配置每个设备的不同路径。
导航到“ MQTT配置”,然后将至少一个设备的“基本MQTT配置”下更改“ MQTT Nukihub路径”。
这通常是由于不使用混合模式时启用“注册为应用程序”的结果(官方MQTT / NUKI HUB共存)。
这样做会导致Nuki中心不断查询锁,因此导致电池电量过多。
为了防止这种行为,请取消NUKI枢纽,禁用“注册为应用程序”,然后重新分配。
切勿启用“注册为应用程序”,除非您打算使用NUKI桥除NUKI HUB之外使用NUKI桥,否则您正在使用混合模式!
Docker(首选)
有关使用Docker构建的说明,请参见Docker目录中的Readme。
平台IO,总部位于Debian Linux发行版的说明(例如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/
有关更多许可详细信息,请检查随附的许可证文件。