如何设置CodeProject.AI服务器与Home Assistant容器





5.00/5 (3投票s)
在本文中,我将设置Home Assistant容器以与CodeProject.AI服务器和Wyze Cam v3配合使用。然后,作为概念验证,我将使用CodeProject.AI服务器从Home Assistant检测到人。
在我上一篇文章中,我设置了Home Assistant容器,并通过集成Agent DVR(我已经用CodeProject.AI设置好了)与Home Assistant集成,从而快捷地设置了CodeProject.AI服务器。在本文中,我将正确地进行设置,将Home Assistant容器与CodeProject.AI服务器和Wyze Cam v3配合使用。然后,作为概念验证,我将使用CodeProject.AI服务器从Home Assistant检测到人。
- 要求
- 设置 Home Assistant 容器
- 设置Home Assistant社区商店
- 设置CodeProject.AI-HomeAssist-ObjectDetect
- 使用CodeProject.AI服务器从Home Assistant检测到人
要求
本文假定您正在使用Windows(10),已安装Docker Desktop,已安装CodeProject.AI服务器,已设置带RTSP固件的Wyze Cam v3,并且docker-wyze-bridge容器正在运行并与Home Assistant协同工作。因此,本文假定您拥有以下内容:
- Wyze Cam v3。如果您需要帮助安装 Wyze Cam v3,请参阅我的指南设置您的 Wyze Cam。
- Docker Desktop。如果您需要帮助设置 Docker,请参阅我的指南安装 Docker Desktop。
- CodeProject.AI服务器。如果您需要帮助安装CodeProject.AI服务器,请参阅我的指南安装CodeProject.AI服务器。
- docker-wyze-bridge。如果您需要帮助设置docker-wyze-bridge,请参阅我的指南使用Docker Compose设置docker-wyze-bridge。
设置 Home Assistant 容器
我们需要做的第一件事是为Home Assistant创建一个配置文件。我们将在Docker中设置Home Assistant,但仍然需要访问Home Assistant的configuration.yaml文件。
配置文件将在您运行Docker pull的任何驱动器上,在我这里是C:\驱动器。所以,请打开Windows资源管理器,转到C:\驱动器,在文件夹区域右键单击,然后选择新建 -> 文件夹。输入您想要的文件夹名称,我称我的为“haconfig”。
现在转到 Windows 的 **开始** 按钮,输入“CMD”并打开命令提示符。然后键入
docker run -d --name homeassistant --privileged --restart=unless-stopped
-e TZ=America/Edmonton -v c:\haconfig:/config -p 8123:8123 homeassistant/home-assistant:latest
其中--name homeassistant
是您的容器名称,TZ=America/Edmonton
是Home Assistant的时区(只需输入您自己的时区即可),而-v c:\haconfig:/config
是配置文件夹的路径(如果您在C:\Users\Joseph\haconfig中创建了一个文件夹,则为-v C:\Users\Joseph\haconfig:/config)
。
好了,让我们登录Home Assistant。在浏览器中输入https://:8123。输入您的名称(它会自动开始以此作为您的用户名,小写),然后选择一个密码。确保您将此密码记下来,您将需要它很多次。点击创建账户。
接下来,输入Home Assistant的更多详细信息。您可以给Home Assistant命名(我非常有创意,称我的为“Home”),然后选择国家、语言、时区和货币。点击下一步。
然后是一个关于数据共享的屏幕。我没兴趣共享,所以点击下一步。
这个下一页是如果您有物联网设备,它们会显示出来的地方。我这里什么都没显示。点击 **Finish**(完成)。
设置Home Assistant社区商店
为了安装CodeProject.AI服务器的Home Assistant集成,我们首先需要Home Assistant社区商店(HACS)。为此,我们需要在homeassistant容器中运行HACS安装程序。转到Windows开始按钮并开始键入“CMD”,然后选择命令提示符。然后,键入docker exec -it homeassistant bash
。
docker exec -it homeassistant bash
这将打开homeassistant容器的命令行。在此键入wget -O - https://install.hacs.xyz | bash -
。是的,这是“O”,就像“Octopus”一样。不是零。
wget -O - https://install.hacs.xyz | bash -
脚本然后会好心地提醒我们重启Home Assistant。回到Home Assistant的浏览器标签页。点击左侧导航菜单上的开发工具,然后在检查与重启下,点击重启,然后再次点击重启。
现在我们可以转到左侧导航菜单上的设置,然后是设备与服务。然后点击+ 添加集成。
键入“HACS”,现在**HACS**出现了。选择它。
出现此窗口,要求您确认一系列项目。勾选所有框,然后点击提交。
将弹出等待设备激活屏幕。确保您已登录GitHub,然后点击链接https://github.com/login/device并复制激活密钥。
在下一个窗口中,粘贴激活密钥。
然后点击授权hacs。
就这样!我们应该为HACS做好准备了。
回到Home Assistant标签页,您应该会看到一个成功屏幕。选择您要用于HACS的区域。我的唯一摄像头在我的办公室,所以我添加了一个名为“Office”的区域,然后点击完成。
现在我们可以重启Home Assistant。点击左侧导航菜单上的开发工具,然后在检查与重启下,点击重启,然后再次点击重启。
设置CodeProject.AI-HomeAssist-ObjectDetect
现在我们可以最终添加CodeProject.AI-HomeAssist-ObjectDetect了。点击左侧导航中的新HACS标签页,然后点击集成。
在右上角,点击三个点调出集成下拉菜单,然后选择自定义存储库。
在存储库字段中,输入CodeProject.AI-HomeAssist-ObjectDetect存储库的URL,即https://github.com/codeproject/CodeProject.AI-HomeAssist-ObjectDetect。然后从类别下拉菜单中,选择集成。然后点击添加。
现在,在HACS的集成标签页下,出现了一个新存储库。那就是我们要找的!点击CodeProject.AI服务器对象自定义集成。
然后,在右下角,点击下载进行安装。
出现一个对话框,好心地提醒:“请记住,您需要重启Home Assistant才能应用对集成(custom_components)的更改。” 感谢Home Assistant HACS集成!但还不是现在。点击下载以完成存储库的下载和安装。
现在让我们编辑Home Assistant的configuration.yaml文件。为此,我们将使用Visual Studio Code。我已经安装了Visual Studio Code,但要安装,您需要访问https://vscode.js.cn/并点击Download for Windows。这将下载一个类似于VSCodeUserSetup-x64-1.74.3.exe的文件。运行安装文件以设置Visual Studio Code。
安装完Visual Studio Code后,第一步是下载YAML扩展。在扩展视图中,键入“YAML”,然后当YAML扩展出现时,点击蓝色的安装按钮。
现在转到文件,打开文件,然后导航到我们之前创建的文件夹。对我来说,这是C:\haconfig。选择configuration.yaml,然后点击打开。
# Loads default set of integrations. Do not remove.
default_config:
# Load frontend themes from the themes folder
frontend:
themes: !include_dir_merge_named themes
# Text to speech
tts:
- platform: google_translate
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
这是Home Assistant的默认configuration.yaml。为了在Home Assistant中设置CodeProject.AI服务器,我们需要向此文件添加内容(这就是为什么我们费尽周折获取访问权限的原因)。以下是我们想要添加到configuration.yaml的添加项。
image_processing:
- platform: codeproject_ai_object
ip_address: localhost
port: 32168
# custom_model: mask
# confidence: 80
save_file_folder: /config/snapshots/
save_file_format: png
save_timestamped_file: True
always_save_latest_file: True
scale: 0.75
# roi_x_min: 0.35
roi_x_max: 0.8
#roi_y_min: 0.4
roi_y_max: 0.8
crop_to_roi: True
targets:
- target: person
- target: vehicle
confidence: 60
- target: car
confidence: 40
source:
- entity_id: camera.local_file
关于此的几点说明。首先,请确保您转到您的配置目录C:/haconfig(对我而言),并添加一个snapshots文件夹。如果不这样做,我不确定下一步是否会起作用。第二,您会注意到ip_address
设置为localhost
。这对您可能有效。就我个人而言,我不得不将其更改为我的IP地址。如果您不知道您的IP地址,请转到Windows的开始按钮并开始键入“CMD”,然后选择命令提示符。然后,键入ipconfig
。您想要的地址是IPv4地址。第三,您需要将entity_id
更改为您的摄像头的实体。我将向您展示如何操作。
返回您的浏览器中的Home Assistant标签页。然后转到设置,设备与服务,并查找您的通用摄像头。点击实体链接。对我来说,这显示1个实体。
您的摄像头实体ID列在实体ID下。对我来说,这是camera.
然后是我IP地址的某个变体。复制此值,返回Visual Studio Code并将其粘贴到configuration.yaml中,替换camera.local_file
。
然后,在Visual Studio Code中转到文件,然后保存。
现在我们可以重启Home Assistant。点击左侧导航菜单上的开发工具,然后在检查与重启下,点击重启,然后再次点击重启。
使用CodeProject.AI服务器从Home Assistant检测到人
现在我们可以准备使用CodeProject.AI服务器检测人了。所以,在浏览器中输入https://:32168/来打开CodeProject.AI服务器。我之前安装了许多模块,如面部处理和车牌阅读器,但对于这个,我们真正需要的是对象检测(YOLOv5 6.2),所以我点击其他所有服务旁边的...,然后选择停止。
现在回到Home Assistant标签页,转到开发工具,然后点击服务标签页。在服务字段中,键入“image”,然后选择图像处理:扫描。然后点击选择实体按钮,并从列表中选择**codeproject_ai_object**。最后,点击调用服务。出现一个小绿色勾号,表示服务已调用。
现在点击状态标签页。如果成功,在属性列中,您将看到targets_found: summary: {}
和all_objects: - person: 68.036
。头几次调用此服务时,摘要是空白的,但次数越多,它会显示类似targets_found: - person: 83.589
和summary: person: 1
的内容。它奏效了!
转到您的配置文件夹,查找您创建的快照文件夹。对我来说,这是C:/haconfig/snapshots。在该文件夹中,应该有一个您刚刚拍摄的快照,类似codeproject_ai_object_cameraentityname_date.png和codeproject_ai_object_cameraentityname_latest.png。看?那是我!我是一个人!
这仅仅是开始。从这里开始,我们可以根据在摄像头中检测到的内容开始自动化。这就是Home Assistant的全部意义所在,也将是我下一篇文章的主题。但是,我们已经迈出了第一步,让CodeProject.AI服务器在Home Assistant容器中运行,并用它检测到了一个人。如果您有任何问题,请在下面的文章论坛中提问。