构建一个适用于 Home Assistant 的人工智能人员计数器
扫描二维码
随时随地手机看文章
Home Assistant 在自动化方面表现卓越,但要添加一个自定义的人工智能传感器通常需要设置 MQTT 代理、编写 YAML 文件或者开发一个定制的 Python 集成程序。而这个项目却无需上述任何步骤——一个人工智能模型会在您的 Grablo 设备上本地运行,监控您的摄像头画面来识别人员,并使用长期访问令牌将实时人数信息作为 Home Assistant 的一个实体进行展示。
一旦项目启动运行,该实体就会出现在 Home Assistant 中,并会在计数发生变化的瞬间进行更新。将其放入您的仪表板中、在人员活动自动化中使用它,或者在历史面板上对其进行绘图——它的表现就跟任何其他原生的 Home Assistant 传感器一样。
•任何网络摄像机上的实时人工智能人数统计功能
•通过 Home Assistant REST API 自动公开的实体
•实时更新计数变化的最新情况
•格拉博的相机与实时仪表盘相结合
•没有 MQTT 代理,没有 YAML 格式,也没有代码
我们为何决定这么做呢?
人们一直都在询问如何在 Home Assistant 中添加真正的 AI 传感器,同时又无需单独搭建一个独立的系统栈。大多数教程会引导您使用 MQTT 代理、Frigate 或者您需要自行维护的自定义集成。我们想要展示的是,通过一个可视化块编辑器以及 HA 长效访问令牌,您只需点击几下就能完成整个过程——而且这种模式适用于任何变量,不仅仅是人员数量。
你将要构建的内容
•一款能够实时统计人数的人工智能摄像头
•一个用于存储活体数量的变量
•由格拉博自动暴露出来的家庭助手实体
•一个带有摄像头画面和实时人数统计的实时监控仪表盘
•一旦计数发生变化,实体就会自动更新。
快速入门
•在“设置”→“相机”→“编辑”中填写您的相机连接信息,输入地址和凭证。
在“设置”菜单下的“家庭助手”选项中进行填写,进入“编辑”界面,输入服务器地址,并从“家庭助手”中粘贴一个“长期有效访问令牌”→“个人资料”→“安全”→“长期有效访问令牌”
•连接到您的设备并点击“运行”
•在 Home Assistant 中,点击右上角的搜索图标,然后输入您的计数变量名称——新的实体就会自动出现。
构建过程
仪表盘
格拉博仪表盘设有两个小部件——一个是显示实时监控画面的摄像头小部件,另一个是与“人员数量”变量绑定的标签小部件,这样您就能实时看到人工智能的计数更新情况。同样的数值在 Home Assistant 内部也以原生传感器实体的形式呈现,因此您可以在此基础上构建 Home Assistant 的自动化操作。
逻辑
整个项目基于单一逻辑运行,并配有两个控制模块。第一个控制模块在启动时仅执行一次,通过“一次性”条件触发,并执行两个人工智能分析操作——“添加分析”会创建一个“按特定对象计数”的任务,其中人员类别置信度设为 40%,而“开始分析”则会启动摄像头画面上的模型。计数结果会自动写入“人员计数”变量中。
第二个控制模块通过“更改”条件和 100 毫秒的采样周期来监控“人员数量”变量,因此它会在人工智能更新计数的瞬间做出反应。其唯一的操作是使用“暴露变量”命令与 Home Assistant 进行集成——格拉博负责执行与注册实体和推送新值相关的 REST API 调用,因此 Home Assistant 可以看到一个实时传感器,而无需任何代理或 YAML 配置文件。
就是这样!
两个控制装置,一个可变参数,那么您的相机就变成一个真正的 Home Assistant 传感器了。
预期结果
•格拉博仪表盘会显示摄像头画面,并实时显示人数统计信息。
•在 Home Assistant 中,可在右上角的搜索栏中输入您的变量名称——该实体会自动显示出来。
•随着人工智能计数的变化,HA 实体值会实时更新。
•您可以将该实体直接放入高可用性仪表板中,或者将其用于任何自动化操作,就像使用原生传感器一样。
硬件设置
该项目已预设了“相机”和“家庭助手”模块,但这些模块的连接详情为空——每种设置都是不同的,因此您在复制项目后需填写这些内容。
前往“设置”→“相机”→“编辑”,然后输入您相机的连接信息。支持 ONVIF 和 RTSP 协议,如果通过 USB 视频采集适配器进行桥接(此时使用 CSI/USB),甚至旧的模拟监控摄像头也能正常使用。
对于人工智能模式,平衡模式是默认设置——在像树莓派这样的低端设备上切换到快速模式,或者如果您的设备性能更强,则选择精确模式。如果您的设备具有强大的图形处理器(GPU),则开启 GPU 加速可大幅提升速度。
然后前往“设置”→“家庭助手”→“编辑”,输入您的家庭助手服务器地址以及一个长期有效的访问令牌(家庭助手 → 个人资料 → 安全 → 长期有效访问令牌)。
本文编译自hackster.io





