All Projects → briis → pyunifiprotect

briis / pyunifiprotect

Licence: MIT license
Unofficial UniFi Protect Python API and CLI

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to pyunifiprotect

unpoller
Application: Collect ALL UniFi Controller, Site, Device & Client Data - Export to InfluxDB or Prometheus
Stars: ✭ 1,613 (+2729.82%)
Mutual labels:  ubiquiti, cloudkey
udm-utilities
A collection of things I have made to make the Unifi Dream Machine more useful
Stars: ✭ 2,228 (+3808.77%)
Mutual labels:  ubiquiti, udmp
unifiZabbix
Zabbix templates to monitor pretty much all Unifi devices
Stars: ✭ 66 (+15.79%)
Mutual labels:  ubiquiti, cloudkey
Unifi Api Client
A PHP API client class to interact with Ubiquiti's UniFi Controller API
Stars: ✭ 602 (+956.14%)
Mutual labels:  ubiquiti
Unifi Api Browser
Tool to browse data exposed by Ubiquiti's UniFi Controller API (demo: https://api-browser-demo.artofwifi.net/)
Stars: ✭ 677 (+1087.72%)
Mutual labels:  ubiquiti
Go Unifi
Unifi Controller API SDK for Go
Stars: ✭ 71 (+24.56%)
Mutual labels:  ubiquiti
Unifi Linux Utils
Helpful Linux / Unix scripts for admins of Ubiquiti (UBNT) UniFi wireless products
Stars: ✭ 522 (+815.79%)
Mutual labels:  ubiquiti
Grafana Dashboards
Grafana Dashboards
Stars: ✭ 228 (+300%)
Mutual labels:  ubiquiti
Unifi Poller
Application: Collect ALL UniFi Controller, Site, Device & Client Data - Export to InfluxDB or Prometheus
Stars: ✭ 1,050 (+1742.11%)
Mutual labels:  ubiquiti
Edgeos setup
sensible defaults for EdgeOS based routers
Stars: ✭ 51 (-10.53%)
Mutual labels:  ubiquiti
Ubnt Edgerouter Example Configs
Example config.boot files for UBNT EdgeRouters with Google, Comcast, and Charter
Stars: ✭ 175 (+207.02%)
Mutual labels:  ubiquiti
Udm Utilities
A collection of things I have made to make the Unifi Dream Machine more useful
Stars: ✭ 987 (+1631.58%)
Mutual labels:  ubiquiti
Unifi Hotspot Manager
A HotSpot Manager for Ubiquiti UniFi Hardware
Stars: ✭ 28 (-50.88%)
Mutual labels:  ubiquiti
Homebridge Unifi Protect Camera Motion
Camera & Motion sensor support for Unifi Protect cameras in Homekit via Homebridge
Stars: ✭ 79 (+38.6%)
Mutual labels:  ubiquiti
Wireguard Vyatta Ubnt
WireGuard for Ubiquiti Devices
Stars: ✭ 651 (+1042.11%)
Mutual labels:  ubiquiti
Terraform Provider Unifi
Terraform provider for Unifi 📡
Stars: ✭ 239 (+319.3%)
Mutual labels:  ubiquiti
Unifi Pfsense
A script that installs the UniFi Controller software on pfSense and other FreeBSD systems
Stars: ✭ 544 (+854.39%)
Mutual labels:  ubiquiti
Aws Unifi Controller
Example of a Ubiquiti Unifi Controller in AWS using Network Load Balancer for TLS termination
Stars: ✭ 37 (-35.09%)
Mutual labels:  ubiquiti
Unifi exporter
Multiarch images for scraping Prometheus metrics from a Unifi Controller. Kubernetes / prometheus-operator compatible.
Stars: ✭ 54 (-5.26%)
Mutual labels:  ubiquiti
ntopng-udm
ntopng Docker image for the UDM base and UDM pro
Stars: ✭ 147 (+157.89%)
Mutual labels:  ubiquiti

Unofficial UniFi Protect Python API and CLI

Latest PyPI version Supported Python Code Style CI Documentation

