afuerhoff/ioBroker.fb-checkpresence
GitHub: afuerhoff/ioBroker.fb-checkpresence
这是一个 ioBroker 适配器,用于通过 Fritzbox 检测家庭成员存在状态并管理网络设备。
Stars: 23 | Forks: 10

# ioBroker.fb-checkpresence

[](https://www.npmjs.com/package/iobroker.fb-checkpresence)





[](https://snyk.io/test/github/afuerhoff/ioBroker.fb-checkpresence)
[](https://nodei.co/npm/iobroker.fb-checkpresence/)


[](https://www.npmjs.com/package/iobroker.fb-checkpresence)
**测试:** 
## 用于 ioBroker 的 fb-checkpresence 适配器
该适配器通过 fritzbox 检测家庭成员的存在状态。
您需要填写家庭成员的姓名以及所使用设备的 MAC 地址(或 IP 地址)。
备注是可选的,您可以启用或禁用该家庭成员。
数据点基于成员名称生成。
### 适配器前置条件
为保证功能正常运行,您必须安装一个历史记录适配器。您可以选择以下适配器之一:
* History
* SQL
* InfluxDB
## 使用的设备
此适配器使用 AVM Fritzbox。您可以在此处找到关于 Fritzbox 的信息:https://avm.de/produkte/fritzbox/。
Fritzbox 服务通过 TR-064 协议进行访问。
### Fritzbox 条件
使用的 fritzbox TR-064 接口在此处描述:https://avm.de/service/schnittstellen/。
使用了以下 TR-064 服务及操作:
* Hosts:1 - X_AVM-DE_GetHostListPath(自 2017-01-09 起支持)
* Hosts:1 - X_AVM-DE_GetMeshListPath
* Hosts:1 - GetSpecificHostEntry
* Hosts:1 - X_AVM-DE_GetSpecificHostEntryByIP(自 2016-05-18 起支持)
* DeviceInfo:1 - GetSecurityPort
* DeviceInfo:1 - GetInfo
* WANPPPConnection:1 - GetInfo
* WANIPConnection:1 - GetInfo
* WLANConfiguration3 - SetEnable
* WLANConfiguration3 - GetInfo
* WLANConfiguration3 - GetSecurityKeys
* X_AVM-DE_HostFilter - DisallowWANAccessByIP
* X_AVM-DE_HostFilter - GetWANAccessByIP
* DeviceConfig:1 - Reboot
* LANConfigSecurity1 - X_AVM-DE_GetCurrentUser
默认情况下,TR-064 接口未激活。但通过 FritzBox 的网页界面可以轻松更改此设置。为此,请登录您的 FritzBox 并确保已启用专家视图。
然后在“家庭网络 » 家庭网络概览 » 网络设置”下方,您将找到“允许应用程序访问”选项。您必须在那里激活复选框,然后重启一次 FritzBox。
提示:更改选项后,请不要忘记重启 Fritzbox!
## 配置对话框
### 常规
配置值会经过验证,只有正确的值才能保存。否则,保存按钮将被禁用。
### Fritzbox IP 地址、用户名和密码
配置 IP 地址、用户名和密码是从 fritzbox 获取设备数据所必需的。
因此,必须在 fritzbox 中创建一个用户。这是较新固件版本(>= 7.25)的 fritzbox 所要求的。相关信息请参见:https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/Empfehlungen%20zur%20Benutzerfu%CC%88hrung%20bei%20der%20Anmeldung%20an%20einer%20FRITZ%21Box_v1.1.pdf
密码是加密存储的,不会以明文形式保存。用户名和密码最多可包含 32 个字符。相关信息请参见:https://service.avm.de/help/de/FRITZ-Box-Fon-WLAN-7490/014/hilfe_zeichen_fuer_kennwoerter#:~:text=Namen%20f%C3%BCr%20Benutzer,Kennwortfeld%20darf%20nicht%20leer%20sein。
提示:在某些情况下,如果密码输入不正确,fritzbox 可能会封锁该用户。日志中通常会出现超时信息。请检查您输入的用户名和密码是否正确。然后您需要重启 fritzbox。
### Ssl 选项
在某些情况下,适配器可能无法连接到 fritzbox。禁用此选项可能会有帮助。
在这种情况下,适配器将尝试通过非 https 连接。
### 时间间隔
您可以为家庭成员和 Fritzbox 设备设置不同的时间间隔。
Fritzbox 设备的间隔可配置为 10 秒到 3600 秒。通常,60 到 300 秒之间的值是读取 fritzbox 数据的最佳间隔。家庭成员的间隔可配置为 10 秒到 600 秒。每个新周期在上一个周期完成后开始。
### 过滤时间
如果过滤时间大于 0 秒,则当家庭成员的状态变为 false 时,该状态会在过滤时间后再次检查。如果状态为 true,则状态会立即设置。
### 历史记录适配器
通过历史记录适配器,可以计算一些值。您可以选择使用 history、sql 或 influxdb 适配器进行此计算。历史记录适配器必须预先安装,然后可以在配置对话框中选择。
如果历史记录配置被禁用,则无法计算某些值。
### 日期格式
日期格式掩码选项在此网页上描述:https://www.npmjs.com/package/dateformat。
该格式掩码用于格式化 HTML 和 JSON 表格对象。
### 创建 FB 设备
如果选中此选项,则会为 Fritzbox 设备列表中的每个设备创建对象。
如果禁用此选项,则 mesh 信息也将被禁用。
### FB 设备对象重新同步
如果选中此选项,则 FB 设备对象将与来自 Fritzbox 的设备列表重新同步。
### 创建 mesh 信息
如果允许创建 FB 设备,则可以选中此选项。如果选中此选项,则会为 Fritzbox 设备列表中的每个设备创建 mesh 对象。
### 来宾信息
如果选中此选项,则会创建来宾的状态。
### 二维码生成
如果选中此选项,则会生成来宾 WLAN 的二维码。
您可以在 VIS 中使用“Basic Boolean SVG”小部件显示此二维码。
请使用以下设置:
### 家庭成员设置
对于已配置的家庭成员,您应输入成员名称、主机名、MAC 和 IP 地址、备注,并可以选择启用或禁用该成员。分组是可选的。
如果您将分组留空并将兼容性标志设置为 true,则行为与适配器的旧版本相同。您可以使用家庭成员的 presence 状态,或者将状态直接映射到家庭成员名称。在未来版本中,您必须使用 presence 状态。此行为可以通过兼容性复选框打开/关闭:
-> compatibility = true:行为与旧版本相同,分组为空。
-> compatibility = true 且分组不为空:新行为。所有状态位于 familymembers 文件夹下。
-> compatibility = false:新行为。所有状态位于 familymembers 文件夹下。
适配器会为每个成员创建一个 presence 状态,并检查成员是在场还是离场。当 presence 状态改变时,状态会被更改。
您也可以为成员启用过滤。如果状态为 true,则状态会立即更改为 true。如果为 false,则该值将在过滤时间后再次检查。
如果在两种情况下状态都为 false,则状态将更改为 false。否则状态不会改变。
要获取对象中的速度信息,您需要选择 fb-devices 选项。
### 手动触发 presence
在 javascript 中,您可以手动触发 presence。当您向适配器发送消息时,每条新消息都会被阻止 10 秒。如果消息被阻止,您将收到负结果 (false)。
如果消息被适配器接收,则返回 True。
`
sendTo('fb-checkpresence.0', 'triggerPresence', {}
, function (result) {
log(result, 'info');
});
`
### 白名单设置
在白名单中,您可以插入所有已知的设备。任何未知的设备都会列在黑名单对象中。
如果您选中表标题中的复选框,则会选中所有设备。
在 Javascript 中,您可以向白名单发送项目。
发送的数据(主机名、MAC)将与 Fritzbox 设备列表进行比较。如果条目存在,则会检查它是否已保存在白名单中。如果没有,则将该条目保存在白名单配置表中。
sendTo('fb-checkpresence.0', 'addDeviceToWhitelist',
{
hostname: 'devicename',
mac: '00:00:00:00:00:00'
}
, function (result) {
log(result, 'info');
});
## 功能
### AVM 支持检查
此功能检查所用 fritzbox 功能的可用性。可用性会记录为信息级别。如果您遇到问题,请查看是否所有功能都设置为 true。同时也会检查用户的访问权限,如果访问权限不正确,该功能将设置为 false。
### 开/关来宾 WLAN
在 guest 文件夹下,您可以将状态 wlan 设置为 true 或 false,然后来宾 WLAN 将开启或关闭。
### 来宾 WLAN 的二维码
来宾 WLAN 的二维码保存在 guest 文件夹中的 wlanQR 状态中。该二维码可以在 vis 的 basic - Bool SVG 小部件中显示。
### 开/关 Fritzbox 设备的互联网访问
在 FB-devices 文件夹下,您可以将 disabled 状态设置为 true 或 false,然后该设备在 Fritzbox 中的互联网访问将被阻止。
### 获取来宾、黑名单
在此功能中,会检查是否有任何用户作为来宾登录。同时检查是否有任何设备未列在白名单中。
这些设备将被添加到黑名单。
### 获取活动信息
对于每个家庭成员,如果选择了历史记录适配器,则会计算其存在状态、来去日期以及其他多项信息,并保存在成员对象中。
### 主机数量、活动设备
从 fritzbox 获取设备总数以及活动设备数量。
## 对象
### 对象 presenceAll
如果所有家庭成员都在场,则该对象为 true。
### 对象 presence
如果一个家庭成员在场,则该对象为 true。
### 对象 devices
这些是 fritzbox 中列出的所有设备。
### 对象 activeDevices
这些是 fritzbox 中所有活动设备的数量。
### 对象 html, json
这些对象是表格(json 和 html),其中包含所有家庭成员的来去信息。
### 对象 info
此处列出了关于上次更新和适配器连接状态的信息。
### 对象 guest
此处列出了活动来宾数量以及包含设备信息的表格对象。
### 对象 blacklist
此处列出了未知设备数量以及包含未知设备信息的表格对象。
### 对象 member.present
此处您可以找到关于成员在当前日的存在信息以及自上次状态改变以来成员处于 true 状态的时长。
### 对象 member.absent
此处您可以找到关于成员在当前日的缺席信息以及自上次状态改变以来成员处于 false 状态的时长。
### 对象 member.comming, member.going
此处您可以找到关于家庭成员何时到家或离开家的信息。
### 对象 member.history, member.historyHtml
此处您可以找到关于当前日的历史记录信息。
## 变更日志
### **正在开发中**
- (copilot) 适配器现在需要 node.js >= 22
* (afuerhoff) 依赖已更新
* (afuerhoff) dependabot.yml 已修复 [#358](https://github.com/afuerhoff/ioBroker.fb-checkpresence/issues/358)
### 1.4.2 (2025-10-30)
* (afuerhoff) 依赖已更新
* (afuerhoff) package.json 问题已修复 [#350](https://github.com/afuerhoff/ioBroker.fb-checkpresence/issues/350)
* (afuerhoff) npm 安全变更
* (afuerhoff) 过滤时间延长至 300 秒
* (afuerhoff) 来宾 WLAN 错误已修复 [#353](https://github.com/afuerhoff/ioBroker.fb-checkpresence/issues/353)
* (afuerhoff) 已弃用的功能已更改
### 1.4.1 (2025-09-19)
* (afuerhoff) 依赖已更新
* (afuerhoff) 仓库检查器和代码扫描问题已修复
### 1.4.0 (2025-05-28)
* (afuerhoff) 依赖已更新
* (afuerhoff) 错误处理已优化
* (afuerhoff) 增强功能 [#336](https://github.com/afuerhoff/ioBroker.fb-checkpresence/issues/336)
* (afuerhoff) 问题 [#337](https://github.com/afuerhoff/ioBroker.fb-checkpresence/issues/337)
* (afuerhoff) 问题 [#335](https://github.com/afuerhoff/ioBroker.fb-checkpresence/issues/335)
### 1.3.1 (2025-03-02)
* (afuerhoff) 依赖已更新
* (afuerhoff) 错误已修复 [#333](https://github.com/afuerhoff/ioBroker.fb-checkpresence/issues/333)
* (afuerhoff) 错误已修复 [#305](https://github.com/afuerhoff/ioBroker.fb-checkpresence/issues/305)
### 1.3.0 (2025-02-14)
* (afuerhoff) 依赖已更新
* (afuerhoff) eslint 设置已更改
* (afuerhoff) 添加了 IPv6 IP 地址和前缀
[更早的变更日志可以在此处找到](CHANGELOG_OLD.md)
## 许可证
MIT 许可证
版权所有 (c) 2019-2026 Achim Fürhoff
特此免费授予任何获得本软件及相关文档文件(“软件”)副本的人不受限制地处理本软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售本软件副本的权利,并允许向其提供本软件的人这样做,但须满足以下条件:
上述版权声明和本许可声明应包含在本软件的所有副本或重要部分中。
本软件“按原样”提供,不附带任何明示或暗示的担保,包括但不限于对适销性、特定用途适用性和非侵权性的担保。在任何情况下,作者或版权持有人均不对因本软件或本软件的使用或其他交易而产生的任何索赔、损害或其他责任负责,无论是在合同诉讼、侵权诉讼或其他诉讼中。
## 配置对话框
### 常规
配置值会经过验证,只有正确的值才能保存。否则,保存按钮将被禁用。
### Fritzbox IP 地址、用户名和密码
配置 IP 地址、用户名和密码是从 fritzbox 获取设备数据所必需的。
因此,必须在 fritzbox 中创建一个用户。这是较新固件版本(>= 7.25)的 fritzbox 所要求的。相关信息请参见:https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/Empfehlungen%20zur%20Benutzerfu%CC%88hrung%20bei%20der%20Anmeldung%20an%20einer%20FRITZ%21Box_v1.1.pdf
密码是加密存储的,不会以明文形式保存。用户名和密码最多可包含 32 个字符。相关信息请参见:https://service.avm.de/help/de/FRITZ-Box-Fon-WLAN-7490/014/hilfe_zeichen_fuer_kennwoerter#:~:text=Namen%20f%C3%BCr%20Benutzer,Kennwortfeld%20darf%20nicht%20leer%20sein。
提示:在某些情况下,如果密码输入不正确,fritzbox 可能会封锁该用户。日志中通常会出现超时信息。请检查您输入的用户名和密码是否正确。然后您需要重启 fritzbox。
### Ssl 选项
在某些情况下,适配器可能无法连接到 fritzbox。禁用此选项可能会有帮助。
在这种情况下,适配器将尝试通过非 https 连接。
### 时间间隔
您可以为家庭成员和 Fritzbox 设备设置不同的时间间隔。
Fritzbox 设备的间隔可配置为 10 秒到 3600 秒。通常,60 到 300 秒之间的值是读取 fritzbox 数据的最佳间隔。家庭成员的间隔可配置为 10 秒到 600 秒。每个新周期在上一个周期完成后开始。
### 过滤时间
如果过滤时间大于 0 秒,则当家庭成员的状态变为 false 时,该状态会在过滤时间后再次检查。如果状态为 true,则状态会立即设置。
### 历史记录适配器
通过历史记录适配器,可以计算一些值。您可以选择使用 history、sql 或 influxdb 适配器进行此计算。历史记录适配器必须预先安装,然后可以在配置对话框中选择。
如果历史记录配置被禁用,则无法计算某些值。
### 日期格式
日期格式掩码选项在此网页上描述:https://www.npmjs.com/package/dateformat。
该格式掩码用于格式化 HTML 和 JSON 表格对象。
### 创建 FB 设备
如果选中此选项,则会为 Fritzbox 设备列表中的每个设备创建对象。
如果禁用此选项,则 mesh 信息也将被禁用。
### FB 设备对象重新同步
如果选中此选项,则 FB 设备对象将与来自 Fritzbox 的设备列表重新同步。
### 创建 mesh 信息
如果允许创建 FB 设备,则可以选中此选项。如果选中此选项,则会为 Fritzbox 设备列表中的每个设备创建 mesh 对象。
### 来宾信息
如果选中此选项,则会创建来宾的状态。
### 二维码生成
如果选中此选项,则会生成来宾 WLAN 的二维码。
您可以在 VIS 中使用“Basic Boolean SVG”小部件显示此二维码。
请使用以下设置:
### 家庭成员设置
对于已配置的家庭成员,您应输入成员名称、主机名、MAC 和 IP 地址、备注,并可以选择启用或禁用该成员。分组是可选的。
如果您将分组留空并将兼容性标志设置为 true,则行为与适配器的旧版本相同。您可以使用家庭成员的 presence 状态,或者将状态直接映射到家庭成员名称。在未来版本中,您必须使用 presence 状态。此行为可以通过兼容性复选框打开/关闭:
-> compatibility = true:行为与旧版本相同,分组为空。
-> compatibility = true 且分组不为空:新行为。所有状态位于 familymembers 文件夹下。
-> compatibility = false:新行为。所有状态位于 familymembers 文件夹下。
适配器会为每个成员创建一个 presence 状态,并检查成员是在场还是离场。当 presence 状态改变时,状态会被更改。
您也可以为成员启用过滤。如果状态为 true,则状态会立即更改为 true。如果为 false,则该值将在过滤时间后再次检查。
如果在两种情况下状态都为 false,则状态将更改为 false。否则状态不会改变。
要获取对象中的速度信息,您需要选择 fb-devices 选项。
### 手动触发 presence
在 javascript 中,您可以手动触发 presence。当您向适配器发送消息时,每条新消息都会被阻止 10 秒。如果消息被阻止,您将收到负结果 (false)。
如果消息被适配器接收,则返回 True。
`
sendTo('fb-checkpresence.0', 'triggerPresence', {}
, function (result) {
log(result, 'info');
});
`
### 白名单设置
在白名单中,您可以插入所有已知的设备。任何未知的设备都会列在黑名单对象中。
如果您选中表标题中的复选框,则会选中所有设备。
在 Javascript 中,您可以向白名单发送项目。
发送的数据(主机名、MAC)将与 Fritzbox 设备列表进行比较。如果条目存在,则会检查它是否已保存在白名单中。如果没有,则将该条目保存在白名单配置表中。
sendTo('fb-checkpresence.0', 'addDeviceToWhitelist',
{
hostname: 'devicename',
mac: '00:00:00:00:00:00'
}
, function (result) {
log(result, 'info');
});
## 功能
### AVM 支持检查
此功能检查所用 fritzbox 功能的可用性。可用性会记录为信息级别。如果您遇到问题,请查看是否所有功能都设置为 true。同时也会检查用户的访问权限,如果访问权限不正确,该功能将设置为 false。
### 开/关来宾 WLAN
在 guest 文件夹下,您可以将状态 wlan 设置为 true 或 false,然后来宾 WLAN 将开启或关闭。
### 来宾 WLAN 的二维码
来宾 WLAN 的二维码保存在 guest 文件夹中的 wlanQR 状态中。该二维码可以在 vis 的 basic - Bool SVG 小部件中显示。
### 开/关 Fritzbox 设备的互联网访问
在 FB-devices 文件夹下,您可以将 disabled 状态设置为 true 或 false,然后该设备在 Fritzbox 中的互联网访问将被阻止。
### 获取来宾、黑名单
在此功能中,会检查是否有任何用户作为来宾登录。同时检查是否有任何设备未列在白名单中。
这些设备将被添加到黑名单。
### 获取活动信息
对于每个家庭成员,如果选择了历史记录适配器,则会计算其存在状态、来去日期以及其他多项信息,并保存在成员对象中。
### 主机数量、活动设备
从 fritzbox 获取设备总数以及活动设备数量。
## 对象
### 对象 presenceAll
如果所有家庭成员都在场,则该对象为 true。
### 对象 presence
如果一个家庭成员在场,则该对象为 true。
### 对象 devices
这些是 fritzbox 中列出的所有设备。
### 对象 activeDevices
这些是 fritzbox 中所有活动设备的数量。
### 对象 html, json
这些对象是表格(json 和 html),其中包含所有家庭成员的来去信息。
### 对象 info
此处列出了关于上次更新和适配器连接状态的信息。
### 对象 guest
此处列出了活动来宾数量以及包含设备信息的表格对象。
### 对象 blacklist
此处列出了未知设备数量以及包含未知设备信息的表格对象。
### 对象 member.present
此处您可以找到关于成员在当前日的存在信息以及自上次状态改变以来成员处于 true 状态的时长。
### 对象 member.absent
此处您可以找到关于成员在当前日的缺席信息以及自上次状态改变以来成员处于 false 状态的时长。
### 对象 member.comming, member.going
此处您可以找到关于家庭成员何时到家或离开家的信息。
### 对象 member.history, member.historyHtml
此处您可以找到关于当前日的历史记录信息。
## 变更日志
### **正在开发中**
- (copilot) 适配器现在需要 node.js >= 22
* (afuerhoff) 依赖已更新
* (afuerhoff) dependabot.yml 已修复 [#358](https://github.com/afuerhoff/ioBroker.fb-checkpresence/issues/358)
### 1.4.2 (2025-10-30)
* (afuerhoff) 依赖已更新
* (afuerhoff) package.json 问题已修复 [#350](https://github.com/afuerhoff/ioBroker.fb-checkpresence/issues/350)
* (afuerhoff) npm 安全变更
* (afuerhoff) 过滤时间延长至 300 秒
* (afuerhoff) 来宾 WLAN 错误已修复 [#353](https://github.com/afuerhoff/ioBroker.fb-checkpresence/issues/353)
* (afuerhoff) 已弃用的功能已更改
### 1.4.1 (2025-09-19)
* (afuerhoff) 依赖已更新
* (afuerhoff) 仓库检查器和代码扫描问题已修复
### 1.4.0 (2025-05-28)
* (afuerhoff) 依赖已更新
* (afuerhoff) 错误处理已优化
* (afuerhoff) 增强功能 [#336](https://github.com/afuerhoff/ioBroker.fb-checkpresence/issues/336)
* (afuerhoff) 问题 [#337](https://github.com/afuerhoff/ioBroker.fb-checkpresence/issues/337)
* (afuerhoff) 问题 [#335](https://github.com/afuerhoff/ioBroker.fb-checkpresence/issues/335)
### 1.3.1 (2025-03-02)
* (afuerhoff) 依赖已更新
* (afuerhoff) 错误已修复 [#333](https://github.com/afuerhoff/ioBroker.fb-checkpresence/issues/333)
* (afuerhoff) 错误已修复 [#305](https://github.com/afuerhoff/ioBroker.fb-checkpresence/issues/305)
### 1.3.0 (2025-02-14)
* (afuerhoff) 依赖已更新
* (afuerhoff) eslint 设置已更改
* (afuerhoff) 添加了 IPv6 IP 地址和前缀
[更早的变更日志可以在此处找到](CHANGELOG_OLD.md)
## 许可证
MIT 许可证
版权所有 (c) 2019-2026 Achim Fürhoff 标签:FritzBox, ioBroker, IP地址, MAC地址, MITM代理, 存在检测, 家庭成员追踪, 家庭自动化, 数据可视化, 智能家居, 网络设备识别, 自定义脚本, 设备列表, 设备发现, 设备管理, 适配器, 黑名单