Unifi Protect (非官方) 的 Python API
项目描述
非官方 UniFi Protect Python API 和 CLI
文档: https://uiprotect.readthedocs.io
源代码: https://github.com/uilibs/uiprotect
Unifi Protect (非官方) 的 Python API
寻找维护者
此项目正在寻找维护者。
安装
通过 pip (或您喜欢的包管理器) 安装此软件
pip install uiprotect
历史
由于该项目更改了许可证,该许可证不符合 Home Assistant 的要求,因此从 pyunifiprotect
中分离出来。此项目致力于保持 MIT 许可证。
鸣谢
- Bjarne Riis (@briis) 为原始 pyunifiprotect 软件包
- Christopher Bailey (@AngellusMortis) 为维护 pyunifiprotect 软件包
贡献者 ✨
感谢这些了不起的人(emoji key)
本项目遵循all-contributors规范。欢迎所有类型的贡献!
uiprotect
是UniFi Protect的非官方API。与Ubiquiti无关。
此模块与安装在UniFi OS控制台(如Ubiquiti CloudKey+或UniFi Dream Machine Pro)上的UniFi Protect监控软件进行通信。
Ubiquiti没有对API进行文档说明,因此,随着Ubiquiti软件的不断发展,此模块可能存在遗漏和/或频繁更改。
该模块主要编写用于在Home Assistant核心UniFi Protect集成中使用,但也可能用于其他目的。
智能检测现在需要远程访问才能启用
智能检测(人员、车辆、动物、面部),之前可以仅使用本地控制台使用,现在需要您启用远程访问才能启用。
由于Ubiquiti可以在任何时候重新配置访问控制,因此启用远程访问可能会授予其他用户对您的控制台的访问权限。
如果您不希望该功能被锁定在远程访问之后,请通知Ubiquiti。
文档
要求
如果您想本地安装uiprotect
,以下是需要满足的要求
- UniFi Protect版本1.20+
- 库的最新版本通常仅针对两个最新的次要版本进行测试。这可能是两个最新的稳定版本(如1.21.x和2.0.x)或最新的EA版本和稳定版本(如2.2.x EA和2.1.x)。
- Python 3.10+
- POSIX兼容系统
- 库仅在Linux上进行测试,具体为官方Python Docker镜像中可用的最新Debian版本,但没有理由认为库不能在任何Linux发行版或macOS上工作。
- ffmpeg
- ffmpeg主要用于将音频流式传输到Protect摄像头,这可以被认为是一个软要求
或者您可以使用提供的Docker容器,在这种情况下,唯一的要求是Docker或另一个OCI兼容的编排器(如Kubernetes或podman)。
Windows不受支持。如果您需要在Windows上使用uiprotect
,请使用Docker Desktop和提供的docker容器或WSL。
安装
从PyPi
uiprotect
可在PyPi上找到
pip install uiprotect
从GitHub
pip install git+https://github.com/uilibs/uiprotect.git#egg=uiprotect
使用Docker容器
还提供了一个Docker容器,因此您无需安装/管理Python。您可以将以下内容添加到您的.bashrc
或类似文件中。
function uiprotect() {
docker run --rm -it \
-e UFP_USERNAME=YOUR_USERNAME_HERE \
-e UFP_PASSWORD=YOUR_PASSWORD_HERE \
-e UFP_ADDRESS=YOUR_IP_ADDRESS \
-e UFP_PORT=443 \
-e UFP_SSL_VERIFY=True \
-e TZ=America/New_York \
-v $PWD:/data ghcr.io/uilibs/uiprotect:latest "$@"
}
有关Docker版本的说明,因为它是在容器中运行的
- 您可以使用以下命令随时更新:
docker pull ghcr.io/uilibs/uiprotect:latest
- 您当前的本地工作目录(
$PWD
)将自动挂载到容器内的/data
。对于输出文件的命令,这是您唯一可以写入并且文件可以持久化的路径。 - 容器原生支持
linux/amd64
和linux/arm64
。这意味着它也适用于使用Docker Desktop的macOS或Windows。 TZ
应该是您的UniFi Protect实例所在的Olson时区名称。- 有关
TZ
和其他环境变量的更多详细信息,请参阅命令行文档
快速入门
CLI
![警告] 不支持使用Ubiquiti SSO账户,并积极建议不要使用。没有使用多因素认证的选项。您应使用本地访问用户。`uiprotect` 未设计为允许您使用管理员账户访问控制台或通过公共互联网使用,因为这都存在安全风险。
export UFP_USERNAME=YOUR_USERNAME_HERE
export UFP_PASSWORD=YOUR_PASSWORD_HERE
export UFP_ADDRESS=YOUR_IP_ADDRESS
export UFP_PORT=443
# change to false if you do not have a valid HTTPS certificate for your instance
export UFP_SSL_VERIFY=True
uiprotect --help
uiprotect nvr
Python
UniFi Protect 本身是100%异步的,因此这个库主要设计用于异步环境中。
库的主要接口是 uiprotect.ProtectApiClient
from uiprotect import ProtectApiClient
protect = ProtectApiClient(host, port, username, password, verify_ssl=True)
await protect.update() # this will initialize the protect .bootstrap and open a Websocket connection for updates
# get names of your cameras
for camera in protect.bootstrap.cameras.values():
print(camera.name)
# subscribe to Websocket for updates to UFP
def callback(msg: WSSubscriptionMessage):
# do stuff
unsub = protect.subscribe_websocket(callback)
# remove subscription
unsub()
待办事项 / 规划 / 未实现
一般来说,库中缺少的任何功能都计划最终实现,或者作为以下例外情况的好用功能
UniFi OS 功能
任何严格属于UniFi OS的功能。如果将来实现,它将作为与该库交互的单独库来实现。例如包括
- 管理RAID和磁盘
- 创建和管理用户
远程访问 / Ubiquiti云功能
一些需要启用Ubiquiti账户或“远程访问”的功能目前尚未实现。例如包括
- 流共享
- 人脸检测
项目详情
下载文件
下载您平台对应的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源代码分发
构建分发
uiprotect-6.2.0.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4b60443969472468bd03514a25db4cb32d43b045503c99970dc993f06cc6f4a0 |
|
MD5 | e6b285e506a75215424d095e37cc9974 |
|
BLAKE2b-256 | 94c84c97a4379b332c3a0313fd488e1156dbd1eb8f96413dd8a4c502e4145a0b |
uiprotect-6.2.0-py3-none-any.whl的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 11b31051e47b2957b959c54f764a0654d1dce781a9899dad91c67b9b082c1eee |
|
MD5 | dbb6a52591bfcb2942019c84866cd2af |
|
BLAKE2b-256 | a65f438d915aa42d6a2186ac11e65ec807cb659a89710f1b808fe97c0c2f8fb6 |