pyunifiprotect is an unofficial API for UniFi Protect. There is no affiliation with Ubiquiti.

This module communicates with UniFi Protect surveillance software installed on a UniFi OS Console such as a Ubiquiti CloudKey+ or UniFi Dream Machine Pro.

The API is not documented by Ubiquiti, so there might be misses and/or frequent changes in this module, as Ubiquiti evolves the software.

The module is primarily written for the purpose of being used in Home Assistant core integration for UniFi Protect but might be used for other purposes also.

Documentation

Full documentation for the project.

Requirements

If you want to install pyunifiprotect natively, the below are the requirements:

  • UniFi Protect version 1.20+
    • Latest version of library is generally only tested against the two latest minor version. This is either two latest stable versions (such as 1.21.x and 2.0.x) or the latest EA version and stable version (such as 2.2.x EA and 2.1.x).
  • Python 3.9+
  • POSIX compatible system
    • Library is only test on Linux, specifically the latest Debian version available for the official Python Docker images, but there is no reason the library should not work on any Linux distro or MacOS.
  • ffmpeg
    • ffmpeg is primarily only for streaming audio to Protect cameras, this can be considered a soft requirement

Alternatively you can use the provided Docker container, in which case the only requirement is Docker or another OCI compatible orchestrator (such as Kubernetes or podman).

Windows is not supported. If you need to use pyunifiprotect on Windows, use Docker Desktop and the provided docker container or WSL.

Install

From PyPi

pyunifiprotect is available on PyPi:

pip install pyunifiprotect

From Github

pip install git+https://github.com/AngellusMortis/pyunifiprotect.git#egg=pyunifiprotect

Using Docker Container

A Docker container is also provided so you do not need to install/manage Python as well. You can add the following to your .bashrc or similar.

function unifi-protect() {
    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/angellusmortis/pyunifiprotect:latest "$@"
}

Some notes about the Docker version since it is running inside of a container:

  • You can update at any time using the command docker pull ghcr.io/AngellusMortis/pyunifiprotect:latest
  • Your local current working directory ($PWD) will automatically be mounted to /data inside of the container. For commands that output files, this is the only path you can write to and have the file persist.
  • The container supports linux/amd64 and linux/arm64 natively. This means it will also work well on MacOS or Windows using Docker Desktop.
  • For versions of pyunifiprotect before v4.1.5, you need to use the ghcr.io/briis/pyunifiprotect image instead.
  • TZ should be the Olson timezone name for the timezone your UniFi Protect instance is in.
  • For more details on TZ and other environment variables, check the command line docs

Quickstart

CLI

!!! warning "About Ubiquiti SSO accounts" Ubiquiti SSO accounts are not supported and actively discouraged from being used. There is no option to use MFA. You are expected to use local access user. pyunifiprotect is not designed to allow you to use your owner account to access the your console or to be used over the public Internet as both pose a security risk.

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

unifi-protect --help
unifi-protect nvr

Python

UniFi Protect itself is 100% async, so as such this library is primarily designed to be used in an async context.

The main interface for the library is the pyunifiprotect.ProtectApiClient:

from pyunifiprotect 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()

TODO / Planned / Not Implemented

The following the noticeable features are that still missing from pyunifiprotect. All of them are planned for "some day" / "nice to have" except where noted.

  • Liveview creating/updating/deleting
  • PTZ controls
  • Creating WebRTC streaming connections
  • Backups
  • Device Groups
  • Record Scheduling
  • Battery powered cameras (G3 Battery, Aplify Vision)
  • Camera analytics and live heatmaps
  • Reconfiguring WiFi
  • "Locate" feature for Lights/Sensors/Doorlocks
  • The /timeline API endpoint
  • User/Group/Permission management -- partially implemented as users and groups are modeled, just not fleshed out
  • Any strictly UniFi OS feature like managing RAID, creating users, etc. -- Out of Scope. If it ever done, it will be in a separate library that interacts with this one

Credits

  • Bjarne Riis (@briis) for the original pyunifiprotect package
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].